static noinline apparently results in argument slots being optimized out
but that means that the arguments between the two won't align, resulting in unnecessary 'mov's
This commit is contained in:
parent
2697e749e1
commit
f9a8eb0ce3
@ -149,12 +149,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define GC2i(SYMB, NAME, EXPR, EXTRA1, EXTRA2, BIT, SI_AA, DO_AS, DO_SA) \
|
#define GC2i(SYMB, NAME, EXPR, EXTRA1, EXTRA2, BIT, SI_AA, DO_AS, DO_SA) \
|
||||||
static NOINLINE B NAME##_c2_arr(B t, B w, B x); \
|
NOINLINE B NAME##_c2_arr(B t, B w, B x); \
|
||||||
B NAME##_c2(B t, B w, B x) { \
|
B NAME##_c2(B t, B w, B x) { \
|
||||||
if (isF64(w) & isF64(x)) {f64 wv=w.f,xv=x.f;return m_f64(EXPR);} \
|
if (isF64(w) & isF64(x)) {f64 wv=w.f,xv=x.f;return m_f64(EXPR);} \
|
||||||
EXTRA1 return NAME##_c2_arr(t,w,x); \
|
EXTRA1 return NAME##_c2_arr(t,w,x); \
|
||||||
} \
|
} \
|
||||||
static B NAME##_c2_arr(B t, B w, B x) { \
|
NOINLINE B NAME##_c2_arr(B t, B w, B x) { \
|
||||||
EXTRA2 \
|
EXTRA2 \
|
||||||
if (isArr(w)|isArr(x)) { \
|
if (isArr(w)|isArr(x)) { \
|
||||||
if (isArr(w)&isArr(x) && rnk(w)==rnk(x)) { \
|
if (isArr(w)&isArr(x) && rnk(w)==rnk(x)) { \
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user