diff --git a/build/src/build.bqn b/build/src/build.bqn index 7f3d4c3c..cd2471c4 100755 --- a/build/src/build.bqn +++ b/build/src/build.bqn @@ -311,6 +311,7 @@ po ← { # parsed options ⟨"-Wno-parentheses"⟩ # gcc ⟨ # clang "-Wno-microsoft-anon-tag", "-Wno-bitwise-instead-of-logical", "-Wno-unknown-warning-option" + "-Wno-pass-failed" # vfor ⟩ ∾ (¬wasm)/⟨"-mllvm", "--x86-cmov-converter=0"⟩ # thing that converts `cmov`s to branching sometimes (?), but we don't want that ⟩ args∾↩ 0⊑GetLibs@ diff --git a/src/builtins/arithd.c b/src/builtins/arithd.c index d2a756ae..83a11a19 100644 --- a/src/builtins/arithd.c +++ b/src/builtins/arithd.c @@ -29,7 +29,7 @@ B leading_axis_arith(FC2 fc2, B w, B x, usz* wsh, usz* xsh, ur mr); #else static void base_andBytes(u8* r, u8* x, u64 repeatedMask, u64 numBytes) { u64* x64 = (u64*)x; usz i; - for (i = 0; i < numBytes/8; i++) ((u64*)r)[i] = x64[i] & repeatedMask; + vfor (i = 0; i < numBytes/8; i++) ((u64*)r)[i] = x64[i] & repeatedMask; if (i*8 != numBytes) { u64 v = x64[i]&repeatedMask; for (usz j = 0; j < (numBytes&7); j++) r[i*8 + j] = v>>(j*8); @@ -47,7 +47,7 @@ B shape_c2(B t, B w, B x); // floordiv will return float result only on ¯2147483648÷¯1 or n÷0, but may not otherwise squeeze integer types; integer argument requirement may be relaxed in the future // divint will return float result if there's a fractional result, or in overflow cases same as floordiv // TODO overflow-checked Singeli code for exact integer divint, and maybe floordiv_AA -#define DIVLOOP(RE, WE, EXPR) RE* rp; B r=m_##RE##arrc(&rp, w); usz ia=IA(w); WE* wp=WE##any_ptr(w); for(ux i=0; i>sh|rp[i+1]<<(64-sh); + vfor (usz i=0; i>sh|rp[i+1]<<(64-sh); rp[e]>>=sh; } break; } - case 3: { u8* xp=xv; u8* rp = m_tyarrc(&r, 1, x, xt); for (ux i=0; ixia-i) { b=xia-i; bs=s-(rp-rp0); } else { bs=bit_sum(xp,b); } where_block_u16(xp, buf, b, bs); - for (usz j=0; jxia-i? xia-i : b; if (b2m/2) thrM("/⁼: Argument cannot contain negative numbers"); \ - i32* rp; r = m_i32arrv(&rp, ria); for (usz i=0; i> q) & (rp[l]^(wp[l] P xp[l])); \ } break; #define CASE(W, Q, P) case W: \ - NOUNROLL for (usz i=0; i64) thrF("•bit._%U: scalar extension with width over 64 unhandled", name); \ u64 wv = *wp & (~(u64)0>>(64-ow)); \ for (usz tw=ow; tw<64; tw*=2) wv|=wv<> q) & (rp[l]^(wv P xp[l])); \ } break; #define CASE(W, Q, P) case W: { \ Q##W wv = *(Q##W*)wp; \ - NOUNROLL for (usz i=0; i