faster ≡
This commit is contained in:
parent
2685c598e6
commit
ba28f7e892
@ -246,6 +246,24 @@ NOINLINE bool equal(B w, B x) { // doesn't consume
|
|||||||
if (wa) return atomEqual(w, x);
|
if (wa) return atomEqual(w, x);
|
||||||
if (!eqShape(w,x)) return false;
|
if (!eqShape(w,x)) return false;
|
||||||
usz ia = a(x)->ia;
|
usz ia = a(x)->ia;
|
||||||
|
u8 we = TI(w).elType;
|
||||||
|
u8 xe = TI(x).elType;
|
||||||
|
if (we<=el_f64 && xe<=el_f64) {
|
||||||
|
if (we==el_i32) { i32* wp = i32any_ptr(w);
|
||||||
|
if(xe==el_i32) { i32* xp = i32any_ptr(x); for (usz i = 0; i < ia; i++) if(wp[i]!=xp[i]) return false; }
|
||||||
|
else { f64* xp = f64any_ptr(x); for (usz i = 0; i < ia; i++) if(wp[i]!=xp[i]) return false; }
|
||||||
|
} else { f64* wp = f64any_ptr(w);
|
||||||
|
if(xe==el_i32) { i32* xp = i32any_ptr(x); for (usz i = 0; i < ia; i++) if(wp[i]!=xp[i]) return false; }
|
||||||
|
else { f64* xp = f64any_ptr(x); for (usz i = 0; i < ia; i++) if(wp[i]!=xp[i]) return false; }
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (we==el_c32 && xe==el_c32) {
|
||||||
|
u32* wp = c32any_ptr(w);
|
||||||
|
u32* xp = c32any_ptr(x);
|
||||||
|
for (usz i = 0; i < ia; i++) if(wp[i]!=xp[i]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
BS2B xgetU = TI(x).getU;
|
BS2B xgetU = TI(x).getU;
|
||||||
BS2B wgetU = TI(w).getU;
|
BS2B wgetU = TI(w).getU;
|
||||||
for (usz i = 0; i < ia; i++) if(!equal(wgetU(w,i),xgetU(x,i))) return false;
|
for (usz i = 0; i < ia; i++) if(!equal(wgetU(w,i),xgetU(x,i))) return false;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user