From 120bb9fb0ad38e271cc8604434d04826fb47792c Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Fri, 6 Nov 2026 16:41:44 -0800 Subject: [PATCH 1/3] chore(quest): claim quest/m3/ts-unsafe/unchecked-ops.md Quest-Claim: ba08ded2915b63c4 From aa7cbf4a8d405b5539a9aaee2a79b648c35a214d Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Fri, 6 Nov 2026 17:01:40 -0800 Subject: [PATCH 2/3] feat(ts): translate unchecked integer operations and NonZero::new_unchecked Co-Authored-By: Claude Opus 5.5 --- quest/m3/ts-unsafe/README.md | 1 - quest/m3/ts-unsafe/unchecked-ops.md | 16 - ts/README.md | 5 +- ts/fixtures/lang/methods/caller.ts | 4 +- ts/fixtures/lang/methods/expected/methods.ts | 4854 +++++++++-------- ts/fixtures/lang/methods/src/methods.rs | 24 +- .../lang/panics/hook/expected/hooked.Shown.ts | 2 +- .../lang/panics/hook/expected/hooked.ts | 206 +- ts/fixtures/lang/panics/src/hooked.rs | 4 + ts/runtime/rs.ts | 25 +- ts/runtime/rs/int.ts | 22 +- ts/src/lower/library.rs | 22 + 12 files changed, 2754 insertions(+), 2431 deletions(-) delete mode 100644 quest/m3/ts-unsafe/unchecked-ops.md diff --git a/quest/m3/ts-unsafe/README.md b/quest/m3/ts-unsafe/README.md index fbe362cfd..6002738f4 100644 --- a/quest/m3/ts-unsafe/README.md +++ b/quest/m3/ts-unsafe/README.md @@ -76,5 +76,4 @@ Public API: the translator's output. - [Vec::drain from std's MIR](/quest/m3/ts-unsafe/vec-drain-mir.md) - std's `Drain` translates, replacing the runtime's port - [BinaryHeap from std's MIR](/quest/m3/ts-unsafe/binary-heap-mir.md) - std's `BinaryHeap` and `PeekMut` translate, replacing the runtime's port - [A slice's pointer cast to an array's](/quest/m3/ts-unsafe/array-casts.md) - `*(s as *const [u8] as *const [u8; N])` in a crate's own code, and `IoSlice` -- [Unchecked integer operations](/quest/m3/ts-unsafe/unchecked-ops.md) - `unchecked_*` and `NonZero::new_unchecked` translate, aborting on a violated precondition - [UnsafeCell's raw accessors](/quest/m3/ts-unsafe/unsafecell.md) - `UnsafeCell::raw_get`, `from_mut`, and `replace` translate diff --git a/quest/m3/ts-unsafe/unchecked-ops.md b/quest/m3/ts-unsafe/unchecked-ops.md deleted file mode 100644 index 24a29dc75..000000000 --- a/quest/m3/ts-unsafe/unchecked-ops.md +++ /dev/null @@ -1,16 +0,0 @@ -# [XS] Unchecked integer operations - -## Goal - -[rust2-ts](/ts/README.md) translates the integers' `unchecked_add`, `unchecked_sub`, -`unchecked_mul`, `unchecked_neg`, `unchecked_shl`, `unchecked_shr`, -`unchecked_funnel_shl`, and `unchecked_funnel_shr`, and `NonZero::new_unchecked`, proven -by differential tests against native Rust. Today each is refused as an unsupported call. - -## Plan - -Each is its checked form where Rust defines it. A violated precondition is UB, so per -[Throw only where Rust panics](/quest/m3/ts-runtime-throws.md) it aborts worded like std's -`unsafe precondition(s) violated` check, as a debug build does. No consumer at the moq pin. - -Public API: the translator's output. diff --git a/ts/README.md b/ts/README.md index d7717fd16..ca2f16172 100644 --- a/ts/README.md +++ b/ts/README.md @@ -222,7 +222,10 @@ one call, `rs.u64FromHalves(hi, lo)`. Each integer's inherent methods are std's, and a `NonZero`'s, a `Wrapping`'s, and a `Saturating`'s are its integer's, as std defines them: a `Wrapping`'s `pow` is -`wrapping_pow`. `pow` and `abs` panic on overflow as a debug build's do. Those the operators +`wrapping_pow`. `pow` and `abs` panic on overflow as a debug build's do. An `unchecked_` +method and `NonZero::new_unchecked` are their checked form, `rs.precondition(rs.u32CheckedAdd(a, b), ...)`, +which aborts where it gives `None` as a debug build's check of the precondition does; a +`NonZero`'s own `unchecked_` methods are refused. Those the operators lack are one runtime function for every width, `rs.intCheckedPow(a, n, 64, false)`, given the width and sign, which computes on the value's `bigint`. diff --git a/ts/fixtures/lang/methods/caller.ts b/ts/fixtures/lang/methods/caller.ts index b6e237e9a..9620fad3f 100644 --- a/ts/fixtures/lang/methods/caller.ts +++ b/ts/fixtures/lang/methods/caller.ts @@ -14,7 +14,7 @@ export { ops, run } from "./lang.ts"; function methods(): Uint8Array[] { const widths: [string, number, boolean][] = [["u8s", 8, false], ["u16s", 16, false], ["u32s", 32, false], ["u64s", 64, false], ["u128s", 128, false], ["usizes", 32, false], ["i8s", 8, true], ["i16s", 16, true], ["i32s", 32, true], ["i64s", 64, true], ["i128s", 128, true], ["isizes", 32, true]]; // The kinds that read the `u32`, and the others, which read `b`. - const exponents = new Set([3, 4, 7, 8, 21, 22, 23, 38, 39, 40]); + const exponents = new Set([3, 4, 7, 8, 21, 22, 23, 38, 39, 40, 45, 46, 47]); const cases: Uint8Array[] = []; for (const [name, bits, signed] of widths) { const o = op(`methods::${name}`); @@ -32,7 +32,7 @@ function methods(): Uint8Array[] { const be = (v: bigint) => Array.from({ length: bits / 8 }, (_, i) => Number((v >> BigInt(bits - 8 - 8 * i)) & 0xffn)); const u32 = (n: number) => [n >>> 24, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff]; let i = 0; - for (let kind = 0; kind < 42; kind++) { + for (let kind = 0; kind < 49; kind++) { for (const a of edges) { if (exponents.has(kind)) { for (const n of shifts) cases.push(Uint8Array.of(...o, kind, ...be(a), ...be(others[i++ % others.length]), ...u32(n))); diff --git a/ts/fixtures/lang/methods/expected/methods.ts b/ts/fixtures/lang/methods/expected/methods.ts index 2bcf50acc..1f6bdfcc7 100644 --- a/ts/fixtures/lang/methods/expected/methods.ts +++ b/ts/fixtures/lang/methods/expected/methods.ts @@ -50,50 +50,50 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.u8CheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.u8CheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.u8CheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.u8SaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.u8SaturatingSub(a, b); - _22(out, part86); - const part87 = rs.u8SaturatingMul(a, b); - _22(out, part87); - const part88 = rs.u8WrappingAdd(a, b); - _22(out, part88); - const part89 = rs.u8WrappingSub(a, b); - _22(out, part89); - const part90 = rs.u8WrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 8, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 8, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 8, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 8, false); + const part90 = rs.u8CheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.u8CheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.u8CheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.u8SaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.u8SaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 8, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 8, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 8, false); + const part95 = rs.u8SaturatingMul(a, b); + _22(out, part95); + const part96 = rs.u8WrappingAdd(a, b); + _22(out, part96); + const part97 = rs.u8WrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 8, false); + const part98 = rs.u8WrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 8, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 8, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 8, false); + const part99 = rs.intOverflowingAdd(a, b, 8, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 8, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 8, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 8, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 8, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 8, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 8, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 8, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 8, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 8, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 8, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 8, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 8, false); + putPair(out, part110); const b2: rs.u8 = o & 0xff; const _118: rs.i8 | undefined = rs.intCheckedSignedDiff(a, b2, 8, false) as rs.i8 | undefined; if (_118 === undefined) { @@ -108,10 +108,10 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 8, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 8, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 8, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 8, false); + putPair(out, part112); } const _141: [rs.u8, rs.u8] = rs.intCarryingMul(a, b2, a, 8, false); const lo: rs.u8 = _141[0]; @@ -123,34 +123,34 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.u8 = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 8, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 8, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 8, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 8, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 8, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 8, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 8, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 8, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 8, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 8, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.u8DivCeil(a, b); - _22(out, part81); + const part89 = rs.u8DivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.u8IsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 8, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 8, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 8, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 8, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 8, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 8, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 8, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 8, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 8, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 8, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 8, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i8ToBeBytes((a << 24) >> 24))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -160,14 +160,14 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 8, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 8, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 8, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 8, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 8, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 8, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 8, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 8, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -177,26 +177,26 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 8, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 8, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 8, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 8, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 8, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 8, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 8, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 8, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 8, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 8, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 8, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 8, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 8, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 8, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 8, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 8, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 8, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 8, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 8, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 8, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 8, false), rs.intCountZeros(a, 8, false), rs.u8LeadingZeros(a), rs.u8TrailingZeros(a), rs.u8LeadingOnes(a), rs.intTrailingOnes(a, 8, false)]); @@ -215,48 +215,48 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 8, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 8, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 8, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 8, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 8, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 8, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 8, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 8, false); + _22(out, part65); _22(out, 255); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 8, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 8, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 8, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 8, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 8, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 8, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(rs.intAbsDiff(a, b, 8, false) as rs.u8))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 8, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 8, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 8, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 8, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 8, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 8, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 8, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 8, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 8, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 8, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 8, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 8, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 8, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 8, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 8, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 8, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.u8Add(a, b)); } else if (_30 === 16) { @@ -268,65 +268,65 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.u8Rem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 8, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 8, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.u8Shl(a, k)); } else if (_30 === 22) { _22(out, rs.u8Shr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 8, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 8, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 8, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 8, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 8, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 8, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 8, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 8, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 8, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 8, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.u8Div(a, b)); } else if (_30 === 29) { _22(out, rs.u8Rem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 8, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 8, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 8, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 8, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 8, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 8, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 8, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 8, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 8, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 8, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 8, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 8, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.u8Div(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 8, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 8, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 8, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 8, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 8, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 8, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 8, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 8, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.u8 = a; @@ -364,8 +364,8 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 8, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 8, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 8, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 8, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.u8 | undefined, rs.u8 | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -380,37 +380,37 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$1far4bd(rs.u8CheckedMul(x, y), (a0: rs.u8): rs.u8 => { + const part11 = option_map$1far4bd(rs.u8CheckedMul(x, y), (a0: rs.u8): rs.u8 => { return a0; }); - putOpt(out, part3); - const part4 = rs.u8SaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$1far4bd(rs.intCheckedPow(x, k, 8, false), (a02: rs.u8): rs.u8 => { + putOpt(out, part11); + const part12 = rs.u8SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$1far4bd(rs.intCheckedPow(x, k, 8, false), (a02: rs.u8): rs.u8 => { return a02; }); - putOpt(out, part5); - const part6 = option_map$1far4bd(rs.intCheckedPow(x, n, 8, false), (a03: rs.u8): rs.u8 => { + putOpt(out, part13); + const part14 = option_map$1far4bd(rs.intCheckedPow(x, n, 8, false), (a03: rs.u8): rs.u8 => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 8, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 8, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 8, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 8, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 8, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 8, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 8, false) ? 1 : 0); - const part10 = option_map$1far4bd(rs.u8CheckedAdd(x, b), (a04: rs.u8): rs.u8 => { + const part18 = option_map$1far4bd(rs.u8CheckedAdd(x, b), (a04: rs.u8): rs.u8 => { return a04; }); - putOpt(out, part10); - const part11 = rs.u8SaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$1far4bd(rs.intCheckedNextPowerOfTwo(x, 8, false), (a05: rs.u8): rs.u8 => { + putOpt(out, part18); + const part19 = rs.u8SaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$1far4bd(rs.intCheckedNextPowerOfTwo(x, 8, false), (a05: rs.u8): rs.u8 => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 8, false), rs.intIlog10(x, 8, false), rs.intBitWidth(x, 8, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -419,17 +419,43 @@ export function u8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 8, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 8, false); - _22(out, part14); - const part15 = rs.u8DivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 8, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 8, false); + _22(out, part22); + const part23 = rs.u8DivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i8ToBeBytes((x << 24) >> 24))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.u8CheckedAdd(a, b), "u8::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.u8CheckedSub(a, b), "u8::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.u8CheckedMul(a, b), "u8::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 8, false), "u8::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 8, false), "u8::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 8, false), "u8::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 8, false), "u8::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -480,50 +506,50 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.u16CheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.u16CheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.u16CheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.u16SaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.u16SaturatingSub(a, b); - _22(out, part86); - const part87 = rs.u16SaturatingMul(a, b); - _22(out, part87); - const part88 = rs.u16WrappingAdd(a, b); - _22(out, part88); - const part89 = rs.u16WrappingSub(a, b); - _22(out, part89); - const part90 = rs.u16WrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 16, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 16, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 16, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 16, false); + const part90 = rs.u16CheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.u16CheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.u16CheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.u16SaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.u16SaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 16, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 16, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 16, false); + const part95 = rs.u16SaturatingMul(a, b); + _22(out, part95); + const part96 = rs.u16WrappingAdd(a, b); + _22(out, part96); + const part97 = rs.u16WrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 16, false); + const part98 = rs.u16WrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 16, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 16, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 16, false); + const part99 = rs.intOverflowingAdd(a, b, 16, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 16, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 16, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 16, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 16, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 16, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 16, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 16, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 16, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 16, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 16, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 16, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 16, false); + putPair(out, part110); const b2: rs.u16 = o & 0xffff; const _118: rs.i16 | undefined = rs.intCheckedSignedDiff(a, b2, 16, false) as rs.i16 | undefined; if (_118 === undefined) { @@ -538,10 +564,10 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 16, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 16, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 16, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 16, false); + putPair(out, part112); } const _141: [rs.u16, rs.u16] = rs.intCarryingMul(a, b2, a, 16, false); const lo: rs.u16 = _141[0]; @@ -553,34 +579,34 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.u16 = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 16, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 16, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 16, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 16, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 16, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 16, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 16, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 16, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 16, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 16, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.u16DivCeil(a, b); - _22(out, part81); + const part89 = rs.u16DivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.u16IsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 16, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 16, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 16, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 16, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 16, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 16, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 16, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 16, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 16, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 16, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 16, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i16ToBeBytes((a << 16) >> 16))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -590,14 +616,14 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 16, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 16, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 16, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 16, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 16, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 16, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 16, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 16, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -607,26 +633,26 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 16, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 16, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 16, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 16, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 16, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 16, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 16, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 16, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 16, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 16, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 16, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 16, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 16, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 16, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 16, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 16, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 16, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 16, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 16, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 16, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 16, false), rs.intCountZeros(a, 16, false), rs.u16LeadingZeros(a), rs.u16TrailingZeros(a), rs.u16LeadingOnes(a), rs.intTrailingOnes(a, 16, false)]); @@ -645,48 +671,48 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 16, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 16, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 16, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 16, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 16, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 16, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 16, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 16, false); + _22(out, part65); _22(out, 65535); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 16, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 16, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 16, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 16, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 16, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 16, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(rs.intAbsDiff(a, b, 16, false) as rs.u16))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 16, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 16, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 16, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 16, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 16, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 16, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 16, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 16, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 16, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 16, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 16, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 16, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 16, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 16, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 16, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 16, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.u16Add(a, b)); } else if (_30 === 16) { @@ -698,65 +724,65 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.u16Rem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 16, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 16, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.u16Shl(a, k)); } else if (_30 === 22) { _22(out, rs.u16Shr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 16, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 16, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 16, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 16, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 16, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 16, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 16, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 16, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 16, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 16, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.u16Div(a, b)); } else if (_30 === 29) { _22(out, rs.u16Rem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 16, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 16, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 16, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 16, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 16, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 16, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 16, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 16, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 16, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 16, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 16, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 16, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.u16Div(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 16, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 16, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 16, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 16, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 16, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 16, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 16, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 16, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.u16 = a; @@ -794,8 +820,8 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 16, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 16, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 16, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 16, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.u16 | undefined, rs.u16 | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -810,37 +836,37 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$0frntt5(rs.u16CheckedMul(x, y), (a0: rs.u16): rs.u16 => { + const part11 = option_map$0frntt5(rs.u16CheckedMul(x, y), (a0: rs.u16): rs.u16 => { return a0; }); - putOpt(out, part3); - const part4 = rs.u16SaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$0frntt5(rs.intCheckedPow(x, k, 16, false), (a02: rs.u16): rs.u16 => { + putOpt(out, part11); + const part12 = rs.u16SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$0frntt5(rs.intCheckedPow(x, k, 16, false), (a02: rs.u16): rs.u16 => { return a02; }); - putOpt(out, part5); - const part6 = option_map$0frntt5(rs.intCheckedPow(x, n, 16, false), (a03: rs.u16): rs.u16 => { + putOpt(out, part13); + const part14 = option_map$0frntt5(rs.intCheckedPow(x, n, 16, false), (a03: rs.u16): rs.u16 => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 16, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 16, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 16, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 16, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 16, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 16, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 16, false) ? 1 : 0); - const part10 = option_map$0frntt5(rs.u16CheckedAdd(x, b), (a04: rs.u16): rs.u16 => { + const part18 = option_map$0frntt5(rs.u16CheckedAdd(x, b), (a04: rs.u16): rs.u16 => { return a04; }); - putOpt(out, part10); - const part11 = rs.u16SaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$0frntt5(rs.intCheckedNextPowerOfTwo(x, 16, false), (a05: rs.u16): rs.u16 => { + putOpt(out, part18); + const part19 = rs.u16SaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$0frntt5(rs.intCheckedNextPowerOfTwo(x, 16, false), (a05: rs.u16): rs.u16 => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 16, false), rs.intIlog10(x, 16, false), rs.intBitWidth(x, 16, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -849,17 +875,43 @@ export function u16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 16, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 16, false); - _22(out, part14); - const part15 = rs.u16DivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 16, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 16, false); + _22(out, part22); + const part23 = rs.u16DivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i16ToBeBytes((x << 16) >> 16))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.u16CheckedAdd(a, b), "u16::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.u16CheckedSub(a, b), "u16::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.u16CheckedMul(a, b), "u16::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 16, false), "u16::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 16, false), "u16::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 16, false), "u16::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 16, false), "u16::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -910,50 +962,50 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.u32CheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.u32CheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.u32CheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.u32SaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.u32SaturatingSub(a, b); - _22(out, part86); - const part87 = rs.u32SaturatingMul(a, b); - _22(out, part87); - const part88 = rs.u32WrappingAdd(a, b); - _22(out, part88); - const part89 = rs.u32WrappingSub(a, b); - _22(out, part89); - const part90 = rs.u32WrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 32, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 32, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 32, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 32, false); + const part90 = rs.u32CheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.u32CheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.u32CheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.u32SaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.u32SaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 32, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 32, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 32, false); + const part95 = rs.u32SaturatingMul(a, b); + _22(out, part95); + const part96 = rs.u32WrappingAdd(a, b); + _22(out, part96); + const part97 = rs.u32WrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 32, false); + const part98 = rs.u32WrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 32, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 32, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 32, false); + const part99 = rs.intOverflowingAdd(a, b, 32, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 32, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 32, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 32, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 32, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 32, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 32, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 32, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 32, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 32, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 32, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 32, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 32, false); + putPair(out, part110); const b2: rs.u32 = o >>> 0; const _118: rs.i32 | undefined = rs.intCheckedSignedDiff(a, b2, 32, false) as rs.i32 | undefined; if (_118 === undefined) { @@ -968,10 +1020,10 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 32, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 32, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 32, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 32, false); + putPair(out, part112); } const _141: [rs.u32, rs.u32] = rs.intCarryingMul(a, b2, a, 32, false); const lo: rs.u32 = _141[0]; @@ -983,34 +1035,34 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.u32 = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 32, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 32, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 32, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 32, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 32, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 32, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 32, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 32, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 32, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 32, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.u32DivCeil(a, b); - _22(out, part81); + const part89 = rs.u32DivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.u32IsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 32, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 32, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 32, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 32, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 32, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 32, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 32, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 32, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 32, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 32, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 32, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i32ToBeBytes(a | 0))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -1020,14 +1072,14 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 32, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 32, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 32, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 32, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 32, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 32, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 32, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 32, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -1037,26 +1089,26 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 32, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 32, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 32, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 32, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 32, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 32, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 32, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 32, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 32, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 32, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 32, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 32, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 32, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 32, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 32, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 32, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 32, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 32, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 32, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 32, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 32, false), rs.intCountZeros(a, 32, false), rs.u32LeadingZeros(a), rs.u32TrailingZeros(a), rs.u32LeadingOnes(a), rs.intTrailingOnes(a, 32, false)]); @@ -1075,48 +1127,48 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 32, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 32, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 32, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 32, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 32, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 32, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 32, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 32, false); + _22(out, part65); _22(out, 4294967295); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 32, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 32, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 32, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 32, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 32, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 32, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(rs.intAbsDiff(a, b, 32, false) as rs.u32))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 32, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 32, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 32, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 32, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 32, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 32, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 32, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 32, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 32, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 32, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 32, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 32, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 32, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 32, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 32, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 32, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.u32Add(a, b)); } else if (_30 === 16) { @@ -1128,65 +1180,65 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.u32Rem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 32, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 32, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.u32Shl(a, k)); } else if (_30 === 22) { _22(out, rs.u32Shr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 32, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 32, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 32, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 32, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 32, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 32, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 32, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 32, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 32, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 32, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.u32Div(a, b)); } else if (_30 === 29) { _22(out, rs.u32Rem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 32, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 32, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 32, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 32, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 32, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 32, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 32, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 32, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 32, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 32, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 32, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 32, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.u32Div(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 32, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 32, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 32, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 32, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 32, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 32, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 32, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 32, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.u32 = a; @@ -1224,8 +1276,8 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 32, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 32, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 32, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 32, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.u32 | undefined, rs.u32 | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -1240,37 +1292,37 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$03qwbb9(rs.u32CheckedMul(x, y), (a0: rs.u32): rs.u32 => { + const part11 = option_map$03qwbb9(rs.u32CheckedMul(x, y), (a0: rs.u32): rs.u32 => { return a0; }); - putOpt(out, part3); - const part4 = rs.u32SaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$03qwbb9(rs.intCheckedPow(x, k, 32, false), (a02: rs.u32): rs.u32 => { + putOpt(out, part11); + const part12 = rs.u32SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$03qwbb9(rs.intCheckedPow(x, k, 32, false), (a02: rs.u32): rs.u32 => { return a02; }); - putOpt(out, part5); - const part6 = option_map$03qwbb9(rs.intCheckedPow(x, n, 32, false), (a03: rs.u32): rs.u32 => { + putOpt(out, part13); + const part14 = option_map$03qwbb9(rs.intCheckedPow(x, n, 32, false), (a03: rs.u32): rs.u32 => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 32, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 32, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 32, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 32, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 32, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 32, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 32, false) ? 1 : 0); - const part10 = option_map$03qwbb9(rs.u32CheckedAdd(x, b), (a04: rs.u32): rs.u32 => { + const part18 = option_map$03qwbb9(rs.u32CheckedAdd(x, b), (a04: rs.u32): rs.u32 => { return a04; }); - putOpt(out, part10); - const part11 = rs.u32SaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$03qwbb9(rs.intCheckedNextPowerOfTwo(x, 32, false), (a05: rs.u32): rs.u32 => { + putOpt(out, part18); + const part19 = rs.u32SaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$03qwbb9(rs.intCheckedNextPowerOfTwo(x, 32, false), (a05: rs.u32): rs.u32 => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 32, false), rs.intIlog10(x, 32, false), rs.intBitWidth(x, 32, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -1279,17 +1331,43 @@ export function u32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 32, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 32, false); - _22(out, part14); - const part15 = rs.u32DivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 32, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 32, false); + _22(out, part22); + const part23 = rs.u32DivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i32ToBeBytes(x | 0))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.u32CheckedAdd(a, b), "u32::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.u32CheckedSub(a, b), "u32::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.u32CheckedMul(a, b), "u32::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 32, false), "u32::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 32, false), "u32::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 32, false), "u32::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 32, false), "u32::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -1340,50 +1418,50 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.u64CheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.u64CheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.u64CheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.u64SaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.u64SaturatingSub(a, b); - _22(out, part86); - const part87 = rs.u64SaturatingMul(a, b); - _22(out, part87); - const part88 = rs.u64WrappingAdd(a, b); - _22(out, part88); - const part89 = rs.u64WrappingSub(a, b); - _22(out, part89); - const part90 = rs.u64WrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 64, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 64, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 64, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 64, false); + const part90 = rs.u64CheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.u64CheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.u64CheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.u64SaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.u64SaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 64, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 64, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 64, false); + const part95 = rs.u64SaturatingMul(a, b); + _22(out, part95); + const part96 = rs.u64WrappingAdd(a, b); + _22(out, part96); + const part97 = rs.u64WrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 64, false); + const part98 = rs.u64WrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 64, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 64, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 64, false); + const part99 = rs.intOverflowingAdd(a, b, 64, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 64, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 64, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 64, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 64, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 64, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 64, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 64, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 64, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 64, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 64, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 64, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 64, false); + putPair(out, part110); const b2: rs.u64 = rs.u64Cast(o); const _118: rs.i64 | undefined = rs.intCheckedSignedDiff(a, b2, 64, false) as rs.i64 | undefined; if (_118 === undefined) { @@ -1398,10 +1476,10 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 64, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 64, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 64, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 64, false); + putPair(out, part112); } const _141: [rs.u64, rs.u64] = rs.intCarryingMul(a, b2, a, 64, false); const lo: rs.u64 = _141[0]; @@ -1413,34 +1491,34 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.u64 = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 64, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 64, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 64, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 64, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 64, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 64, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 64, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 64, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 64, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 64, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.u64DivCeil(a, b); - _22(out, part81); + const part89 = rs.u64DivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.u64IsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 64, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 64, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 64, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 64, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 64, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 64, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 64, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 64, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 64, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 64, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 64, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i64ToBeBytes(rs.i64Cast(a)))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -1450,14 +1528,14 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 64, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 64, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 64, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 64, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 64, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 64, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 64, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 64, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -1467,26 +1545,26 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 64, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 64, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 64, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 64, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 64, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 64, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 64, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 64, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 64, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 64, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 64, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 64, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 64, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 64, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 64, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 64, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 64, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 64, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 64, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 64, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 64, false), rs.intCountZeros(a, 64, false), rs.u64LeadingZeros(a), rs.u64TrailingZeros(a), rs.u64LeadingOnes(a), rs.intTrailingOnes(a, 64, false)]); @@ -1505,48 +1583,48 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 64, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 64, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 64, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 64, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 64, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 64, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 64, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 64, false); + _22(out, part65); _22(out, { hi: 0xffffffff, lo: 0xffffffff } as rs.u64); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 64, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 64, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 64, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 64, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 64, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 64, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.intAbsDiff(a, b, 64, false) as rs.u64))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 64, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 64, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 64, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 64, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 64, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 64, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 64, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 64, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 64, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 64, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 64, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 64, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 64, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 64, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 64, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 64, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.u64Add(a, b)); } else if (_30 === 16) { @@ -1558,65 +1636,65 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.u64Rem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 64, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 64, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.u64Shl(a, k)); } else if (_30 === 22) { _22(out, rs.u64Shr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 64, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 64, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 64, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 64, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 64, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 64, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 64, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 64, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 64, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 64, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.u64Div(a, b)); } else if (_30 === 29) { _22(out, rs.u64Rem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 64, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 64, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 64, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 64, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 64, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 64, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 64, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 64, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 64, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 64, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 64, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 64, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.u64Div(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 64, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 64, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 64, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 64, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 64, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 64, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 64, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 64, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.u64 = a; @@ -1654,8 +1732,8 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 64, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 64, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 64, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 64, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.u64 | undefined, rs.u64 | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -1670,37 +1748,37 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$0fest7b(rs.u64CheckedMul(x, y), (a0: rs.u64): rs.u64 => { + const part11 = option_map$0fest7b(rs.u64CheckedMul(x, y), (a0: rs.u64): rs.u64 => { return a0; }); - putOpt(out, part3); - const part4 = rs.u64SaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$0fest7b(rs.intCheckedPow(x, k, 64, false), (a02: rs.u64): rs.u64 => { + putOpt(out, part11); + const part12 = rs.u64SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$0fest7b(rs.intCheckedPow(x, k, 64, false), (a02: rs.u64): rs.u64 => { return a02; }); - putOpt(out, part5); - const part6 = option_map$0fest7b(rs.intCheckedPow(x, n, 64, false), (a03: rs.u64): rs.u64 => { + putOpt(out, part13); + const part14 = option_map$0fest7b(rs.intCheckedPow(x, n, 64, false), (a03: rs.u64): rs.u64 => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 64, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 64, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 64, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 64, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 64, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 64, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 64, false) ? 1 : 0); - const part10 = option_map$0fest7b(rs.u64CheckedAdd(x, b), (a04: rs.u64): rs.u64 => { + const part18 = option_map$0fest7b(rs.u64CheckedAdd(x, b), (a04: rs.u64): rs.u64 => { return a04; }); - putOpt(out, part10); - const part11 = rs.u64SaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$0fest7b(rs.intCheckedNextPowerOfTwo(x, 64, false), (a05: rs.u64): rs.u64 => { + putOpt(out, part18); + const part19 = rs.u64SaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$0fest7b(rs.intCheckedNextPowerOfTwo(x, 64, false), (a05: rs.u64): rs.u64 => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 64, false), rs.intIlog10(x, 64, false), rs.intBitWidth(x, 64, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -1709,17 +1787,43 @@ export function u64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 64, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 64, false); - _22(out, part14); - const part15 = rs.u64DivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 64, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 64, false); + _22(out, part22); + const part23 = rs.u64DivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i64ToBeBytes(rs.i64Cast(x)))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.u64CheckedAdd(a, b), "u64::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.u64CheckedSub(a, b), "u64::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.u64CheckedMul(a, b), "u64::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 64, false), "u64::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 64, false), "u64::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 64, false), "u64::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 64, false), "u64::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -1770,50 +1874,50 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.u128CheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.u128CheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.u128CheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.u128SaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.u128SaturatingSub(a, b); - _22(out, part86); - const part87 = rs.u128SaturatingMul(a, b); - _22(out, part87); - const part88 = rs.u128WrappingAdd(a, b); - _22(out, part88); - const part89 = rs.u128WrappingSub(a, b); - _22(out, part89); - const part90 = rs.u128WrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 128, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 128, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 128, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 128, false); + const part90 = rs.u128CheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.u128CheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.u128CheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.u128SaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.u128SaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 128, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 128, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 128, false); + const part95 = rs.u128SaturatingMul(a, b); + _22(out, part95); + const part96 = rs.u128WrappingAdd(a, b); + _22(out, part96); + const part97 = rs.u128WrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 128, false); + const part98 = rs.u128WrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 128, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 128, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 128, false); + const part99 = rs.intOverflowingAdd(a, b, 128, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 128, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 128, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 128, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 128, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 128, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 128, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 128, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 128, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 128, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 128, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 128, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 128, false); + putPair(out, part110); const b2: rs.u128 = rs.u128Cast(o); const _118: rs.i128 | undefined = rs.intCheckedSignedDiff(a, b2, 128, false) as rs.i128 | undefined; if (_118 === undefined) { @@ -1828,10 +1932,10 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 128, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 128, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 128, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 128, false); + putPair(out, part112); } const _141: [rs.u128, rs.u128] = rs.intCarryingMul(a, b2, a, 128, false); const lo: rs.u128 = _141[0]; @@ -1843,34 +1947,34 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.u128 = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 128, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 128, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 128, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 128, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 128, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 128, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 128, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 128, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 128, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 128, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.u128DivCeil(a, b); - _22(out, part81); + const part89 = rs.u128DivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.u128IsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 128, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 128, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 128, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 128, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 128, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 128, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 128, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 128, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 128, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 128, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 128, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i128ToBeBytes(rs.i128Cast(a)))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -1880,14 +1984,14 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 128, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 128, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 128, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 128, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 128, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 128, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 128, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 128, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -1897,26 +2001,26 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 128, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 128, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 128, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 128, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 128, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 128, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 128, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 128, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 128, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 128, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 128, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 128, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 128, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 128, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 128, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 128, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 128, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 128, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 128, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 128, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 128, false), rs.intCountZeros(a, 128, false), rs.u128LeadingZeros(a), rs.u128TrailingZeros(a), rs.u128LeadingOnes(a), rs.intTrailingOnes(a, 128, false)]); @@ -1935,48 +2039,48 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 128, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 128, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 128, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 128, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 128, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 128, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 128, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 128, false); + _22(out, part65); _22(out, { hi: 0xffffffff, w2: 0xffffffff, w1: 0xffffffff, lo: 0xffffffff } as rs.u128); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 128, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 128, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 128, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 128, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 128, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 128, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.intAbsDiff(a, b, 128, false) as rs.u128))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 128, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 128, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 128, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 128, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 128, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 128, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 128, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 128, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 128, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 128, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 128, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 128, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 128, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 128, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 128, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 128, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.u128Add(a, b)); } else if (_30 === 16) { @@ -1988,65 +2092,65 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.u128Rem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 128, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 128, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.u128Shl(a, k)); } else if (_30 === 22) { _22(out, rs.u128Shr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 128, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 128, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 128, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 128, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 128, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 128, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 128, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 128, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 128, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 128, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.u128Div(a, b)); } else if (_30 === 29) { _22(out, rs.u128Rem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 128, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 128, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 128, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 128, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 128, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 128, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 128, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 128, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 128, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 128, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 128, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 128, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.u128Div(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 128, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 128, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 128, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 128, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 128, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 128, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 128, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 128, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.u128 = a; @@ -2084,8 +2188,8 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 128, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 128, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 128, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 128, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.u128 | undefined, rs.u128 | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -2100,37 +2204,37 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$1x2mrlk(rs.u128CheckedMul(x, y), (a0: rs.u128): rs.u128 => { + const part11 = option_map$1x2mrlk(rs.u128CheckedMul(x, y), (a0: rs.u128): rs.u128 => { return a0; }); - putOpt(out, part3); - const part4 = rs.u128SaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$1x2mrlk(rs.intCheckedPow(x, k, 128, false), (a02: rs.u128): rs.u128 => { + putOpt(out, part11); + const part12 = rs.u128SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$1x2mrlk(rs.intCheckedPow(x, k, 128, false), (a02: rs.u128): rs.u128 => { return a02; }); - putOpt(out, part5); - const part6 = option_map$1x2mrlk(rs.intCheckedPow(x, n, 128, false), (a03: rs.u128): rs.u128 => { + putOpt(out, part13); + const part14 = option_map$1x2mrlk(rs.intCheckedPow(x, n, 128, false), (a03: rs.u128): rs.u128 => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 128, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 128, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 128, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 128, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 128, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 128, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 128, false) ? 1 : 0); - const part10 = option_map$1x2mrlk(rs.u128CheckedAdd(x, b), (a04: rs.u128): rs.u128 => { + const part18 = option_map$1x2mrlk(rs.u128CheckedAdd(x, b), (a04: rs.u128): rs.u128 => { return a04; }); - putOpt(out, part10); - const part11 = rs.u128SaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$1x2mrlk(rs.intCheckedNextPowerOfTwo(x, 128, false), (a05: rs.u128): rs.u128 => { + putOpt(out, part18); + const part19 = rs.u128SaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$1x2mrlk(rs.intCheckedNextPowerOfTwo(x, 128, false), (a05: rs.u128): rs.u128 => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 128, false), rs.intIlog10(x, 128, false), rs.intBitWidth(x, 128, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -2139,17 +2243,43 @@ export function u128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 128, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 128, false); - _22(out, part14); - const part15 = rs.u128DivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 128, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 128, false); + _22(out, part22); + const part23 = rs.u128DivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.i128ToBeBytes(rs.i128Cast(x)))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.u128CheckedAdd(a, b), "u128::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.u128CheckedSub(a, b), "u128::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.u128CheckedMul(a, b), "u128::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 128, false), "u128::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 128, false), "u128::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 128, false), "u128::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 128, false), "u128::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -2200,50 +2330,50 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v10); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part82 = rs.usizeCheckedAdd(a, b); - putOpt(out, part82); - const part83 = rs.usizeCheckedSub(a, b); - putOpt(out, part83); - const part84 = rs.usizeCheckedMul(a, b); - putOpt(out, part84); - const part85 = rs.usizeSaturatingAdd(a, b); - _22(out, part85); - const part86 = rs.usizeSaturatingSub(a, b); - _22(out, part86); - const part87 = rs.usizeSaturatingMul(a, b); - _22(out, part87); - const part88 = rs.usizeWrappingAdd(a, b); - _22(out, part88); - const part89 = rs.usizeWrappingSub(a, b); - _22(out, part89); - const part90 = rs.usizeWrappingMul(a, b); - _22(out, part90); - const part91 = rs.intOverflowingAdd(a, b, 32, false); - putPair(out, part91); - const part92 = rs.intOverflowingSub(a, b, 32, false); - putPair(out, part92); - const part93 = rs.intOverflowingMul(a, b, 32, false); - putPair(out, part93); - const part94 = rs.intMidpoint(a, b, 32, false); + const part90 = rs.usizeCheckedAdd(a, b); + putOpt(out, part90); + const part91 = rs.usizeCheckedSub(a, b); + putOpt(out, part91); + const part92 = rs.usizeCheckedMul(a, b); + putOpt(out, part92); + const part93 = rs.usizeSaturatingAdd(a, b); + _22(out, part93); + const part94 = rs.usizeSaturatingSub(a, b); _22(out, part94); - const part95 = rs.intCheckedAdd(a, o, 32, false); - putOpt(out, part95); - const part96 = rs.intCheckedSub(a, o, 32, false); - putOpt(out, part96); - const part97 = rs.intSaturatingAdd(a, o, 32, false); + const part95 = rs.usizeSaturatingMul(a, b); + _22(out, part95); + const part96 = rs.usizeWrappingAdd(a, b); + _22(out, part96); + const part97 = rs.usizeWrappingSub(a, b); _22(out, part97); - const part98 = rs.intSaturatingSub(a, o, 32, false); + const part98 = rs.usizeWrappingMul(a, b); _22(out, part98); - const part99 = rs.intWrappingAdd(a, o, 32, false); - _22(out, part99); - const part100 = rs.intWrappingSub(a, o, 32, false); - _22(out, part100); - const part101 = rs.intOverflowingAdd(a, o, 32, false); + const part99 = rs.intOverflowingAdd(a, b, 32, false); + putPair(out, part99); + const part100 = rs.intOverflowingSub(a, b, 32, false); + putPair(out, part100); + const part101 = rs.intOverflowingMul(a, b, 32, false); putPair(out, part101); - const part102 = rs.intOverflowingSub(a, o, 32, false); - putPair(out, part102); + const part102 = rs.intMidpoint(a, b, 32, false); + _22(out, part102); + const part103 = rs.intCheckedAdd(a, o, 32, false); + putOpt(out, part103); + const part104 = rs.intCheckedSub(a, o, 32, false); + putOpt(out, part104); + const part105 = rs.intSaturatingAdd(a, o, 32, false); + _22(out, part105); + const part106 = rs.intSaturatingSub(a, o, 32, false); + _22(out, part106); + const part107 = rs.intWrappingAdd(a, o, 32, false); + _22(out, part107); + const part108 = rs.intWrappingSub(a, o, 32, false); + _22(out, part108); + const part109 = rs.intOverflowingAdd(a, o, 32, false); + putPair(out, part109); + const part110 = rs.intOverflowingSub(a, o, 32, false); + putPair(out, part110); const b2: rs.usize = o >>> 0; const _118: rs.isize | undefined = rs.intCheckedSignedDiff(a, b2, 32, false) as rs.isize | undefined; if (_118 === undefined) { @@ -2258,10 +2388,10 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const carry: boolean = _127; - const part103 = rs.intCarryingAdd(a, b2, carry, 32, false); - putPair(out, part103); - const part104 = rs.intBorrowingSub(a, b2, carry, 32, false); - putPair(out, part104); + const part111 = rs.intCarryingAdd(a, b2, carry, 32, false); + putPair(out, part111); + const part112 = rs.intBorrowingSub(a, b2, carry, 32, false); + putPair(out, part112); } const _141: [rs.usize, rs.usize] = rs.intCarryingMul(a, b2, a, 32, false); const lo: rs.usize = _141[0]; @@ -2273,34 +2403,34 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const hi2: rs.usize = _150[1]; _22(out, lo2); _22(out, hi2); - const part105 = rs.intCheckedNextMultipleOf(a, b2, 32, false); - putOpt(out, part105); + const part113 = rs.intCheckedNextMultipleOf(a, b2, 32, false); + putOpt(out, part113); } else if (_30 === 1) { - const part77 = rs.intCheckedDiv(a, b, 32, false); - putOpt(out, part77); - const part78 = rs.intCheckedRem(a, b, 32, false); - putOpt(out, part78); - const part79 = rs.intCheckedDivEuclid(a, b, 32, false); - putOpt(out, part79); - const part80 = rs.intCheckedRemEuclid(a, b, 32, false); - putOpt(out, part80); + const part85 = rs.intCheckedDiv(a, b, 32, false); + putOpt(out, part85); + const part86 = rs.intCheckedRem(a, b, 32, false); + putOpt(out, part86); + const part87 = rs.intCheckedDivEuclid(a, b, 32, false); + putOpt(out, part87); + const part88 = rs.intCheckedRemEuclid(a, b, 32, false); + putOpt(out, part88); if (b !== 0) { - const part81 = rs.usizeDivCeil(a, b); - _22(out, part81); + const part89 = rs.usizeDivCeil(a, b); + _22(out, part89); rs.byteVecPush(out, rs.usizeIsMultipleOf(a, b) ? 1 : 0); } } else if (_30 === 2) { - const part72 = rs.intCheckedNeg(a, 32, false); - putOpt(out, part72); - const part73 = rs.intWrappingNeg(a, 32, false); - _22(out, part73); - const part74 = rs.intOverflowingNeg(a, 32, false); - putPair(out, part74); + const part80 = rs.intCheckedNeg(a, 32, false); + putOpt(out, part80); + const part81 = rs.intWrappingNeg(a, 32, false); + _22(out, part81); + const part82 = rs.intOverflowingNeg(a, 32, false); + putPair(out, part82); rs.byteVecPush(out, rs.intIsPowerOfTwo(a, 32, false) ? 1 : 0); - const part75 = rs.intCheckedNextPowerOfTwo(a, 32, false); - putOpt(out, part75); - const part76 = rs.intBitWidth(a, 32, false); - _27(out, part76); + const part83 = rs.intCheckedNextPowerOfTwo(a, 32, false); + putOpt(out, part83); + const part84 = rs.intBitWidth(a, 32, false); + _27(out, part84); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.isizeToBeBytes(a | 0))); } else if (_30 === 3) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -2310,14 +2440,14 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _216; - const part68 = rs.intCheckedPow(a, e, 32, false); - putOpt(out, part68); - const part69 = rs.intWrappingPow(a, e, 32, false); - _22(out, part69); - const part70 = rs.intSaturatingPow(a, e, 32, false); - _22(out, part70); - const part71 = rs.intOverflowingPow(a, e, 32, false); - putPair(out, part71); + const part76 = rs.intCheckedPow(a, e, 32, false); + putOpt(out, part76); + const part77 = rs.intWrappingPow(a, e, 32, false); + _22(out, part77); + const part78 = rs.intSaturatingPow(a, e, 32, false); + _22(out, part78); + const part79 = rs.intOverflowingPow(a, e, 32, false); + putPair(out, part79); } } else if (_30 === 4) { const iter3: rs.Iter = rs.iterSlice([n, k]); @@ -2327,26 +2457,26 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _239; - const part58 = rs.intCheckedShl(a, s, 32, false); - putOpt(out, part58); - const part59 = rs.intCheckedShr(a, s, 32, false); - putOpt(out, part59); - const part60 = rs.intWrappingShl(a, s, 32, false); - _22(out, part60); - const part61 = rs.intWrappingShr(a, s, 32, false); - _22(out, part61); - const part62 = rs.intOverflowingShl(a, s, 32, false); - putPair(out, part62); - const part63 = rs.intOverflowingShr(a, s, 32, false); - putPair(out, part63); - const part64 = rs.intUnboundedShl(a, s, 32, false); - _22(out, part64); - const part65 = rs.intUnboundedShr(a, s, 32, false); - _22(out, part65); - const part66 = rs.intRotateLeft(a, s, 32, false); - _22(out, part66); - const part67 = rs.intRotateRight(a, s, 32, false); - _22(out, part67); + const part66 = rs.intCheckedShl(a, s, 32, false); + putOpt(out, part66); + const part67 = rs.intCheckedShr(a, s, 32, false); + putOpt(out, part67); + const part68 = rs.intWrappingShl(a, s, 32, false); + _22(out, part68); + const part69 = rs.intWrappingShr(a, s, 32, false); + _22(out, part69); + const part70 = rs.intOverflowingShl(a, s, 32, false); + putPair(out, part70); + const part71 = rs.intOverflowingShr(a, s, 32, false); + putPair(out, part71); + const part72 = rs.intUnboundedShl(a, s, 32, false); + _22(out, part72); + const part73 = rs.intUnboundedShr(a, s, 32, false); + _22(out, part73); + const part74 = rs.intRotateLeft(a, s, 32, false); + _22(out, part74); + const part75 = rs.intRotateRight(a, s, 32, false); + _22(out, part75); } } else if (_30 === 5) { const iter4: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 32, false), rs.intCountZeros(a, 32, false), rs.usizeLeadingZeros(a), rs.usizeTrailingZeros(a), rs.usizeLeadingOnes(a), rs.intTrailingOnes(a, 32, false)]); @@ -2365,48 +2495,48 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _308); } - const part54 = rs.intHighestOne(a, 32, false); - putOptU32(out, part54); - const part55 = rs.intLowestOne(a, 32, false); - putOptU32(out, part55); - const part56 = rs.intIsolateHighestOne(a, 32, false); - _22(out, part56); - const part57 = rs.intIsolateLowestOne(a, 32, false); - _22(out, part57); + const part62 = rs.intHighestOne(a, 32, false); + putOptU32(out, part62); + const part63 = rs.intLowestOne(a, 32, false); + putOptU32(out, part63); + const part64 = rs.intIsolateHighestOne(a, 32, false); + _22(out, part64); + const part65 = rs.intIsolateLowestOne(a, 32, false); + _22(out, part65); _22(out, 4294967295); _22(out, 0); } else if (_30 === 6) { - const part51 = rs.intCheckedIlog(a, b, 32, false); - putOptU32(out, part51); - const part52 = rs.intCheckedIlog2(a, 32, false); - putOptU32(out, part52); - const part53 = rs.intCheckedIlog10(a, 32, false); - putOptU32(out, part53); + const part59 = rs.intCheckedIlog(a, b, 32, false); + putOptU32(out, part59); + const part60 = rs.intCheckedIlog2(a, 32, false); + putOptU32(out, part60); + const part61 = rs.intCheckedIlog10(a, 32, false); + putOptU32(out, part61); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(rs.intAbsDiff(a, b, 32, false) as rs.usize))); } else if (_30 === 7) { - const part50 = rs.intPow(a, k, 32, false); - _22(out, part50); + const part58 = rs.intPow(a, k, 32, false); + _22(out, part58); } else if (_30 === 8) { - const part49 = rs.intPow(a, n, 32, false); - _22(out, part49); + const part57 = rs.intPow(a, n, 32, false); + _22(out, part57); } else if (_30 === 9) { - const part48 = rs.intDivEuclid(a, b, 32, false); - _22(out, part48); + const part56 = rs.intDivEuclid(a, b, 32, false); + _22(out, part56); } else if (_30 === 10) { - const part47 = rs.intRemEuclid(a, b, 32, false); - _22(out, part47); + const part55 = rs.intRemEuclid(a, b, 32, false); + _22(out, part55); } else if (_30 === 11) { - const part46 = rs.intIsqrt(a, 32, false); - _22(out, part46); + const part54 = rs.intIsqrt(a, 32, false); + _22(out, part54); } else if (_30 === 12) { - const part45 = rs.intIlog(a, b, 32, false); - _27(out, part45); + const part53 = rs.intIlog(a, b, 32, false); + _27(out, part53); } else if (_30 === 13) { - const part44 = rs.intIlog2(a, 32, false); - _27(out, part44); + const part52 = rs.intIlog2(a, 32, false); + _27(out, part52); } else if (_30 === 14) { - const part43 = rs.intIlog10(a, 32, false); - _27(out, part43); + const part51 = rs.intIlog10(a, 32, false); + _27(out, part51); } else if (_30 === 15) { _22(out, rs.usizeAdd(a, b)); } else if (_30 === 16) { @@ -2418,65 +2548,65 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.usizeRem(a, b)); } else if (_30 === 20) { - const part37 = rs.intStrictNeg(a, 32, false); - _22(out, part37); + const part45 = rs.intStrictNeg(a, 32, false); + _22(out, part45); } else if (_30 === 21) { _22(out, rs.usizeShl(a, k)); } else if (_30 === 22) { _22(out, rs.usizeShr(a, k)); } else if (_30 === 23) { - const part34 = rs.intPow(a, k, 32, false); - _22(out, part34); + const part42 = rs.intPow(a, k, 32, false); + _22(out, part42); } else if (_30 === 24) { - const part33 = rs.intDivEuclid(a, b, 32, false); - _22(out, part33); + const part41 = rs.intDivEuclid(a, b, 32, false); + _22(out, part41); } else if (_30 === 25) { - const part32 = rs.intRemEuclid(a, b, 32, false); - _22(out, part32); + const part40 = rs.intRemEuclid(a, b, 32, false); + _22(out, part40); } else if (_30 === 26) { - const part31 = rs.intStrictAdd(a, o, 32, false); - _22(out, part31); + const part39 = rs.intStrictAdd(a, o, 32, false); + _22(out, part39); } else if (_30 === 27) { - const part30 = rs.intStrictSub(a, o, 32, false); - _22(out, part30); + const part38 = rs.intStrictSub(a, o, 32, false); + _22(out, part38); } else if (_30 === 28) { _22(out, rs.usizeDiv(a, b)); } else if (_30 === 29) { _22(out, rs.usizeRem(a, b)); } else if (_30 === 30) { - const part27 = rs.intWrappingDivEuclid(a, b, 32, false); - _22(out, part27); + const part35 = rs.intWrappingDivEuclid(a, b, 32, false); + _22(out, part35); } else if (_30 === 31) { - const part26 = rs.intWrappingRemEuclid(a, b, 32, false); - _22(out, part26); + const part34 = rs.intWrappingRemEuclid(a, b, 32, false); + _22(out, part34); } else if (_30 === 32) { - const part25 = rs.intOverflowingDiv(a, b, 32, false); - putPair(out, part25); + const part33 = rs.intOverflowingDiv(a, b, 32, false); + putPair(out, part33); } else if (_30 === 33) { - const part24 = rs.intOverflowingRem(a, b, 32, false); - putPair(out, part24); + const part32 = rs.intOverflowingRem(a, b, 32, false); + putPair(out, part32); } else if (_30 === 34) { - const part23 = rs.intOverflowingDivEuclid(a, b, 32, false); - putPair(out, part23); + const part31 = rs.intOverflowingDivEuclid(a, b, 32, false); + putPair(out, part31); } else if (_30 === 35) { - const part22 = rs.intOverflowingRemEuclid(a, b, 32, false); - putPair(out, part22); + const part30 = rs.intOverflowingRemEuclid(a, b, 32, false); + putPair(out, part30); } else if (_30 === 36) { _22(out, rs.usizeDiv(a, b)); } else if (_30 === 37) { - const part20 = rs.intNextPowerOfTwo(a, 32, false); - _22(out, part20); + const part28 = rs.intNextPowerOfTwo(a, 32, false); + _22(out, part28); } else if (_30 === 38) { const _449: rs.u32 = rs.u32Rem(k, 3); if (_449 === 0) { - const part19 = rs.intNextMultipleOf(a, b, 32, false); - _22(out, part19); + const part27 = rs.intNextMultipleOf(a, b, 32, false); + _22(out, part27); } else if (_449 === 1) { - const part18 = rs.intFunnelShl(a, b, k, 32, false); - _22(out, part18); + const part26 = rs.intFunnelShl(a, b, k, 32, false); + _22(out, part26); } else { - const part17 = rs.intFunnelShr(a, b, k, 32, false); - _22(out, part17); + const part25 = rs.intFunnelShr(a, b, k, 32, false); + _22(out, part25); } } else if (_30 === 39) { const s2: rs.usize = a; @@ -2514,8 +2644,8 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _22(out, _527); } rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.intIsPowerOfTwo(s2, 32, false) ? 1 : 0, rs.intIsPowerOfTwo(w, 32, false) ? 1 : 0))); - const part16 = rs.intWrappingNextPowerOfTwo(w, 32, false); - _22(out, part16); + const part24 = rs.intWrappingNextPowerOfTwo(w, 32, false); + _22(out, part24); } else if (_30 === 40) { const _548: [rs.usize | undefined, rs.usize | undefined] = [rs.nonZero(a), rs.nonZero(b)]; if (_548[0] !== undefined) { @@ -2530,37 +2660,37 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _564); } - const part3 = option_map$07b2cw7(rs.usizeCheckedMul(x, y), (a0: rs.usize): rs.usize => { + const part11 = option_map$07b2cw7(rs.usizeCheckedMul(x, y), (a0: rs.usize): rs.usize => { return a0; }); - putOpt(out, part3); - const part4 = rs.usizeSaturatingMul(x, y); - _22(out, part4); - const part5 = option_map$07b2cw7(rs.intCheckedPow(x, k, 32, false), (a02: rs.usize): rs.usize => { + putOpt(out, part11); + const part12 = rs.usizeSaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$07b2cw7(rs.intCheckedPow(x, k, 32, false), (a02: rs.usize): rs.usize => { return a02; }); - putOpt(out, part5); - const part6 = option_map$07b2cw7(rs.intCheckedPow(x, n, 32, false), (a03: rs.usize): rs.usize => { + putOpt(out, part13); + const part14 = option_map$07b2cw7(rs.intCheckedPow(x, n, 32, false), (a03: rs.usize): rs.usize => { return a03; }); - putOpt(out, part6); - const part7 = rs.intSaturatingPow(x, k, 32, false); - _22(out, part7); - const part8 = rs.intIsolateHighestOne(x, 32, false); - _22(out, part8); - const part9 = rs.intIsolateLowestOne(x, 32, false); - _22(out, part9); + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 32, false); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 32, false); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 32, false); + _22(out, part17); rs.byteVecPush(out, rs.intIsPowerOfTwo(x, 32, false) ? 1 : 0); - const part10 = option_map$07b2cw7(rs.usizeCheckedAdd(x, b), (a04: rs.usize): rs.usize => { + const part18 = option_map$07b2cw7(rs.usizeCheckedAdd(x, b), (a04: rs.usize): rs.usize => { return a04; }); - putOpt(out, part10); - const part11 = rs.usizeSaturatingAdd(x, b); - _22(out, part11); - const part12 = option_map$07b2cw7(rs.intCheckedNextPowerOfTwo(x, 32, false), (a05: rs.usize): rs.usize => { + putOpt(out, part18); + const part19 = rs.usizeSaturatingAdd(x, b); + _22(out, part19); + const part20 = option_map$07b2cw7(rs.intCheckedNextPowerOfTwo(x, 32, false), (a05: rs.usize): rs.usize => { return a05; }); - putOpt(out, part12); + putOpt(out, part20); const iter11: rs.Iter = rs.iterSlice([rs.intIlog2(x, 32, false), rs.intIlog10(x, 32, false), rs.intBitWidth(x, 32, false)]); while (true) { const _631: rs.u32 | rs.Done = iter11.next(); @@ -2569,17 +2699,43 @@ export function usizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _631); } - const part13 = rs.intMidpoint(x, y, 32, false); - _22(out, part13); - const part14 = rs.intIsqrt(x, 32, false); - _22(out, part14); - const part15 = rs.usizeDivCeil(x, y); - _22(out, part15); + const part21 = rs.intMidpoint(x, y, 32, false); + _22(out, part21); + const part22 = rs.intIsqrt(x, 32, false); + _22(out, part22); + const part23 = rs.usizeDivCeil(x, y); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.isizeToBeBytes(x | 0))); } } - } else { + } else if (_30 === 41) { rs.byteVecPush(out, 0); + } else if (_30 === 42) { + const part10 = rs.precondition(rs.usizeCheckedAdd(a, b), "usize::unchecked_add cannot overflow"); + _22(out, part10); + } else if (_30 === 43) { + const part9 = rs.precondition(rs.usizeCheckedSub(a, b), "usize::unchecked_sub cannot overflow"); + _22(out, part9); + } else if (_30 === 44) { + const part8 = rs.precondition(rs.usizeCheckedMul(a, b), "usize::unchecked_mul cannot overflow"); + _22(out, part8); + } else if (_30 === 45) { + const part7 = rs.precondition(rs.intCheckedShl(a, k, 32, false), "usize::unchecked_shl cannot overflow"); + _22(out, part7); + } else if (_30 === 46) { + const part6 = rs.precondition(rs.intCheckedShr(a, k, 32, false), "usize::unchecked_shr cannot overflow"); + _22(out, part6); + } else if (_30 === 47) { + if (rs.u32Rem(k, 2) === 0) { + const part5 = rs.precondition(rs.intCheckedFunnelShl(a, b, k, 32, false), "usize::unchecked_funnel_shl cannot overflow"); + _22(out, part5); + } else { + const part4 = rs.precondition(rs.intCheckedFunnelShr(a, b, k, 32, false), "usize::unchecked_funnel_shr cannot overflow"); + _22(out, part4); + } + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -2630,92 +2786,92 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.i8CheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.i8CheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.i8CheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.i8SaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.i8SaturatingSub(a, b); - _22(out, part92); - const part93 = rs.i8SaturatingMul(a, b); - _22(out, part93); - const part94 = rs.i8WrappingAdd(a, b); - _22(out, part94); - const part95 = rs.i8WrappingSub(a, b); - _22(out, part95); - const part96 = rs.i8WrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 8, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 8, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 8, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 8, true); + const part95 = rs.i8CheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.i8CheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.i8CheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.i8SaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.i8SaturatingSub(a, b); + _22(out, part99); + const part100 = rs.i8SaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 8, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 8, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 8, true); + const part101 = rs.i8WrappingAdd(a, b); + _22(out, part101); + const part102 = rs.i8WrappingSub(a, b); + _22(out, part102); + const part103 = rs.i8WrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 8, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 8, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 8, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 8, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 8, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 8, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 8, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 8, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 8, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 8, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 8, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 8, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 8, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 8, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 8, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 8, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 8, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 8, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 8, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 8, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 8, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 8, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 8, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 8, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 8, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.i8WrappingDiv(a, b); - _22(out, part84); - const part85 = rs.i8WrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 8, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 8, true); - putPair(out, part87); + const part91 = rs.i8WrappingDiv(a, b); + _22(out, part91); + const part92 = rs.i8WrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 8, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 8, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 8, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 8, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 8, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 8, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 8, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 8, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 8, true); - putPair(out, part76); - const part77 = rs.i8SaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 8, true); + const part77 = rs.intCheckedNeg(a, 8, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 8, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 8, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 8, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 8, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 8, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 8, true); + putPair(out, part83); + const part84 = rs.i8SaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 8, true); + _22(out, part85); rs.byteVecPush(out, a > 0 ? 1 : 0); rs.byteVecPush(out, a < 0 ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 8, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 8, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(rs.intUnsignedAbs(a, 8, true) as rs.u8))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(a & 0xff))); } else if (_30 === 3) { @@ -2726,14 +2882,14 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 8, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 8, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 8, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 8, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 8, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 8, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 8, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 8, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -2743,26 +2899,26 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 8, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 8, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 8, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 8, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 8, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 8, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 8, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 8, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 8, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 8, true); + const part63 = rs.intCheckedShl(a, s, 8, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 8, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 8, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 8, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 8, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 8, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 8, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 8, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 8, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 8, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 8, true), rs.intCountZeros(a, 8, true), rs.i8LeadingZeros(a), rs.i8TrailingZeros(a), rs.i8LeadingOnes(a), rs.intTrailingOnes(a, 8, true)]); @@ -2781,48 +2937,48 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 8, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 8, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 8, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 8, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 8, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 8, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 8, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 8, true); + _22(out, part62); _22(out, 127); _22(out, -128); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 8, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 8, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 8, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 8, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 8, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 8, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(rs.intAbsDiff(a, b, 8, true) as rs.u8))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 8, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 8, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 8, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 8, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 8, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 8, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 8, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 8, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 8, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 8, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 8, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 8, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 8, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 8, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 8, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 8, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.i8Add(a, b)); } else if (_30 === 16) { @@ -2834,60 +2990,60 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.i8Rem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 8, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 8, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.i8Shl(a, k)); } else if (_30 === 22) { _22(out, rs.i8Shr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 8, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 8, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 8, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 8, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 8, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 8, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 8, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 8, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 8, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 8, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.i8WrappingDiv(a, b); - _22(out, part27); + const part34 = rs.i8WrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.i8WrappingRem(a, b); - _22(out, part26); + const part33 = rs.i8WrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 8, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 8, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 8, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 8, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 8, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 8, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 8, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 8, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 8, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 8, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 8, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 8, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.i8SaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.i8SaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 8, true); - _22(out, part18); + const part25 = rs.intAbs(a, 8, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 8, true); - _22(out, part17); + const part24 = rs.intAbs(a, 8, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.i8 = a; const w: rs.i8 = a; @@ -2954,57 +3110,78 @@ export function i8s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$1hwn965(rs.i8CheckedMul(x, y), (a0: rs.i8): rs.i8 => { + const part11 = option_map$1hwn965(rs.i8CheckedMul(x, y), (a0: rs.i8): rs.i8 => { return a0; }); - putOpt(out, part4); - const part5 = rs.i8SaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$1hwn965(rs.intCheckedPow(x, k, 8, true), (a02: rs.i8): rs.i8 => { + putOpt(out, part11); + const part12 = rs.i8SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$1hwn965(rs.intCheckedPow(x, k, 8, true), (a02: rs.i8): rs.i8 => { return a02; }); - putOpt(out, part6); - const part7 = option_map$1hwn965(rs.intCheckedPow(x, n, 8, true), (a03: rs.i8): rs.i8 => { + putOpt(out, part13); + const part14 = option_map$1hwn965(rs.intCheckedPow(x, n, 8, true), (a03: rs.i8): rs.i8 => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 8, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 8, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 8, true); - _22(out, part10); - const part11 = option_map$1hwn965(rs.intCheckedAbs(x, 8, true), (a04: rs.i8): rs.i8 => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 8, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 8, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 8, true); + _22(out, part17); + const part18 = option_map$1hwn965(rs.intCheckedAbs(x, 8, true), (a04: rs.i8): rs.i8 => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.i8, boolean] = rs.intOverflowingAbs(x, 8, true); putPair(out, [_622[0], _622[1]] as [rs.i8, boolean]); - const part12 = rs.intSaturatingAbs(x, 8, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 8, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 8, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 8, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(rs.intUnsignedAbs(x, 8, true) as rs.u8))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(x > 0 ? 1 : 0, x < 0 ? 1 : 0))); - const part14 = option_map$1hwn965(rs.intCheckedNeg(x, 8, true), (a05: rs.i8): rs.i8 => { + const part21 = option_map$1hwn965(rs.intCheckedNeg(x, 8, true), (a05: rs.i8): rs.i8 => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.i8, boolean] = rs.intOverflowingNeg(x, 8, true); putPair(out, [_659[0], _659[1]] as [rs.i8, boolean]); - const part15 = rs.i8SaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 8, true); - _22(out, part16); + const part22 = rs.i8SaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 8, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u8ToBeBytes(x & 0xff))); } } - } else { + } else if (_30 === 41) { const _681: rs.i8 | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 8, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 8, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.i8CheckedAdd(a, b), "i8::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.i8CheckedSub(a, b), "i8::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.i8CheckedMul(a, b), "i8::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 8, true), "i8::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 8, true), "i8::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 8, true), "i8::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -3055,92 +3232,92 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.i16CheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.i16CheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.i16CheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.i16SaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.i16SaturatingSub(a, b); - _22(out, part92); - const part93 = rs.i16SaturatingMul(a, b); - _22(out, part93); - const part94 = rs.i16WrappingAdd(a, b); - _22(out, part94); - const part95 = rs.i16WrappingSub(a, b); - _22(out, part95); - const part96 = rs.i16WrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 16, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 16, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 16, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 16, true); + const part95 = rs.i16CheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.i16CheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.i16CheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.i16SaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.i16SaturatingSub(a, b); + _22(out, part99); + const part100 = rs.i16SaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 16, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 16, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 16, true); + const part101 = rs.i16WrappingAdd(a, b); + _22(out, part101); + const part102 = rs.i16WrappingSub(a, b); + _22(out, part102); + const part103 = rs.i16WrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 16, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 16, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 16, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 16, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 16, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 16, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 16, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 16, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 16, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 16, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 16, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 16, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 16, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 16, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 16, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 16, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 16, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 16, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 16, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 16, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 16, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 16, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 16, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 16, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 16, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.i16WrappingDiv(a, b); - _22(out, part84); - const part85 = rs.i16WrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 16, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 16, true); - putPair(out, part87); + const part91 = rs.i16WrappingDiv(a, b); + _22(out, part91); + const part92 = rs.i16WrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 16, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 16, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 16, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 16, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 16, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 16, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 16, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 16, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 16, true); - putPair(out, part76); - const part77 = rs.i16SaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 16, true); + const part77 = rs.intCheckedNeg(a, 16, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 16, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 16, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 16, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 16, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 16, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 16, true); + putPair(out, part83); + const part84 = rs.i16SaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 16, true); + _22(out, part85); rs.byteVecPush(out, a > 0 ? 1 : 0); rs.byteVecPush(out, a < 0 ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 16, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 16, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(rs.intUnsignedAbs(a, 16, true) as rs.u16))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(a & 0xffff))); } else if (_30 === 3) { @@ -3151,14 +3328,14 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 16, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 16, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 16, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 16, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 16, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 16, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 16, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 16, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -3168,26 +3345,26 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 16, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 16, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 16, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 16, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 16, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 16, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 16, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 16, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 16, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 16, true); + const part63 = rs.intCheckedShl(a, s, 16, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 16, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 16, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 16, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 16, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 16, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 16, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 16, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 16, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 16, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 16, true), rs.intCountZeros(a, 16, true), rs.i16LeadingZeros(a), rs.i16TrailingZeros(a), rs.i16LeadingOnes(a), rs.intTrailingOnes(a, 16, true)]); @@ -3206,48 +3383,48 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 16, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 16, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 16, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 16, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 16, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 16, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 16, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 16, true); + _22(out, part62); _22(out, 32767); _22(out, -32768); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 16, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 16, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 16, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 16, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 16, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 16, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(rs.intAbsDiff(a, b, 16, true) as rs.u16))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 16, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 16, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 16, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 16, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 16, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 16, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 16, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 16, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 16, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 16, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 16, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 16, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 16, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 16, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 16, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 16, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.i16Add(a, b)); } else if (_30 === 16) { @@ -3259,60 +3436,60 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.i16Rem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 16, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 16, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.i16Shl(a, k)); } else if (_30 === 22) { _22(out, rs.i16Shr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 16, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 16, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 16, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 16, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 16, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 16, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 16, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 16, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 16, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 16, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.i16WrappingDiv(a, b); - _22(out, part27); + const part34 = rs.i16WrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.i16WrappingRem(a, b); - _22(out, part26); + const part33 = rs.i16WrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 16, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 16, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 16, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 16, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 16, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 16, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 16, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 16, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 16, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 16, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 16, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 16, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.i16SaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.i16SaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 16, true); - _22(out, part18); + const part25 = rs.intAbs(a, 16, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 16, true); - _22(out, part17); + const part24 = rs.intAbs(a, 16, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.i16 = a; const w: rs.i16 = a; @@ -3379,57 +3556,78 @@ export function i16s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$0ip7buw(rs.i16CheckedMul(x, y), (a0: rs.i16): rs.i16 => { + const part11 = option_map$0ip7buw(rs.i16CheckedMul(x, y), (a0: rs.i16): rs.i16 => { return a0; }); - putOpt(out, part4); - const part5 = rs.i16SaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$0ip7buw(rs.intCheckedPow(x, k, 16, true), (a02: rs.i16): rs.i16 => { + putOpt(out, part11); + const part12 = rs.i16SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$0ip7buw(rs.intCheckedPow(x, k, 16, true), (a02: rs.i16): rs.i16 => { return a02; }); - putOpt(out, part6); - const part7 = option_map$0ip7buw(rs.intCheckedPow(x, n, 16, true), (a03: rs.i16): rs.i16 => { + putOpt(out, part13); + const part14 = option_map$0ip7buw(rs.intCheckedPow(x, n, 16, true), (a03: rs.i16): rs.i16 => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 16, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 16, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 16, true); - _22(out, part10); - const part11 = option_map$0ip7buw(rs.intCheckedAbs(x, 16, true), (a04: rs.i16): rs.i16 => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 16, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 16, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 16, true); + _22(out, part17); + const part18 = option_map$0ip7buw(rs.intCheckedAbs(x, 16, true), (a04: rs.i16): rs.i16 => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.i16, boolean] = rs.intOverflowingAbs(x, 16, true); putPair(out, [_622[0], _622[1]] as [rs.i16, boolean]); - const part12 = rs.intSaturatingAbs(x, 16, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 16, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 16, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 16, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(rs.intUnsignedAbs(x, 16, true) as rs.u16))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(x > 0 ? 1 : 0, x < 0 ? 1 : 0))); - const part14 = option_map$0ip7buw(rs.intCheckedNeg(x, 16, true), (a05: rs.i16): rs.i16 => { + const part21 = option_map$0ip7buw(rs.intCheckedNeg(x, 16, true), (a05: rs.i16): rs.i16 => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.i16, boolean] = rs.intOverflowingNeg(x, 16, true); putPair(out, [_659[0], _659[1]] as [rs.i16, boolean]); - const part15 = rs.i16SaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 16, true); - _22(out, part16); + const part22 = rs.i16SaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 16, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u16ToBeBytes(x & 0xffff))); } } - } else { + } else if (_30 === 41) { const _681: rs.i16 | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 16, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 16, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.i16CheckedAdd(a, b), "i16::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.i16CheckedSub(a, b), "i16::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.i16CheckedMul(a, b), "i16::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 16, true), "i16::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 16, true), "i16::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 16, true), "i16::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -3480,92 +3678,92 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.i32CheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.i32CheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.i32CheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.i32SaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.i32SaturatingSub(a, b); - _22(out, part92); - const part93 = rs.i32SaturatingMul(a, b); - _22(out, part93); - const part94 = rs.i32WrappingAdd(a, b); - _22(out, part94); - const part95 = rs.i32WrappingSub(a, b); - _22(out, part95); - const part96 = rs.i32WrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 32, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 32, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 32, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 32, true); + const part95 = rs.i32CheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.i32CheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.i32CheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.i32SaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.i32SaturatingSub(a, b); + _22(out, part99); + const part100 = rs.i32SaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 32, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 32, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 32, true); + const part101 = rs.i32WrappingAdd(a, b); + _22(out, part101); + const part102 = rs.i32WrappingSub(a, b); + _22(out, part102); + const part103 = rs.i32WrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 32, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 32, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 32, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 32, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 32, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 32, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 32, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 32, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 32, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 32, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 32, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 32, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 32, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 32, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 32, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 32, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 32, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 32, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 32, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 32, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 32, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 32, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 32, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 32, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 32, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.i32WrappingDiv(a, b); - _22(out, part84); - const part85 = rs.i32WrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 32, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 32, true); - putPair(out, part87); + const part91 = rs.i32WrappingDiv(a, b); + _22(out, part91); + const part92 = rs.i32WrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 32, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 32, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 32, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 32, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 32, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 32, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 32, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 32, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 32, true); - putPair(out, part76); - const part77 = rs.i32SaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 32, true); + const part77 = rs.intCheckedNeg(a, 32, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 32, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 32, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 32, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 32, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 32, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 32, true); + putPair(out, part83); + const part84 = rs.i32SaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 32, true); + _22(out, part85); rs.byteVecPush(out, a > 0 ? 1 : 0); rs.byteVecPush(out, a < 0 ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 32, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 32, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(rs.intUnsignedAbs(a, 32, true) as rs.u32))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(a >>> 0))); } else if (_30 === 3) { @@ -3576,14 +3774,14 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 32, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 32, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 32, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 32, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 32, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 32, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 32, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 32, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -3593,26 +3791,26 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 32, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 32, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 32, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 32, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 32, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 32, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 32, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 32, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 32, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 32, true); + const part63 = rs.intCheckedShl(a, s, 32, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 32, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 32, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 32, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 32, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 32, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 32, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 32, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 32, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 32, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 32, true), rs.intCountZeros(a, 32, true), rs.i32LeadingZeros(a), rs.i32TrailingZeros(a), rs.i32LeadingOnes(a), rs.intTrailingOnes(a, 32, true)]); @@ -3631,48 +3829,48 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 32, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 32, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 32, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 32, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 32, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 32, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 32, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 32, true); + _22(out, part62); _22(out, 2147483647); _22(out, -2147483648); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 32, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 32, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 32, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 32, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 32, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 32, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(rs.intAbsDiff(a, b, 32, true) as rs.u32))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 32, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 32, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 32, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 32, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 32, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 32, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 32, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 32, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 32, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 32, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 32, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 32, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 32, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 32, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 32, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 32, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.i32Add(a, b)); } else if (_30 === 16) { @@ -3684,60 +3882,60 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.i32Rem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 32, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 32, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.i32Shl(a, k)); } else if (_30 === 22) { _22(out, rs.i32Shr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 32, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 32, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 32, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 32, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 32, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 32, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 32, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 32, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 32, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 32, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.i32WrappingDiv(a, b); - _22(out, part27); + const part34 = rs.i32WrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.i32WrappingRem(a, b); - _22(out, part26); + const part33 = rs.i32WrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 32, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 32, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 32, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 32, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 32, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 32, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 32, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 32, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 32, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 32, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 32, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 32, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.i32SaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.i32SaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 32, true); - _22(out, part18); + const part25 = rs.intAbs(a, 32, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 32, true); - _22(out, part17); + const part24 = rs.intAbs(a, 32, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.i32 = a; const w: rs.i32 = a; @@ -3804,57 +4002,78 @@ export function i32s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$0a35how(rs.i32CheckedMul(x, y), (a0: rs.i32): rs.i32 => { + const part11 = option_map$0a35how(rs.i32CheckedMul(x, y), (a0: rs.i32): rs.i32 => { return a0; }); - putOpt(out, part4); - const part5 = rs.i32SaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$0a35how(rs.intCheckedPow(x, k, 32, true), (a02: rs.i32): rs.i32 => { + putOpt(out, part11); + const part12 = rs.i32SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$0a35how(rs.intCheckedPow(x, k, 32, true), (a02: rs.i32): rs.i32 => { return a02; }); - putOpt(out, part6); - const part7 = option_map$0a35how(rs.intCheckedPow(x, n, 32, true), (a03: rs.i32): rs.i32 => { + putOpt(out, part13); + const part14 = option_map$0a35how(rs.intCheckedPow(x, n, 32, true), (a03: rs.i32): rs.i32 => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 32, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 32, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 32, true); - _22(out, part10); - const part11 = option_map$0a35how(rs.intCheckedAbs(x, 32, true), (a04: rs.i32): rs.i32 => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 32, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 32, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 32, true); + _22(out, part17); + const part18 = option_map$0a35how(rs.intCheckedAbs(x, 32, true), (a04: rs.i32): rs.i32 => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.i32, boolean] = rs.intOverflowingAbs(x, 32, true); putPair(out, [_622[0], _622[1]] as [rs.i32, boolean]); - const part12 = rs.intSaturatingAbs(x, 32, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 32, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 32, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 32, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(rs.intUnsignedAbs(x, 32, true) as rs.u32))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(x > 0 ? 1 : 0, x < 0 ? 1 : 0))); - const part14 = option_map$0a35how(rs.intCheckedNeg(x, 32, true), (a05: rs.i32): rs.i32 => { + const part21 = option_map$0a35how(rs.intCheckedNeg(x, 32, true), (a05: rs.i32): rs.i32 => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.i32, boolean] = rs.intOverflowingNeg(x, 32, true); putPair(out, [_659[0], _659[1]] as [rs.i32, boolean]); - const part15 = rs.i32SaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 32, true); - _22(out, part16); + const part22 = rs.i32SaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 32, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u32ToBeBytes(x >>> 0))); } } - } else { + } else if (_30 === 41) { const _681: rs.i32 | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 32, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 32, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.i32CheckedAdd(a, b), "i32::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.i32CheckedSub(a, b), "i32::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.i32CheckedMul(a, b), "i32::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 32, true), "i32::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 32, true), "i32::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 32, true), "i32::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -3905,92 +4124,92 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.i64CheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.i64CheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.i64CheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.i64SaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.i64SaturatingSub(a, b); - _22(out, part92); - const part93 = rs.i64SaturatingMul(a, b); - _22(out, part93); - const part94 = rs.i64WrappingAdd(a, b); - _22(out, part94); - const part95 = rs.i64WrappingSub(a, b); - _22(out, part95); - const part96 = rs.i64WrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 64, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 64, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 64, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 64, true); + const part95 = rs.i64CheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.i64CheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.i64CheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.i64SaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.i64SaturatingSub(a, b); + _22(out, part99); + const part100 = rs.i64SaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 64, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 64, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 64, true); + const part101 = rs.i64WrappingAdd(a, b); + _22(out, part101); + const part102 = rs.i64WrappingSub(a, b); + _22(out, part102); + const part103 = rs.i64WrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 64, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 64, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 64, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 64, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 64, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 64, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 64, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 64, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 64, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 64, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 64, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 64, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 64, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 64, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 64, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 64, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 64, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 64, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 64, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 64, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 64, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 64, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 64, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 64, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 64, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.i64WrappingDiv(a, b); - _22(out, part84); - const part85 = rs.i64WrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 64, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 64, true); - putPair(out, part87); + const part91 = rs.i64WrappingDiv(a, b); + _22(out, part91); + const part92 = rs.i64WrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 64, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 64, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 64, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 64, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 64, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 64, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 64, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 64, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 64, true); - putPair(out, part76); - const part77 = rs.i64SaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 64, true); + const part77 = rs.intCheckedNeg(a, 64, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 64, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 64, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 64, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 64, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 64, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 64, true); + putPair(out, part83); + const part84 = rs.i64SaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 64, true); + _22(out, part85); rs.byteVecPush(out, rs.i64Gt(a, 0) ? 1 : 0); rs.byteVecPush(out, rs.i64Lt(a, 0) ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 64, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 64, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.intUnsignedAbs(a, 64, true) as rs.u64))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.u64Cast(a)))); } else if (_30 === 3) { @@ -4001,14 +4220,14 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 64, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 64, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 64, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 64, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 64, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 64, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 64, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 64, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -4018,26 +4237,26 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 64, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 64, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 64, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 64, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 64, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 64, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 64, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 64, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 64, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 64, true); + const part63 = rs.intCheckedShl(a, s, 64, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 64, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 64, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 64, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 64, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 64, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 64, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 64, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 64, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 64, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 64, true), rs.intCountZeros(a, 64, true), rs.i64LeadingZeros(a), rs.i64TrailingZeros(a), rs.i64LeadingOnes(a), rs.intTrailingOnes(a, 64, true)]); @@ -4056,48 +4275,48 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 64, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 64, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 64, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 64, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 64, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 64, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 64, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 64, true); + _22(out, part62); _22(out, { hi: 0x7fffffff, lo: 0xffffffff } as rs.i64); _22(out, { hi: -0x80000000, lo: 0 } as rs.i64); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 64, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 64, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 64, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 64, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 64, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 64, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.intAbsDiff(a, b, 64, true) as rs.u64))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 64, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 64, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 64, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 64, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 64, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 64, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 64, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 64, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 64, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 64, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 64, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 64, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 64, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 64, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 64, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 64, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.i64Add(a, b)); } else if (_30 === 16) { @@ -4109,60 +4328,60 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.i64Rem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 64, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 64, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.i64Shl(a, k)); } else if (_30 === 22) { _22(out, rs.i64Shr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 64, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 64, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 64, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 64, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 64, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 64, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 64, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 64, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 64, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 64, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.i64WrappingDiv(a, b); - _22(out, part27); + const part34 = rs.i64WrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.i64WrappingRem(a, b); - _22(out, part26); + const part33 = rs.i64WrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 64, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 64, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 64, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 64, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 64, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 64, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 64, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 64, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 64, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 64, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 64, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 64, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.i64SaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.i64SaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 64, true); - _22(out, part18); + const part25 = rs.intAbs(a, 64, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 64, true); - _22(out, part17); + const part24 = rs.intAbs(a, 64, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.i64 = a; const w: rs.i64 = a; @@ -4229,57 +4448,78 @@ export function i64s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$05k3lfb(rs.i64CheckedMul(x, y), (a0: rs.i64): rs.i64 => { + const part11 = option_map$05k3lfb(rs.i64CheckedMul(x, y), (a0: rs.i64): rs.i64 => { return a0; }); - putOpt(out, part4); - const part5 = rs.i64SaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$05k3lfb(rs.intCheckedPow(x, k, 64, true), (a02: rs.i64): rs.i64 => { + putOpt(out, part11); + const part12 = rs.i64SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$05k3lfb(rs.intCheckedPow(x, k, 64, true), (a02: rs.i64): rs.i64 => { return a02; }); - putOpt(out, part6); - const part7 = option_map$05k3lfb(rs.intCheckedPow(x, n, 64, true), (a03: rs.i64): rs.i64 => { + putOpt(out, part13); + const part14 = option_map$05k3lfb(rs.intCheckedPow(x, n, 64, true), (a03: rs.i64): rs.i64 => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 64, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 64, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 64, true); - _22(out, part10); - const part11 = option_map$05k3lfb(rs.intCheckedAbs(x, 64, true), (a04: rs.i64): rs.i64 => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 64, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 64, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 64, true); + _22(out, part17); + const part18 = option_map$05k3lfb(rs.intCheckedAbs(x, 64, true), (a04: rs.i64): rs.i64 => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.i64, boolean] = rs.intOverflowingAbs(x, 64, true); putPair(out, [_622[0], _622[1]] as [rs.i64, boolean]); - const part12 = rs.intSaturatingAbs(x, 64, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 64, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 64, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 64, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.intUnsignedAbs(x, 64, true) as rs.u64))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.i64Gt(x, 0) ? 1 : 0, rs.i64Lt(x, 0) ? 1 : 0))); - const part14 = option_map$05k3lfb(rs.intCheckedNeg(x, 64, true), (a05: rs.i64): rs.i64 => { + const part21 = option_map$05k3lfb(rs.intCheckedNeg(x, 64, true), (a05: rs.i64): rs.i64 => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.i64, boolean] = rs.intOverflowingNeg(x, 64, true); putPair(out, [_659[0], _659[1]] as [rs.i64, boolean]); - const part15 = rs.i64SaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 64, true); - _22(out, part16); + const part22 = rs.i64SaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 64, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u64ToBeBytes(rs.u64Cast(x)))); } } - } else { + } else if (_30 === 41) { const _681: rs.i64 | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 64, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 64, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.i64CheckedAdd(a, b), "i64::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.i64CheckedSub(a, b), "i64::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.i64CheckedMul(a, b), "i64::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 64, true), "i64::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 64, true), "i64::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 64, true), "i64::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -4330,92 +4570,92 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.i128CheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.i128CheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.i128CheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.i128SaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.i128SaturatingSub(a, b); - _22(out, part92); - const part93 = rs.i128SaturatingMul(a, b); - _22(out, part93); - const part94 = rs.i128WrappingAdd(a, b); - _22(out, part94); - const part95 = rs.i128WrappingSub(a, b); - _22(out, part95); - const part96 = rs.i128WrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 128, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 128, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 128, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 128, true); + const part95 = rs.i128CheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.i128CheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.i128CheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.i128SaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.i128SaturatingSub(a, b); + _22(out, part99); + const part100 = rs.i128SaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 128, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 128, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 128, true); + const part101 = rs.i128WrappingAdd(a, b); + _22(out, part101); + const part102 = rs.i128WrappingSub(a, b); + _22(out, part102); + const part103 = rs.i128WrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 128, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 128, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 128, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 128, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 128, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 128, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 128, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 128, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 128, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 128, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 128, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 128, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 128, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 128, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 128, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 128, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 128, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 128, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 128, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 128, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 128, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 128, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 128, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 128, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 128, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.i128WrappingDiv(a, b); - _22(out, part84); - const part85 = rs.i128WrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 128, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 128, true); - putPair(out, part87); + const part91 = rs.i128WrappingDiv(a, b); + _22(out, part91); + const part92 = rs.i128WrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 128, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 128, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 128, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 128, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 128, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 128, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 128, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 128, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 128, true); - putPair(out, part76); - const part77 = rs.i128SaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 128, true); + const part77 = rs.intCheckedNeg(a, 128, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 128, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 128, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 128, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 128, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 128, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 128, true); + putPair(out, part83); + const part84 = rs.i128SaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 128, true); + _22(out, part85); rs.byteVecPush(out, rs.i128Gt(a, 0) ? 1 : 0); rs.byteVecPush(out, rs.i128Lt(a, 0) ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 128, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 128, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.intUnsignedAbs(a, 128, true) as rs.u128))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.u128Cast(a)))); } else if (_30 === 3) { @@ -4426,14 +4666,14 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 128, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 128, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 128, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 128, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 128, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 128, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 128, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 128, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -4443,26 +4683,26 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 128, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 128, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 128, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 128, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 128, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 128, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 128, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 128, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 128, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 128, true); + const part63 = rs.intCheckedShl(a, s, 128, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 128, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 128, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 128, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 128, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 128, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 128, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 128, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 128, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 128, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 128, true), rs.intCountZeros(a, 128, true), rs.i128LeadingZeros(a), rs.i128TrailingZeros(a), rs.i128LeadingOnes(a), rs.intTrailingOnes(a, 128, true)]); @@ -4481,48 +4721,48 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 128, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 128, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 128, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 128, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 128, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 128, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 128, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 128, true); + _22(out, part62); _22(out, { hi: 0x7fffffff, w2: 0xffffffff, w1: 0xffffffff, lo: 0xffffffff } as rs.i128); _22(out, { hi: -0x80000000, w2: 0, w1: 0, lo: 0 } as rs.i128); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 128, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 128, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 128, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 128, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 128, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 128, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.intAbsDiff(a, b, 128, true) as rs.u128))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 128, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 128, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 128, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 128, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 128, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 128, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 128, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 128, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 128, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 128, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 128, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 128, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 128, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 128, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 128, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 128, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.i128Add(a, b)); } else if (_30 === 16) { @@ -4534,60 +4774,60 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.i128Rem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 128, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 128, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.i128Shl(a, k)); } else if (_30 === 22) { _22(out, rs.i128Shr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 128, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 128, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 128, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 128, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 128, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 128, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 128, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 128, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 128, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 128, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.i128WrappingDiv(a, b); - _22(out, part27); + const part34 = rs.i128WrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.i128WrappingRem(a, b); - _22(out, part26); + const part33 = rs.i128WrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 128, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 128, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 128, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 128, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 128, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 128, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 128, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 128, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 128, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 128, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 128, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 128, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.i128SaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.i128SaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 128, true); - _22(out, part18); + const part25 = rs.intAbs(a, 128, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 128, true); - _22(out, part17); + const part24 = rs.intAbs(a, 128, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.i128 = a; const w: rs.i128 = a; @@ -4654,57 +4894,78 @@ export function i128s(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$1ocvprc(rs.i128CheckedMul(x, y), (a0: rs.i128): rs.i128 => { + const part11 = option_map$1ocvprc(rs.i128CheckedMul(x, y), (a0: rs.i128): rs.i128 => { return a0; }); - putOpt(out, part4); - const part5 = rs.i128SaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$1ocvprc(rs.intCheckedPow(x, k, 128, true), (a02: rs.i128): rs.i128 => { + putOpt(out, part11); + const part12 = rs.i128SaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$1ocvprc(rs.intCheckedPow(x, k, 128, true), (a02: rs.i128): rs.i128 => { return a02; }); - putOpt(out, part6); - const part7 = option_map$1ocvprc(rs.intCheckedPow(x, n, 128, true), (a03: rs.i128): rs.i128 => { + putOpt(out, part13); + const part14 = option_map$1ocvprc(rs.intCheckedPow(x, n, 128, true), (a03: rs.i128): rs.i128 => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 128, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 128, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 128, true); - _22(out, part10); - const part11 = option_map$1ocvprc(rs.intCheckedAbs(x, 128, true), (a04: rs.i128): rs.i128 => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 128, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 128, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 128, true); + _22(out, part17); + const part18 = option_map$1ocvprc(rs.intCheckedAbs(x, 128, true), (a04: rs.i128): rs.i128 => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.i128, boolean] = rs.intOverflowingAbs(x, 128, true); putPair(out, [_622[0], _622[1]] as [rs.i128, boolean]); - const part12 = rs.intSaturatingAbs(x, 128, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 128, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 128, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 128, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.intUnsignedAbs(x, 128, true) as rs.u128))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(rs.i128Gt(x, 0) ? 1 : 0, rs.i128Lt(x, 0) ? 1 : 0))); - const part14 = option_map$1ocvprc(rs.intCheckedNeg(x, 128, true), (a05: rs.i128): rs.i128 => { + const part21 = option_map$1ocvprc(rs.intCheckedNeg(x, 128, true), (a05: rs.i128): rs.i128 => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.i128, boolean] = rs.intOverflowingNeg(x, 128, true); putPair(out, [_659[0], _659[1]] as [rs.i128, boolean]); - const part15 = rs.i128SaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 128, true); - _22(out, part16); + const part22 = rs.i128SaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 128, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.u128ToBeBytes(rs.u128Cast(x)))); } } - } else { + } else if (_30 === 41) { const _681: rs.i128 | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 128, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 128, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.i128CheckedAdd(a, b), "i128::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.i128CheckedSub(a, b), "i128::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.i128CheckedMul(a, b), "i128::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 128, true), "i128::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 128, true), "i128::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 128, true), "i128::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } @@ -4755,92 +5016,92 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { _27(out6, v14); } }; - const _30: rs.u8 = rs.u8Rem(kind, 42); + const _30: rs.u8 = rs.u8Rem(kind, 49); if (_30 === 0) { - const part88 = rs.isizeCheckedAdd(a, b); - putOpt(out, part88); - const part89 = rs.isizeCheckedSub(a, b); - putOpt(out, part89); - const part90 = rs.isizeCheckedMul(a, b); - putOpt(out, part90); - const part91 = rs.isizeSaturatingAdd(a, b); - _22(out, part91); - const part92 = rs.isizeSaturatingSub(a, b); - _22(out, part92); - const part93 = rs.isizeSaturatingMul(a, b); - _22(out, part93); - const part94 = rs.isizeWrappingAdd(a, b); - _22(out, part94); - const part95 = rs.isizeWrappingSub(a, b); - _22(out, part95); - const part96 = rs.isizeWrappingMul(a, b); - _22(out, part96); - const part97 = rs.intOverflowingAdd(a, b, 32, true); - putPair(out, part97); - const part98 = rs.intOverflowingSub(a, b, 32, true); - putPair(out, part98); - const part99 = rs.intOverflowingMul(a, b, 32, true); - putPair(out, part99); - const part100 = rs.intMidpoint(a, b, 32, true); + const part95 = rs.isizeCheckedAdd(a, b); + putOpt(out, part95); + const part96 = rs.isizeCheckedSub(a, b); + putOpt(out, part96); + const part97 = rs.isizeCheckedMul(a, b); + putOpt(out, part97); + const part98 = rs.isizeSaturatingAdd(a, b); + _22(out, part98); + const part99 = rs.isizeSaturatingSub(a, b); + _22(out, part99); + const part100 = rs.isizeSaturatingMul(a, b); _22(out, part100); - const part101 = rs.intCheckedAdd(a, o, 32, true); - putOpt(out, part101); - const part102 = rs.intCheckedSub(a, o, 32, true); - putOpt(out, part102); - const part103 = rs.intSaturatingAdd(a, o, 32, true); + const part101 = rs.isizeWrappingAdd(a, b); + _22(out, part101); + const part102 = rs.isizeWrappingSub(a, b); + _22(out, part102); + const part103 = rs.isizeWrappingMul(a, b); _22(out, part103); - const part104 = rs.intSaturatingSub(a, o, 32, true); - _22(out, part104); - const part105 = rs.intWrappingAdd(a, o, 32, true); - _22(out, part105); - const part106 = rs.intWrappingSub(a, o, 32, true); - _22(out, part106); - const part107 = rs.intOverflowingAdd(a, o, 32, true); - putPair(out, part107); - const part108 = rs.intOverflowingSub(a, o, 32, true); - putPair(out, part108); + const part104 = rs.intOverflowingAdd(a, b, 32, true); + putPair(out, part104); + const part105 = rs.intOverflowingSub(a, b, 32, true); + putPair(out, part105); + const part106 = rs.intOverflowingMul(a, b, 32, true); + putPair(out, part106); + const part107 = rs.intMidpoint(a, b, 32, true); + _22(out, part107); + const part108 = rs.intCheckedAdd(a, o, 32, true); + putOpt(out, part108); + const part109 = rs.intCheckedSub(a, o, 32, true); + putOpt(out, part109); + const part110 = rs.intSaturatingAdd(a, o, 32, true); + _22(out, part110); + const part111 = rs.intSaturatingSub(a, o, 32, true); + _22(out, part111); + const part112 = rs.intWrappingAdd(a, o, 32, true); + _22(out, part112); + const part113 = rs.intWrappingSub(a, o, 32, true); + _22(out, part113); + const part114 = rs.intOverflowingAdd(a, o, 32, true); + putPair(out, part114); + const part115 = rs.intOverflowingSub(a, o, 32, true); + putPair(out, part115); } else if (_30 === 1) { - const part80 = rs.intCheckedDiv(a, b, 32, true); - putOpt(out, part80); - const part81 = rs.intCheckedRem(a, b, 32, true); - putOpt(out, part81); - const part82 = rs.intCheckedDivEuclid(a, b, 32, true); - putOpt(out, part82); - const part83 = rs.intCheckedRemEuclid(a, b, 32, true); - putOpt(out, part83); + const part87 = rs.intCheckedDiv(a, b, 32, true); + putOpt(out, part87); + const part88 = rs.intCheckedRem(a, b, 32, true); + putOpt(out, part88); + const part89 = rs.intCheckedDivEuclid(a, b, 32, true); + putOpt(out, part89); + const part90 = rs.intCheckedRemEuclid(a, b, 32, true); + putOpt(out, part90); if (b !== 0) { - const part84 = rs.isizeWrappingDiv(a, b); - _22(out, part84); - const part85 = rs.isizeWrappingRem(a, b); - _22(out, part85); - const part86 = rs.intOverflowingDivEuclid(a, b, 32, true); - putPair(out, part86); - const part87 = rs.intOverflowingRemEuclid(a, b, 32, true); - putPair(out, part87); + const part91 = rs.isizeWrappingDiv(a, b); + _22(out, part91); + const part92 = rs.isizeWrappingRem(a, b); + _22(out, part92); + const part93 = rs.intOverflowingDivEuclid(a, b, 32, true); + putPair(out, part93); + const part94 = rs.intOverflowingRemEuclid(a, b, 32, true); + putPair(out, part94); } } else if (_30 === 2) { - const part70 = rs.intCheckedNeg(a, 32, true); - putOpt(out, part70); - const part71 = rs.intWrappingNeg(a, 32, true); - _22(out, part71); - const part72 = rs.intOverflowingNeg(a, 32, true); - putPair(out, part72); - const part73 = rs.intCheckedAbs(a, 32, true); - putOpt(out, part73); - const part74 = rs.intWrappingAbs(a, 32, true); - _22(out, part74); - const part75 = rs.intSaturatingAbs(a, 32, true); - _22(out, part75); - const part76 = rs.intOverflowingAbs(a, 32, true); - putPair(out, part76); - const part77 = rs.isizeSaturatingSub(0, a); - _22(out, part77); - const part78 = rs.intSignum(a, 32, true); + const part77 = rs.intCheckedNeg(a, 32, true); + putOpt(out, part77); + const part78 = rs.intWrappingNeg(a, 32, true); _22(out, part78); + const part79 = rs.intOverflowingNeg(a, 32, true); + putPair(out, part79); + const part80 = rs.intCheckedAbs(a, 32, true); + putOpt(out, part80); + const part81 = rs.intWrappingAbs(a, 32, true); + _22(out, part81); + const part82 = rs.intSaturatingAbs(a, 32, true); + _22(out, part82); + const part83 = rs.intOverflowingAbs(a, 32, true); + putPair(out, part83); + const part84 = rs.isizeSaturatingSub(0, a); + _22(out, part84); + const part85 = rs.intSignum(a, 32, true); + _22(out, part85); rs.byteVecPush(out, a > 0 ? 1 : 0); rs.byteVecPush(out, a < 0 ? 1 : 0); - const part79 = rs.intCheckedIsqrt(a, 32, true); - putOpt(out, part79); + const part86 = rs.intCheckedIsqrt(a, 32, true); + putOpt(out, part86); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(rs.intUnsignedAbs(a, 32, true) as rs.usize))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(a >>> 0))); } else if (_30 === 3) { @@ -4851,14 +5112,14 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const e: rs.u32 = _208; - const part66 = rs.intCheckedPow(a, e, 32, true); - putOpt(out, part66); - const part67 = rs.intWrappingPow(a, e, 32, true); - _22(out, part67); - const part68 = rs.intSaturatingPow(a, e, 32, true); - _22(out, part68); - const part69 = rs.intOverflowingPow(a, e, 32, true); - putPair(out, part69); + const part73 = rs.intCheckedPow(a, e, 32, true); + putOpt(out, part73); + const part74 = rs.intWrappingPow(a, e, 32, true); + _22(out, part74); + const part75 = rs.intSaturatingPow(a, e, 32, true); + _22(out, part75); + const part76 = rs.intOverflowingPow(a, e, 32, true); + putPair(out, part76); } } else if (_30 === 4) { const iter2: rs.Iter = rs.iterSlice([n, k]); @@ -4868,26 +5129,26 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { break; } const s: rs.u32 = _231; - const part56 = rs.intCheckedShl(a, s, 32, true); - putOpt(out, part56); - const part57 = rs.intCheckedShr(a, s, 32, true); - putOpt(out, part57); - const part58 = rs.intWrappingShl(a, s, 32, true); - _22(out, part58); - const part59 = rs.intWrappingShr(a, s, 32, true); - _22(out, part59); - const part60 = rs.intOverflowingShl(a, s, 32, true); - putPair(out, part60); - const part61 = rs.intOverflowingShr(a, s, 32, true); - putPair(out, part61); - const part62 = rs.intUnboundedShl(a, s, 32, true); - _22(out, part62); - const part63 = rs.intUnboundedShr(a, s, 32, true); - _22(out, part63); - const part64 = rs.intRotateLeft(a, s, 32, true); - _22(out, part64); - const part65 = rs.intRotateRight(a, s, 32, true); + const part63 = rs.intCheckedShl(a, s, 32, true); + putOpt(out, part63); + const part64 = rs.intCheckedShr(a, s, 32, true); + putOpt(out, part64); + const part65 = rs.intWrappingShl(a, s, 32, true); _22(out, part65); + const part66 = rs.intWrappingShr(a, s, 32, true); + _22(out, part66); + const part67 = rs.intOverflowingShl(a, s, 32, true); + putPair(out, part67); + const part68 = rs.intOverflowingShr(a, s, 32, true); + putPair(out, part68); + const part69 = rs.intUnboundedShl(a, s, 32, true); + _22(out, part69); + const part70 = rs.intUnboundedShr(a, s, 32, true); + _22(out, part70); + const part71 = rs.intRotateLeft(a, s, 32, true); + _22(out, part71); + const part72 = rs.intRotateRight(a, s, 32, true); + _22(out, part72); } } else if (_30 === 5) { const iter3: rs.Iter = rs.iterSlice([rs.intCountOnes(a, 32, true), rs.intCountZeros(a, 32, true), rs.isizeLeadingZeros(a), rs.isizeTrailingZeros(a), rs.isizeLeadingOnes(a), rs.intTrailingOnes(a, 32, true)]); @@ -4906,48 +5167,48 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _22(out, _300); } - const part52 = rs.intHighestOne(a, 32, true); - putOptU32(out, part52); - const part53 = rs.intLowestOne(a, 32, true); - putOptU32(out, part53); - const part54 = rs.intIsolateHighestOne(a, 32, true); - _22(out, part54); - const part55 = rs.intIsolateLowestOne(a, 32, true); - _22(out, part55); + const part59 = rs.intHighestOne(a, 32, true); + putOptU32(out, part59); + const part60 = rs.intLowestOne(a, 32, true); + putOptU32(out, part60); + const part61 = rs.intIsolateHighestOne(a, 32, true); + _22(out, part61); + const part62 = rs.intIsolateLowestOne(a, 32, true); + _22(out, part62); _22(out, 2147483647); _22(out, -2147483648); } else if (_30 === 6) { - const part49 = rs.intCheckedIlog(a, b, 32, true); - putOptU32(out, part49); - const part50 = rs.intCheckedIlog2(a, 32, true); - putOptU32(out, part50); - const part51 = rs.intCheckedIlog10(a, 32, true); - putOptU32(out, part51); + const part56 = rs.intCheckedIlog(a, b, 32, true); + putOptU32(out, part56); + const part57 = rs.intCheckedIlog2(a, 32, true); + putOptU32(out, part57); + const part58 = rs.intCheckedIlog10(a, 32, true); + putOptU32(out, part58); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(rs.intAbsDiff(a, b, 32, true) as rs.usize))); } else if (_30 === 7) { - const part48 = rs.intPow(a, k, 32, true); - _22(out, part48); + const part55 = rs.intPow(a, k, 32, true); + _22(out, part55); } else if (_30 === 8) { - const part47 = rs.intPow(a, n, 32, true); - _22(out, part47); + const part54 = rs.intPow(a, n, 32, true); + _22(out, part54); } else if (_30 === 9) { - const part46 = rs.intDivEuclid(a, b, 32, true); - _22(out, part46); + const part53 = rs.intDivEuclid(a, b, 32, true); + _22(out, part53); } else if (_30 === 10) { - const part45 = rs.intRemEuclid(a, b, 32, true); - _22(out, part45); + const part52 = rs.intRemEuclid(a, b, 32, true); + _22(out, part52); } else if (_30 === 11) { - const part44 = rs.intIsqrt(a, 32, true); - _22(out, part44); + const part51 = rs.intIsqrt(a, 32, true); + _22(out, part51); } else if (_30 === 12) { - const part43 = rs.intIlog(a, b, 32, true); - _27(out, part43); + const part50 = rs.intIlog(a, b, 32, true); + _27(out, part50); } else if (_30 === 13) { - const part42 = rs.intIlog2(a, 32, true); - _27(out, part42); + const part49 = rs.intIlog2(a, 32, true); + _27(out, part49); } else if (_30 === 14) { - const part41 = rs.intIlog10(a, 32, true); - _27(out, part41); + const part48 = rs.intIlog10(a, 32, true); + _27(out, part48); } else if (_30 === 15) { _22(out, rs.isizeAdd(a, b)); } else if (_30 === 16) { @@ -4959,60 +5220,60 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (_30 === 19) { _22(out, rs.isizeRem(a, b)); } else if (_30 === 20) { - const part35 = rs.intStrictNeg(a, 32, true); - _22(out, part35); + const part42 = rs.intStrictNeg(a, 32, true); + _22(out, part42); } else if (_30 === 21) { _22(out, rs.isizeShl(a, k)); } else if (_30 === 22) { _22(out, rs.isizeShr(a, k)); } else if (_30 === 23) { - const part32 = rs.intPow(a, k, 32, true); - _22(out, part32); + const part39 = rs.intPow(a, k, 32, true); + _22(out, part39); } else if (_30 === 24) { - const part31 = rs.intDivEuclid(a, b, 32, true); - _22(out, part31); + const part38 = rs.intDivEuclid(a, b, 32, true); + _22(out, part38); } else if (_30 === 25) { - const part30 = rs.intRemEuclid(a, b, 32, true); - _22(out, part30); + const part37 = rs.intRemEuclid(a, b, 32, true); + _22(out, part37); } else if (_30 === 26) { - const part29 = rs.intStrictAdd(a, o, 32, true); - _22(out, part29); + const part36 = rs.intStrictAdd(a, o, 32, true); + _22(out, part36); } else if (_30 === 27) { - const part28 = rs.intStrictSub(a, o, 32, true); - _22(out, part28); + const part35 = rs.intStrictSub(a, o, 32, true); + _22(out, part35); } else if (_30 === 28) { - const part27 = rs.isizeWrappingDiv(a, b); - _22(out, part27); + const part34 = rs.isizeWrappingDiv(a, b); + _22(out, part34); } else if (_30 === 29) { - const part26 = rs.isizeWrappingRem(a, b); - _22(out, part26); + const part33 = rs.isizeWrappingRem(a, b); + _22(out, part33); } else if (_30 === 30) { - const part25 = rs.intWrappingDivEuclid(a, b, 32, true); - _22(out, part25); + const part32 = rs.intWrappingDivEuclid(a, b, 32, true); + _22(out, part32); } else if (_30 === 31) { - const part24 = rs.intWrappingRemEuclid(a, b, 32, true); - _22(out, part24); + const part31 = rs.intWrappingRemEuclid(a, b, 32, true); + _22(out, part31); } else if (_30 === 32) { - const part23 = rs.intOverflowingDiv(a, b, 32, true); - putPair(out, part23); + const part30 = rs.intOverflowingDiv(a, b, 32, true); + putPair(out, part30); } else if (_30 === 33) { - const part22 = rs.intOverflowingRem(a, b, 32, true); - putPair(out, part22); + const part29 = rs.intOverflowingRem(a, b, 32, true); + putPair(out, part29); } else if (_30 === 34) { - const part21 = rs.intOverflowingDivEuclid(a, b, 32, true); - putPair(out, part21); + const part28 = rs.intOverflowingDivEuclid(a, b, 32, true); + putPair(out, part28); } else if (_30 === 35) { - const part20 = rs.intOverflowingRemEuclid(a, b, 32, true); - putPair(out, part20); + const part27 = rs.intOverflowingRemEuclid(a, b, 32, true); + putPair(out, part27); } else if (_30 === 36) { - const part19 = rs.isizeSaturatingDiv(a, b); - _22(out, part19); + const part26 = rs.isizeSaturatingDiv(a, b); + _22(out, part26); } else if (_30 === 37) { - const part18 = rs.intAbs(a, 32, true); - _22(out, part18); + const part25 = rs.intAbs(a, 32, true); + _22(out, part25); } else if (_30 === 38) { - const part17 = rs.intAbs(a, 32, true); - _22(out, part17); + const part24 = rs.intAbs(a, 32, true); + _22(out, part24); } else if (_30 === 39) { const s2: rs.isize = a; const w: rs.isize = a; @@ -5079,57 +5340,78 @@ export function isizes(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } _27(out, _573); } - const part4 = option_map$1vj7z9f(rs.isizeCheckedMul(x, y), (a0: rs.isize): rs.isize => { + const part11 = option_map$1vj7z9f(rs.isizeCheckedMul(x, y), (a0: rs.isize): rs.isize => { return a0; }); - putOpt(out, part4); - const part5 = rs.isizeSaturatingMul(x, y); - _22(out, part5); - const part6 = option_map$1vj7z9f(rs.intCheckedPow(x, k, 32, true), (a02: rs.isize): rs.isize => { + putOpt(out, part11); + const part12 = rs.isizeSaturatingMul(x, y); + _22(out, part12); + const part13 = option_map$1vj7z9f(rs.intCheckedPow(x, k, 32, true), (a02: rs.isize): rs.isize => { return a02; }); - putOpt(out, part6); - const part7 = option_map$1vj7z9f(rs.intCheckedPow(x, n, 32, true), (a03: rs.isize): rs.isize => { + putOpt(out, part13); + const part14 = option_map$1vj7z9f(rs.intCheckedPow(x, n, 32, true), (a03: rs.isize): rs.isize => { return a03; }); - putOpt(out, part7); - const part8 = rs.intSaturatingPow(x, k, 32, true); - _22(out, part8); - const part9 = rs.intIsolateHighestOne(x, 32, true); - _22(out, part9); - const part10 = rs.intIsolateLowestOne(x, 32, true); - _22(out, part10); - const part11 = option_map$1vj7z9f(rs.intCheckedAbs(x, 32, true), (a04: rs.isize): rs.isize => { + putOpt(out, part14); + const part15 = rs.intSaturatingPow(x, k, 32, true); + _22(out, part15); + const part16 = rs.intIsolateHighestOne(x, 32, true); + _22(out, part16); + const part17 = rs.intIsolateLowestOne(x, 32, true); + _22(out, part17); + const part18 = option_map$1vj7z9f(rs.intCheckedAbs(x, 32, true), (a04: rs.isize): rs.isize => { return a04; }); - putOpt(out, part11); + putOpt(out, part18); const _622: [rs.isize, boolean] = rs.intOverflowingAbs(x, 32, true); putPair(out, [_622[0], _622[1]] as [rs.isize, boolean]); - const part12 = rs.intSaturatingAbs(x, 32, true); - _22(out, part12); - const part13 = rs.intWrappingAbs(x, 32, true); - _22(out, part13); + const part19 = rs.intSaturatingAbs(x, 32, true); + _22(out, part19); + const part20 = rs.intWrappingAbs(x, 32, true); + _22(out, part20); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(rs.intUnsignedAbs(x, 32, true) as rs.usize))); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(Uint8Array.of(x > 0 ? 1 : 0, x < 0 ? 1 : 0))); - const part14 = option_map$1vj7z9f(rs.intCheckedNeg(x, 32, true), (a05: rs.isize): rs.isize => { + const part21 = option_map$1vj7z9f(rs.intCheckedNeg(x, 32, true), (a05: rs.isize): rs.isize => { return a05; }); - putOpt(out, part14); + putOpt(out, part21); const _659: [rs.isize, boolean] = rs.intOverflowingNeg(x, 32, true); putPair(out, [_659[0], _659[1]] as [rs.isize, boolean]); - const part15 = rs.isizeSaturatingSub(0, x); - _22(out, part15); - const part16 = rs.intWrappingNeg(x, 32, true); - _22(out, part16); + const part22 = rs.isizeSaturatingSub(0, x); + _22(out, part22); + const part23 = rs.intWrappingNeg(x, 32, true); + _22(out, part23); rs.byteVecExtendFromSlice(out, rs.byteSliceFrom(rs.usizeToBeBytes(x >>> 0))); } } - } else { + } else if (_30 === 41) { const _681: rs.isize | undefined = rs.nonZero(a); if (_681 !== undefined) { - const part3 = rs.intAbs(_681, 32, true); - _22(out, part3); - } + const part10 = rs.intAbs(_681, 32, true); + _22(out, part10); + } + } else if (_30 === 42) { + const part9 = rs.precondition(rs.isizeCheckedAdd(a, b), "isize::unchecked_add cannot overflow"); + _22(out, part9); + } else if (_30 === 43) { + const part8 = rs.precondition(rs.isizeCheckedSub(a, b), "isize::unchecked_sub cannot overflow"); + _22(out, part8); + } else if (_30 === 44) { + const part7 = rs.precondition(rs.isizeCheckedMul(a, b), "isize::unchecked_mul cannot overflow"); + _22(out, part7); + } else if (_30 === 45) { + const part6 = rs.precondition(rs.intCheckedShl(a, k, 32, true), "isize::unchecked_shl cannot overflow"); + _22(out, part6); + } else if (_30 === 46) { + const part5 = rs.precondition(rs.intCheckedShr(a, k, 32, true), "isize::unchecked_shr cannot overflow"); + _22(out, part5); + } else if (_30 === 47) { + const part4 = rs.precondition(rs.intCheckedNeg(a, 32, true), "isize::unchecked_neg cannot overflow"); + _22(out, part4); + } else { + const part3 = rs.precondition(rs.nonZero(a), "NonZero::new_unchecked requires the argument to be non-zero"); + _22(out, part3); } } diff --git a/ts/fixtures/lang/methods/src/methods.rs b/ts/fixtures/lang/methods/src/methods.rs index 854ef6842..7a30d4c89 100644 --- a/ts/fixtures/lang/methods/src/methods.rs +++ b/ts/fixtures/lang/methods/src/methods.rs @@ -41,7 +41,7 @@ macro_rules! methods { } None => out.push(0), }; - match kind % 42 { + match kind % 49 { 0 => { put_opt(out, a.checked_add(b)); put_opt(out, a.checked_sub(b)); @@ -183,7 +183,16 @@ macro_rules! methods { methods!(@$sign nonzero, x, y, b, out, put, put_opt, put_pair, put_u32); } } - _ => methods!(@$sign nonzero_panics, a, out, put), + 41 => methods!(@$sign nonzero_panics, a, out, put), + // SAFETY: none where each overflows: std's check of its precondition aborts. + 42 => put(out, unsafe { a.unchecked_add(b) }), + 43 => put(out, unsafe { a.unchecked_sub(b) }), + 44 => put(out, unsafe { a.unchecked_mul(b) }), + 45 => put(out, unsafe { a.unchecked_shl(k) }), + 46 => put(out, unsafe { a.unchecked_shr(k) }), + 47 => methods!(@$sign unchecked, a, b, k, out, put), + // SAFETY: none of zero: std's check of its precondition aborts. + _ => put(out, unsafe { NonZero::new_unchecked(a) }.get()), } } }; @@ -287,6 +296,17 @@ macro_rules! methods { _ => $put($out, $a.funnel_shr($b, $k)), } }}; + (@signed unchecked, $a:ident, $b:ident, $k:ident, $out:ident, $put:ident) => { + // SAFETY: none of `MIN`: std's check of its precondition aborts. + $put($out, unsafe { $a.unchecked_neg() }) + }; + (@unsigned unchecked, $a:ident, $b:ident, $k:ident, $out:ident, $put:ident) => { + // SAFETY: none past the width: std's check of its precondition aborts. + match $k % 2 { + 0 => $put($out, unsafe { $a.unchecked_funnel_shl($b, $k) }), + _ => $put($out, unsafe { $a.unchecked_funnel_shr($b, $k) }), + } + }; (@signed wrappers, $s:ident, $w:ident, $out:ident, $put:ident) => {{ for v in [$s.abs(), $s.signum()] { $put($out, v.0); diff --git a/ts/fixtures/lang/panics/hook/expected/hooked.Shown.ts b/ts/fixtures/lang/panics/hook/expected/hooked.Shown.ts index 27407d09c..e2edb7c29 100644 --- a/ts/fixtures/lang/panics/hook/expected/hooked.Shown.ts +++ b/ts/fixtures/lang/panics/hook/expected/hooked.Shown.ts @@ -20,7 +20,7 @@ export function fmt$fmt_Display(self: Shown, f: rs.Formatter): rs.Result rs.u8Display(n, f)], { file: "fixtures/lang/panics/src/hooked.rs", line: 120, col: 15 }); + } else if (_10 === 32) { + rs.byteVecPush(out, rs.precondition(rs.u8CheckedAdd(rs.max(n, 200), rs.max(n, 100)), "u8::unchecked_add cannot overflow", { file: "fixtures/lang/panics/src/hooked.rs", line: 122, col: 44 })); + } else if (_10 === 33) { + rs.byteVecPush(out, rs.precondition(rs.nonZero(rs.u8WrappingMul(n, 0)), "NonZero::new_unchecked requires the argument to be non-zero", { file: "fixtures/lang/panics/src/hooked.rs", line: 124, col: 33 })); } else { rs.byteVecPush(out, rs.hashLen(rs.hashWithCapacity(4294967295, 469762048) as rs.HashMap) & 0xff); } @@ -190,9 +194,9 @@ export function aborted(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void const captured2 = prev; rs.setHook(rs.closure((info: rs.PanicHookInfo): undefined => { record(info); - const _4: rs.u8 = rs.u8Rem(captured, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 152, col: 15 }); + const _4: rs.u8 = rs.u8Rem(captured, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 156, col: 15 }); if (_4 === 0) { - rs.panicFmt(["again"], { file: "fixtures/lang/panics/src/hooked.rs", line: 153, col: 18 }); + rs.panicFmt(["again"], { file: "fixtures/lang/panics/src/hooked.rs", line: 157, col: 18 }); } else if (_4 === 1) { rs.drop(rs.takeHook()); } else { @@ -202,13 +206,13 @@ export function aborted(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void rs.drop(captured2); }), { capacity: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/raw_vec/mod.rs", line: 29, col: 5 }, trusted_capacity: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/spec_from_iter_nested.rs", line: 57, col: 18 }, swap_remove: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 2178, col: 13 }, vec_set_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 2138, col: 9 }, into_flattened: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 3667, col: 36 }, rotate_left: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/mod.rs", line: 3902, col: 9 }, rotate_right: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/mod.rs", line: 3948, col: 9 }, ord_violation: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/sort/shared/smallsort.rs", line: 854, col: 5 }, ord_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cmp.rs", line: 1166, col: 9 }, f32_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/num/f32.rs", line: 1665, col: 9 }, f64_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/num/f64.rs", line: 1643, col: 9 }, encode_utf8: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/methods.rs", line: 2507, col: 9 }, encode_utf16: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/methods.rs", line: 2601, col: 13 }, format: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/fmt.rs", line: 657, col: 14 }, to_string: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/string.rs", line: 2997, col: 14 }, debug_struct_fields: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/fmt/mod.rs", line: 2572, col: 9 }, exact_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/traits/exact_size.rs", line: 122, col: 9 }, join_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/str.rs", line: 177, col: 10 }, int_sum: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/traits/accum.rs", line: 206, col: 1 }, int_forward: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/range.rs", line: 554, col: 1 }, char_forward: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/range.rs", line: 119, col: 45 }, hash_capacity: { file: "/cargo/registry/25cdd57fae9f0462/hashbrown-0.17.1/src/raw.rs", line: 36, col: 40 }, btree_range_equal_BTreeSet: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 110, col: 21 }, btree_range_equal_BTreeMap: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 112, col: 21 }, btree_range_order_BTreeSet: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 119, col: 21 }, btree_range_order_BTreeMap: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 121, col: 21 }, deque_insert: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 2612, col: 9 }, deque_swap_i: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1062, col: 9 }, deque_swap_j: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1063, col: 9 }, deque_rotate_left: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 3198, col: 9 }, deque_rotate_right: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 3243, col: 9 }, deque_split_off: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 2724, col: 9 }, list_split_off: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/linked_list.rs", line: 1015, col: 9 }, mutex_lock: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/std/src/sys/sync/mutex/no_threads.rs", line: 28, col: 9 }, once_force: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/std/src/sync/once.rs", line: 227, col: 20 }, reentrant_init: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell/once.rs", line: 325, col: 66 }, lazy_poisoned: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell/lazy.rs", line: 386, col: 5 }, ready_poll: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/future/ready.rs", line: 23, col: 35 }, ready_into_inner: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/future/ready.rs", line: 46, col: 16 }, duration_new: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 281, col: 18 }, duration_from_mins: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 540, col: 13 }, duration_from_hours: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 510, col: 13 }, duration_add: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1345, col: 31 }, duration_sub: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1365, col: 31 }, duration_mul: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1385, col: 31 }, bytes_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/lib.rs", line: 207, col: 5 }, bytes_does_not_fit: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/lib.rs", line: 215, col: 5 }, bytes_slice: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 374, col: 28 }, bytes_slice_ref_start: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 426, col: 9 }, bytes_slice_ref_end: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 432, col: 9 }, bytes_split_off: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 481, col: 9 }, bytes_split_to: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 533, col: 9 }, bytes_buf_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 694, col: 9 }, bytes_mut_split_off: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 329, col: 9 }, bytes_mut_split_to: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 408, col: 9 }, bytes_mut_set_len: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 545, col: 9 }, bytes_mut_overflow: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 700, col: 21 }, bytes_mut_overflow_offset: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 720, col: 29 }, bytes_mut_buf_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 1246, col: 9 } }); rs.byteVecPush(out, n); - const _13: rs.u8 = rs.u8Rem(kind, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 159, col: 11 }); + const _13: rs.u8 = rs.u8Rem(kind, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 163, col: 11 }); if (_13 === 3 || _13 === 4) { - const _19: Shown.Shown = { again: rs.u8Rem(kind, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 160, col: 56 }) === 4 }; + const _19: Shown.Shown = { again: rs.u8Rem(kind, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 164, col: 56 }) === 4 }; const args6 = [(f: rs.Formatter) => rs.u8Display(n, f), (f: rs.Formatter) => Shown.fmt$fmt_Display(_19, f)]; - rs.panicFmt(["first ", args6[0], " ", args6[1]], { file: "fixtures/lang/panics/src/hooked.rs", line: 160, col: 18 }); + rs.panicFmt(["first ", args6[0], " ", args6[1]], { file: "fixtures/lang/panics/src/hooked.rs", line: 164, col: 18 }); } else { - rs.panicFmt(["first ", (f: rs.Formatter) => rs.u8Display(n, f)], { file: "fixtures/lang/panics/src/hooked.rs", line: 161, col: 14 }); + rs.panicFmt(["first ", (f: rs.Formatter) => rs.u8Display(n, f)], { file: "fixtures/lang/panics/src/hooked.rs", line: 165, col: 14 }); } } @@ -239,13 +243,13 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const _19: rs.u16[] = [n as rs.u16]; const set: rs.BTreeSet = rs.btreeExtendKeys(rs.btreeNew(rs.cmp) as rs.BTreeSet, rs.iterSlice(_19), true, undefined, undefined, 2, true); b0: { - const k: rs.u8 = rs.u8Rem(kind, 73, { file: "fixtures/lang/panics/src/hooked.rs", line: 183, col: 11 }); + const k: rs.u8 = rs.u8Rem(kind, 73, { file: "fixtures/lang/panics/src/hooked.rs", line: 187, col: 11 }); if (k === 0) { - rs.byteVecPush(out, rs.byteVecWithCapacity(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 184, col: 48 })).length & 0xff); + rs.byteVecPush(out, rs.byteVecWithCapacity(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 188, col: 48 })).length & 0xff); } else if (k === 1) { - rs.byteSliceRotateRight(rs.byteVecSlice(rs.byteVecFrom(rs.byteVecView(v))), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 185, col: 37 })); + rs.byteSliceRotateRight(rs.byteVecSlice(rs.byteVecFrom(rs.byteVecView(v))), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 189, col: 37 })); } else if (k === 2) { - rs.byteVecPush(out, rs.clamp(n, rs.max(n, 1), rs.u8Sub(rs.max(n, 1), 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 186, col: 41 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 186, col: 25 })); + rs.byteVecPush(out, rs.clamp(n, rs.max(n, 1), rs.u8Sub(rs.max(n, 1), 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 190, col: 41 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 190, col: 25 })); } else if (k === 3) { rs.byteVecPush(out, rs.u8FromF64(rs.f64Clamp(n as rs.f64, 1.0, 0.0))); } else if (k === 4) { @@ -253,7 +257,7 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (k === 5) { rs.byteVecExtendFromSlice(out, rs.stringAsBytes(rs.charEncodeUtf8(rs.max(n, 128) as rs.char, rs.byteSliceFrom(Uint8Array.of(0))).v)); } else if (k === 6) { - const _62: rs.char = rs.optionUnwrap(rs.charFromU32(rs.u32Add(128512, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 191, col: 28 })), undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 192, col: 18 }); + const _62: rs.char = rs.optionUnwrap(rs.charFromU32(rs.u32Add(128512, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 195, col: 28 })), undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 196, col: 18 }); const _69: rs.u16[] = [0]; rs.byteVecPush(out, rs.charEncodeUtf16(_62, rs.sliceFrom(_69)).length & 0xff); } else if (k === 7) { @@ -262,7 +266,7 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { return _239[1]; }), "next"); } else if (k === 8) { - const _81: rs.Range = new rs.Range(rs.u16Add(n as rs.u16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 200, col: 35 }), n as rs.u16); + const _81: rs.Range = new rs.Range(rs.u16Add(n as rs.u16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 204, col: 35 }), n as rs.u16); rs.iterExtendBytes(out, rs.iterMap(rs.btreeRange(map, _81), (_237: [rs.u16, rs.u8]): rs.u8 => { return _237[1]; }), "next"); @@ -272,29 +276,29 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { return _232 & 0xff; }), "next"); } else if (k === 10) { - const _97: rs.Range = new rs.Range(rs.u16Add(n as rs.u16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 205, col: 36 }), n as rs.u16); + const _97: rs.Range = new rs.Range(rs.u16Add(n as rs.u16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 209, col: 36 }), n as rs.u16); rs.iterExtendBytes(out, rs.iterMap(rs.btreeRangeKeys(set, _97), (_230: rs.u16): rs.u8 => { return _230 & 0xff; }), "next"); } else if (k === 11) { - rs.dequeInsert(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 206, col: 36 }), n); + rs.dequeInsert(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 210, col: 36 }), n); } else if (k === 12) { - rs.dequeSwap(rs.dequeClone(deque), rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 207, col: 34 }), 0); + rs.dequeSwap(rs.dequeClone(deque), rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 211, col: 34 }), 0); } else if (k === 13) { - rs.dequeSwap(rs.dequeClone(deque), 0, rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 208, col: 37 })); + rs.dequeSwap(rs.dequeClone(deque), 0, rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 212, col: 37 })); } else if (k === 14) { - rs.dequeRotate(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 209, col: 41 })); + rs.dequeRotate(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 213, col: 41 })); } else if (k === 15) { - rs.dequeRotate(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 210, col: 42 }), true); + rs.dequeRotate(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 214, col: 42 }), true); } else if (k === 16) { - rs.iterExtendBytes(out, rs.dequeIntoIter(rs.dequeSplitOff(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 211, col: 50 }))), undefined, true); + rs.iterExtendBytes(out, rs.dequeIntoIter(rs.dequeSplitOff(rs.dequeClone(deque), rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 215, col: 50 }))), undefined, true); } else if (k === 17) { const _136: Uint8Array = Uint8Array.of(n); - rs.iterExtendBytes(out, rs.listIter(rs.listSplitOff(rs.listExtend(rs.listNew() as rs.LinkedList, rs.iterSlice(_136)), rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 212, col: 58 }))), undefined, true); + rs.iterExtendBytes(out, rs.listIter(rs.listSplitOff(rs.listExtend(rs.listNew() as rs.LinkedList, rs.iterSlice(_136)), rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 216, col: 58 }))), undefined, true); } else if (k === 18) { const mutex: rs.Mutex = new rs.Mutex(n); const _held: rs.Result, rs.Mutex> = rs.Ok(rs.mutexLock(mutex)); - const _146: rs.Mutex = rs.resultUnwrap(rs.Ok(rs.mutexLock(mutex)), rs.fmtPoisonErrorDebug, { file: "fixtures/lang/panics/src/hooked.rs", line: 216, col: 36 }); + const _146: rs.Mutex = rs.resultUnwrap(rs.Ok(rs.mutexLock(mutex)), rs.fmtPoisonErrorDebug, { file: "fixtures/lang/panics/src/hooked.rs", line: 220, col: 36 }); rs.byteVecPush(out, _146.value); rs.mutexUnlock(_146); drop$Result_sync_MutexGuard_u8_sync_PoisonError_sync_MutexGuard_u8(_held); @@ -336,40 +340,40 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } rs.byteVecPush(out, ready2.intoInner()); } else if (k === 23) { - rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationNew({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, rs.u32Add(1000000000, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 243, col: 48 }))) & 0xff); + rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationNew({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, rs.u32Add(1000000000, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 247, col: 48 }))) & 0xff); } else if (k === 24) { - rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationFromMins(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, n as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 244, col: 44 }))) & 0xff); + rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationFromMins(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, n as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 248, col: 44 }))) & 0xff); } else if (k === 25) { - rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationFromHours(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, n as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 245, col: 45 }))) & 0xff); + rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationFromHours(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, n as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 249, col: 45 }))) & 0xff); } else if (k === 26) { - rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationSub({ secs: 0, nanos: 0 }, rs.durationFromSecs(rs.u64Add(n as rs.u64, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 246, col: 62 })))) & 0xff); + rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationSub({ secs: 0, nanos: 0 }, rs.durationFromSecs(rs.u64Add(n as rs.u64, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 250, col: 62 })))) & 0xff); } else if (k === 27) { - rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationMul({ secs: { hi: 0xffffffff, lo: 0xffffffff } as rs.u64, nanos: 999999999 }, rs.u32Add(n as rs.u32, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 247, col: 41 }))) & 0xff); + rs.byteVecPush(out, rs.durationSubsecNanos(rs.durationMul({ secs: { hi: 0xffffffff, lo: 0xffffffff } as rs.u64, nanos: 999999999 }, rs.u32Add(n as rs.u32, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 251, col: 41 }))) & 0xff); } else if (k === 28) { const _231: rs.ByteVec = rs.byteVecFrom(rs.byteVecView(v)); - const _233: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 248, col: 44 }), rs.usizeStep); + const _233: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 252, col: 44 }), rs.usizeStep); rs.byteVecExtendFromWithin(_231, _233, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 3614, col: 21 }); } else if (k === 29) { const _238: rs.VecDeque = rs.dequeClone(deque); - const _240: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 249, col: 46 }), rs.usizeStep); + const _240: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 253, col: 46 }), rs.usizeStep); rs.iterExtendBytes(out, rs.dequeDrain(_238, _240, undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1998, col: 36 }), "next"); } else if (k === 30) { - const _245: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 250, col: 38 }), rs.usizeStep); + const _245: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 254, col: 38 }), rs.usizeStep); rs.iterExtendBytes(out, rs.dequeRange(deque, _245, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1845, col: 36 }), undefined, true); } else if (k === 31) { const _251: rs.VecDeque = rs.dequeClone(deque); - const _253: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 251, col: 50 }), rs.usizeStep); + const _253: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 255, col: 50 }), rs.usizeStep); rs.iterExtendBytes(out, rs.iterMap(rs.dequeRangeMut(_251, _253, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1845, col: 36 }), (v5: rs.Place): rs.u8 => { return v5.v; }), undefined, true); } else if (k === 32) { const cell2: rs.RefCell = new rs.RefCell(rs.byteVecFrom(Uint8Array.of(n))); - const _held2: rs.RefCell = rs.refCellBorrow(cell2, { file: "fixtures/lang/panics/src/hooked.rs", line: 254, col: 30 }); + const _held2: rs.RefCell = rs.refCellBorrow(cell2, { file: "fixtures/lang/panics/src/hooked.rs", line: 258, col: 30 }); rs.iterExtendBytes(out, rs.byteVecIntoIter(rs.refCellReplace(cell2, new rs.ByteVec(), { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell.rs", line: 1434, col: 14 })), undefined, true); rs.refRelease(_held2); } else if (k === 33) { ((cell4: rs.RefCell): undefined => { - rs.refCellBorrow(cell4, { file: "fixtures/lang/panics/src/hooked.rs", line: 258, col: 54 }); + rs.refCellBorrow(cell4, { file: "fixtures/lang/panics/src/hooked.rs", line: 262, col: 54 }); })(SHARED.get()); rs.localKeyWithBorrowMutPlace(SHARED, (v4: rs.Place): undefined => { v4.v = n; @@ -385,25 +389,25 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { }); } else if (k === 35) { const _277: rs.ByteVec = rs.byteVecFrom(rs.byteVecView(v)); - const _279: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 265, col: 43 }), rs.usizeStep); + const _279: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 269, col: 43 }), rs.usizeStep); const _282: Uint8Array = Uint8Array.of(n); rs.iterExtendBytes(out, rs.spliceFrom(rs.byteVecSplice(_277, _279, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 3007, col: 36 }), rs.iterSlice(_282), true), "next"); } else if (k === 36) { - rs.iterExtendBytes(out, rs.iterOption(option_map$04ry0e1(option_map$18ftgyp(rs.charFromDigit(n as rs.u32, rs.u32Add(37, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 267, col: 44 }), { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/convert.rs", line: 332, col: 9 }), (a0: rs.char): rs.u32 => { + rs.iterExtendBytes(out, rs.iterOption(option_map$04ry0e1(option_map$18ftgyp(rs.charFromDigit(n as rs.u32, rs.u32Add(37, n as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 271, col: 44 }), { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/convert.rs", line: 332, col: 9 }), (a0: rs.char): rs.u32 => { return a0 as rs.u32; }), (c2: rs.u32): rs.u8 => { return c2 & 0xff; })), undefined, true); } else if (k === 37) { - const _294: rs.usize = rs.usizeDiv(at, 256, { file: "fixtures/lang/panics/src/hooked.rs", line: 271, col: 59 }); + const _294: rs.usize = rs.usizeDiv(at, 256, { file: "fixtures/lang/panics/src/hooked.rs", line: 275, col: 59 }); if (!(_294 < 2)) { - rs.panic("index out of bounds: the len is " + 2 + " but the index is " + _294, { file: "fixtures/lang/panics/src/hooked.rs", line: 271, col: 21 }, true); + rs.panic("index out of bounds: the len is " + 2 + " but the index is " + _294, { file: "fixtures/lang/panics/src/hooked.rs", line: 275, col: 21 }, true); } rs.fence([0, 4][_294], { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/sync/atomic.rs", line: 4822, col: 24 }); } else if (k === 38) { - const _301: rs.usize = rs.usizeDiv(at, 256, { file: "fixtures/lang/panics/src/hooked.rs", line: 272, col: 68 }); + const _301: rs.usize = rs.usizeDiv(at, 256, { file: "fixtures/lang/panics/src/hooked.rs", line: 276, col: 68 }); if (!(_301 < 2)) { - rs.panic("index out of bounds: the len is " + 2 + " but the index is " + _301, { file: "fixtures/lang/panics/src/hooked.rs", line: 272, col: 30 }, true); + rs.panic("index out of bounds: the len is " + 2 + " but the index is " + _301, { file: "fixtures/lang/panics/src/hooked.rs", line: 276, col: 30 }, true); } rs.fence([0, 4][_301], { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/sync/atomic.rs", line: 4907, col: 24 }); } else if (k === 39) { @@ -421,57 +425,57 @@ export function sited(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } else if (k === 45) { rs.byteVecPush(out, rs.u64Low(rs.durationAsSecs(rs.durationSum(rs.iterSlice([{ secs: { hi: 0xffffffff, lo: 0xffffffff } as rs.u64, nanos: 999999999 }, rs.durationFromSecs(rs.max(n, 1) as rs.u64)]), undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1461, col: 9 }))) & 0xff); } else if (k === 46) { - rs.byteVecPush(out, rs.u64Low(rs.durationAsSecs(rs.durationSum(rs.iterSlice([{ secs: { hi: 0xffffffff, lo: 0xffffffff } as rs.u64, nanos: 999999999 }, rs.durationNew(rs.u64Add(n as rs.u64, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 286, col: 43 }), 0)]), undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1468, col: 9 }))) & 0xff); + rs.byteVecPush(out, rs.u64Low(rs.durationAsSecs(rs.durationSum(rs.iterSlice([{ secs: { hi: 0xffffffff, lo: 0xffffffff } as rs.u64, nanos: 999999999 }, rs.durationNew(rs.u64Add(n as rs.u64, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 290, col: 43 }), 0)]), undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1468, col: 9 }))) & 0xff); } else if (k === 47) { const _365: rs.ByteVec = rs.byteVecFrom(rs.byteVecView(v)); - const _367: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 291, col: 47 }), rs.usizeStep); + const _367: rs.RangeFrom = new rs.RangeFrom(rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 295, col: 47 }), rs.usizeStep); rs.iterExtendBytes(out, rs.byteVecExtractIf(_365, _367, (_29: rs.Place): boolean => { return true; }, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/extract_if.rs", line: 43, col: 36 }), "next"); } else if (k === 48) { const _374: rs.Vec = rs.vecFrom([n as rs.u16]); - const _377: { end: rs.usize } = { end: rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 292, col: 56 }) }; + const _377: { end: rs.usize } = { end: rs.usizeAdd(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 296, col: 56 }) }; rs.byteVecPush(out, rs.ownedCount(rs.vecExtractIfMut(_374, _377, (_2: rs.Place): boolean => { return true; }, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/extract_if.rs", line: 43, col: 36 }), undefined, undefined) & 0xff); } else if (k === 49) { - rs.iterExtendBytes(out, rs.iterTake(new rs.RangeFrom(rs.u8Sub(255, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 293, col: 37 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 293, col: 27 }), rs.u8Step), 3), undefined, true); + rs.iterExtendBytes(out, rs.iterTake(new rs.RangeFrom(rs.u8Sub(255, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 297, col: 37 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 297, col: 27 }), rs.u8Step), 3), undefined, true); } else if (k === 50) { - rs.iterExtendBytes(out, rs.iterOption(rs.iterNth(new rs.RangeFrom(rs.u8Sub(255, rs.u8Rem(n, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 294, col: 37 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 294, col: 27 }), rs.u8Step), rs.usizeAdd(rs.u8Rem(n, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 294, col: 62 }) as rs.usize, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 294, col: 50 }))), undefined, true); + rs.iterExtendBytes(out, rs.iterOption(rs.iterNth(new rs.RangeFrom(rs.u8Sub(255, rs.u8Rem(n, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 298, col: 37 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 298, col: 27 }), rs.u8Step), rs.usizeAdd(rs.u8Rem(n, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 298, col: 62 }) as rs.usize, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 298, col: 50 }))), undefined, true); } else if (k === 51) { - rs.iterExtendBytes(out, rs.iterMap(rs.iterTake(new rs.RangeFrom(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 295, col: 48 }) as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 295, col: 27 }), rs.u64Step), 3), (x: rs.u64): rs.u8 => { + rs.iterExtendBytes(out, rs.iterMap(rs.iterTake(new rs.RangeFrom(rs.u64Sub({ hi: 0xffffffff, lo: 0xffffffff } as rs.u64, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 299, col: 48 }) as rs.u64, { file: "fixtures/lang/panics/src/hooked.rs", line: 299, col: 27 }), rs.u64Step), 3), (x: rs.u64): rs.u8 => { return rs.u64Low(x) & 0xff; }), undefined, true); } else if (k === 52) { - rs.iterExtendBytes(out, rs.iterMap(rs.iterTake(new rs.RangeFrom(rs.optionUnwrap(rs.charFromU32(rs.u32Sub(1114111, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 297, col: 51 }) as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 297, col: 29 })), undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 297, col: 59 }), rs.charStep), 3), (c: rs.char): rs.u8 => { + rs.iterExtendBytes(out, rs.iterMap(rs.iterTake(new rs.RangeFrom(rs.optionUnwrap(rs.charFromU32(rs.u32Sub(1114111, rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 301, col: 51 }) as rs.u32, { file: "fixtures/lang/panics/src/hooked.rs", line: 301, col: 29 })), undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 301, col: 59 }), rs.charStep), 3), (c: rs.char): rs.u8 => { return c & 0xff; }), undefined, true); } else if (k === 68) { - const v2: rs.ByteVec = rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 304, col: 50 })); - rs.byteVecSetLen(v2, rs.usizeAdd(v2.data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 306, col: 32 })); + const v2: rs.ByteVec = rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 308, col: 50 })); + rs.byteVecSetLen(v2, rs.usizeAdd(v2.data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 310, col: 32 })); rs.byteVecPush(out, v2.length & 0xff); } else if (k === 69) { const _435: rs.ByteSlice = rs.byteSliceFrom(rs.bytes(2).fill((0 as unknown) as rs.u8)); - const part2 = rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 309, col: 81 }); - rs.byteSliceCopyFromSlice(_435, rs.byteSliceRange(rs.byteVecSlice(v), 0, part2, { file: "fixtures/lang/panics/src/hooked.rs", line: 309, col: 78 }), { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/mem/maybe_uninit.rs", line: 1170, col: 14 }); + const part2 = rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 313, col: 81 }); + rs.byteSliceCopyFromSlice(_435, rs.byteSliceRange(rs.byteVecSlice(v), 0, part2, { file: "fixtures/lang/panics/src/hooked.rs", line: 313, col: 78 }), { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/mem/maybe_uninit.rs", line: 1170, col: 14 }); } else if (k === 70) { rs.sliceWriteCloneOfSlice(rs.sliceFrom(Array.from({ length: 2 }, (): string => { return (undefined as unknown) as string; - })), rs.sliceRange(rs.sliceFrom([""]), 0, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 310, col: 106 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 310, col: 103 }), undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/mem/maybe_uninit.rs", line: 1230, col: 9 }); + })), rs.sliceRange(rs.sliceFrom([""]), 0, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 314, col: 106 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 314, col: 103 }), undefined, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/mem/maybe_uninit.rs", line: 1230, col: 9 }); } else if (k === 71) { - rs.byteVecPush(out, rs.sliceNewUninit(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 311, col: 55 }), 2, (): rs.u16 => { + rs.byteVecPush(out, rs.sliceNewUninit(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 315, col: 55 }), 2, (): rs.u16 => { return (undefined as unknown) as rs.u16; }).length & 0xff); } else { if (53 <= k) { if (k <= 56) { - joined(rs.u8Sub(k, 53, { file: "fixtures/lang/panics/src/hooked.rs", line: 301, col: 31 }), n, out); + joined(rs.u8Sub(k, 53, { file: "fixtures/lang/panics/src/hooked.rs", line: 305, col: 31 }), n, out); break b0; } } if (57 <= k) { if (k <= 67) { - rs.byteVecPush(out, compared(rs.u8Sub(k, 57, { file: "fixtures/lang/panics/src/hooked.rs", line: 302, col: 42 }), n)); + rs.byteVecPush(out, compared(rs.u8Sub(k, 57, { file: "fixtures/lang/panics/src/hooked.rs", line: 306, col: 42 }), n)); break b0; } } @@ -489,16 +493,16 @@ export function joined(kind: rs.u8, n: rs.u8, out: rs.ByteVec): void { let joined!: rs.ByteVec; const big: rs.ByteVec = rs.byteVecOf(n, 1 << 16); const refs: (a0: rs.usize) => rs.Vec = (count: rs.usize): rs.Vec => { - return rs.vecFromElem(rs.byteSliceRange(rs.byteVecSlice(big), 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 320, col: 40 }), count, undefined); + return rs.vecFromElem(rs.byteSliceRange(rs.byteVecSlice(big), 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 324, col: 40 }), count, undefined); }; if (kind === 0) { - joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 322, col: 19 })).items)); + joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 326, col: 19 })).items)); } else if (kind === 1) { - joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 323, col: 19 })).items), rs.byteSliceFrom(Uint8Array.of(n))); + joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 16, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 327, col: 19 })).items), rs.byteSliceFrom(Uint8Array.of(n))); } else if (kind === 2) { - joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 15, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 324, col: 19 })).items)); + joined = rs.byteSlicesJoin(rs.sliceFrom(refs(rs.usizeAdd(1 << 15, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 328, col: 19 })).items)); } else { - joined = rs.iterToByteVec(rs.iterMap(rs.iterSlice(rs.slicesJoin(rs.sliceFrom(rs.vecFromElem(rs.sliceFrom(rs.vecFromElem(n as rs.u16, 1 << 16, undefined).items), rs.usizeAdd(1 << 14, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 327, col: 42 }), undefined).items), 2, rs.sliceFrom([1])).items), (_2: rs.u16): rs.u8 => { + joined = rs.iterToByteVec(rs.iterMap(rs.iterSlice(rs.slicesJoin(rs.sliceFrom(rs.vecFromElem(rs.sliceFrom(rs.vecFromElem(n as rs.u16, 1 << 16, undefined).items), rs.usizeAdd(1 << 14, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 331, col: 42 }), undefined).items), 2, rs.sliceFrom([1])).items), (_2: rs.u16): rs.u8 => { return _2 & 0xff; }), undefined, true); } @@ -521,10 +525,10 @@ export function compared(kind: rs.u8, n: rs.u8): rs.u8 { const _5: [rs.RefCell, rs.RefCell] = [new rs.RefCell(n), new rs.RefCell(rs.u8WrappingAdd(n, 1))]; const a: rs.RefCell = _5[0]; const b: rs.RefCell = _5[1]; - if (!(rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 339, col: 20 }) === 0)) { - _held = rs.refCellBorrowMut(b, { file: "fixtures/lang/panics/src/hooked.rs", line: 339, col: 59 }); + if (!(rs.u8Rem(n, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 343, col: 20 }) === 0)) { + _held = rs.refCellBorrowMut(b, { file: "fixtures/lang/panics/src/hooked.rs", line: 343, col: 59 }); } else { - _held = rs.refCellBorrowMut(a, { file: "fixtures/lang/panics/src/hooked.rs", line: 339, col: 35 }); + _held = rs.refCellBorrowMut(a, { file: "fixtures/lang/panics/src/hooked.rs", line: 343, col: 35 }); } if (kind === 0) { _0 = rs.refCellBy(rs.same, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell.rs", line: 1482, col: 15 }, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell.rs", line: 1482, col: 34 })(a, b) ? 1 : 0; @@ -571,11 +575,11 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { const at: rs.usize = n as rs.usize; const whole: rs.ByteSlice = rs.bytesFromVec(rs.byteVecOf(n, 4)); b0: { - const k: rs.u8 = rs.u8Rem(kind, 33, { file: "fixtures/lang/panics/src/hooked.rs", line: 381, col: 24 }); + const k: rs.u8 = rs.u8Rem(kind, 33, { file: "fixtures/lang/panics/src/hooked.rs", line: 385, col: 24 }); if (0 <= k) { if (k <= 1) { rs.setHook((info: rs.PanicHookInfo): undefined => { - const at2: rs.Location = rs.optionUnwrap(info.location, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 383, col: 38 }); + const at2: rs.Location = rs.optionUnwrap(info.location, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 387, col: 38 }); const _10: string = at2.file; const _126: rs.u32 = at2.line; const _14: rs.u32 = at2.col; @@ -584,16 +588,16 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { rs.localKeyWithBorrowMutPlace(NOTE, (note: rs.Place): undefined => { note.v = note.v + line; }, { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/std/src/thread/local.rs", line: 721, col: 38 }); - rs.panicFmt(["unread"], { file: "fixtures/lang/panics/src/hooked.rs", line: 386, col: 13 }); + rs.panicFmt(["unread"], { file: "fixtures/lang/panics/src/hooked.rs", line: 390, col: 13 }); }, { capacity: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/raw_vec/mod.rs", line: 29, col: 5 }, trusted_capacity: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/spec_from_iter_nested.rs", line: 57, col: 18 }, swap_remove: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 2178, col: 13 }, vec_set_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 2138, col: 9 }, into_flattened: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/vec/mod.rs", line: 3667, col: 36 }, rotate_left: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/mod.rs", line: 3902, col: 9 }, rotate_right: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/mod.rs", line: 3948, col: 9 }, ord_violation: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/slice/sort/shared/smallsort.rs", line: 854, col: 5 }, ord_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cmp.rs", line: 1166, col: 9 }, f32_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/num/f32.rs", line: 1665, col: 9 }, f64_clamp: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/num/f64.rs", line: 1643, col: 9 }, encode_utf8: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/methods.rs", line: 2507, col: 9 }, encode_utf16: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/char/methods.rs", line: 2601, col: 13 }, format: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/fmt.rs", line: 657, col: 14 }, to_string: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/string.rs", line: 2997, col: 14 }, debug_struct_fields: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/fmt/mod.rs", line: 2572, col: 9 }, exact_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/traits/exact_size.rs", line: 122, col: 9 }, join_len: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/str.rs", line: 177, col: 10 }, int_sum: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/traits/accum.rs", line: 206, col: 1 }, int_forward: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/range.rs", line: 554, col: 1 }, char_forward: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/iter/range.rs", line: 119, col: 45 }, hash_capacity: { file: "/cargo/registry/25cdd57fae9f0462/hashbrown-0.17.1/src/raw.rs", line: 36, col: 40 }, btree_range_equal_BTreeSet: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 110, col: 21 }, btree_range_equal_BTreeMap: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 112, col: 21 }, btree_range_order_BTreeSet: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 119, col: 21 }, btree_range_order_BTreeMap: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/btree/search.rs", line: 121, col: 21 }, deque_insert: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 2612, col: 9 }, deque_swap_i: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1062, col: 9 }, deque_swap_j: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 1063, col: 9 }, deque_rotate_left: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 3198, col: 9 }, deque_rotate_right: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 3243, col: 9 }, deque_split_off: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/vec_deque/mod.rs", line: 2724, col: 9 }, list_split_off: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/alloc/src/collections/linked_list.rs", line: 1015, col: 9 }, mutex_lock: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/std/src/sys/sync/mutex/no_threads.rs", line: 28, col: 9 }, once_force: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/std/src/sync/once.rs", line: 227, col: 20 }, reentrant_init: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell/once.rs", line: 325, col: 66 }, lazy_poisoned: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/cell/lazy.rs", line: 386, col: 5 }, ready_poll: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/future/ready.rs", line: 23, col: 35 }, ready_into_inner: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/future/ready.rs", line: 46, col: 16 }, duration_new: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 281, col: 18 }, duration_from_mins: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 540, col: 13 }, duration_from_hours: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 510, col: 13 }, duration_add: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1345, col: 31 }, duration_sub: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1365, col: 31 }, duration_mul: { file: "/rustc/7df81381d027710708209f36b98d11b1c88f8d2e/library/core/src/time.rs", line: 1385, col: 31 }, bytes_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/lib.rs", line: 207, col: 5 }, bytes_does_not_fit: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/lib.rs", line: 215, col: 5 }, bytes_slice: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 374, col: 28 }, bytes_slice_ref_start: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 426, col: 9 }, bytes_slice_ref_end: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 432, col: 9 }, bytes_split_off: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 481, col: 9 }, bytes_split_to: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 533, col: 9 }, bytes_buf_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes.rs", line: 694, col: 9 }, bytes_mut_split_off: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 329, col: 9 }, bytes_mut_split_to: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 408, col: 9 }, bytes_mut_set_len: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 545, col: 9 }, bytes_mut_overflow: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 700, col: 21 }, bytes_mut_overflow_offset: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 720, col: 29 }, bytes_mut_buf_advance: { file: "/cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.12.1/src/bytes_mut.rs", line: 1246, col: 9 } }); const subset: rs.ByteSlice = rs.bytesSlice(whole, 0, 1); if (k === 0) { - const _22: rs.ByteSlice = rs.bytesSlice(whole, rs.usizeAdd(1, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 390, col: 34 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 390, col: 30 })); + const _22: rs.ByteSlice = rs.bytesSlice(whole, rs.usizeAdd(1, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 394, col: 34 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 394, col: 30 })); held = rs.bytesSliceRef(_22, subset); rs.bytesDrop(_22); } else { const _32: rs.ByteSlice = rs.bytesSlice(whole, 0, 1); - const _35: rs.ByteSlice = rs.byteSliceRange(whole, 0, rs.usizeAdd(2, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 391, col: 58 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 391, col: 54 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 391, col: 51 }); + const _35: rs.ByteSlice = rs.byteSliceRange(whole, 0, rs.usizeAdd(2, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 395, col: 58 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 395, col: 54 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 395, col: 51 }); held = rs.bytesSliceRef(_32, _35); rs.bytesDrop(_32); } @@ -605,38 +609,38 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { } } hook(); - const shared: rs.BytesMut = rs.bytesMutFrom(rs.byteSliceRange(rs.byteSliceFrom(rs.bytes(8).fill(n)), 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 397, col: 44 })); - const _52: rs.u8 = rs.u8Rem(kind, 33, { file: "fixtures/lang/panics/src/hooked.rs", line: 398, col: 11 }); + const shared: rs.BytesMut = rs.bytesMutFrom(rs.byteSliceRange(rs.byteSliceFrom(rs.bytes(8).fill(n)), 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 401, col: 44 })); + const _52: rs.u8 = rs.u8Rem(kind, 33, { file: "fixtures/lang/panics/src/hooked.rs", line: 402, col: 11 }); if (_52 === 2) { - const _56: rs.ByteSlice = rs.bytesSlice(whole, rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 399, col: 49 }), 2); + const _56: rs.ByteSlice = rs.bytesSlice(whole, rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 403, col: 49 }), 2); rs.byteVecExtendFromSlice(out, _56); rs.bytesDrop(_56); } else if (_52 === 3) { - const _63: rs.ByteSlice = rs.bytesSlice(whole, 0, rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 400, col: 51 })); + const _63: rs.ByteSlice = rs.bytesSlice(whole, 0, rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 404, col: 51 })); rs.byteVecExtendFromSlice(out, _63); rs.bytesDrop(_63); } else if (_52 === 4) { - const _72: rs.RangeInclusive = new rs.RangeInclusive(rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 401, col: 62 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 401, col: 49 }), 4294967295, rs.usizeStep); + const _72: rs.RangeInclusive = new rs.RangeInclusive(rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 405, col: 62 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 405, col: 49 }), 4294967295, rs.usizeStep); const _70: rs.ByteSlice = rs.bytesSliceInclusive(whole, _72); rs.byteVecExtendFromSlice(out, _70); rs.bytesDrop(_70); } else if (_52 === 5) { let _81: rs.ByteSlice = rs.bytesClone(whole); - const _83: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 402, col: 60 }); + const _83: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 406, col: 60 }); const _79: rs.ByteSlice = rs.bytesSplitTo(rs.place(() => _81, (value9) => _81 = value9), _83); rs.byteVecExtendFromSlice(out, _79); rs.bytesDrop(_79); rs.bytesDrop(_81); } else if (_52 === 6) { let _89: rs.ByteSlice = rs.bytesClone(whole); - const _91: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 403, col: 61 }); + const _91: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 407, col: 61 }); const _87: rs.ByteSlice = rs.bytesSplitOff(rs.place(() => _89, (value8) => _89 = value8), _91); rs.byteVecExtendFromSlice(out, _87); rs.bytesDrop(_87); rs.bytesDrop(_89); } else if (_52 === 7) { let _94: rs.ByteSlice = rs.bytesClone(whole); - const _96: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 404, col: 36 }); + const _96: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 408, col: 36 }); rs.bytesAdvance(rs.place(() => _94, (value7) => _94 = value7), _96); rs.bytesDrop(_94); } else if (_52 === 8) { @@ -645,12 +649,12 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { rs.bytesDrop(_101); } else if (_52 === 9) { let _107: rs.ByteSlice = rs.bytesClone(whole); - const _109: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 406, col: 50 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 406, col: 46 }); + const _109: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 410, col: 50 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 410, col: 46 }); rs.byteVecPush(out, rs.u64Low(rs.u64FromBeBytes(rs.bytesReadInt(rs.place(() => _107, (value5) => _107 = value5), 8, _109, false, false))) & 0xff); rs.bytesDrop(_107); } else if (_52 === 10) { - let _114: rs.ByteSlice = rs.byteSliceRange(data, 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 407, col: 21 }); - const _116: rs.usize = rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 407, col: 35 }); + let _114: rs.ByteSlice = rs.byteSliceRange(data, 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 411, col: 21 }); + const _116: rs.usize = rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 411, col: 35 }); rs.byteSliceAdvance(rs.place(() => _114, (value4) => _114 = value4), _116); } else if (_52 === 11) { let _120: rs.ByteSlice = rs.bytesClone(whole); @@ -659,75 +663,75 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { rs.bytesDrop(_120); } else if (_52 === 12) { let _129: rs.ByteSlice = rs.bytesClone(whole); - const _131: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 409, col: 66 }); + const _131: rs.usize = rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 413, col: 66 }); const _127: rs.ByteSlice = rs.bytesSplitTo(rs.place(() => _129, (value2) => _129 = value2), _131); rs.byteVecExtendFromSlice(out, _127); rs.bytesDrop(_127); rs.bytesDrop(_129); } else if (_52 === 13) { - let _137: rs.ByteSlice = rs.byteSliceRange(data, 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 410, col: 44 }); - const _139: rs.usize = rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 410, col: 64 }); + let _137: rs.ByteSlice = rs.byteSliceRange(data, 0, undefined, { file: "fixtures/lang/panics/src/hooked.rs", line: 414, col: 44 }); + const _139: rs.usize = rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 414, col: 64 }); const _135: rs.ByteSlice = rs.byteSliceCopyToBytes(rs.place(() => _137, (value) => _137 = value), _139); rs.byteVecExtendFromSlice(out, _135); rs.bytesDrop(_135); } else if (_52 === 14) { const _146: rs.BytesMut = rs.bytesMutFrom(data); - const _144: rs.BytesMut = rs.bytesMutSplitTo(_146, rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 411, col: 68 })); + const _144: rs.BytesMut = rs.bytesMutSplitTo(_146, rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 415, col: 68 })); rs.byteVecExtendFromSlice(out, rs.bytesMutView(_144)); _144[Symbol.dispose](); _146[Symbol.dispose](); } else if (_52 === 15) { const _154: rs.BytesMut = rs.bytesMutWithCapacity(4); - const _152: rs.BytesMut = rs.bytesMutSplitOff(_154, rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 412, col: 75 })); + const _152: rs.BytesMut = rs.bytesMutSplitOff(_154, rs.usizeAdd(at, 5, { file: "fixtures/lang/panics/src/hooked.rs", line: 416, col: 75 })); rs.byteVecExtendFromSlice(out, rs.bytesMutView(_152)); _152[Symbol.dispose](); _154[Symbol.dispose](); } else if (_52 === 16) { - const b: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 414, col: 49 })); - rs.bytesMutSetLen(b, rs.usizeAdd(b.cap, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 416, col: 32 })); + const b: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 418, col: 49 })); + rs.bytesMutSetLen(b, rs.usizeAdd(b.cap, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 420, col: 32 })); rs.byteVecPush(out, b.length & 0xff); b[Symbol.dispose](); } else if (_52 === 17) { - const b2: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 420, col: 49 })); - rs.bytesMutAdvanceMut(b2, rs.usizeAdd(b2.cap, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 422, col: 36 })); + const b2: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 424, col: 49 })); + rs.bytesMutAdvanceMut(b2, rs.usizeAdd(b2.cap, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 426, col: 36 })); rs.byteVecPush(out, b2.length & 0xff); b2[Symbol.dispose](); } else if (_52 === 18) { - const v: rs.ByteVec = rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 426, col: 50 })); - rs.byteVecAdvanceMut(v, rs.usizeAdd(v.data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 428, col: 36 })); + const v: rs.ByteVec = rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 430, col: 50 })); + rs.byteVecAdvanceMut(v, rs.usizeAdd(v.data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 432, col: 36 })); rs.byteVecPush(out, v.length & 0xff); } else if (_52 === 19) { const _197: rs.BytesMut = rs.bytesMutFrom(data); - rs.bytesMutAdvance(_197, rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 431, col: 44 })); + rs.bytesMutAdvance(_197, rs.usizeAdd(data.length, 1, { file: "fixtures/lang/panics/src/hooked.rs", line: 435, col: 44 })); _197[Symbol.dispose](); } else if (_52 === 20) { - const _204: rs.BytesMut = rs.bytesMutFrom(rs.byteSliceRange(data, 0, rs.min(data.length, 3), { file: "fixtures/lang/panics/src/hooked.rs", line: 432, col: 44 })); + const _204: rs.BytesMut = rs.bytesMutFrom(rs.byteSliceRange(data, 0, rs.min(data.length, 3), { file: "fixtures/lang/panics/src/hooked.rs", line: 436, col: 44 })); rs.byteVecPush(out, (rs.bytesMutReadWord(_204, 4, false) as rs.u32) & 0xff); _204[Symbol.dispose](); } else if (_52 === 21) { - const _212: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 433, col: 48 })); + const _212: rs.BytesMut = rs.bytesMutWithCapacity(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 437, col: 48 })); rs.byteVecPush(out, _212.cap & 0xff); _212[Symbol.dispose](); } else if (_52 === 22) { const _tail: rs.BytesMut = rs.bytesMutSplitOff(shared, 4); - rs.bytesMutReserve(shared, rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 437, col: 41 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 437, col: 28 })); + rs.bytesMutReserve(shared, rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 441, col: 41 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 441, col: 28 })); _tail[Symbol.dispose](); } else if (_52 === 23) { rs.bytesMutSplitTo(shared, 4)[Symbol.dispose](); - rs.bytesMutReserve(shared, rs.usizeSub(4294967295 - 4, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 442, col: 45 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 442, col: 28 })); + rs.bytesMutReserve(shared, rs.usizeSub(4294967295 - 4, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 446, col: 45 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 446, col: 28 })); } else if (_52 === 24) { const _235: rs.u64 = n as rs.u64; - const _236: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 444, col: 49 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 444, col: 45 }); + const _236: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 448, col: 49 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 448, col: 45 }); rs.bytesMutPutInt(shared, rs.u64ToBeBytes(_235), _236, false); } else if (_52 === 25) { const _240: rs.i64 = n as rs.i64; - const _241: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 445, col: 45 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 445, col: 41 }); + const _241: rs.usize = rs.usizeAdd(9, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 449, col: 45 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 449, col: 41 }); rs.byteVecPutInt(out, rs.i64ToBeBytes(_240), _241, false); } else if (_52 === 26) { - rs.byteVecPutFill(out, n, rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 446, col: 53 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 446, col: 40 })); + rs.byteVecPutFill(out, n, rs.usizeSub(4294967295, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 450, col: 53 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 450, col: 40 })); } else if (_52 === 27) { const _253: Take.Take = buf_impl_take$bytes_Buf_bytes_Bytes(rs.bytesClone(whole), 2); - const _251: rs.ByteSlice = Take.copyToBytes$bytes_Buf_bytes_Bytes(_253, rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 447, col: 74 })); + const _251: rs.ByteSlice = Take.copyToBytes$bytes_Buf_bytes_Bytes(_253, rs.usizeAdd(at, 3, { file: "fixtures/lang/panics/src/hooked.rs", line: 451, col: 74 })); rs.byteVecExtendFromSlice(out, _251); rs.bytesDrop(_251); drop$bytes_buf_Take_bytes_Bytes(_253); @@ -737,15 +741,15 @@ export function stock(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void { drop$bytes_buf_Take_bytes_Bytes(_261); } else if (_52 === 29) { const chunk: rs.ByteSlice = rs.bytesMutChunkMut(shared); - UninitSlice.writeByte(chunk, rs.usizeAdd(UninitSlice.len(chunk), rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 452, col: 44 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 452, col: 30 }), n); + UninitSlice.writeByte(chunk, rs.usizeAdd(UninitSlice.len(chunk), rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 456, col: 44 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 456, col: 30 }), n); } else if (_52 === 30) { - UninitSlice.writeByte(UninitSlice.indexMut$ops_IndexMut_ops_RangeFrom_usize(rs.byteVecChunkMut(rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 454, col: 40 }))), new rs.RangeFrom(rs.usizeAdd(65, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 454, col: 65 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 454, col: 60 }), rs.usizeStep), { file: "fixtures/lang/panics/src/hooked.rs", line: 454, col: 59 }), 0, n); + UninitSlice.writeByte(UninitSlice.indexMut$ops_IndexMut_ops_RangeFrom_usize(rs.byteVecChunkMut(rs.byteVecWithCapacity(rs.usizeRem(at, 4, { file: "fixtures/lang/panics/src/hooked.rs", line: 458, col: 40 }))), new rs.RangeFrom(rs.usizeAdd(65, rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 458, col: 65 }), { file: "fixtures/lang/panics/src/hooked.rs", line: 458, col: 60 }), rs.usizeStep), { file: "fixtures/lang/panics/src/hooked.rs", line: 458, col: 59 }), 0, n); } else if (_52 === 31) { const _287: rs.BytesMut = rs.bytesMutWithCapacity(0); - UninitSlice.copyFromSlice(UninitSlice.indexMut$ops_IndexMut_ops_RangeTo_usize(rs.bytesMutChunkMut(_287), { end: rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 455, col: 45 }) }, { file: "fixtures/lang/panics/src/hooked.rs", line: 455, col: 42 }), rs.byteSliceFrom(rs.bytes(3).fill(n))); + UninitSlice.copyFromSlice(UninitSlice.indexMut$ops_IndexMut_ops_RangeTo_usize(rs.bytesMutChunkMut(_287), { end: rs.usizeRem(at, 2, { file: "fixtures/lang/panics/src/hooked.rs", line: 459, col: 45 }) }, { file: "fixtures/lang/panics/src/hooked.rs", line: 459, col: 42 }), rs.byteSliceFrom(rs.bytes(3).fill(n))); _287[Symbol.dispose](); } else { - const _297: rs.BytesMut = rs.bytesMutZeroed(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 456, col: 40 })); + const _297: rs.BytesMut = rs.bytesMutZeroed(rs.usizeSub(4294967295, at, { file: "fixtures/lang/panics/src/hooked.rs", line: 460, col: 40 })); rs.byteVecPush(out, _297.length & 0xff); _297[Symbol.dispose](); } diff --git a/ts/fixtures/lang/panics/src/hooked.rs b/ts/fixtures/lang/panics/src/hooked.rs index c7997e7fd..90350cb9b 100644 --- a/ts/fixtures/lang/panics/src/hooked.rs +++ b/ts/fixtures/lang/panics/src/hooked.rs @@ -118,6 +118,10 @@ pub fn panicked(kind: u8, data: &[u8], out: &mut Vec) { 29 => todo!(), 30 => assert_ne!(n, n), 31 => unimplemented!("not {n}"), + // SAFETY: none, past `u8::MAX`: std's check of its precondition aborts. + 32 => out.push(unsafe { n.max(200).unchecked_add(n.max(100)) }), + // SAFETY: none, of zero: std's check of its precondition aborts. + 33 => out.push(unsafe { std::num::NonZero::new_unchecked(n.wrapping_mul(0)) }.get()), _ => { let len = HashMap::::with_capacity(usize::MAX).len(); out.push(len as u8); diff --git a/ts/runtime/rs.ts b/ts/runtime/rs.ts index 1a726feee..bd32dc7d7 100644 --- a/ts/runtime/rs.ts +++ b/ts/runtime/rs.ts @@ -58,6 +58,18 @@ export function panic(message: string, at?: Location | string, owned?: boolean): throw new Panic(message); } +/** + * `value`, what an unsafe function gives where its precondition `check` held, or, where it is + * `undefined`, the abort std's check of `check` makes in a debug build, since Rust defines + * nothing past it: a panic that can't unwind, at `at` or at the key of std's site. + */ +export function precondition(value: T | undefined, check: string, at?: Location | string): T { + if (value === undefined) { + panic(`unsafe precondition(s) violated: ${check}\n\nThis indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.`, at); + } + return value; +} + /** `resume_unwind`, which aborts as `panic=abort`'s runtime does, running no panic hook. */ export function resumeUnwind(): never { throw new Abort("resume_unwind"); @@ -2218,18 +2230,9 @@ export function byteVecSpare(v: ByteVec): ByteSlice { return new ByteSlice(v.data, v.length, v.data.length - v.length); } -/** - * `Vec::set_len`, which panics past the capacity, as std's check of its precondition does: - * one that can't unwind, so it runs the hook, then aborts, as every panic here does. - */ +/** `Vec::set_len`, which aborts past the capacity, as std's check of its precondition does. */ export function byteVecSetLen(v: ByteVec, length: number): void { - if (length > v.data.length) { - panic( - "unsafe precondition(s) violated: Vec::set_len requires that new_len <= capacity()\n\nThis indicates a bug in the program. This Undefined Behavior check is optional, and cannot be relied on for safety.", - "vec_set_len", - ); - } - v.length = length; + v.length = precondition(length <= v.data.length ? length : undefined, "Vec::set_len requires that new_len <= capacity()", "vec_set_len"); } /** `Vec::clear`. */ diff --git a/ts/runtime/rs/int.ts b/ts/runtime/rs/int.ts index edb263aa5..26043717f 100644 --- a/ts/runtime/rs/int.ts +++ b/ts/runtime/rs/int.ts @@ -2234,16 +2234,18 @@ export const intOverflowingShr = (a: T, n: number, bits: number, export const intUnboundedShl = (a: T, n: number, bits: number, signed: boolean): T => (n < bits ? (wrappingOf(intToBig(a) << BigInt(n), bits, signed) as T) : (0 as T)); /** `unbounded_shr`: `a >> n`, past the width all sign bits: 0, or -1 for a negative `a`. */ export const intUnboundedShr = (a: T, n: number, bits: number, signed: boolean): T => intFromBig(intToBig(a) >> BigInt(Math.min(n, bits)), bits, signed) as T; -/** `funnel_shl` of an unsigned type: the high half of `a:b` shifted left by `n`, panicking unless `n` is below the width. */ -export const intFunnelShl = (a: T, b: T, n: number, bits: number, signed: boolean, at?: Location): T => { - if (n >= bits) panic("attempt to funnel shift left with overflow", at); - return wrappingOf((((intToBig(a) << BigInt(bits)) | intToBig(b)) << BigInt(n)) >> BigInt(bits), bits, signed) as T; -}; -/** `funnel_shr` of an unsigned type: the low half of `a:b` shifted right by `n`, panicking unless `n` is below the width. */ -export const intFunnelShr = (a: T, b: T, n: number, bits: number, signed: boolean, at?: Location): T => { - if (n >= bits) panic("attempt to funnel shift right with overflow", at); - return wrappingOf(((intToBig(a) << BigInt(bits)) | intToBig(b)) >> BigInt(n), bits, signed) as T; -}; +/** `funnel_shl` of an unsigned type, as `unchecked_funnel_shl` checks it: the high half of `a:b` shifted left by `n`, or `undefined` unless `n` is below the width. */ +export const intCheckedFunnelShl = (a: T, b: T, n: number, bits: number, signed: boolean): T | undefined => + n < bits ? (wrappingOf((((intToBig(a) << BigInt(bits)) | intToBig(b)) << BigInt(n)) >> BigInt(bits), bits, signed) as T) : undefined; +/** `funnel_shr` of an unsigned type, as `unchecked_funnel_shr` checks it: the low half of `a:b` shifted right by `n`, or `undefined` unless `n` is below the width. */ +export const intCheckedFunnelShr = (a: T, b: T, n: number, bits: number, signed: boolean): T | undefined => + n < bits ? (wrappingOf(((intToBig(a) << BigInt(bits)) | intToBig(b)) >> BigInt(n), bits, signed) as T) : undefined; +/** `funnel_shl` of an unsigned type, panicking unless `n` is below the width. */ +export const intFunnelShl = (a: T, b: T, n: number, bits: number, signed: boolean, at?: Location): T => + intCheckedFunnelShl(a, b, n, bits, signed) ?? panic("attempt to funnel shift left with overflow", at); +/** `funnel_shr` of an unsigned type, panicking unless `n` is below the width. */ +export const intFunnelShr = (a: T, b: T, n: number, bits: number, signed: boolean, at?: Location): T => + intCheckedFunnelShr(a, b, n, bits, signed) ?? panic("attempt to funnel shift right with overflow", at); /** `rotate_left`: `a`'s bits rotated left by `n`, modulo the width. */ export const intRotateLeft = (a: T, n: number, bits: number, signed: boolean): T => { const v = bitsOf(a, bits); diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 17c2ec197..dcdc99c13 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -2017,6 +2017,12 @@ fn mapping<'tcx>( // A `NonZero` is its integer. ("NonZero", "get") => args.pop()?, ("NonZero", "new") => Expr::rs("nonZero", args), + ("NonZero", "new_unchecked") => { + let check = Expr::Str("NonZero::new_unchecked requires the argument to be non-zero".into()); + Expr::rs("precondition", vec![Expr::rs("nonZero", args), check]) + } + // Its integer's, but that std's code, not the caller, is where it aborts. + ("NonZero", _) if name.starts_with("unchecked_") => return None, // Its integer's, of each width's own impl, which has no type argument to read the // integer from, but for the bits it always has. ("NonZero", _) => { @@ -3913,6 +3919,22 @@ fn int_method<'tcx>( "strict_rem" => "rem", "strict_shl" => "shl", "strict_shr" => "shr", + // Its checked form, which aborts where it gives `None` as std's check of the + // precondition does in a debug build, since Rust defines nothing past it. + _ if let Some(op) = name.strip_prefix("unchecked_") => { + let checked = match op { + "add" | "sub" | "mul" | "neg" | "shl" | "shr" => { + int_method(b, call, int, &format!("checked_{op}"), args)? + } + "funnel_shl" | "funnel_shr" if !int.signed => { + args.extend([Expr::lit(int.bits.to_string()), Expr::lit("false")]); + Expr::rs(super::camel(&format!("int_checked_{op}")), args) + } + _ => return None, + }; + let check = Expr::Str(format!("{}::{name} cannot overflow", int.rs())); + return Some(Expr::rs("precondition", vec![checked, check])); + } // wasm32 is little-endian. "to_le" | "from_le" => return args.pop(), "max_value" => return Some(int.lit(int.max() as i128)), From e81fb8c91087b955bf5310eed1baa472f9c4568a Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Fri, 6 Nov 2026 17:54:39 -0800 Subject: [PATCH 3/3] fix(ts): dispatch hooked::panicked on kind % 35 so its unchecked and capacity arms run Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/panics/hook/expected/hooked.ts | 2 +- ts/fixtures/lang/panics/src/hooked.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ts/fixtures/lang/panics/hook/expected/hooked.ts b/ts/fixtures/lang/panics/hook/expected/hooked.ts index 3f30c82a4..ceae4ba03 100644 --- a/ts/fixtures/lang/panics/hook/expected/hooked.ts +++ b/ts/fixtures/lang/panics/hook/expected/hooked.ts @@ -89,7 +89,7 @@ export function panicked(kind: rs.u8, data: rs.ByteSlice, out: rs.ByteVec): void const n: rs.u8 = option_unwrapOr$1fr498u(rs.byteSliceFirst(data), 0); hook(); const v: rs.ByteVec = rs.byteVecFrom(Uint8Array.of(n, n)); - const _10: rs.u8 = rs.u8Rem(kind, 32, { file: "fixtures/lang/panics/src/hooked.rs", line: 84, col: 11 }); + const _10: rs.u8 = rs.u8Rem(kind, 35, { file: "fixtures/lang/panics/src/hooked.rs", line: 84, col: 11 }); if (_10 === 0) { rs.panicFmt(["literal"], { file: "fixtures/lang/panics/src/hooked.rs", line: 85, col: 14 }); } else if (_10 === 1) { diff --git a/ts/fixtures/lang/panics/src/hooked.rs b/ts/fixtures/lang/panics/src/hooked.rs index 90350cb9b..0f796a1b3 100644 --- a/ts/fixtures/lang/panics/src/hooked.rs +++ b/ts/fixtures/lang/panics/src/hooked.rs @@ -81,7 +81,7 @@ pub fn panicked(kind: u8, data: &[u8], out: &mut Vec) { let n = data.first().copied().unwrap_or(0); hook(); let v = vec![n, n]; - match kind % 32 { + match kind % 35 { 0 => panic!("literal"), 1 => panic!("formatted {n}"), 2 => out.push(v[usize::from(n) + 2]),