#include "../core.h" #include "../utils/calls.h" NOINLINE i32 compareF(B w, B x) { if (isNum(w) & isC32(x)) return -1; if (isC32(w) & isNum(x)) return 1; i32 atmNeg; if (isAtm(w)) { atmNeg = 0; atmW:; if (isAtm(x)) thrM("Invalid comparison"); if (IA(x)==0) return atmNeg? -1 : 1; i32 c = compare(w, IGetU(x,0)); return (c<=0)^atmNeg? -1 : 1; } if (isAtm(x)) { B t=w; w=x; x=t; atmNeg=1; goto atmW; } if (w.u==x.u && TI(w,arrD1)) return 0; ur wr=RNK(w); usz* wsh=SH(w); ur xr=RNK(x); usz* xsh=SH(x); i32 rc = ICMP(wr, xr); ur rr = wr