diff --git a/docs/analysis/ca3-v4-uniform.md b/docs/analysis/ca3-v4-uniform.md new file mode 100644 index 000000000..db1689082 --- /dev/null +++ b/docs/analysis/ca3-v4-uniform.md @@ -0,0 +1,62 @@ +# AP-F8-1 under the windows-union model: the hot set is the load source, not the window (7 October 2026) + +Branch `ca3-v4-uniform` from master b92a5fd4, worker "v4-hash", on the attack-pass finding AP-F8-1 (`docs/analysis/attack-pass/f8-uniform.md`, branch attack-pass; logs `/srv/builds/igneum-wt-attack/target-attack-f8/log/`). Main's rulings bound this file: no generator change to class v4 on the live devnet; the analysis and its harness only. Every GPU-free number here is arithmetic on F8's logged counts or a run of the static census tool `tools/ca3-v4-uniform/` on igneum-build-1 (built through `tools/build-remote.sh`, rule R1); the chip figures are the terms of `docs/analysis/chip-model-v3.md` and are approximate. + +## 1. The null F8's numbers must be read against + +Layer 8 (`docs/plans/era-layout.md` 1.4, spec 01 1.13.1 as proposed) gives every load site a window draw `k_off = below(3)`: the site reads the whole dataset, an aligned half or an aligned quarter, at a 2^26-word floor. A quarter-window site concentrates its reads 4x on its quarter and a half-window site 2x on its half, by design; the union of the 16 windows is the whole dataset. For p1 (the devnet epoch-0 program, id c120d7963abdcd96) the 16 draws `0:2:1 1:1:1 2:1:1 3:1:1 4:0:0 5:1:1 6:0:0 7:2:2 8:1:1 9:1:1 10:2:0 11:0:0 12:0:0 13:0:0 14:2:0 15:1:1` (site:k:offset) give an expected read density by quarter of 3.25 : 2.25 : 5.75 : 4.75 sixteenths of the flat mean, which at 2^26 nonces (512 reads per item flat) is 416, 288, 736 and 608 reads per item. The top-f share of a Poisson mixture with those means (`uniform-model.txt`, exact Poisson for p1, a normal approximation for the census): + +| Share of all reads on the top f of items, 2^26 nonces | Flat Poisson (F8's control) | Windows-union model, p1 | F8 measured, p1 | Beyond the window model | +|---|---|---|---|---| +| f = 0.1 percent | 0.115 | 0.160 | 0.520 | +0.36 | +| f = 0.5 percent | 0.565 | 0.784 | 1.515 | +0.73 | +| f = 1 percent | 1.120 | 1.553 | 2.495 | +0.94 | + +So the window model moves the null from 0.115 to 0.160 percent at f = 0.1 percent (1.39x, not F8's 4.05x) and from 1.12 to 1.55 at f = 1 percent; it explains the 64-item-bucket sigma of p2 that F8 already attributed to the window layer, and it explains every per-site attribution row of p1 except one: sites with a half window over the hot region land 0.20 percent of their reads in the top 0.1 percent (sites 1, 2, 3, 5, 9 at 0.201), quarter-window sites 0 or about 0.4 (sites 0, 10, 14 at 0.000, site 7 at 0.241 straddling), whole-dataset sites 0.10. Site 15 lands 6.374 percent. The excess over the model (+0.36 at f = 0.1 percent) is one site. + +## 2. The 153x item is the load source, and the model predicts it to the item + +p1's site 15 is the load at instruction 63 (`load dst=3 src=6`, window half 1). Its source r6 was last written at instruction 61: `or dst=6 src=4` (`r6 |= r4`, `verify.rs` Op::Or), after a fresh dataset load into r6 at 47. An OR of two near-uniform registers sets each bit with probability 3/4, so the source takes the all-ones value with probability (3/4)^32 = 1.0e-4 per read and the values of popcount 31, 30, ... with 32, 496, ... times (3/4)^k (1/4)^(32 - k). The era map `y = rotl(x * 0x9ad30d99, 29)`, the half window and the interleave split (`memhard::Layout::split`, positions 0, 2, 12, 13) send x = 0xffffffff to item 0xca5b92: F8's hottest item exactly. F8's next seven items (0x8a5b92, 0xaa5b92, 0xba5b92, 0x825b92, 0xe65b92, 0x985b92, 0xbcc392) are exactly the seven one-zero-bit sources whose zero bit survives the window mask (bits 29, 28, 27, 26, 25, 24 and 15): 7 of 7. The measured count fixes the bit bias: 78,479 reads of 2^26 x 8 site-15 reads is p^32 at p = 0.7585 (r4 is slightly biased itself), and at that p the popcount model predicts 77,348 all-ones reads and 4.86 percent of site 15's reads into the top 0.1 percent of items (measured 6.37; 3.92 at p = 3/4). Per hash that is 4.86 / 16 = 0.30 percent of all reads, and 0.160 + 0.30 = 0.46 against F8's 0.520 at f = 0.1 percent; at f = 1 percent 14.5 / 16 = 0.90, and 1.55 + 0.90 = 2.46 against 2.495. + +The same arithmetic for the other lossy writers (`uniform-model.txt`): a `mul` last writer zeroes the low bits by the operands' trailing zeros, so 1.07 percent of the site's reads land on the 0.1 percent of values with 10 or more trailing zeros (p2's `mul`-sourced sites 0 and 14 measured 0.971 and 0.966 percent); a `mulhi` last writer is dense near zero, 0.79 percent on the lowest 0.1 percent of values. An `or` whose operand was itself last written by `or` compounds the bias (3/4 to 7/8 to 15/16): p3's site 15 (`or` at 30, the load at 62) puts 72.4 percent of its reads into the top 0.1 percent, 4.6 percent of all reads on 16,777 items. + +This is a fault class, not the window model: the acceptance rule's part (a) (`accept.rs` check_stale_loads) takes any write as a fresh source, and part (c)'s saturation count looks at the 16,384 final register values, not at a load's source mid-program, so an `or`, `mul` or `mulhi` as a load's last writer passes. The per-hash distinct-address check still holds (p1 127.999 items per hash; p3 127.97: a saturated site repeats its item inside a hash), and the acceptance rule's floor of 120 distinct of 128 admits exactly one site repeating its item in all 8 iterations and no more. + +## 3. How common it is: the static census (`tools/ca3-v4-uniform`, 1,024 chain-shaped class v4 programs plus F8's p1 to p3) + +For every load site, the op that last wrote its source in execution order (base instructions before it, else the shadow block of the previous iteration, else the base instructions after it): injecting (add, sub, xor, mad, shfl, load), bijective (rotl, rotr) or lossy (or, mul, mulhi). Run on igneum-build-1 (`uniform-census.txt`, binary sha256 ce9f83fe... then the narrowed chain rule). + +| Census over 1,024 programs | Count | Share | +|---|---|---| +| Load sites by last writer: injecting / bijective / lossy | 11,368 / 2,121 / 2,943 of 16,432 | 69 / 13 / 18 percent; 2.87 lossy sites per program | +| Programs with at least one lossy-sourced load | 992 | 96.6 percent | +| ... with an `or`-sourced load (p1's class, 0.30 percent of all reads per site) | 498 | 48.5 percent | +| ... with an `or`-of-`or` chain (p3's class, about 4.5 percent of all reads per site) | 50 | 4.9 percent | +| ... with a `mul`-sourced load (0.067 percent per site) / a `mulhi`-sourced load (0.049) | 751 / 661 | 73.1 / 64.4 percent | +| Predicted S_0.1 percent (window model plus the lossy sites): median / 90th / 99th / max | 0.45 / 0.88 / 5.29 / 9.82 percent | against the window model's 0.115 to 0.251 | +| p1 / p2 / p3 predicted against F8 measured | 0.579 / 0.323 / 4.72 | 0.520 / 0.272 / 4.60 | + +F8's proposed gate (the top 0.1 percent within 1.2x of the window-model control on every one of 64 seeds) fails 96.6 percent of today's programs, because any lossy-sourced site alone exceeds it (0.16 + 0.05 at the least); it is a generator change in a gate's clothing. A 2x bound fails 69.7 percent, 3x 48.9 percent; a bound of S_0.1 percent at or under 1 percent of all reads fails 6.9 percent (the `or` chains and the multi-`or` programs). The static rule "no load whose source's last writer is `or`" fails 48.4 percent; "no lossy last writer" 96.6 percent. + +## 4. What the skew is worth to a chip (chip-model-v3.md terms, approximate) + +A hot-set cache of the top 0.1 percent of items is 16,777 items x 64 B = 1.07 MB of SRAM, 0.53 mm^2 and $0.25 at 0.49 mm^2 and $0.23 per MB. It serves 0.52 percent of p1's reads (0.16 of them the window model's), 4.6 percent of p3's. The hash is latency-bound on its dependent reads, so a read served on die is time saved: a chip gains at most 1.005x on p1 and 1.048x on p3 from the cache. The ceiling under the live rule: part (c)'s 120-of-128 floor admits one site repeating its item in all 8 iterations and no more (two saturated sites fail it), so at most 8 of 128 reads, 6.25 percent, can sit on a constant item, and a chip's edge from this whole class is at most 1 / (1 - 0.0625) = 1.067x, in 64 bytes of SRAM, on the hours whose program carries such a site. The public claim rests on 2x margins (chip-model-v3.md); 1.067x does not move it, and the union of the windows is still the whole dataset every hour, so no window-level cache exists. What moves: per tier nothing in rate or watts (the honest card reads the hot item from L2 as the chip would), and the 5 percent rule of 2.0 is untouched. + +## 5. The two options for the flip, priced (main's ruling 3; nothing ships on this without the project lead's word) + +| Option | What changes | Cost | Risk | +|---|---|---|---| +| A. A class amendment in 0.3.19 before the flip: the generator draws a load's source from the registers whose last writer injects (or rule (a) tightened to the same), class v4 re-pinned | a new program stream: new vectors, the seven gate packs re-exported, the six gates again (the hash side G1 to G3 and the verifier re-run here in about an hour of Mac and PC 2 time; G4 to G6 the node lane), every node before the flip by the one-box-at-a-time fleet rule | hours of gate time, a fleet rollout, the 0.3.19 ship on the line | a node that misses the build splits the chain at the flip; the fix itself is small (one draw rule) | +| B. Hold v4 at the floor as it is; the source rule in class v5 | nothing on the devnet; the attack-pass record carries the window null and the bound | a hot set on 48 percent of hours worth up to 1.005x to a chip, on 5 percent of hours up to 1.05x, 1.067x at the rule's ceiling, no chain risk | the public line must state the bound, not "uniform" | + +The number that decides it: 1.067x at the ceiling against the 2x margin of the chip claim. Recommendation: B, with the v5 item below, unless the project lead wants the tail tight now. + +## 6. The acceptance bound for the next class (main's ruling 4) + +Definition: for a program, H = W_0.1(windows) + sum over load sites of h(last writer of the source), with W from the Poisson mixture of the 16 window draws (0.115 to 0.251 percent at 2^26 nonces) and h = 0.30 percent for `or`, 4.5 for an `or` chain, 0.067 for `mul`, 0.049 for `mulhi`, 0 for an injecting or bijective writer (the figures of section 2 at the measured bias). The bound: H at or under 1.2 x W, which is the static rule "every load's source was last written by an injecting op or a rotate" (any lossy writer breaks 1.2x). Its cost as a rejection rule on today's stream: 96.6 percent of candidates, about 30 attempts per seed on average. The cheaper form is a generator draw, not a rejection: draw a load's source from the registers whose last writer injects (today's rule draws from every written register), which costs no attempts and leaves rule (a) as it is. Either way the 64-seed census of F8's phase E is the gate, with the dynamic check extended to count saturated load sources over the 64 units beside the final values. + +## 7. What is unverified + +- The per-site h figures are the popcount and trailing-zeros models at the biases F8 measured on p1 and p2; p3's chain figure is F8's measurement, not a model. F8's phase E (64 seeds, dynamic) is the test of the whole table. +- The window model's top-f shares for the census use a normal approximation per quarter (p1's exact Poisson 0.160 against 0.159). +- No GPU run and no timing here; every number is a count or arithmetic. diff --git a/docs/evidence.md b/docs/evidence.md index f564650f8..f73d68670 100644 --- a/docs/evidence.md +++ b/docs/evidence.md @@ -41,7 +41,7 @@ Versions in the table: `igneum-pow` is the Rust crate at `igneum-pow/Cargo.toml` | 14 | Ethereum bytecode runs unchanged, with the documented differences of spec 7.1 | Homepage Build card; litepaper Building | tested by the team | as row 13; fixes `F-exec-A`, `F-exec-B` (spec 7.5) | `tools/evm-smoke/smoke.mjs`: deploy via viem, `increment`, `hashLoop`, `eth_estimateGas`, `eth_getLogs`; `tools/exec-attacks` scenarios 1 and 3; bench-log "execution layer attack fixes" | Deployment, calls, reverts, logs and gas estimates behave as viem expects; chain id 4463; the prototype pgas table gives 0.0095 to 0.028 pgas per gas, below the design's band before calibration, 3 October 2026. 4 October 2026: a transaction that would cross the block's proving budget is refused by the mempool and, if forced in, aborted and charged with its nonce advanced (25 of 25 checks; 30 of 30 malformed cases). Apple M5 Max. The `Prover` precompile, proof records and the shard planner are not in the node | none yet | | 15 | Every block is proven, with the proof landing within about a minute at launch | Homepage stats ("~60 s to a proof"); litepaper Proving; roadmap phase 3 gate | implemented | repo `d7e1f89` (GPU proof), `e01a3cc`, `292e800`, `eedd136` (`proving/igneum-prove`: shard cutter, MPT witnesses, shard and aggregator guests); SP1 6.8.1; spec 7.2, 7.6 | `proving/windows-wsl2` (SETUP-PROVER, PROVE-BLOCK) on the RTX 5090; `igneum-prove-host --mode block` on `proving/fixtures/`; bench-log "proving v0 on the RTX 5090" and "proving: devnet v4 shards" | First GPU proof of an Igneum block, 4 October 2026, RTX 5090 (WSL2, SP1 cuda, mining paused): fixture `block-78-increment` (2 transactions), core proof 1.4 s (7.3 MB, verify 0.221 s), compressed proof 2.7 s (1.27 MB, verify 0.038 s), post-state and receipts roots identical to the node's; 15.7x and 20.6x faster than a loaded M5 Max CPU. The same day on that CPU (load 38 to 47): a three-shard block proved shard by shard and aggregated by recursion, 19 min (1,139 s) end to end, 245 to 337 s per compressed shard proof, every proof verified. What is not there: no proof is produced, carried or checked on the chain (the devnet prover is a stub that signs claims), the proving pool pays nobody (row 21), the block proven is far below one shard, and the 60-second figure remains a design target; the pass mark is the standard in `docs/benchmarks/proving-e2e.md`. Second RTX 5090 run, 4 October 2026 evening (job run-20261004-173115): a full shard at the provisional S_p (6.75 M pgas, 60.8 M cycles) executed in 1.63 s, core proof 8.3 s (18.1 MB), compressed proof 10.9 s (1.27 MB, verify 0.040 s); a two-shard block (13.5 M pgas) proved shard by shard (11.7 s and 10.0 s) and aggregated in 2.2 s, 24 s of GPU stages end to end, every proof verified, six tampered witnesses rejected. The two host defects (an abort after the upload, an idle wait that turned out to be an unbuffered 18 MB proof save through the WSL2 file bridge, 24 minutes) are fixed (ledger P20) 5 October 2026, live devnet with real transactions (bench-log "real transactions, the first non-empty shard proven and paid"): block 72704 shard 0, 29 transfers, 5,800 pgas, proven on PC 2 in 34 s, verified on the Mac in 0.297 s and paid 1.7623 IGN, 53 s after the chain block executed; of about 1,400 blocks in the 20-minute window 36 were proven (the one prover takes the newest shard assigned to it), so "every block" is not yet true; a second content shard (72803, all copies skipped) failed the native-execution veto on the exporter's block structure, fixed with fixtures the same day, the node side pending the 0.3.9 rollout 5 October 2026, evening (bench-log "proving v1"): the aggregated segment record, the chain rule and the unproven rule are implemented behind `proving_v1_activation_daa` (branch proving-v1, not on the devnet before 0.3.11); on the RTX 5090 a chain of 8 consecutive live blocks proved and aggregated by recursion in 135.6 s with the miner on the card (17 s a block, one proof of 1,272,909 bytes attesting all 8, verified in 0.04 s); the 3-node fast-time harness paid a segment record 1.0 s after submission and refused a late one after its deadline (21 checks); the devnet itself, with one prover, carried proofs for 2.4% of blocks over 30 minutes at a block-to-record latency p50 44 s, p99 52 s. The "within about a minute" holds per proven block; "every block" needs 18 mining 5090s or 6 proving-only cards at empty blocks on the measured rates, and the mandatory rule stays off until the share is one | none yet | | 16 | A 12 GB card proves one shard in about 20 s (WITHDRAWN 5 October 2026: a 24 GB card proves a full shard at the adopted size in 4.3 s; 32 GB mines and proves) | Litepaper Proving ("The proving budget"); roadmap gate 2 | designed | spec 5.1 (Target), 7.6 (`S_p` provisional, 7,500,000 pgas = `B_p` / 4) | `PROVE-SHARD.bat` on the RTX 5090 (pending); the end-to-end standard in `docs/benchmarks/proving-e2e.md`; bench-log "proving: devnet v4 shards" | Measured on a 32 GB card, not yet on a 12 GB card. A shard at the provisional `S_p` is 60.8 M SP1 cycles on the prototype pgas table (9 cycles per pgas, 44 per EVM gas; the modexp entry about 100x its SP1 cost); on an RTX 5090 (4 October 2026 evening, job run-20261004-173115) it executed in 1.63 s and its compressed proof took 10.9 s, verified in 0.040 s, so the 32 GB card is inside the 20 s target with margin. Whether a 12 GB card proves it at all, and in what time, is the next measurement (an RTX 3060 and an RTX 5060 Ti 16 GB are on order). A per-shard time can be met by shrinking the shard, so the project does not use it as a pass mark 5 October 2026, evening (bench-log "proving v1", the S_p curve): measured on the RTX 5090 with SP1 6.8.1's GPU prover, the card to itself, 1-s nvidia-smi samples: an empty shard 13,874 MiB and 2.2 s; a full shard at the ADOPTED v1 budget (30,000 pgas, 4.7 M cycles) 20,434 MiB and 4.3 s; the full prototype shard (6.75 M pgas, 60 M cycles) 28,307 MiB and 10.8 s; beside the miner 15,670 and 30,039 MiB. No environment knob of SP1 moves the 13.9 GB floor and the GPU server has no options of its own, so on this build a 12 GB card proves nothing, a 16 GB card only empty shards, a 24 GB card the adopted full shard alone and beside the miner (22,210 MiB and 13.2 s, measured on the 32 GB card: the 5090's allocation pattern, not yet a run on a 24 GB card) and a 32 GB card the prototype shard beside the miner with 2.5 GB spare. The litepaper line now says so; the 12 GB gate returns when a prover build with a smaller floor is measured on a 12 GB card | none yet | -| 17 | The chip resistance claim: the strongest chip in the public model reaches 5x to 9x per joule against an RTX 5090 today (modelled); class v4 brings it to 2.1x (k = 1) to 3.9x (k about 0.33, claimed by a withdrawn product) and its second rung to about 2.8x (modelled on measured watts); class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item (designed, +0.2 ms verifier); the hot-set cache bounded at 1.067x at the ceiling (measured census of 1,024 programs) and the weak-day FPGA at most 12 percent on 12 days a century (measured census) are bounded and routed to the next class; datacentre silicon (H100 SXM, measured 7 October) does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years (modelled) | The home page's chip line, the litepaper's chip model section, the miner page's line (the texts of `docs/plans/counter-asic-3-public-text-2026-10-07.md`) | tested by the team (every card, the verifier, the two attack-pass censuses, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measured | `docs/analysis/chip-model-v3.md` 5 and 6; `docs/analysis/latency-shadow-2026-10-06.md`; `docs/plans/counter-asic-3-status.md`; `docs/analysis/attack-pass/f8-uniform.md`, `f4-weakday.md`; `docs/design/class-v5-stored-state.md`; the H100 and market-cap rows of 7 October; `docs/plans/funding.md` (the three lots) | The chip model re-run on the measured class v3 and v4 rates, watts and verifier times; the hot-set census of 1,024 programs and the weak-day census of 2^24 days on the attack-pass branch; the H100 SXM bench row | 136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 5.1x to 9.2x; 2.1x, 3.9x, 2.8x; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 6 and 7 October 2026 | none yet; the three cryptanalysis lots are the next test | +| 17 | The chip resistance claim: at launch the strongest chip in the public model reaches 2.1x (k = 1) to 3.9x (k about 0.33) per joule against an RTX 5090 under class v4, live from genesis on the testnet and the mainnet; the ladder's second rung brings it to about 2.8x; class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item; the hot-set cache is bounded at 1.067x at the ceiling and the weak-day FPGA at 12 percent on 12 days a century, both routed to the next class; datacentre silicon does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years; without class v4 the same chip would reach 5x to 9x (the class v3 baseline, the devnet's starting state, never the launch state) | the home page's chip line, the litepaper's chip section (/litepaper#chip-model), the miner page's line | tested by the team (every card, the verifier, the two attack-pass bounds, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measured | `docs/analysis/chip-model-v3.md` 5 and 6; `docs/analysis/latency-shadow-2026-10-06.md`; `docs/plans/counter-asic-3-status.md`; `docs/analysis/attack-pass/f8-uniform.md`, `f4-weakday.md`, `docs/analysis/ca3-v4-uniform.md`; `docs/design/class-v5-stored-state.md`; the H100 and market-cap rows of 7 October; `docs/plans/funding.md` (the three lots) | the chip model's arithmetic in its file; the card rows by the benchmark package; the attack-pass harnesses `tools/attack/f8-uniform` and the F4 census; the verifier by `igneum-pow bench` | 136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 2.1x, 3.9x, 2.8x at launch; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 5.1x to 9.2x the class v3 baseline; 6 and 7 October 2026, the M5 Max, PC 2's RTX 5090, PC 1's RX 9070 XT and RTX 4070, a rented H100 SXM, igneum-build-1 | none yet; the three cryptanalysis lots are the next test | | 18 | The chip resistance measurements: the program is latency-bound (random reads), not bandwidth-bound, on every card we own, and sits beyond a card's on-chip cache | Litepaper Mining ("waits on memory latency, not on maths or bandwidth"), vs RandomX; the numbers page | tested by the team | readwidth e752fc7 (`docs/plans/read-width.md`), ca2-era 78c0ee4, ca2-cache 2de19e5 (`docs/plans/hot-table.md`) | The dependent-read probes at 32 to 1,024 MiB and the hash rate per class on the three cards; the latency-bound share = rate over the probe ceiling per load | Latency-bound share at the 1 GiB dataset: RTX 5090 0.96 (v2) and 1.01 (v3), RX 9070 XT 0.87 and 0.95, M5 Max 1.01 and 1.06; wider reads do not close the AMD gap (the 9070 XT does 2.4 G dependent reads per second at every width; the 5090 goes bandwidth-bound at 64 B, share 0.58); a 32 to 96 MiB hot table is not kept resident by any card while the dataset streams (g 0.80 to 0.87 in the added form). 5 October 2026 | none yet | | 19 | The lottery hash is sound as a hash: uniform output, deterministic, no out-of-bounds read, fuzzed; class v3 bit-exact on the three vendors | Litepaper vs RandomX ("Every number above is measured and logged"), the numbers page | tested by the team | ca2-mixer 1ab8b21 (`tests/mixer.rs`, `tests/scratch.rs`), ca2-era 78c0ee4, ca2-soundness a465881 (`docs/analysis/scratch-soundness.md`), `igneum-pow/tests/packs.rs` | The crate suite (53 + 4 + 19 + 7), the Metal fuzz, edge, stats and determinism runs on the v3 construction, the pack vectors and 2^24 fingerprints on Metal, Apple OpenCL, the RTX 5090 and the RX 9070 XT, the 1,024-hash CPU re-check per card | Class v3 (mixer x8 + era): 200-program fuzz 200 of 200 on Metal, every tenth on Apple OpenCL; the pinned v3 packs 3/3 + 3/3 and 96 of 96 lanes on Metal and Apple OpenCL; the six era packs' fingerprints equal on the three vendors (PC 1 job run-ca2-era-pc1-20261005, 5 October 2026); the v2 exports byte-identical on the v3 crate; the final-class PC rows and the G2 re-check: job run-ca2-era-pc1b-20261005 (pending at the time of writing) | none yet | | 20 | No premine, no pre-sale, no allocation: every coin is minted by the schedule and every coin goes to the block producer (80%) and the proving pool (20%) | Homepage stats and Economics tiles; litepaper Supply, Economics | implemented | repo `6ac80a3`; fork "igneum-node devnet v0"; `consensus/core/src/igneum.rs`, `coinbase.rs` | `cargo test -p kaspa-consensus-core igneum` (8 pass: subsidy table, ramp, split, cap) and `cargo test -p kaspa-consensus coinbase` (8 pass); `igneum-miner inspect 40`; bench-log "igneum-node devnet v0" | Coinbases on the devnet: 80/20 exact on 39 of 39 single-payee blocks, the 20% to the `igneum-proving-pool-v0` output; the per-second schedule sums to under the 4,000,000,000 cap by less than 100 coins; 3,168,808,781 units per DAA second in years 0 to 2, halving at 63,115,200 DAA s. 3 October 2026, Apple M5 Max. The devnet genesis carries no allocation; the mainnet genesis does not exist yet, so the claim is about the code and the stated rule, not a launch that has happened | none yet | diff --git a/docs/fud-ledger.md b/docs/fud-ledger.md index dfff4487f..d23f00b1c 100644 --- a/docs/fud-ledger.md +++ b/docs/fud-ledger.md @@ -2435,6 +2435,35 @@ Same rule as the counts above. 167 entries. The bucket "Decided or closed by rule" counts each entry once: M8, M11 and P16 move there from Answered, so Answered is 28 less those three plus M16 and E17, as the table states; the sum of the rows is 167 with M8, M11, P16 and F3, F17 counted in Decided only. +## Round 5 entry (7 October 2026, afternoon): the class v4 load-source amendment + +### AP-F8-1. A load whose source was last written by `or`, `mul` or `mulhi` makes a cross-hash hot set +"The item histogram of class v4 over 2^26 nonces is not uniform: the top 0.1 percent of items take 0.520 percent of reads against 0.115 for a uniform control (4.05x), one item takes 78,479 reads (153x the mean), and site 15 feeds 6.37 percent of its reads into that top 0.1 percent in every iteration." (attack-pass row F8, `docs/analysis/attack-pass/f8-uniform.md`, 7 October 2026) + +Status: Fixed on a branch, pending the 0.3.20 node ship (7 October 2026, afternoon; the project lead's word 15:2x UK: option A, "do this but limit the testing, get it pushed"): `ca3-v4-amend` a0aaca92 (the generator and the packs) and 1748fd1d (the PC 2 playbook), on origin/master 5c08c6e0 plus `ca3-v4-uniform` 095f84a7 (the analysis). The node side rides `release-0.3.20-node`; the stamp is agreed with the node lane (a283f5f0d364ceef0). Was: a finding (7 October 2026, morning). + +Answer: Correct as a fault, wrong as a null. The window layer (spec 01 1.13.1 as proposed, `docs/plans/era-layout.md` 1.4) moves the uniform null from 0.115 to 0.160 percent at the top 0.1 percent (1.39x, not 4.05x) and explains every per-site row of F8's attribution except site 15. Site 15's source r6 was last written by `or r6, r4` (instruction 61, the load at 63), a non-injective op whose output bits are 1 with probability 3/4, so the all-ones source recurs with probability (3/4)^32 per read; the era map sends it to item 0xca5b92, F8's hottest item exactly, and F8's next seven items are exactly the seven one-zero-bit sources whose zero survives the window mask. The popcount model at the measured bias (p = 0.7585) predicts 77,348 all-ones reads against 78,479, and the program's top-0.1-percent share at 0.58 against 0.52. The acceptance rule's part (a) takes any write as a fresh source and part (c) counts saturation on final register values only, so the class of fault passes it: of 1,024 chain-shaped class v4 programs 96.6 percent carry a load whose source's last writer is `or`, `mul` or `mulhi`, 48.5 percent an `or`-sourced one (0.30 percent of all reads per site), 4.9 percent an `or`-of-`or` chain (p3's class: 72 percent of that site's reads, 4.6 percent of all reads, on 0.1 percent of items). The ceiling under rule (c)'s 120-of-128 floor is one site repeating its item in all 8 iterations, 6.25 percent of reads, a chip edge of at most 1.067x in 64 bytes of SRAM; the public claim's 2x margin stands, and the public line says "bounded", not "uniform" (`docs/analysis/ca3-v4-uniform.md` sections 1 to 4). + +The amendment (a0aaca92): in class v4's chain draw a load's source is drawn only from registers whose last writer injects (add, sub, xor, mad, shfl, load) or is a rotate (rotl, rotr), never one last written by `or`, `mul` or `mulhi` (`generator.rs` candidate_from_words_class, keyed on the era-composed V4_CLASS; no attempts lost, rule (a) unchanged; v2, v3 and the generator-2 ladder packs byte-identical). Split protection (the node lane's form): generator stays 4 and a generator-4 program id appends `"sub/" || PROGRAM_SUBVERSION_V4 (= 1) as little-endian u16` inside `program_id()`, so a binary from before the rule and one after it never share a program id for one seed and the node's id check catches a split; packs carry `IGNEUM_PROGRAM_SUBVERSION 1` and `"sub_version": 1`, and packcheck refuses a generator-4 pack whose sub-version is absent or other. The node side (release-0.3.20-node, built to a0aaca92): kaspa-pow's test pins 1a4230699a6b9c60 must-equal and c120d7963abdcd96 must-differ through `generator::program_id` with the suffix, and the amended class signals object byte 5 in the header (CLASS_SIGNAL_V4 = 5; the tally counts byte 5 and above), so a block of the 6 October stream (byte 4) never counts towards the flip and a byte-4 node forks alone at it; object 6 is class v5's. The seven gate packs re-exported (devnet epoch 0 and eras 0 to 5): id 1a4230699a6b9c60 (was c120d7963abdcd96, pinned as the must-differ vector in `tests/recheck.rs`), fingerprints Metal = Apple OpenCL 867dbc45cfb36b4d, 2146ecacc8c75a8e, fe52602393f6d3d4, 3b206471a13912b4, c3f03c4a5d7333aa, f1dfd7209f15bb97, 8c194da64fadf31d; the v3 control 73bcbfe8ccf988f1 / 90f794dd556f7a3b untouched; the zip of the eight packs sha256 889ec99976d2728b4b5035bfa476032e5b6a13b928968fc45236d5f25084aa39. + +Evidence: `docs/analysis/ca3-v4-uniform.md` (the model, the census `tools/ca3-v4-uniform`, the chip pricing); F8's logs under `/srv/builds/igneum-wt-attack/target-attack-f8/log/`; the tests limited by the project lead's word to what prevents a split and proves the fix: the vectors (the seven packs' ids and fingerprints above), the `igneum-pow` crate suite on igneum-build-1 at 8c728ca3 (`tools/build-remote.sh -- test --release`, rc 0, 77 s, 12:1x UTC: 61 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch = 100 passed, 0 failed, the pinned v2 and v3 packs byte-identical and the v4 must-equal and must-differ ids as pinned), the pairing of the fork's kaspa-pow with this igneum-pow on igneum-build-1 (PAIRING-LINE), and one G1 run on the RTX 5090 (PC 2 job run-ca3-v4-amend-g1-pc2-20261007, 09:41:07 to 09:41:28Z, exit 0, the installed 0.3.17 worker sha256 14b6637e..., NVRTC, beside the app's miner, the prover on, the lock held 09:40:22 to 09:41:51Z): self-test PASS on all eight packs and every 2^24 fingerprint equal to the Mac's (the seven above and the control 90f794dd556f7a3b), NVRTC 188 to 332 ms per pack, the 1 GiB build 38 to 49 ms. + +Sub-version 2 (7 October 2026, afternoon; main's ruling B2: 0.3.20 ships sub-version 1 as object byte 5 untouched, and sub-version 2 is object byte 7, built on this branch at 07a809a7): the attack-pass lane's F8 census on sub-version 1 (64 chain-shaped seeds, the window-model control, 2^24 nonces) read 53 of 64 PASS and 11 FAIL at 1.2x, worst p31 at 29.27x, and named three residual classes, all a constant delivered through a writer the one-writer rule admits: saturation or zero preserved through rotl, rotr or a load after a saturated load (p6, p23, p26, p31, p34), zero from mulhi (p45), and the iteration boundary (an `or` at 63 feeding a load at 1, p11); p4, p10 and p25 at 1.28x to 1.57x are the window model's own tail. (An F9 hot-set census read on the same day was withdrawn by its author: its harness drew outside the rule and its metric counted the era's designed windows as hot; F8 is the one re-gate instrument.) Sub-version 2 closes the three: the draw takes a load's source only from a register fresh by dataflow (fresh at the start; a load keeps freshness only from a fresh source; add, sub, xor, mad, shfl from either operand; rotl, rotr from their operand; or, mul, mulhi never), keyed on the class v4 shape on every draw path; rule (a') of the acceptance rule runs that freshness to its fixpoint over the loop (base then shadow block) and rejects a candidate whose load reads an unfresh register in the steady state; rule (c') counts, per load site, the source values equal to 0 or all-ones over the 64 units' 16,384 evaluations and rejects at 164 or more. The devnet epoch-0 seed's attempt 0 is rejected and attempt 1 accepted: id a788661687db4bb3 (c120d7963abdcd96 and 1a4230699a6b9c60 the must-differ pair), fingerprints Metal = Apple OpenCL e370fb2080b7dbb1, b7237555d31fc3cf, b6b167fa15dfe2c9, 28bdf65eff33f2c4, e26d38c46f3f1b16, dd8fdf6ff4f59eed, 8bf40f5cb858d835 (13:01Z), the packs zip sha256 69c36772cd79e44e2ddd589466d9c64a94a13c9e970e9f27bd76feabb9b4581b; the seven 256-block ladder packs of `packs-ca3-shadow` re-exported under the rule (their measured rates stand as the old stream's). Nothing is proposed for sub-version 2 until the attack-pass lane's two gates on 07a809a7 are green (the 64-seed census under 1.2x on every seed, the hot-set census on the chain path); its suite, pairing (after the node lane's re-pin to byte 7) and G1 lines are added below as they land. The static census (`tools/ca3-v4-uniform`, box 2, 13:12Z) over 1,024 chain-shaped seeds plus F8's p1 to p3 at sub-version 2: 0 lossy-sourced load sites of 16,432 (14,329 injecting, 2,103 bijective), 0 programs with an `or`-, `mul`- or `mulhi`-sourced load, the no-era draw path giving the devnet epoch-0 seed the pack's own id a788661687db4bb3 (one stream on every path); the cost of rules (a') and (c'): 1.99 attempts per seed on average against 0.05 before (p2's seed took five), which is 2 ms of generation per rejected attempt on one core, nothing a miner or node notices. The crate suite at 526fa757 on box 2 (`tools/build-remote.sh --box 2 -- test --release`, route line "box 2 for class suite, priority normal", rc 0, 66 s, 13:15Z): 61 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch = 100 passed, 0 failed, the pinned v2 and v3 packs byte-identical and the three v4 ids as pinned (a788661687db4bb3 equal; c120d7963abdcd96 and 1a4230699a6b9c60 differ). + +AP-F8-2 (7 October 2026, 13:xx UTC, the attack-pass lane on sub-version 2 at 07a809a7): chain-shaped seed igneum-f9/331672 exhausted the 32 attempts under rule (a') and the generator panicked, which on the chain is an epoch no node can draw, a liveness halt; the measured (a') plus (c') rejection rate of about two thirds per attempt puts the exhaustion probability at about (2/3)^32, 2e-6 per epoch seed (sub-version 1 exhausted 0 of 10^6). Main's ruling: the draw is total and no consensus path panics. Fixed at 8bdcbdd8 with the stream unchanged (re-export diff 0; the id a788661687db4bb3 and the fingerprints stand, so sub-version 2 keeps its number and the running censuses): the attempt cap of the class v4 shape is 256 (`MAX_ATTEMPTS_V4`; v2 and v3 keep 32), which puts the exhaustion probability under 1e-45 at a worst-case draw of about half a second on one core; after the cap the seed takes the last-resort program, deterministic and accepted as drawn, the candidate at attempt 256 with every `or`, `mul` and `mulhi` of the base program and the shadow block rewritten to `xor`, so every register stays fresh from the init words on and rule (a') holds by construction. The spec text for class v4 therefore reads: attempts 0 to 255 under rules (a), (b), (a'), (c) and (c'), then the last-resort program; the probability of reaching it is (r)^256 for a per-attempt rejection rate r, under 1e-45 at the measured r of about 2/3. Tests: `class_v4_draw_is_total_with_the_last_resort` (the last resort on real (a')-rejected candidates, every load fresh after it, no lossy op left, the chain path over 64 seeds without a panic, the cap per class). The 10^6-seed exhaustion count at the fixed commit is the attack-pass lane's measurement (its re-gate string is 8bdcbdd8); the 4,096-seed census with the attempt histogram (box 2, 13:33Z, `tools/ca3-v4-uniform --n 4096 --f8` at 8bdcbdd8): 4,099 chain-shaped programs, 0 lossy-sourced load sites of 65,584 (57,304 injecting, 8,280 bijective), 0 exhaustions, the accepted attempt geometric with ratio 0.674 (1,338 at attempt 0, 921, 620, 408, 274, 189, 127, 75, 55, 40, 16, 11, 12, 6, 5, then one each at 16 and 17; mean 1.98), so the measured per-attempt rejection rate is r = 0.674 and the exhaustion probability is 0.674^32 = 3e-6 under the old cap and 0.674^256 = 1e-44 under the class v4 cap. The crate suite at 8bdcbdd8 on box 2 (route line "box 2 for class suite, priority normal", rc 0, 80 s, 13:31Z): 62 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch = 101 passed, 0 failed, the total-draw test included. G1 for sub-version 2 on a fleet RTX 5090 (main's order; the fleet lane, p1-5090, driver 580.173.02, sm_120, the box's Linux NVRTC worker `igneum-worker-cuda 1.0 (4 October 2026)` sha256 97e036e2..., which carries no program and compiles each pack's own text; the kit zip sha256 asserted before the put; 13:43:22 to 13:44:07Z): `--bench --batches 5 --batch-log2 24 --block-warps 1` on all eight packs, self-test PASS on every pack with the cache FNV 448274a57f508cbc and every 2^24 fingerprint equal to the Mac's (the control 90f794dd556f7a3b and the seven above); the rates (120 to 142 MH/s beside the box's own miner loop) are a reference only. The Windows G1 on PC 2 (job run-ca3-v4-sub2-g1-pc2-20261007b, published 13:46:33Z under the PC 2 lock, ran 13:46:36 to 13:46:50Z, exit 0; app 0.3.19, the installed worker sha256 14b6637e..., the RTX 5090 switched off by the runner's --cards-off before the script and restored on exit, igneum-worker-cuda running 0 before and after, the prover untouched): self-test PASS on all eight packs with the cache FNV 448274a57f508cbc, every 2^24 fingerprint equal to the Mac's and the fleet's (the control 90f794dd556f7a3b and the seven above), NVRTC 197 to 317 ms per pack, the 1 GiB build 22 to 34 ms, 115 to 130 MH/s with the card alone (a reference, 5 batches). + +AP-F8-2, the exhaustion half, FIXED-AND-PASSED at 8bdcbdd8 on the attack-pass lane's 10^6 chain-shaped seeds through the chain path (14:03:53Z): 0 exhausted, 0 panics, 4 seeds past attempt 31 (three at 32, one at 35; 4e-6, inside (2/3)^32), max attempt 35, no seed at the last resort; r = 0.67, mean 2.0 attempts per seed. + +Sub-version 2's hot-set half did not read green: F8's 64-seed gate at 39 of 64 had 8 over 1.2x of the window model (p23 4.82x, p19 3.32x, p15 2.57x, p18 2.50x, p34 1.25x; p4, p8, p10 unattributed at 1.22x to 1.50x). AP-F8-3 (7 October 2026, 14:0x UTC, the hash lane): the cause of the whole residual is that `accept.rs` never executed the latency-shadow block. Its interpreter (`run_unit`) was written for class v2 and v3 and ran the 64 base instructions per iteration and nothing after instruction 63, while the hash (`verify.rs`, the kernels) runs the shadow 27 times at the end of every iteration; so every dynamic acceptance test (c), (c') judged a class v4 program the chain never hashes. Main's word (14:1x UTC): 0.3.21 ships object byte 5 (sub-version 1); sub-version 3 is 0.3.22's and starts with this fix. Sub-version 3, first commit: `run_unit` executes the shadow block after instruction 63 of every iteration, `reps` times with the iteration's sel, as the hash does; the test `acceptance_executes_the_shadow_block_as_the_verifier_does` pins the acceptance's execution to `verify.rs` on the devnet epoch-0 program and the six test eras (the output bit counts over the 64 units equal, and different with the shadow stripped), so the two paths cannot diverge silently again; `PROGRAM_SUBVERSION_V4` = 3 (a new acceptance verdict is a new stream); the devnet epoch-0 seed still accepts at attempt 1, so its program and fingerprint are sub-version 2's (e370fb2080b7dbb1) under the new id a785001687d8688a (the must-differ set: c120d7963abdcd96, 1a4230699a6b9c60, a788661687db4bb3); the packs zip sha256 4f2445c50c58d76a5544023492d8b858d0b07c5e372d31f9c90c4ce51f829154. The class behind p23, localised from its program and reproduced in the acceptance's own execution: site 7 (instruction 38) reads r6 after 25 `mulhi r6`, 31 `or r6 |= r4`, 35 `xor r6 ^= r4`, which is `r6 & ~r4`, an AND mask the lineage rule counted as fresh because the xor's operand is the or's; over 2^20 evaluations on the closed-form words site 7 reads 874,953 distinct word indices against about 1,046,500 for every other site (0.84 of uniform; 2.2 s on one core), over 2^24 8,979,203 against about 16,260,000 (0.55; 35 s). The second sub-version 3 commit (held, prepared in the worktree) is a per-site distinct-index ratio against the uniform expectation of the site's window, its threshold set from the clean seeds' spread and its sample size from the cost line above; the dynamic bounds as first specified (a most-repeated-value bound at 16,384 and a distinct floor at 2^19.5 over 2^20) do not reach p23 and are not committed. The crate suite at ddacfbd3 on box 2 (route "box 2 for class suite, priority normal", rc 0, 41 s, 14:20Z): 63 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch = 102 passed, 0 failed, the agreement test included. F8's final 64-seed table on sub-version 2 (the attack-pass lane, 14:2x UTC): 9 over 1.2x (p23 4.82x, p19 3.32x, p15 2.57x, p18 2.50x, p56 2.01x, p10 1.50x, p8 1.38x, p34 1.25x, p4 1.22x), the 55 clean seeds at 0.9915x to 1.144x; the 256-item bucket entropy over the window separates the strong four only (0.637 to 0.974 against a clean minimum of 0.9865 over 848 site rows), so the threshold of the second commit's distinct-index ratio comes from a run of that ratio on the 55 clean seeds at 2^20. The static census at ddacfbd3 (box 2, 14:22Z, 4,096 chain-shaped seeds plus F8's p1 to p3): 4,099 programs, 0 lossy-sourced load sites of 65,584, 0 exhaustions, the accepted attempt geometric as before (1,328 at attempt 0, 917, 622, 409, 284, ... one each at 16 and 17; mean 1.998, max 17), so the shadow-executed verdicts move a handful of seeds' attempts and nothing else; the devnet epoch-0 seed at attempt 1, id a785001687d8688a. + +Sub-version 3, second commit (7 October 2026, 14:44 UTC, the hash lane; the sub-version number stays 3 and the stream is unchanged: re-export diff 0 on the eight packs, the id a785001687d8688a, the seven fingerprints and the zip sha256 stand), two rules. The shared-operand rule, in the draw's source rule and in the acceptance's (a') pass: or-then-xor or or-then-sub on one operand is `d & ~s`, xor-then-or is `d | s`, so the second write leaves the register lossy although either op alone injects; any write to either register clears the relation. On p23 the chain's attempt 1 (id d65122675f16a1c7) now draws site 7 (instruction 38) from r5 and passes; the devnet epoch-0 seed still draws attempt 1, the same program. Rule (c''), the distinct-index ratio: over 4,096 units (2^20 evaluations per site, the closed-form words, the shadow executed) every load site's count of distinct word indices against the uniform expectation on its window (N - N^2 / 2W, the window 2^28 >> min(win, 2)) must reach 0.98 (`MIN_DISTINCT_RATIO_V4`), the last test of the chosen candidate; a candidate under it is rejected and the next attempt drawn under the 256 cap and the last resort. The floor from the 64-seed run at 2^20 (box 2): the 55 clean seeds' minimum over their site rows 0.9960 (p1 0.9990, median 1.0000); the strong five p23 0.8361, p18 0.9274, p19 0.9335, p15 0.9432, p56 0.9654; 0.98 sits 0.015 from each side. The chain's own candidates it refuses (the test `class_v4_distinct_ratio_rejects_the_low_entropy_band`, box 2, 2.1 to 2.2 s each): p15 attempt 3 id 52638ea2e8b0fd68 site 2 at 0.943, p18 attempt 2 id 9a37e9489d8ba698 site 6 at 0.927, p19 attempt 0 id 79d7441de0689223 site 15 at 0.933, p56 attempt 2 id 486a8ad2701ec3b5 site 2 at 0.965; p23's attempt 1 with site 7 put back to r6 is refused by (a') (`UnfreshLoadSource`) and, run anyway, by the ratio at 0.836 (874,928 distinct of 1,048,576). Main's rule for a staged 2^24 pass (taken only if 2^24 separates the weak four from the clean seeds by at least the 2^20 gap) was decided by the 2^24 lines (box 2, 35 s per seed on one core): the weak four p34 0.9181, p4 0.9614, p8 0.9630, p10 0.9612; the clean seeds p44 0.9612, p52 0.9613, p3 0.9971, p2 and p5 1.0004; p23's attempt 1 1.0004. Two clean seeds sit on the weak four's value, so a 2^24 floor that reaches the weak four rejects clean seeds, and the 0.961 that recurs on both sides is a band the ratio reads at 2^24 that F8's hot-set gate did not flag on p44 or p52. Committed: the ratio at 0.98 over 2^20 alone (`ACCEPT_UNITS_DISTINCT_V4` = 4096), no 2^24 stage. Open tail: p4, p8, p10 and p34 (1.22x to 1.50x on F8's gate) read 0.9927 to 0.9963 at 2^20, inside the clean spread; unattributed and chased. The (B) most-repeated-value bound stays in the file unwired (`MAX_SOURCE_REPEAT_V4`, `most_repeated`). Cost: the chosen candidate's acceptance gains one 2^20 pass, 2.1 to 2.2 s on one box-2 core, once per epoch draw per node. + +The second sub-version 3 commit is 017e70376489251e18564c0abce7e466e606c8b3 (pushed 15:10 UTC's preceding hour, pre-push gate GREEN, CI run 37639406567 success). The crate suite at 017e7037 on box 2 (rc 0, 184 s): 64 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch = 103 passed, 0 failed, 3 diagnostics ignored; the lib tests took 140.8 s against ddacfbd3's 41 s for the whole suite, because every class v4 draw in the tests now pays the 2^20 pass on its chosen candidate (2.2 s each); that is CI time, not node time. The static census at 017e7037 (box 2, 15:1x UTC, 4,096 chain-shaped seeds plus F8's p1 to p3, the draws in parallel over the box's cores since the ratio pass makes the serial run a four-hour job): 4,099 programs, 0 lossy-sourced load sites of 65,584 (57,322 inject, 8,262 bijective), 0 exhaustions; the accepted attempt 1,297 at attempt 0, 899, 609, 416, 298, 197, 125, 92, 54, 46, 21, 14, 13, 9, 6, 0, 2, 1 (mean 2.086, max 17) against ddacfbd3's 1,328, 917, 622, 409, 284, ... (mean 1.998, max 17): the ratio refuses about 4 percent of the candidates that pass every other test, one more attempt on about one seed in twelve; the devnet epoch-0 seed at attempt 1, id a785001687d8688a; F8's p2 at attempt 5, p3 at attempt 1. The attack-pass lane's class check of ddacfbd3's shadow-executed verdicts against 8bdcbdd8 (598,678 chain-shaped seeds): 11,990 (2.0 percent) accept at a different attempt, 0 exhausted, max attempt 32; on 017e7037 the pairing holds (the devnet epoch-0 program draws as a785001687d8688a) and its 64-seed gate at 2^24 and 10^6 exhaustion count were running at 15:1x UTC (finish about 16:05 UTC). + +F8's 64-seed gate on 017e7037 (the attack-pass lane, box 2, last seed 16:00:20 UTC): 60 of 64 under 1.2x; the four over are the named tail and nothing else (p10 1.5036x, p8 1.3776x, p34 1.2505x, p4 1.2167x; hottest items 355 to 541 reads of 2^31, unattributed, inside the ratio's clean spread); p23, p19, p15, p18 and p56 under the line; the clean spread 0.9915x to 1.144x. Exhaustion on 017e7037: 0 in the attack-pass lane's 20,532 chain-shaped seeds (max attempt 29) plus this lane's 4,099 (max 17); the 10^6 count continues as a strengthening line. Cost line for the node: the chain's epoch draw now pays the 2^20 ratio pass on every candidate that reaches it (the accepted one, and the about 4 percent that fail there), 2.2 s per pass on one box-2 core, so about 2.3 s per epoch draw on that core and, by the attack-pass lane's reading, about 4 to 5 s per epoch per node on slower cores; the earlier rejections cost milliseconds. From the attack-pass lane sub-version 3 at 017e7037 reads green on both gates with the named tail; its close line went to the plan, main and the Counter ASIC lane. This row stays open on the tail (p4, p8, p10, p34) until it is attributed or ruled accepted. + +Owed (recorded, not run, by the project lead's word): G2 (the CPU verifier on 1,024 hashes per card) on the amended stream; G3 (the Metal fuzz, edge, stats and determinism runs) on the amended stream; the hash-rate ladder re-measure on the M5 Max and the RTX 5090 (the amendment changes the base program's source draws, not the op mix or the load count, so the latency-bound rows of `docs/analysis/latency-shadow-2026-10-06.md` are expected to hold within their spread; unmeasured); AMD (the RX 9070 XT, PC 1); the 2019-class verifier core (O-1.14); F8's phase E (the 64-seed dynamic census) on the amended stream, which is the attack-pass lane's and the test of the per-op table. The row reads FIXED-AND-PASSED only after phase E passes against the amended class. + ## Genesis forward-compatibility entries (7 October 2026, mission item 8, branch `genesis-forward`) The three genesis fields of `docs/analysis/mission/mission.md` section 2.8, built on the node fork branch `genesis-forward` (from release-0.3.19-node dc141409) and the repo branch `genesis-forward`; the design and the gates in `docs/design/genesis-forward.md`. Every switch is never on the devnet (its digest c562d70e... does not move); the testnet genesis sets all three (the testnet lane re-pins and re-digests). diff --git a/docs/plans/counter-asic-3-public-text-2026-10-07.md b/docs/plans/counter-asic-3-public-text-2026-10-07.md index c72a29649..ba75180be 100644 --- a/docs/plans/counter-asic-3-public-text-2026-10-07.md +++ b/docs/plans/counter-asic-3-public-text-2026-10-07.md @@ -1,33 +1,33 @@ -# The chip claim, public text (7 October 2026, 14:3x UK, on the project lead's "this needs updating with all of our updates"; served since 11:03 UK on master 9162c847 with main's two cuts: no mention of the disclosure prize until the publish word, and row 17 in evidence.md's eight-column shape) +# The chip claim, public text (7 October 2026; REWRITTEN LAUNCH-FIRST 18:3x UK on the project lead's "I thought we were making it 2.1 from launch?": the testnet and mainnet objects set program_class_v4_activation_daa to 0, so class v4 is live from genesis and the launch number is 2.1x to 3.9x on day one; the 5x to 9x is the class v3 baseline the work started from, stated only as that; the devnet's own activation height is a devnet fact only. Served since 11:03 UK on master 9162c847 with main's two cuts: no mention of the disclosure prize until the publish word, and row 17 in evidence.md's eight-column shape) Three texts and one ledger row, written by the Counter ASIC lane, which owns the chip model. Every number carries its label: measured (a card or a chain we ran, with the date), modelled (arithmetic on cited parts), claimed (a vendor's figure, never measured by us), designed (a rule in a class, not yet measured). Sources: `docs/analysis/chip-model-v3.md` sections 5 and 6, `docs/analysis/latency-shadow-2026-10-06.md`, `docs/plans/counter-asic-3-status.md`, `docs/analysis/attack-pass/f8-uniform.md` and `f4-weakday.md` (branch attack-pass), `docs/design/class-v5-stored-state.md`, the datacentre and market-cap rows of 7 October (lanes 3 and the fleet), the cryptanalysis plan in `docs/plans/funding.md`. ## 1. The home page's chip line (replaces the hero sentence served since 6 October 16:21Z) -Built for graphics cards. In our public model the strongest chip reaches 5x to 9x per joule against an RTX 5090 today; class v4, now on the vote, brings that to 2.1x to 3.9x, and class v5 makes the dataset the chain's own state, so a chip that stores it or recomputes it is wrong on every item. The model and every measurement are public. +Built for graphics cards. At launch the strongest chip in our public model reaches 2.1x to 3.9x per joule against an RTX 5090, under class v4 from the first block. Class v5 then makes the dataset the chain's own state, so a chip that stores it or recomputes it is wrong on every item. Without class v4 the same chip would reach 5x to 9x. The model and every measurement are public. ## 2. The litepaper's chip section (replaces the paragraph that begins "The chip model: 5x to 9x per joule") -The chip model. We price the strongest chip we can design against an RTX 5090 and publish the arithmetic. The honest card: an RTX 5090 mines class v3 at 136 MH/s on 350 W in the bench and 290 W in the app (measured, 6 October 2026); an Apple M5 Max at 27 MH/s on 21 W (measured, 6 October 2026); an H100 SXM at 249 MH/s, 98 percent of its random-read ceiling like the 5090, 1.78x the 5090's hash at 1.15x the tuned 5090's hash per watt and a third of the hash per rented dollar (measured, 7 October 2026), so datacentre silicon does not change the chip question. The CPU verifier takes 2.33 ms per warp of 32 hashes on one M5 Max core under class v4 (measured, 6 October 2026), against a gate of 10 ms. +The chip model. We price the strongest chip we can design against an RTX 5090 and publish the arithmetic. Class v4 is live from the first block on the testnet and the mainnet (the ladder's rung 0 at genesis), so the launch number is the class v4 row. The honest card: an RTX 5090 mines class v3 at 136 MH/s on 350 W in the bench and 290 W in the app (measured, 6 October 2026); an Apple M5 Max at 27 MH/s on 21 W (measured, 6 October 2026); an H100 SXM at 249 MH/s, 98 percent of its random-read ceiling like the 5090, 1.78x the 5090's hash at 1.15x the tuned 5090's hash per watt and a third of the hash per rented dollar (measured, 7 October 2026), so datacentre silicon does not change the chip question. The CPU verifier takes 2.33 ms per warp of 32 hashes on one M5 Max core under class v4 (measured, 6 October 2026), against a gate of 10 ms. | The chip and the class | Edge over an RTX 5090 per joule | Label and date | |---|---|---| -| A memory-controller chip that stores the whole dataset (the Ethash class), class v3 | 5x to 9x (5.1x on GDDR7, 9.2x on eight HBM3 stacks; the Ethash chips of this class reached 2.1x to 4.8x) | modelled, 6 October 2026; the precedent measured by others, 2020 to 2022 | -| The same chip under class v4 (about 100,000 integer ops per hash in the latency shadow, so the chip carries a GPU-class datapath beside its memory) | 2.1x with a core as costly per op as the GPU's (k = 1); 3.9x with the core Bitmain claimed for its Antminer X9 (k about 0.33), a product withdrawn before any unit shipped | modelled on measured card watts, 6 October 2026; the X9 figure claimed, never measured | -| The same chip at the ladder's second rung (about 200,000 ops per hash) | about 2.8x | modelled, 7 October 2026 | +| At launch: a memory-controller chip that stores the whole dataset, under class v4 (about 100,000 integer ops per hash in the latency shadow, so the chip carries a GPU-class datapath beside its memory) | 2.1x with a core as costly per op as the GPU's (k = 1); 3.9x with the core Bitmain claimed for its Antminer X9 (k about 0.33), a product withdrawn before any unit shipped | modelled on measured card watts, 6 October 2026; the X9 figure claimed, never measured | +| The same chip at the ladder's second rung (about 200,000 ops per hash), reached by miner signal | about 2.8x | modelled, 7 October 2026 | | Any chip under class v5, where the dataset is the chain's own state | a stateless or stale chip is wrong on every item, so the stored-dataset chip and the recompute chip are removed as categories; the verifier pays 0.2 ms more per warp | designed, 7 October 2026 | | A chip caching the hottest 0.1 percent of items (about 1 MB of SRAM) | bounded at 1.067x at the ceiling, 1.005x on about half the hours and 1.048x on 5 percent | measured census of 1,024 programs, 7 October 2026; the source rule in the next class | | A per-day FPGA that recomputes the dataset with cheap multipliers on a weak day | at most 12 percent more hash rate on 12 days a century, nothing on the other days and nothing for any chip | measured census of 2^24 days, 7 October 2026; the rule in the next class | | When a stored-dataset chip pays for itself | at about USD 100 M of market cap in the first two years, not before | modelled, 7 October 2026 | +| The baseline the work started from: the same chip under class v3, without the shadow (the Ethash class) | 5x to 9x (5.1x on GDDR7, 9.2x on eight HBM3 stacks; the Ethash chips of this class reached 2.1x to 4.8x) | modelled, 6 October 2026; the precedent measured by others, 2020 to 2022; never the launch state | -What a miner sees from this. Class v4 costs a 5090 about 80 W more for 0.2 percent of rate, an M5 Max 16 W more for 1.5 percent, an RX 9070 XT and an RTX 4070 nothing (all measured, 6 October 2026). The ladder that sets how much work rides in the shadow starts at rung 0 at the testnet genesis and climbs by miner signal; its third rung is inadmissible today because a server core verifies it in 10.85 ms, over the gate (measured, 7 October 2026). The next test of the model is not ours: the cryptanalysis plan buys three external lots against the mixer, the chained cache and the acceptance rule. +What a miner sees from this. Class v4 costs a 5090 about 80 W more for 0.2 percent of rate, an M5 Max 16 W more for 1.5 percent, an RX 9070 XT and an RTX 4070 nothing (all measured, 6 October 2026). The ladder that sets how much work rides in the shadow starts at rung 0 at genesis and climbs by miner signal; its third rung is inadmissible today because a server core verifies it in 10.85 ms, over the gate (measured, 7 October 2026). On the devnet, which started on class v3, class v4 arrives by miner signal at a published height (a devnet fact, not a launch one). The next test of the model is not ours: the cryptanalysis plan buys three external lots against the mixer, the chained cache and the acceptance rule. ## 3. The miner page's line -Your card against the strongest chip we can price: an RTX 5090 at 136 MH/s on 350 W (measured 6 October 2026), the chip 5x to 9x per joule in the public model today, 2.1x to 3.9x under class v4 (modelled on measured watts), and under class v5 wrong on every item because the dataset is the chain's own state (designed); the model and the measurements are public. +Your card against the strongest chip we can price: an RTX 5090 at 136 MH/s on 350 W (measured 6 October 2026); at launch the chip reaches 2.1x to 3.9x per joule under class v4 (modelled on measured watts), and under class v5 it is wrong on every item because the dataset is the chain's own state (designed). Without class v4 it would be 5x to 9x. The model and the measurements are public. ## 4. The ledger row (docs/evidence.md row 17, in the table's eight columns as served) | # | Claim | Where it is made | Status | Version or commit | Reproducible test | Result, date, machine | Independent verification | |---|---|---|---|---|---|---|---| -| 17 | The chip resistance claim: the strongest chip in the public model reaches 5x to 9x per joule against an RTX 5090 today; class v4 brings it to 2.1x (k = 1) to 3.9x (k about 0.33) and its second rung to about 2.8x; class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item; the hot-set cache is bounded at 1.067x at the ceiling and the weak-day FPGA at 12 percent on 12 days a century, both routed to the next class; datacentre silicon does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years | the home page's chip line, the litepaper's chip section (/litepaper#chip-model), the miner page's line | tested by the team (every card, the verifier, the two attack-pass bounds, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measured | `docs/analysis/chip-model-v3.md` 5 and 6; `docs/analysis/latency-shadow-2026-10-06.md`; `docs/plans/counter-asic-3-status.md`; `docs/analysis/attack-pass/f8-uniform.md`, `f4-weakday.md`, `docs/analysis/ca3-v4-uniform.md`; `docs/design/class-v5-stored-state.md`; the H100 and market-cap rows of 7 October; `docs/plans/funding.md` (the three lots) | the chip model's arithmetic in its file; the card rows by the benchmark package; the attack-pass harnesses `tools/attack/f8-uniform` and the F4 census; the verifier by `igneum-pow bench` | 136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 5.1x to 9.2x; 2.1x, 3.9x, 2.8x; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 6 and 7 October 2026, the M5 Max, PC 2's RTX 5090, PC 1's RX 9070 XT and RTX 4070, a rented H100 SXM, igneum-build-1 | none yet; the three cryptanalysis lots are the next test | +| 17 | The chip resistance claim: at launch the strongest chip in the public model reaches 2.1x (k = 1) to 3.9x (k about 0.33) per joule against an RTX 5090 under class v4, live from genesis on the testnet and the mainnet; the ladder's second rung brings it to about 2.8x; class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item; the hot-set cache is bounded at 1.067x at the ceiling and the weak-day FPGA at 12 percent on 12 days a century, both routed to the next class; datacentre silicon does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years; without class v4 the same chip would reach 5x to 9x (the class v3 baseline, the devnet's starting state, never the launch state) | the home page's chip line, the litepaper's chip section (/litepaper#chip-model), the miner page's line | tested by the team (every card, the verifier, the two attack-pass bounds, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measured | `docs/analysis/chip-model-v3.md` 5 and 6; `docs/analysis/latency-shadow-2026-10-06.md`; `docs/plans/counter-asic-3-status.md`; `docs/analysis/attack-pass/f8-uniform.md`, `f4-weakday.md`, `docs/analysis/ca3-v4-uniform.md`; `docs/design/class-v5-stored-state.md`; the H100 and market-cap rows of 7 October; `docs/plans/funding.md` (the three lots) | the chip model's arithmetic in its file; the card rows by the benchmark package; the attack-pass harnesses `tools/attack/f8-uniform` and the F4 census; the verifier by `igneum-pow bench` | 136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 2.1x, 3.9x, 2.8x at launch; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 5.1x to 9.2x the class v3 baseline; 6 and 7 October 2026, the M5 Max, PC 2's RTX 5090, PC 1's RX 9070 XT and RTX 4070, a rented H100 SXM, igneum-build-1 | none yet; the three cryptanalysis lots are the next test | diff --git a/docs/plans/counter-asic-3-status.md b/docs/plans/counter-asic-3-status.md index 36c1cb9c5..7ec221e49 100644 --- a/docs/plans/counter-asic-3-status.md +++ b/docs/plans/counter-asic-3-status.md @@ -423,7 +423,7 @@ Every failing seed is ONE low-entropy load site; the mechanism is lineage-blind Known-failed test class_v4_distinct_ratio_rejects_the_low_entropy_band green on box 2 (12.95 s): p15 attempt 3 (52638ea2e8b0fd68) site 2 at 0.943; p18 attempt 2 (9a37e9489d8ba698) site 6 at 0.927; p19 attempt 0 (79d7441de0689223) site 15 at 0.933; p56 attempt 2 (486a8ad2701ec3b5) site 2 at 0.965; p23 attempt 1 (d65122675f16a1c7) draws site 7 from r5 and passes, and with r6 put back is refused by (a') UnfreshLoadSource and, run anyway, by the ratio at 0.836. Stream unchanged from ddacfbd3 (re-export diff 0 on all eight packs): id a785001687d8688a, the seven fingerprints and the packs zip sha256 4f2445c5... as recorded. THE SUITE AT 017e7037 on box 2: 103 of 103 (64 lib + 7 derive + 4 mixer + 19 packs + 2 recheck + 7 scratch, 3 diag ignored), rc 0; the lib tests 140.8 s against the 41 s whole-suite line at ddacfbd3, because every class v4 draw in the tests pays the 2^20 ratio pass on its chosen candidate (2.2 s each): a CI-time cost, not a node cost (one pass per epoch draw). CI run 37639406567 on 017e7037 success. THE CENSUS AT 017e7037 (box 2, 4,096 chain-shaped seeds plus F8's p1 to p3, draws in parallel across the cores; tools/ca3-v4-uniform now draws across available_parallelism since the serial run became a four-hour job): 4,099 programs, 0 lossy-sourced load sites of 65,584 (57,322 injecting, 8,262 bijective), 0 exhaustions; attempt histogram 0:1297 1:899 2:609 3:416 4:298 5:197 6:125 7:92 8:54 9:46 10:21 11:14 12:13 13:9 14:6 16:2 17:1, mean 2.086, max 17 (ddacfbd3 read 1328/917/622/409/284..., mean 1.998, max 17): the ratio refuses about 4 percent of candidates that pass every other test, one extra attempt on about one seed in twelve, the worst case unchanged at 17; devnet epoch-0 at attempt 1, id a785001687d8688a; F8's p2 attempt 5, p3 attempt 1. The attack-pass lane's class check: ddacfbd3's shadow-executed verdicts against 8bdcbdd8 on 598,678 chain-shaped seeds move 11,990 (2.0 percent) to a different attempt, 0 exhausted, max 32; on 017e7037 the pairing holds and the 64-seed gate at 2^24 plus the 10^6 exhaustion count run to about 16:05Z. The hash lane's ledger lines 2a111fb1 on origin and build (the GitHub 500s cleared on their own), CI run 37642582140 success at 15:25Z; the hash lane has nothing in flight. Nothing on the hash side stops a cut of sub-version 3 at 017e7037 for 0.3.22; then the attack-pass lane's 64-seed gate at 2^24 and 10^6 exhaustion count. Owed as before: G2, G3, the ladder re-measure, AMD (PC 1), the 2019-class core, the fleet and PC 2 G1 on the sub-version 3 packs (a re-run of a known result). release-0.3.21-node STAGED (the node lane, 16:0xZ): 96161037 on the mirror, at the shipper's sweep-end word, in the final order on 55768f88 (c631c64b, 52e96c94, f067f7c1, b0444f51, 437f0438, 2e32d5f6, f95178a1 cherry-picked, a6864e36 and d8bceca5), pairing igneum-pow 8c728ca3 at byte 5, no re-pin. The whole set on the tip green: consensus-core 126, the consensus crate whole (lib 120, both integration targets), igneum-miner 25, kaspa-pow 17, igneum-exec 36, the three checks, 15:49 to 15:57Z on build-2. Binary built on build-1 at 15:58Z, igneumd sha256 f99340b3cf4ce32e, the string read back; the digest eada4bda on the previous live object and 4bbbe816 on the published floor file (so the 0.3.20 floor file is published), as the pin reads them. The node lane's digest and mixed-version gates on it from 16:00Z; the fleet's set from the same minute; plan 6.9 carries the steps and the two box-input rules the staging added. THE 0.3.20 RECORD (the shipper, UTC). Cases: the dc141409 run on c18-1 CASES END rc 0 at 12:37:18Z (both halves PASS); the c4459193 run on c20-1 CASES END rc 0 at 14:54:02Z with its relay half void (one RunPod host, no hairpin) and the poison half PASS (13 rejected, 0 accepted); main's (b): the publish on the dc141409 cases plus the diff argument (the class byte the only touch in the cases' territory) and c19-1's tip-following, with the separate-host relay re-run on c19-1 on the live digest as the halt condition and the Discord card's gate (CASES END about 16:25Z). PUBLISH 14:54:17Z (15:54 BST): manifest 0.3.20, mac DMG sha256 73796c5f..., Windows installer 45b2f3fb..., the hive tar d9dd12df... on the public alias. THE FLOOR FILE: program_class_v4_activation_daa 900,000 (the live DAA 294,073 at 14:51Z; 294,073 + 604,800 = 898,873 rounded up to the 3,600 boundary), window 86,400 unchanged, file sha256 294f1f80...; the digest 4bbbe8162ea9fff277aa5b16b4ffad9e2262ba5e6a5acac7b697ff77211e7328 read on c4459193's binary before the cut and on the hub's handshake line after. The pin c4459193, igneum-pow 8c728ca3, byte 5; the sweep's node pair a80ed39c / 70a5180f (the build-server lane's native build of the same tree). THE SWEEP complete 15:39Z (16:39 BST): wave 1 the hands (observer-node, node1 at 14:57Z), the Mac (15:23Z on its poller, interface 1.0.1), the hub, pool-1 and the eight heaviest voters (15:04 to 15:21Z); wave 2 the four lighter voters (15:23 to 15:26Z); wave 3 Devnet 2's four pods and bps-seed (digest 4a0b8726 unmoved); the first new-side lock 9313 at 15:28:08Z after a 23-minute split; every lock line "sweep complete before 13 October 09:00 UK (the margin; the floor is now DAA 900,000)". 0.3.17 nodes remaining: PC 1 and PC 2 (offline for the project lead's cable work; their apps update on their pollers on return) and the three testnet seeds (on the testnet, not on the devnet's floor); no devnet node of the fleet, the hands or the Mac on 0.3.17. EARLIEST FLIP: the floor at DAA 900,000 is about 7.0 days of DAA from the publish (605,927 DAA at about one a second), so about 14 October 23:00Z (15 October 00:00 BST) at the earliest, and only once the seven 86,400-DAA windows read 95 percent of blue weight signalling byte 5; the live floor of 831,600 (13 Oct 08:00Z) is replaced by the published file on every swept node, so the chain never flips to the 6 October stream. Per tier: a solo miner on the Mac or a swept box mines on; a PC miner on 0.3.17 is refused by digest when it next connects until its app updates (its poller does this on return; nothing by hand); the pool and the hub are on the pin; the auditor reads one object, one digest, one floor. -SUB-VERSION 3 PASSES BOTH GATES (the attack-pass lane, the close line dated 7 October 2026): class v4 sub-version 3, commit 017e70376489251e18564c0abce7e466e606c8b3 on ca3-v4-amend, pairing id a785001687d8688a (verified by the harness). F8's 64-seed census (p2 to p65) at 2^24 nonces each, chain path, window-model control, box 2, 14:51Z to 16:00:20Z: PASS, 60 of 64 under 1.2x (0.9915x to 1.144x); the only four over are the named tail, unattributed and chased: p10 1.5036x (identical to sub-versions 1 and 2, hottest item 0x4004da at 362 reads, no predicted source), p8 1.3776x (0x837de4, 420 reads), p34 1.2505x (0x800010, 541 reads, the one-bit value through sub at 5), p4 1.2167x (0x4000e7, 355 reads); every strong seed gone (p23 4.82x, p19 3.32x, p15 2.57x, p18 2.50x, p56 2.01x all under 1.2x); the worst ratio on the stream 1.50x; the tail's hottest items carry 355 to 541 reads of 2^31 (one to two per 2^22 items above the mean), no chip consequence. The exhaustion gate as it is: the chain-path count on 017e7037 runs slowly (the draw evaluates (c'') at 2^20 per candidate: 20,532 seeds in 59 minutes, 0 exhausted, 0 panics, max attempt 29), so a 10^6 count is two days away and is not waited on; the substance is met by construction (the 256 cap and the last resort unchanged from 8bdcbdd8, 0 of 10^6 there) and by measurement at 017e7037 on 24,631 seeds (0 exhausted, max 29; r about 0.68); the count runs on as a strengthening line. The node's epoch draw now costs about 2 attempts at 2.2 s each, 4 to 5 s per epoch on slower cores, once an hour. The hash lane's ledger at 6941da1d. SUB-VERSION 3 AT 017e7037 IS THE FROZEN GENERATOR FOR 0.3.22 (byte 7), the row open on the tail until attributed or ruled accepted; the attack-pass plan's start 15 October or the morning after. 0.3.21's STAGING (the node lane): the order dry-merges onto 55768f88 with nothing moving to 0.3.22; the late-join fix is 52e96c94 (70e4601e rebased onto 55768f88, exec suite 33 green with both new tests); f067f7c1, b0444f51 and 437f0438 merge clean in order; 2e32d5f6's one conflict (DST_ADDRESS beside pool-finish's DST_BINDING in consensus/core/src/finality.rs) kept both; the live-file digest eada4bda after each (every switch at never); the staging waits on the shipper's sweep-end word; the re-pin held. PC 2 DOWN AGAIN (main, 16:5x UK): the project lead takes PC 2 down for cable work (PC 1 back but his desk); both PCs out of the sweep's waves, each updates on its poller on return; no PC job to PC 1; the Windows G1 completed before the outage, nothing reruns. 0.3.21's SECOND GATE LINE on 55768f88 (sha256 279b1b690e854fc9): the ten-minute mixed-version gate beside the 5899f603 pair, 13:37:40Z to 13:47:52Z, SUMMARY PASS (one digest b0afb2ee on five nodes; 223 new and 381 old blocks accepted by the old hub, 0 rejected; counts equal at 319, 486 and 604 through both clean joins and the restart step at 13:45:22Z; no panic); the node lane's two lines on 0.3.21's first candidate complete, in plan 6.9 on ca3-v4-node; the fleet's set on it (the bare-child 12 GB line, the wipe, the kept read, the cases) is the fleet's. 0.3.21's FIRST GATE LINE on 55768f88 (sha256 279b1b690e854fc9, the string read back; pairing igneum-pow 8c728ca3 at byte 5): the digest gate 13:35:41Z to 13:37:19Z SUMMARY PASS (a89be8a7 on both binaries with the peers; db9a85f9 refused, no peer; the live file's eada4bda unmoved); the ten-minute mixed-version gate from 13:37:40Z, line about 13:50Z. The 0.3.21 order as the shipper sent it: 55768f88; f067f7c1 and 70e4601e; b0444f51; 6eb21fc9; db28d331; then the re-pin from 8bdcbdd8 on the coordinator's word; suites between, the digest read after every one; the mirror's release-0.3.20-node back at the pin c4459193, release-0.3.21-node open at 55768f88. THE LATE-JOIN COMMIT (N9's second half, the node lane): 70e4601e on the box mirror as branch proof-hold-fix, from c4459193, two files (igneum/exec/src/proving.rs, protocol/flows/src/v10/proving.rs); the gap was the fetch side on the joiner (the served record ran the native check against the joiner's trailing exec state before anything was stored, the check refused it, the proof was never held, the body rule read "not held" for 20 s and failed the IBD); the fix holds the proof by hash before the checks (the pool entry still needs them) and the serve side says when it holds fewer than asked; the exec suite 32 passed at 13:26Z with the known-failed shape first, the flows check green 13:28Z, igneumd on build-1 at the 0321 worktree path built 13:32Z, sha256 17649eeb2f7d1290, string read back; with the testnet lane (the resume form, B alone); it joins the 0.3.21 staging as its own commit. THE WIPE CANARY ON c19-1, c4459193 (sha 45be9b02d1b002f5, string read back): FORM END rc 0 at 13:50:53Z. Wipe synced 13:35:50Z (57 minutes, inside the 98-minute class); mining 13:36:00Z to 13:47:07Z, 66 mined, 66 accepted, 0 rejected, isSynced true at the tip throughout; the hub holds 41 of its blocks in its last 700 with 0 rejects (13:47:09Z); the restart on its kept datadir at 13:47:15Z: the old process stopped at once (the new process's first lock line seven seconds after the marker; the watchdog held nothing, the b7cc37e7 fault closed), synced again at 13:48:39Z after 84 s, 109 templates read with max 3,432 ms and 0 timeouts; the kept read on pool-1's 0.3.17 copy on the same pod passed at 13:38Z (the rewrite line once, a clean second start). The pin's set on c4459193: the digest gate PASS, the mixed-version gate PASS, the wipe canary PASS, the kept read PASS, the restart PASS, the 12 GB line proves and verifies (paid is a race, not a gate); CASES END from c20-1 (about 14:50Z) is the last pin line. THE INTEROP FACT stands from the void run: the 5899f603 hub accepted 235 object-byte-5 blocks from the 8097d600 node with 0 rejected, one digest on all five nodes on the live sixteen-field file. The gates: the digest test and the kaspa-pow vector test (the amended devnet epoch-0 id 1a4230699a6b9c60 must equal, c120d7963abdcd96 must differ, the v3 control unchanged) on the box; the mixed-version Devnet 2 gate (the amended 0.3.20 node beside a 5899f603 node for ten minutes on the live file without the v4 fields) after the Mac build; the fresh-join canary the 0.3.20 cut's | +SUB-VERSION 3 PASSES BOTH GATES (the attack-pass lane, the close line dated 7 October 2026): class v4 sub-version 3, commit 017e70376489251e18564c0abce7e466e606c8b3 on ca3-v4-amend, pairing id a785001687d8688a (verified by the harness). F8's 64-seed census (p2 to p65) at 2^24 nonces each, chain path, window-model control, box 2, 14:51Z to 16:00:20Z: PASS, 60 of 64 under 1.2x (0.9915x to 1.144x); the only four over are the named tail, unattributed and chased: p10 1.5036x (identical to sub-versions 1 and 2, hottest item 0x4004da at 362 reads, no predicted source), p8 1.3776x (0x837de4, 420 reads), p34 1.2505x (0x800010, 541 reads, the one-bit value through sub at 5), p4 1.2167x (0x4000e7, 355 reads); every strong seed gone (p23 4.82x, p19 3.32x, p15 2.57x, p18 2.50x, p56 2.01x all under 1.2x); the worst ratio on the stream 1.50x; the tail's hottest items carry 355 to 541 reads of 2^31 (one to two per 2^22 items above the mean), no chip consequence. The exhaustion gate as it is: the chain-path count on 017e7037 runs slowly (the draw evaluates (c'') at 2^20 per candidate: 20,532 seeds in 59 minutes, 0 exhausted, 0 panics, max attempt 29), so a 10^6 count is two days away and is not waited on; the substance is met by construction (the 256 cap and the last resort unchanged from 8bdcbdd8, 0 of 10^6 there) and by measurement at 017e7037 on 24,631 seeds (0 exhausted, max 29; r about 0.68); the count runs on as a strengthening line. The node's epoch draw now costs about 2 attempts at 2.2 s each, 4 to 5 s per epoch on slower cores, once an hour. The hash lane's ledger at 6941da1d. SUB-VERSION 3 AT 017e7037 IS THE FROZEN GENERATOR FOR 0.3.22 (byte 7), THE TAIL RULED (main, 18:1x UK): the four seeds (p10 1.5036x with its hottest item at 362 reads, p8 1.3776x at 420, p34 1.2505x at 541, p4 1.2167x at 355, of 2^31 reads) are accepted as the window model's unattributed residue at 1.22x to 1.50x with nil chip consequence; the AP-F8-1 row CLOSES with that wording and the hottest-item counts beside it; the 10^6 count on 017e7037 runs on as the strengthening line. The attack-pass plan's start 15 October or the morning after. 0.3.21's FIRST CANDIDATE 96161037 (sha256 f99340b3cf4ce32e, string read back) passed the node lane's two gates on its own binary: the digest gate 15:59:54Z to 16:01:32Z PASS (a89be8a7 with the peers right; db9a85f9 refused, no peer); the mixed-version gate 16:01:53Z to 16:12:05Z PASS (one digest b0afb2ee on five; 252 new and 352 old accepted, 0 rejected; counts equal at 316, 493 and 604 through both clean joins and the restart step; no panic); the node side complete; the fleet's set on the same binary (the kept start with the ids gate, the wipe canary, the cases rerun, the 12 GB line, N15's restarts of p1-5090 and p2-3090-3) is what the shipper's pin word waits on; byte 5 throughout, nothing on the class v4 seam moved. DEVNET 3 NOW (the project lead through main, 17:3x BST): 0.3.22 is the Devnet 3 release (a fresh network object igneum-devnet-3 with every activation at 0 and no override file, the era VDF fork, class v4 sub-version 3 at byte 7 from genesis), the node building on build-1, genesis by 17:30Z (18:30 BST). THE HANDOFF (17:3x BST, inside the 17:40 BST line, to the shipper and the node lane): igneum-pow 017e70376489251e18564c0abce7e466e606c8b3 (the audit-freeze-2026-10-07 tag; 2a111fb1 and 6941da1d above it docs only), object byte 7, PROGRAM_SUBVERSION_V4 = 3, devnet epoch-0 program id a785001687d8688a (must-differ c120d7963abdcd96, 1a4230699a6b9c60, a788661687db4bb3), kit packs-ca3-v4-sub3 zip sha256 4f2445c50c58d76a5544023492d8b858d0b07c5e372d31f9c90c4ce51f829154, the eight fingerprints as recorded (equal on Metal, Apple OpenCL, the fleet 5090 and PC 2's 5090), both attack-pass gates GREEN, suite 103 of 103, CI success; the open items stated as open: the four-seed tail under main's ruling (the attribution for 0.3.23), the 10^6 count as a strengthening line, the 4 to 5 s epoch draw, the owed measurements that do not gate Devnet 3. NO FURTHER HASH CHANGE RIDES ON 0.3.22; anything from the tail goes to 0.3.23. The node lane stages the re-pin on the 0.3.21 tip as its own commit (the fork commit and the kaspa-pow suite line owed to this record); the hash lane's sub-version 3 pairing follows it. THE PUBLIC CHIP TEXT REWRITTEN LAUNCH-FIRST (the project lead: "I thought we were making it 2.1 from launch?"; master 9b996d06, docs/plans/counter-asic-3-public-text-2026-10-07.md): the testnet and mainnet objects set program_class_v4_activation_daa 0, so class v4 is live from genesis and the launch number is 2.1x to 3.9x on day one; the three texts and evidence row 17 lead with that (labels kept), then class v5, then the 5x to 9x only as the class v3 baseline the work started from, the devnet's activation height a devnet fact only; no em dashes, no prize mention, eight columns; with the site lane to apply in the same deploy as the padding sweep (its commit and deploy time owed to this record). STOP-THE-LINE ON MASTER's POW SUITE (main through the CI steward, 18:4x BST): red since 16:31 BST (runs a4eaf76 and 1210158d; program_ids_differ_between_class_v3_and_class_v4_of_one_seed and cpu_recheck_equals_the_worker_reference_for_class_v3_and_class_v4 fail on packs-ca3-v4/v4-devnet-epoch0) because era-vdf's merge 0e2d6b1c put the sub-version 1 line's generator on master against tests/recheck.rs's pins, never CI-run. Ruling: the hash lane merges ca3-v4-amend's tip 6941da1d to master through merge-to-master.sh within 15 minutes, provided its epoch-0 id equals the frozen object's; the coordinator verified the condition (6941da1d's igneum-pow byte-identical to 017e7037; recheck pins 0xa785_0016_87d8_688a with the three must-differ ids; PROGRAM_SUBVERSION_V4 = 3), so no revert; master is the 0.3.23 line after this, 0.3.22 keeps its pin at 017e7037. The master merge commit and the green pow run owed to this record. THE 0.3.22 RE-PIN STAGED (the node lane, 16:38Z): fork commit bd710a36 on release-0.3.22-node (igneum-pow 017e7037 archived beside the fork as igneum-pow-amend, byte 7, epoch-0 id a785001687d8688a must-equal, the three must-differ ids, PROGRAM_SUBVERSION_V4 read as 3); the line's candidate fa7f854f (the re-pin, the era VDF merge f2ecf452, the igneum-devnet-3 object with program_class_v4_activation_daa 0 and a one-day signal window, so byte 7 is stamped and hashed from genesis); the kaspa-pow suite on build-2 from 16:38Z, its line owed; the hash lane has the commit for its pairing run. The lane carries on until the re-pin line, the site commit, the pow fix and the genesis record land. 0.3.21's STAGING (the node lane): the order dry-merges onto 55768f88 with nothing moving to 0.3.22; the late-join fix is 52e96c94 (70e4601e rebased onto 55768f88, exec suite 33 green with both new tests); f067f7c1, b0444f51 and 437f0438 merge clean in order; 2e32d5f6's one conflict (DST_ADDRESS beside pool-finish's DST_BINDING in consensus/core/src/finality.rs) kept both; the live-file digest eada4bda after each (every switch at never); the staging waits on the shipper's sweep-end word; the re-pin held. PC 2 DOWN AGAIN (main, 16:5x UK): the project lead takes PC 2 down for cable work (PC 1 back but his desk); both PCs out of the sweep's waves, each updates on its poller on return; no PC job to PC 1; the Windows G1 completed before the outage, nothing reruns. 0.3.21's SECOND GATE LINE on 55768f88 (sha256 279b1b690e854fc9): the ten-minute mixed-version gate beside the 5899f603 pair, 13:37:40Z to 13:47:52Z, SUMMARY PASS (one digest b0afb2ee on five nodes; 223 new and 381 old blocks accepted by the old hub, 0 rejected; counts equal at 319, 486 and 604 through both clean joins and the restart step at 13:45:22Z; no panic); the node lane's two lines on 0.3.21's first candidate complete, in plan 6.9 on ca3-v4-node; the fleet's set on it (the bare-child 12 GB line, the wipe, the kept read, the cases) is the fleet's. 0.3.21's FIRST GATE LINE on 55768f88 (sha256 279b1b690e854fc9, the string read back; pairing igneum-pow 8c728ca3 at byte 5): the digest gate 13:35:41Z to 13:37:19Z SUMMARY PASS (a89be8a7 on both binaries with the peers; db9a85f9 refused, no peer; the live file's eada4bda unmoved); the ten-minute mixed-version gate from 13:37:40Z, line about 13:50Z. The 0.3.21 order as the shipper sent it: 55768f88; f067f7c1 and 70e4601e; b0444f51; 6eb21fc9; db28d331; then the re-pin from 8bdcbdd8 on the coordinator's word; suites between, the digest read after every one; the mirror's release-0.3.20-node back at the pin c4459193, release-0.3.21-node open at 55768f88. THE LATE-JOIN COMMIT (N9's second half, the node lane): 70e4601e on the box mirror as branch proof-hold-fix, from c4459193, two files (igneum/exec/src/proving.rs, protocol/flows/src/v10/proving.rs); the gap was the fetch side on the joiner (the served record ran the native check against the joiner's trailing exec state before anything was stored, the check refused it, the proof was never held, the body rule read "not held" for 20 s and failed the IBD); the fix holds the proof by hash before the checks (the pool entry still needs them) and the serve side says when it holds fewer than asked; the exec suite 32 passed at 13:26Z with the known-failed shape first, the flows check green 13:28Z, igneumd on build-1 at the 0321 worktree path built 13:32Z, sha256 17649eeb2f7d1290, string read back; with the testnet lane (the resume form, B alone); it joins the 0.3.21 staging as its own commit. THE WIPE CANARY ON c19-1, c4459193 (sha 45be9b02d1b002f5, string read back): FORM END rc 0 at 13:50:53Z. Wipe synced 13:35:50Z (57 minutes, inside the 98-minute class); mining 13:36:00Z to 13:47:07Z, 66 mined, 66 accepted, 0 rejected, isSynced true at the tip throughout; the hub holds 41 of its blocks in its last 700 with 0 rejects (13:47:09Z); the restart on its kept datadir at 13:47:15Z: the old process stopped at once (the new process's first lock line seven seconds after the marker; the watchdog held nothing, the b7cc37e7 fault closed), synced again at 13:48:39Z after 84 s, 109 templates read with max 3,432 ms and 0 timeouts; the kept read on pool-1's 0.3.17 copy on the same pod passed at 13:38Z (the rewrite line once, a clean second start). The pin's set on c4459193: the digest gate PASS, the mixed-version gate PASS, the wipe canary PASS, the kept read PASS, the restart PASS, the 12 GB line proves and verifies (paid is a race, not a gate); CASES END from c20-1 (about 14:50Z) is the last pin line. THE INTEROP FACT stands from the void run: the 5899f603 hub accepted 235 object-byte-5 blocks from the 8097d600 node with 0 rejected, one digest on all five nodes on the live sixteen-field file. The gates: the digest test and the kaspa-pow vector test (the amended devnet epoch-0 id 1a4230699a6b9c60 must equal, c120d7963abdcd96 must differ, the v3 control unchanged) on the box; the mixed-version Devnet 2 gate (the amended 0.3.20 node beside a 5899f603 node for ten minutes on the live file without the v4 fields) after the Mac build; the fresh-join canary the 0.3.20 cut's | | Main's rulings (7 October, morning) | no generator change to v4 on the live devnet; the record's null is the window model with numbers, sent by the hash lane to the attack-pass lane so AP-F8-1 re-gates against it; a fault beyond the model (a low-entropy source at site 15) stops at the coordinator with the two options priced (a 0.3.19 class amendment before the flip, or the flip held at the floor), nothing shipping without the project lead's word; the tighter tail, an acceptance bound on the hot-set share, is a CLASS V5 item (sent to the v5 lane a6410f3b8abefb762 with the 64-seed census as its gate; the bound's number follows from the model) | ### AP-F4-1, the weak-day MUL draw (the attack-pass lane, 7 October, morning): PASS against v4, a class v5 rule diff --git a/docs/plans/site-ui-5-shots/404__1440-dark.png b/docs/plans/site-ui-5-shots/404__1440-dark.png index 971b69d1a..c36a01e7a 100644 Binary files a/docs/plans/site-ui-5-shots/404__1440-dark.png and b/docs/plans/site-ui-5-shots/404__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/404__1440-light.png b/docs/plans/site-ui-5-shots/404__1440-light.png deleted file mode 100644 index 0cad44dfd..000000000 Binary files a/docs/plans/site-ui-5-shots/404__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/404__390-dark.png b/docs/plans/site-ui-5-shots/404__390-dark.png index 98b0561c2..8c165e332 100644 Binary files a/docs/plans/site-ui-5-shots/404__390-dark.png and b/docs/plans/site-ui-5-shots/404__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/404__390-light.png b/docs/plans/site-ui-5-shots/404__390-light.png deleted file mode 100644 index e69e7f1ae..000000000 Binary files a/docs/plans/site-ui-5-shots/404__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/app-band__1440-dark.png b/docs/plans/site-ui-5-shots/app-band__1440-dark.png new file mode 100644 index 000000000..3a17362a7 Binary files /dev/null and b/docs/plans/site-ui-5-shots/app-band__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/app__1440-dark.png b/docs/plans/site-ui-5-shots/app__1440-dark.png index 829bd2714..84ff889a2 100644 Binary files a/docs/plans/site-ui-5-shots/app__1440-dark.png and b/docs/plans/site-ui-5-shots/app__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/app__1440-light.png b/docs/plans/site-ui-5-shots/app__1440-light.png deleted file mode 100644 index 7c9077a76..000000000 Binary files a/docs/plans/site-ui-5-shots/app__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/app__390-dark.png b/docs/plans/site-ui-5-shots/app__390-dark.png index 50c7f103e..786d47070 100644 Binary files a/docs/plans/site-ui-5-shots/app__390-dark.png and b/docs/plans/site-ui-5-shots/app__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/app__390-light.png b/docs/plans/site-ui-5-shots/app__390-light.png deleted file mode 100644 index f5d933676..000000000 Binary files a/docs/plans/site-ui-5-shots/app__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/bench__1440-dark.png b/docs/plans/site-ui-5-shots/bench__1440-dark.png index 8d59fa565..e10c8d8d1 100644 Binary files a/docs/plans/site-ui-5-shots/bench__1440-dark.png and b/docs/plans/site-ui-5-shots/bench__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/bench__1440-light.png b/docs/plans/site-ui-5-shots/bench__1440-light.png deleted file mode 100644 index 46f5a0cd7..000000000 Binary files a/docs/plans/site-ui-5-shots/bench__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/bench__390-dark.png b/docs/plans/site-ui-5-shots/bench__390-dark.png index e57969e49..e7fa60a7a 100644 Binary files a/docs/plans/site-ui-5-shots/bench__390-dark.png and b/docs/plans/site-ui-5-shots/bench__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/bench__390-light.png b/docs/plans/site-ui-5-shots/bench__390-light.png deleted file mode 100644 index 02835baf2..000000000 Binary files a/docs/plans/site-ui-5-shots/bench__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/claims__1440-dark.png b/docs/plans/site-ui-5-shots/claims__1440-dark.png index a62362bf7..51de593f2 100644 Binary files a/docs/plans/site-ui-5-shots/claims__1440-dark.png and b/docs/plans/site-ui-5-shots/claims__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/claims__1440-light.png b/docs/plans/site-ui-5-shots/claims__1440-light.png deleted file mode 100644 index 16d76a319..000000000 Binary files a/docs/plans/site-ui-5-shots/claims__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/claims__390-dark.png b/docs/plans/site-ui-5-shots/claims__390-dark.png index aca29af59..d59a0394c 100644 Binary files a/docs/plans/site-ui-5-shots/claims__390-dark.png and b/docs/plans/site-ui-5-shots/claims__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/claims__390-light.png b/docs/plans/site-ui-5-shots/claims__390-light.png deleted file mode 100644 index 23e20bf0d..000000000 Binary files a/docs/plans/site-ui-5-shots/claims__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/dev-fee__1440-dark.png b/docs/plans/site-ui-5-shots/dev-fee__1440-dark.png index 5411bc7ed..ff181f158 100644 Binary files a/docs/plans/site-ui-5-shots/dev-fee__1440-dark.png and b/docs/plans/site-ui-5-shots/dev-fee__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/dev-fee__1440-light.png b/docs/plans/site-ui-5-shots/dev-fee__1440-light.png deleted file mode 100644 index 11d21d3a2..000000000 Binary files a/docs/plans/site-ui-5-shots/dev-fee__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/dev-fee__390-dark.png b/docs/plans/site-ui-5-shots/dev-fee__390-dark.png index 8967d6365..579f11b28 100644 Binary files a/docs/plans/site-ui-5-shots/dev-fee__390-dark.png and b/docs/plans/site-ui-5-shots/dev-fee__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/dev-fee__390-light.png b/docs/plans/site-ui-5-shots/dev-fee__390-light.png deleted file mode 100644 index 623a2c994..000000000 Binary files a/docs/plans/site-ui-5-shots/dev-fee__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/download__1440-dark.png b/docs/plans/site-ui-5-shots/download__1440-dark.png index a652840b1..ac1bd8efd 100644 Binary files a/docs/plans/site-ui-5-shots/download__1440-dark.png and b/docs/plans/site-ui-5-shots/download__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/download__1440-light.png b/docs/plans/site-ui-5-shots/download__1440-light.png deleted file mode 100644 index d67650d82..000000000 Binary files a/docs/plans/site-ui-5-shots/download__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/download__390-dark.png b/docs/plans/site-ui-5-shots/download__390-dark.png index bac29b767..ddb18130a 100644 Binary files a/docs/plans/site-ui-5-shots/download__390-dark.png and b/docs/plans/site-ui-5-shots/download__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/download__390-light.png b/docs/plans/site-ui-5-shots/download__390-light.png deleted file mode 100644 index 1eff43072..000000000 Binary files a/docs/plans/site-ui-5-shots/download__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/evidence__1440-dark.png b/docs/plans/site-ui-5-shots/evidence__1440-dark.png index 90527b73c..10e9ba10d 100644 Binary files a/docs/plans/site-ui-5-shots/evidence__1440-dark.png and b/docs/plans/site-ui-5-shots/evidence__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/evidence__1440-light.png b/docs/plans/site-ui-5-shots/evidence__1440-light.png deleted file mode 100644 index 7d8f26f6c..000000000 Binary files a/docs/plans/site-ui-5-shots/evidence__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/evidence__390-dark.png b/docs/plans/site-ui-5-shots/evidence__390-dark.png index 648b592ba..105fbd6bf 100644 Binary files a/docs/plans/site-ui-5-shots/evidence__390-dark.png and b/docs/plans/site-ui-5-shots/evidence__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/evidence__390-light.png b/docs/plans/site-ui-5-shots/evidence__390-light.png deleted file mode 100644 index b9f505133..000000000 Binary files a/docs/plans/site-ui-5-shots/evidence__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/explorer__1440-dark.png b/docs/plans/site-ui-5-shots/explorer__1440-dark.png index 3f2027499..10ae9b205 100644 Binary files a/docs/plans/site-ui-5-shots/explorer__1440-dark.png and b/docs/plans/site-ui-5-shots/explorer__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/explorer__1440-light.png b/docs/plans/site-ui-5-shots/explorer__1440-light.png deleted file mode 100644 index b45ba48e3..000000000 Binary files a/docs/plans/site-ui-5-shots/explorer__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/explorer__390-dark.png b/docs/plans/site-ui-5-shots/explorer__390-dark.png index 0d19ae844..d4a7c6443 100644 Binary files a/docs/plans/site-ui-5-shots/explorer__390-dark.png and b/docs/plans/site-ui-5-shots/explorer__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/explorer__390-light.png b/docs/plans/site-ui-5-shots/explorer__390-light.png deleted file mode 100644 index 44e94cf42..000000000 Binary files a/docs/plans/site-ui-5-shots/explorer__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/faucet__1440-dark.png b/docs/plans/site-ui-5-shots/faucet__1440-dark.png index 04df2a373..aa7e06aca 100644 Binary files a/docs/plans/site-ui-5-shots/faucet__1440-dark.png and b/docs/plans/site-ui-5-shots/faucet__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/faucet__1440-light.png b/docs/plans/site-ui-5-shots/faucet__1440-light.png deleted file mode 100644 index 131cfb8c7..000000000 Binary files a/docs/plans/site-ui-5-shots/faucet__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/faucet__390-dark.png b/docs/plans/site-ui-5-shots/faucet__390-dark.png index 37546d498..0a8e0a18d 100644 Binary files a/docs/plans/site-ui-5-shots/faucet__390-dark.png and b/docs/plans/site-ui-5-shots/faucet__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/faucet__390-light.png b/docs/plans/site-ui-5-shots/faucet__390-light.png deleted file mode 100644 index 7f4a26885..000000000 Binary files a/docs/plans/site-ui-5-shots/faucet__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/home-pending__375-dark.png b/docs/plans/site-ui-5-shots/home-pending__375-dark.png deleted file mode 100644 index 21ebc891f..000000000 Binary files a/docs/plans/site-ui-5-shots/home-pending__375-dark.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/home-sheet-open__390-dark.png b/docs/plans/site-ui-5-shots/home-sheet-open__390-dark.png deleted file mode 100644 index 93030221f..000000000 Binary files a/docs/plans/site-ui-5-shots/home-sheet-open__390-dark.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/home__1440-dark.png b/docs/plans/site-ui-5-shots/home__1440-dark.png index 5f930b25d..19ca9444c 100644 Binary files a/docs/plans/site-ui-5-shots/home__1440-dark.png and b/docs/plans/site-ui-5-shots/home__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/home__1440-light.png b/docs/plans/site-ui-5-shots/home__1440-light.png deleted file mode 100644 index 0bc50436c..000000000 Binary files a/docs/plans/site-ui-5-shots/home__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/home__390-dark.png b/docs/plans/site-ui-5-shots/home__390-dark.png index 7432a7732..58a306e2b 100644 Binary files a/docs/plans/site-ui-5-shots/home__390-dark.png and b/docs/plans/site-ui-5-shots/home__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/home__390-light.png b/docs/plans/site-ui-5-shots/home__390-light.png deleted file mode 100644 index 01fb4e32c..000000000 Binary files a/docs/plans/site-ui-5-shots/home__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/journey__1440-dark.png b/docs/plans/site-ui-5-shots/journey__1440-dark.png index d96b43fa7..785a74f3d 100644 Binary files a/docs/plans/site-ui-5-shots/journey__1440-dark.png and b/docs/plans/site-ui-5-shots/journey__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/journey__1440-light.png b/docs/plans/site-ui-5-shots/journey__1440-light.png deleted file mode 100644 index 0a41c221f..000000000 Binary files a/docs/plans/site-ui-5-shots/journey__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/journey__390-dark.png b/docs/plans/site-ui-5-shots/journey__390-dark.png index 9da013cf1..8c38275ca 100644 Binary files a/docs/plans/site-ui-5-shots/journey__390-dark.png and b/docs/plans/site-ui-5-shots/journey__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/journey__390-light.png b/docs/plans/site-ui-5-shots/journey__390-light.png deleted file mode 100644 index 4090b9093..000000000 Binary files a/docs/plans/site-ui-5-shots/journey__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/ledger__1440-dark.png b/docs/plans/site-ui-5-shots/ledger__1440-dark.png index 86947cc9b..a4ee3593c 100644 Binary files a/docs/plans/site-ui-5-shots/ledger__1440-dark.png and b/docs/plans/site-ui-5-shots/ledger__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/ledger__1440-light.png b/docs/plans/site-ui-5-shots/ledger__1440-light.png deleted file mode 100644 index 390440826..000000000 Binary files a/docs/plans/site-ui-5-shots/ledger__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/ledger__390-dark.png b/docs/plans/site-ui-5-shots/ledger__390-dark.png index d12a8a75f..17c6bd475 100644 Binary files a/docs/plans/site-ui-5-shots/ledger__390-dark.png and b/docs/plans/site-ui-5-shots/ledger__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/ledger__390-light.png b/docs/plans/site-ui-5-shots/ledger__390-light.png deleted file mode 100644 index 53c4cab66..000000000 Binary files a/docs/plans/site-ui-5-shots/ledger__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/litepaper__1440-dark.png b/docs/plans/site-ui-5-shots/litepaper__1440-dark.png index 6c93b25fd..e50028aa0 100644 Binary files a/docs/plans/site-ui-5-shots/litepaper__1440-dark.png and b/docs/plans/site-ui-5-shots/litepaper__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/litepaper__1440-light.png b/docs/plans/site-ui-5-shots/litepaper__1440-light.png deleted file mode 100644 index c33d1a6a7..000000000 Binary files a/docs/plans/site-ui-5-shots/litepaper__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/litepaper__390-dark.png b/docs/plans/site-ui-5-shots/litepaper__390-dark.png index 3ed56dcdf..162256784 100644 Binary files a/docs/plans/site-ui-5-shots/litepaper__390-dark.png and b/docs/plans/site-ui-5-shots/litepaper__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/litepaper__390-light.png b/docs/plans/site-ui-5-shots/litepaper__390-light.png deleted file mode 100644 index 9ff24e939..000000000 Binary files a/docs/plans/site-ui-5-shots/litepaper__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/live__1440-dark.png b/docs/plans/site-ui-5-shots/live__1440-dark.png index 321a90fe8..21ce3f2e2 100644 Binary files a/docs/plans/site-ui-5-shots/live__1440-dark.png and b/docs/plans/site-ui-5-shots/live__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/live__1440-light.png b/docs/plans/site-ui-5-shots/live__1440-light.png deleted file mode 100644 index a9c10c9c3..000000000 Binary files a/docs/plans/site-ui-5-shots/live__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/live__390-dark.png b/docs/plans/site-ui-5-shots/live__390-dark.png index e0690b5fe..247b5c989 100644 Binary files a/docs/plans/site-ui-5-shots/live__390-dark.png and b/docs/plans/site-ui-5-shots/live__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/live__390-light.png b/docs/plans/site-ui-5-shots/live__390-light.png deleted file mode 100644 index c44435d46..000000000 Binary files a/docs/plans/site-ui-5-shots/live__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/metamask__1440-dark.png b/docs/plans/site-ui-5-shots/metamask__1440-dark.png index 67fb30318..0995a0c44 100644 Binary files a/docs/plans/site-ui-5-shots/metamask__1440-dark.png and b/docs/plans/site-ui-5-shots/metamask__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/metamask__1440-light.png b/docs/plans/site-ui-5-shots/metamask__1440-light.png deleted file mode 100644 index 6e38772da..000000000 Binary files a/docs/plans/site-ui-5-shots/metamask__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/metamask__390-dark.png b/docs/plans/site-ui-5-shots/metamask__390-dark.png index 60249a6d8..ba7e784a7 100644 Binary files a/docs/plans/site-ui-5-shots/metamask__390-dark.png and b/docs/plans/site-ui-5-shots/metamask__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/metamask__390-light.png b/docs/plans/site-ui-5-shots/metamask__390-light.png deleted file mode 100644 index a9e81934e..000000000 Binary files a/docs/plans/site-ui-5-shots/metamask__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/miner-band__1440-dark.png b/docs/plans/site-ui-5-shots/miner-band__1440-dark.png new file mode 100644 index 000000000..e903c5adb Binary files /dev/null and b/docs/plans/site-ui-5-shots/miner-band__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/miner__1440-dark.png b/docs/plans/site-ui-5-shots/miner__1440-dark.png index fb5d9d7b8..cbd0425e0 100644 Binary files a/docs/plans/site-ui-5-shots/miner__1440-dark.png and b/docs/plans/site-ui-5-shots/miner__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/miner__1440-light.png b/docs/plans/site-ui-5-shots/miner__1440-light.png deleted file mode 100644 index af4a39a80..000000000 Binary files a/docs/plans/site-ui-5-shots/miner__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/miner__390-dark.png b/docs/plans/site-ui-5-shots/miner__390-dark.png index 5bf95ee07..11e21cae2 100644 Binary files a/docs/plans/site-ui-5-shots/miner__390-dark.png and b/docs/plans/site-ui-5-shots/miner__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/miner__390-light.png b/docs/plans/site-ui-5-shots/miner__390-light.png deleted file mode 100644 index cf97e1da8..000000000 Binary files a/docs/plans/site-ui-5-shots/miner__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/miners__1440-dark.png b/docs/plans/site-ui-5-shots/miners__1440-dark.png index 1d50e22de..891eab2c8 100644 Binary files a/docs/plans/site-ui-5-shots/miners__1440-dark.png and b/docs/plans/site-ui-5-shots/miners__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/miners__1440-light.png b/docs/plans/site-ui-5-shots/miners__1440-light.png deleted file mode 100644 index 84acf77da..000000000 Binary files a/docs/plans/site-ui-5-shots/miners__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/miners__390-dark.png b/docs/plans/site-ui-5-shots/miners__390-dark.png index d3b30ac6a..7746a69c9 100644 Binary files a/docs/plans/site-ui-5-shots/miners__390-dark.png and b/docs/plans/site-ui-5-shots/miners__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/miners__390-light.png b/docs/plans/site-ui-5-shots/miners__390-light.png deleted file mode 100644 index 9755c6956..000000000 Binary files a/docs/plans/site-ui-5-shots/miners__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/provenance__1440-dark.png b/docs/plans/site-ui-5-shots/provenance__1440-dark.png index 17b4a63ff..21a06fa7f 100644 Binary files a/docs/plans/site-ui-5-shots/provenance__1440-dark.png and b/docs/plans/site-ui-5-shots/provenance__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/provenance__1440-light.png b/docs/plans/site-ui-5-shots/provenance__1440-light.png deleted file mode 100644 index eb435bbfc..000000000 Binary files a/docs/plans/site-ui-5-shots/provenance__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/provenance__390-dark.png b/docs/plans/site-ui-5-shots/provenance__390-dark.png index 1bc9ec68f..da664bb4c 100644 Binary files a/docs/plans/site-ui-5-shots/provenance__390-dark.png and b/docs/plans/site-ui-5-shots/provenance__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/provenance__390-light.png b/docs/plans/site-ui-5-shots/provenance__390-light.png deleted file mode 100644 index e3ccd5226..000000000 Binary files a/docs/plans/site-ui-5-shots/provenance__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/randomx__1440-dark.png b/docs/plans/site-ui-5-shots/randomx__1440-dark.png index 30775bcb9..7db0ae531 100644 Binary files a/docs/plans/site-ui-5-shots/randomx__1440-dark.png and b/docs/plans/site-ui-5-shots/randomx__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/randomx__1440-light.png b/docs/plans/site-ui-5-shots/randomx__1440-light.png deleted file mode 100644 index 6657940e6..000000000 Binary files a/docs/plans/site-ui-5-shots/randomx__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/randomx__390-dark.png b/docs/plans/site-ui-5-shots/randomx__390-dark.png index d72a607ca..ae64547be 100644 Binary files a/docs/plans/site-ui-5-shots/randomx__390-dark.png and b/docs/plans/site-ui-5-shots/randomx__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/randomx__390-light.png b/docs/plans/site-ui-5-shots/randomx__390-light.png deleted file mode 100644 index 1d2243a3d..000000000 Binary files a/docs/plans/site-ui-5-shots/randomx__390-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/wallet-band__1440-dark.png b/docs/plans/site-ui-5-shots/wallet-band__1440-dark.png new file mode 100644 index 000000000..e57644903 Binary files /dev/null and b/docs/plans/site-ui-5-shots/wallet-band__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet-band__390-dark.png b/docs/plans/site-ui-5-shots/wallet-band__390-dark.png new file mode 100644 index 000000000..cb301b10b Binary files /dev/null and b/docs/plans/site-ui-5-shots/wallet-band__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet-full__1440-dark.png b/docs/plans/site-ui-5-shots/wallet-full__1440-dark.png new file mode 100644 index 000000000..a7fc584ea Binary files /dev/null and b/docs/plans/site-ui-5-shots/wallet-full__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet-full__390-dark.png b/docs/plans/site-ui-5-shots/wallet-full__390-dark.png new file mode 100644 index 000000000..aaa93617e Binary files /dev/null and b/docs/plans/site-ui-5-shots/wallet-full__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet__1440-dark.png b/docs/plans/site-ui-5-shots/wallet__1440-dark.png index dcb482e64..2c2a102c3 100644 Binary files a/docs/plans/site-ui-5-shots/wallet__1440-dark.png and b/docs/plans/site-ui-5-shots/wallet__1440-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet__1440-light.png b/docs/plans/site-ui-5-shots/wallet__1440-light.png deleted file mode 100644 index 13bad7c83..000000000 Binary files a/docs/plans/site-ui-5-shots/wallet__1440-light.png and /dev/null differ diff --git a/docs/plans/site-ui-5-shots/wallet__390-dark.png b/docs/plans/site-ui-5-shots/wallet__390-dark.png index 80643f6d0..385f01746 100644 Binary files a/docs/plans/site-ui-5-shots/wallet__390-dark.png and b/docs/plans/site-ui-5-shots/wallet__390-dark.png differ diff --git a/docs/plans/site-ui-5-shots/wallet__390-light.png b/docs/plans/site-ui-5-shots/wallet__390-light.png deleted file mode 100644 index c1e9d0202..000000000 Binary files a/docs/plans/site-ui-5-shots/wallet__390-light.png and /dev/null differ diff --git a/igneum-pow/src/accept.rs b/igneum-pow/src/accept.rs index 198871a28..5777be4b6 100644 --- a/igneum-pow/src/accept.rs +++ b/igneum-pow/src/accept.rs @@ -15,13 +15,31 @@ //! seed words 2 and 3 at its multiply-shift index, a second pure table beside the dataset stand-in (words 0 and 1). The census (section 7.3) checked on 100,000 programs that the //! closed-form verdict agrees with the memory-hard one on all but 39 threshold-edge cases. -use crate::generator::{Instr, Op, Program, INSTR_COUNT, ITERATIONS, LANES}; +use crate::generator::{Instr, LoadClass, Op, Program, ShadowClass, INSTR_COUNT, ITERATIONS, LANES, V4_CLASS, V4_SHADOW_INSTRS}; use crate::seed::{fnv1a64, SplitMix64}; use crate::memhard::hot_index; use crate::verify::{dataset_elem, fold_words, load_index, splitmix32, ScratchModel}; /// Units (32-lane warps) the dynamic test interprets. pub const ACCEPT_UNITS: usize = 64; + +/// Class v4 sub-version 3, rule (c''): the per-site distinct-index RATIO (AP-F8-1's low-entropy-band class, 7 October +/// 2026, the attack-pass gate's numbers through main), keyed on the class v4 shape. Over [`ACCEPT_UNITS_DISTINCT_V4`] +/// units (2^20 evaluations per site) the count of distinct dataset word indices a load site reads, against the +/// expectation of a uniform source on the site's window (N - N^2 / 2W), must reach [`MIN_DISTINCT_RATIO_V4`]. The +/// floor sits between the 55 clean F8 seeds' minimum over their site rows (0.9960; the clean p1 0.9990, the median +/// 1.0000) and the strong failing seeds' maximum (p56 0.9654; p23 0.8361, p18 0.9274, p19 0.9335, p15 0.9432), +/// 0.015 from each. The open tail: F8's p4, p8, p10 and p34 (1.22x to 1.50x on the gate) read 0.9927 to 0.9963 at +/// 2^20, inside the clean spread, and a 2^24 pass does not separate them either (p34 0.9181, p4 0.9614, p8 0.9630, +/// p10 0.9612 against the clean p44 0.9612, p52 0.9613, p3 0.9971, p2 and p5 1.0004); they stay unattributed and +/// chased in `docs/fud-ledger.md` AP-F8-1. A candidate under the floor is rejected and the next attempt drawn under +/// the 256 cap and the last resort. Measured on one box-2 core with the shadow executed: 2.8 s per chosen candidate. +pub const ACCEPT_UNITS_DISTINCT_V4: usize = 4096; +/// The ratio floor at 2^20. +pub const MIN_DISTINCT_RATIO_V4: f64 = 0.98; +/// Kept for the record and the driver, not wired: the most repeated source value per site over the (c) units' +/// 16,384 evaluations (a uniform site repeats a value 2 or 3 times; the finding's bands sit under the ratio instead). +pub const MAX_SOURCE_REPEAT_V4: u32 = 8; /// Hashes the dynamic test evaluates: 2,048. pub const ACCEPT_HASHES: usize = ACCEPT_UNITS * LANES; /// Domain tag of the base-nonce stream. @@ -57,6 +75,19 @@ pub enum Reject { LaneConstantSite { iteration: u8, instr: u8, unit: u8 }, /// (c): `count` final register values were 0 or all ones. Saturated { count: u32 }, + /// (a'), class v4 sub-version 2 (AP-F8-1): the load at `instr` reads `reg`, which is not fresh by dataflow in the + /// steady state of the loop (the freshness fixpoint over the base program and the shadow block). + UnfreshLoadSource { instr: u8, reg: u8 }, + /// (c'), class v4 sub-version 2 (AP-F8-1): the load at `site` read a source value of 0 or all ones in `count` of + /// its 16,384 evaluations (64 units x 32 lanes x 8 iterations); limit [`MAX_SATURATED`] - 1, the same 1 percent as (c). + SaturatedSource { site: u8, count: u32 }, + /// (c'') (B), class v4 sub-version 3: the load at `site` read the value `value` in `count` of its 16,384 (c) + /// evaluations (limit [`MAX_SOURCE_REPEAT_V4`] - 1): one constant upstream that the lineage rule cannot see. + RepeatedSource { site: u8, value: u32, count: u32 }, + /// (c''), class v4 sub-version 3: the load at `site` read `distinct` distinct dataset word indices over + /// `evaluations`, `ratio_milli` / 1000 of a uniform source on its window, under the floor: a low-entropy index band + /// (F8's p23, p18, p19, p15, p56). + LowEntropySite { site: u8, distinct: u32, evaluations: u32, ratio_milli: u32 }, /// (c): output bit `bit` was set in `ones` of 2,048 hashes. OutputBias { bit: u8, ones: u32 }, /// (c): the distinct-address sum was `sum`. @@ -75,6 +106,10 @@ impl std::fmt::Display for Reject { write!(f, "(c) load at iteration {iteration} instruction {instr} reads one address in all lanes of unit {unit}") } Reject::Saturated { count } => write!(f, "(c) {count} of 16384 final register values saturated (limit 163)"), + Reject::UnfreshLoadSource { instr, reg } => write!(f, "(a') load at {instr} reads r{reg}, not fresh by dataflow in the loop's steady state (class v4 sub-version 2)"), + Reject::RepeatedSource { site, value, count } => write!(f, "(c'') load site {site} read the value {value:#010x} in {count} of 16384 evaluations (limit {})", MAX_SOURCE_REPEAT_V4 - 1), + Reject::LowEntropySite { site, distinct, evaluations, ratio_milli } => write!(f, "(c'') load site {site} read {distinct} distinct word indices over {evaluations} evaluations, {}.{:03} of a uniform source on its window (floor {MIN_DISTINCT_RATIO_V4} at 2^20)", ratio_milli / 1000, ratio_milli % 1000), + Reject::SaturatedSource { site, count } => write!(f, "(c') load site {site} read a saturated source value in {count} of 16384 evaluations (limit 163)"), Reject::OutputBias { bit, ones } => write!(f, "(c) output bit {bit} set in {ones} of 2048 hashes"), Reject::DistinctAddresses { sum } => { write!(f, "(c) distinct dataset addresses {sum} over 2048 hashes (mean {:.2}, needs above 120 of 128 of the dataset loads)", *sum as f64 / 2048.0) @@ -136,28 +171,170 @@ fn check_injecting_writes(instrs: &[Instr]) -> Result<(), Reject> { Ok(()) } -/// Parts (a) and (b). +/// The most repeated value of `values` (sorted in place) and that value: (B), kept for the driver, not wired. +#[allow(dead_code)] +fn most_repeated(values: &mut [u32]) -> (u32, u32) { + values.sort_unstable(); + let (mut best, mut best_v, mut run) = (0u32, 0u32, 0u32); + for i in 0..values.len() { + run = if i > 0 && values[i] == values[i - 1] { run + 1 } else { 1 }; + if run > best { + best = run; + best_v = values[i]; + } + } + (best, best_v) +} + +/// (c''), class v4 sub-version 3: the 2^20 ratio pass on the chosen candidate (the constants above). +pub fn check_distinct_indices_v4(p: &Program) -> Result<(), Reject> { + distinct_ratio_pass(p, ACCEPT_UNITS_DISTINCT_V4, MIN_DISTINCT_RATIO_V4).map(|_| ()) +} + +/// One ratio pass over `units`: every load site's distinct word indices against the uniform expectation on its +/// window (`N - N^2 / 2W`, the window `2^28 >> min(win, 2)` words of the closed-form dataset), `Err` at the first +/// site under `floor`, else the minimum ratio and its site. +pub fn distinct_ratio_pass(p: &Program, units: usize, floor: f64) -> Result<(f64, usize), Reject> { + let n = (units * LANES * ITERATIONS) as f64; + let d = distinct_indices_v4(p, units)?; + let mut min = (f64::MAX, 0usize); + let mut site = 0usize; + for i in &p.instrs { + if !i.op.is_load() { + continue; + } + let wsize = ((1u64 << ACCEPT_DATASET_LOG2) >> (i.win as u64).min(2)) as f64; + let ratio = d[site] as f64 / (n - n * n / (2.0 * wsize)); + if ratio < floor { + return Err(Reject::LowEntropySite { site: site as u8, distinct: d[site], evaluations: n as u32, ratio_milli: (ratio * 1000.0) as u32 }); + } + if ratio < min.0 { + min = (ratio, site); + } + site += 1; + } + Ok(min) +} + +/// The distinct dataset word indices every load site reads over `units` units of the seed's acceptance stream on +/// the closed-form words (the sample caps the count near `units x 32 x 8`, so a site's index entropy is read only +/// below about log2 of that). +pub fn distinct_indices_v4(p: &Program, units: usize) -> Result, Reject> { + let loads = p.loads_per_hash(); + let sites = loads / ITERATIONS; + let mut acc = Acc { + sources: None, + indices: Some(vec![Vec::with_capacity(units * LANES * ITERATIONS); sites]), + sat_source: vec![0; sites], + and_acc: [u32::MAX; 8], + or_acc: [0; 8], + saturated: 0, + bit_ones: [0; 64], + distinct_sum: 0, + }; + let mut lane_addrs = vec![0u32; LANES * loads]; + for (unit, &base) in accept_base_nonces_n(&p.seed, units).iter().enumerate() { + run_unit(p, unit, base, &mut acc, &mut lane_addrs)?; + } + let mut out = Vec::with_capacity(sites); + for ix in acc.indices.take().unwrap().iter_mut() { + ix.sort_unstable(); + ix.dedup(); + out.push(ix.len() as u32); + } + Ok(out) +} + +/// Whether `class` is the class v4 shape (the 256-instruction shadow block over the class v3 base, the pass count and +/// the era set aside): the shape the sub-version 2 rules (a') and (c') apply to, on every draw path. +pub fn is_class_v4_shape(class: &LoadClass) -> bool { + matches!(class.shadow, Some(ShadowClass { instrs: V4_SHADOW_INSTRS, .. })) + && LoadClass { era: None, shadow: None, ..*class } == LoadClass { shadow: None, ..V4_CLASS } +} + +/// One pass of the dataflow freshness over the base program then the shadow block (the order of one iteration), +/// from `fresh`; `check` reports the first load that reads a register that is not fresh. The rule (AP-F8-1, +/// `docs/analysis/ca3-v4-uniform.md`): a load leaves its destination fresh only if its source was (a saturated +/// source reads one fixed word); add, sub, xor, mad and shfl if either operand was; rotl and rotr if the operand +/// was (a rotate maps all-ones and zero to themselves); or, mul and mulhi never. +fn freshness_pass(p: &Program, fresh: &mut [bool; 8], pair_op: &mut [Option<(Op, usize)>; 8], check: bool) -> Result<(), Reject> { + for (k, i) in p.instrs.iter().chain(p.shadow.iter()).enumerate() { + let (d, a) = (i.dst as usize, i.src as usize); + if check && i.op.is_load() && !fresh[a] { + return Err(Reject::UnfreshLoadSource { instr: k as u8, reg: i.src }); + } + // the shared-operand idiom (sub-version 3): or-then-xor or or-then-sub on one operand is `d & ~s`, xor-then-or + // is `d | s`: lossy, though the second op would inject on its own (F8's p23: `or r6 |= r4; xor r6 ^= r4`) + let masked = matches!((pair_op[d], i.op), (Some((Op::Or, s)), Op::Xor) | (Some((Op::Or, s)), Op::Sub) | (Some((Op::Xor, s)), Op::Or) if s == a); + fresh[d] = !masked + && match i.op { + Op::Load | Op::WLoad | Op::Scratch | Op::Hot => fresh[a], + Op::Add | Op::Sub | Op::Xor | Op::Mad | Op::Shfl => fresh[d] || fresh[a], + Op::Rotl | Op::Rotr => fresh[d], + Op::Or | Op::Mul | Op::MulHi => false, + }; + pair_op[d] = if matches!(i.op, Op::Or | Op::Xor) && !masked { Some((i.op, a)) } else { None }; + for r in 0..8 { + if r != d { + if let Some((_, s)) = pair_op[r] { + if s == d { + pair_op[r] = None; + } + } + } + } + } + Ok(()) +} + +/// Part (a'), class v4 sub-version 2: every load's source is fresh by dataflow in the loop's steady state. The draw +/// of `candidate_from_words_class` keeps in-pass sources fresh; this closes the iteration boundary (a source last +/// written late in the previous iteration or in the shadow block, which the draw's no-eligible fallback can pick: +/// F8's p11, an `or` at 63 feeding a load at 1). The state starts all fresh (the init words are a per-lane hash of +/// the nonce) and is run to its fixpoint (it only ever falls, so at most 8 passes change it), then one checking pass. +pub fn check_fresh_sources_v4(p: &Program) -> Result<(), Reject> { + if !is_class_v4_shape(&p.class) { + return Ok(()); + } + let mut fresh = [true; 8]; + let mut pair_op: [Option<(Op, usize)>; 8] = [None; 8]; + for _ in 0..9 { + let before = (fresh, pair_op); + freshness_pass(p, &mut fresh, &mut pair_op, false)?; + if (fresh, pair_op) == before { + break; + } + } + freshness_pass(p, &mut fresh, &mut pair_op, true) +} + +/// Parts (a), (b) and, for class v4 sub-version 2, (a'). pub fn check_static(p: &Program) -> Result<(), Reject> { if p.instrs.len() != INSTR_COUNT { panic!("acceptance needs a {INSTR_COUNT}-instruction program"); } check_stale_loads(&p.instrs)?; - check_injecting_writes(&p.instrs) + check_injecting_writes(&p.instrs)?; + check_fresh_sources_v4(p) } /// The 64 base nonces of the dynamic test for seed words `seed`. pub fn accept_base_nonces(seed: &[u32; 8]) -> [u32; ACCEPT_UNITS] { + let v = accept_base_nonces_n(seed, ACCEPT_UNITS); + let mut out = [0u32; ACCEPT_UNITS]; + out.copy_from_slice(&v); + out +} + +/// The first `n` base nonces of the seed's acceptance stream (the (c) units are the first [`ACCEPT_UNITS`]). +pub fn accept_base_nonces_n(seed: &[u32; 8], n: usize) -> Vec { let mut b = Vec::with_capacity(ACCEPT_TAG.len() + 32); b.extend_from_slice(ACCEPT_TAG); for w in seed { b.extend_from_slice(&w.to_le_bytes()); } let mut rng = SplitMix64::new(fnv1a64(&b)); - let mut out = [0u32; ACCEPT_UNITS]; - for o in out.iter_mut() { - *o = (rng.next() as u32) & !31; - } - out + (0..n).map(|_| (rng.next() as u32) & !31).collect() } #[inline(always)] @@ -167,6 +344,13 @@ fn mulhi32(a: u32, b: u32) -> u32 { /// Accumulators of the dynamic test over the 64 units. struct Acc { + /// (c'') (B): every load's source value per site, recorded when present. + sources: Option>>, + /// (c'') (A): every load's dataset index per site, recorded when present (the distinct-index pass only). + indices: Option>>, + /// (c'): per load site (the load's index within the iteration), how many of its evaluations read a source value + /// of 0 or all ones (class v4 sub-version 2; counted for every class, judged for class v4 only). + sat_source: Vec, and_acc: [u32; 8], or_acc: [u32; 8], saturated: u32, @@ -198,9 +382,15 @@ fn run_unit(p: &Program, unit: usize, base: u32, acc: &mut Acc, lane_addrs: &mut let mut scratch = if p.has_scratch() { Some(ScratchModel::new(p.class.scratch_slots_per_lane())) } else { None }; let slot_mask = p.class.scratch_slot_mask(); let era = p.class.era; + // Class v4 sub-version 3 (AP-F8-3, 7 October 2026): the acceptance interpreter runs the latency-shadow block + // after instruction 63 of every iteration, `reps` times with the iteration's `sel`, exactly as the hash does + // (verify.rs). Until this commit it ran the 64 base instructions only, so every dynamic test (c) judged a class v4 + // program the chain never hashes. The shadow block holds no load, so its instructions take the same arms. + let shadow_reps = p.shadow_reps(); for it in 0..ITERATIONS { let sel = r[0]; - for (k, ins) in p.instrs.iter().enumerate() { + let shadow_pass = (0..shadow_reps).flat_map(|_| p.shadow.iter().enumerate().map(|(k, i)| (INSTR_COUNT + k, i))); + for (k, ins) in p.instrs.iter().enumerate().chain(shadow_pass) { let d = ins.dst as usize; let a = ins.src as usize; match ins.op { @@ -289,8 +479,17 @@ fn run_unit(p: &Program, unit: usize, base: u32, acc: &mut Acc, lane_addrs: &mut // word (verify::fold_words); width 1 is the lottery hash's xor of one word. let width = ins.width as usize; let align = !(ins.width as u32 - 1); + let site = nload % (loads / ITERATIONS); for lane in 0..LANES { - idx[lane] = load_index(era.as_ref(), ins, r[a][lane], mask, ACCEPT_DATASET_LOG2) & align; + let v = r[a][lane]; + acc.sat_source[site] += (v == 0 || v == u32::MAX) as u32; + if let Some(src) = acc.sources.as_mut() { + src[site].push(v); + } + idx[lane] = load_index(era.as_ref(), ins, v, mask, ACCEPT_DATASET_LOG2) & align; + if let Some(ix) = acc.indices.as_mut() { + ix[site].push(idx[lane]); + } } if idx.iter().all(|&x| x == idx[0]) { return Err(Reject::LaneConstantSite { iteration: it as u8, instr: k as u8, unit: unit as u8 }); @@ -368,7 +567,18 @@ fn run_unit(p: &Program, unit: usize, base: u32, acc: &mut Acc, lane_addrs: &mut /// Part (c). pub fn check_dynamic(p: &Program) -> Result { let loads = p.loads_per_hash(); - let mut acc = Acc { and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + let v4 = is_class_v4_shape(&p.class); + let sites = loads / ITERATIONS; + let mut acc = Acc { + sources: None, + indices: None, + sat_source: vec![0; sites], + and_acc: [u32::MAX; 8], + or_acc: [0; 8], + saturated: 0, + bit_ones: [0; 64], + distinct_sum: 0, + }; let mut lane_addrs = vec![0u32; LANES * loads]; for (unit, &base) in accept_base_nonces(&p.seed).iter().enumerate() { run_unit(p, unit, base, &mut acc, &mut lane_addrs)?; @@ -382,6 +592,17 @@ pub fn check_dynamic(p: &Program) -> Result { if acc.saturated >= MAX_SATURATED { return Err(Reject::Saturated { count: acc.saturated }); } + // (c'), class v4 sub-version 2 (AP-F8-1, 7 October 2026): a load whose source is saturated reads one fixed word, + // whatever delivered the saturation (an or-written value, a rotate of one, a load after a saturated load); the + // source rule of the draw removes the writers it can see and this count catches every delivery. Keyed on the + // class v4 shape as the draw's rule is, so v2 and v3 verdicts do not move. + if v4 { + if let Some((site, &count)) = acc.sat_source.iter().enumerate().find(|(_, &c)| c >= MAX_SATURATED) { + return Err(Reject::SaturatedSource { site: site as u8, count }); + } + // (c''), the ratio on the candidate that passed everything else (the draw's last and dearest test) + check_distinct_indices_v4(p)?; + } let half = (ACCEPT_HASHES / 2) as u32; let mut bias_max = 0u32; for (bit, &ones) in acc.bit_ones.iter().enumerate() { @@ -435,7 +656,7 @@ mod tests { let ds = DatasetSource::from_key(p.seed, DatasetMode::ClosedForm, ACCEPT_DATASET_LOG2); let bases = accept_base_nonces(&p.seed); let loads = p.loads_per_hash(); - let mut acc = Acc { and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + let mut acc = Acc { sources: None, indices: None, sat_source: vec![0; 64], and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; let mut la = vec![0u32; LANES * loads]; let mut ones = [0u32; 64]; for (u, &b) in bases.iter().enumerate() { @@ -450,6 +671,49 @@ mod tests { } } + /// AP-F8-3 (7 October 2026): the acceptance's execution and `verify.rs` agree on a class v4 program WITH its + /// shadow block (the output bit counts over the 64 units on the closed-form dataset, the same sel per iteration), + /// so the two paths cannot diverge again: until sub-version 3 the acceptance ran the base program only and judged + /// a program the chain never hashes. The devnet epoch-0 seed and the six test eras, 8 x 256 x 27 shadow + /// instructions per hash each; the same program with its shadow stripped gives other counts. + #[test] + fn acceptance_executes_the_shadow_block_as_the_verifier_does() { + use crate::generator::{generate_era, EraParams, V3_ALLOWED, V4_CLASS}; + let hx = |h: &str| -> Vec { (0..h.len()).step_by(2).map(|i| u8::from_str_radix(&h[i..i + 2], 16).unwrap()).collect() }; + let g = hx("edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07"); + let mut eras = vec![g.clone()]; + for n in 0..6 { + eras.push(EraParams::test_era_bytes(&format!("igneum-era-test/{n}")).to_vec()); + } + for era in &eras { + let p = generate_era("igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", &g, V4_CLASS, era, &V3_ALLOWED); + assert_eq!(p.shadow.len(), 256); + assert_eq!(p.shadow_reps(), 27); + let ds = DatasetSource::from_key(p.seed, DatasetMode::ClosedForm, ACCEPT_DATASET_LOG2); + let bases = accept_base_nonces(&p.seed); + let mut acc = Acc { sources: None, indices: None, sat_source: vec![0; 64], and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + let mut la = vec![0u32; LANES * p.loads_per_hash()]; + let mut ones = [0u32; 64]; + for (u, &b) in bases.iter().enumerate() { + run_unit(&p, u, b, &mut acc, &mut la).unwrap(); + for h in crate::verify::hash_warp(&p, b, &ds) { + for j in 0..64 { + ones[j] += ((h >> j) & 1) as u32; + } + } + } + assert_eq!(acc.bit_ones, ones, "the acceptance's execution of a class v4 program (shadow block included) matches the verifier's hashes"); + // and the same program with its shadow stripped hashes differently: the shadow is executed, not skipped + let mut bare = p.clone(); + bare.shadow.clear(); + let mut acc2 = Acc { sources: None, indices: None, sat_source: vec![0; 64], and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + for (u, &b) in bases.iter().enumerate() { + let _ = run_unit(&bare, u, b, &mut acc2, &mut la); + } + assert_ne!(acc.bit_ones, acc2.bit_ones, "the shadow block changes the acceptance's execution"); + } + } + /// The instrumented interpreter agrees with `verify.rs` on the closed-form dataset keyed by the seed words. #[test] fn instrumented_interpreter_matches_verify() { @@ -458,7 +722,7 @@ mod tests { let p = candidate(&s, s.as_bytes(), 0); let ds = DatasetSource::from_key(p.seed, DatasetMode::ClosedForm, ACCEPT_DATASET_LOG2); let bases = accept_base_nonces(&p.seed); - let mut acc = Acc { and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + let mut acc = Acc { sources: None, indices: None, sat_source: vec![0; 64], and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; let mut la = vec![0u32; LANES * p.loads_per_hash()]; let mut ones = [0u32; 64]; let mut any = false; @@ -501,7 +765,7 @@ mod tests { let p = generate_class("igneum-genesis", LoadClass::hot(96, 4)); let words = p.hot_words(); let loads = p.loads_per_hash(); - let mut acc = Acc { and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; + let mut acc = Acc { sources: None, indices: None, sat_source: vec![0; 64], and_acc: [u32::MAX; 8], or_acc: [0; 8], saturated: 0, bit_ones: [0; 64], distinct_sum: 0 }; let mut la = vec![0u32; LANES * loads]; let mut buckets = [0u64; 16]; let mut hot_count = 0u64; diff --git a/igneum-pow/src/generator.rs b/igneum-pow/src/generator.rs index 13ac517a5..9c2ebe05a 100644 --- a/igneum-pow/src/generator.rs +++ b/igneum-pow/src/generator.rs @@ -54,6 +54,18 @@ pub const LOAD_SLOTS: usize = 16; /// Attempts before an implementation may treat the seed as a consensus fault (spec 01 section 1.4.6). At the /// measured 5.14 percent rejection rate the chance of 32 consecutive rejections is below 2^-136. pub const MAX_ATTEMPTS: u32 = 32; + +/// The attempt cap of class v4 sub-version 2 (AP-F8-2, 7 October 2026): rules (a') and (c') reject about two thirds of +/// candidates, so 32 attempts exhaust with probability about (2/3)^32, 2e-6 per epoch seed, one epoch no node could +/// draw every few decades at one epoch an hour (seen at chain-shaped seed igneum-f9/331672). At 256 attempts the +/// exhaustion probability is (2/3)^256, under 1e-45; the cost of a rejected attempt is one draw and the 64-unit check, +/// about 2 ms on one core, so the worst case is half a second. Keyed on the class v4 shape, so v2 and v3 keep 32. +pub const MAX_ATTEMPTS_V4: u32 = 256; + +/// The attempt cap of a class: [`MAX_ATTEMPTS_V4`] for the class v4 shape, [`MAX_ATTEMPTS`] otherwise. +pub fn max_attempts_for(class: &LoadClass) -> u32 { + if crate::accept::is_class_v4_shape(class) { MAX_ATTEMPTS_V4 } else { MAX_ATTEMPTS } +} /// Domain tag of the program id. pub const PROGRAM_ID_TAG: &[u8] = b"igneum-program/"; @@ -1095,9 +1107,11 @@ pub fn program_id(generator: u32, seed: &[u32; 8], attempt: u32) -> u64 { fnv1a64(&b) } -/// The sub-version of class v4's program stream, in every generator-4 program id and pack (AP-F8-1: 1 = the -/// load-source rule of `candidate_from_words_class`; 0 was the stream of 6 October 2026, never stamped). -pub const PROGRAM_SUBVERSION_V4: u16 = 1; +/// The sub-version of class v4's program stream, in every generator-4 program id and pack (AP-F8-3: 3 = the +/// acceptance executing the shadow block as the hash does, so its verdicts judge the program the chain hashes; +/// 2 = the dataflow load-source rule and the saturated-source check (c'), never shipped; 1 = the one-writer rule, +/// the stream 0.3.20 and 0.3.21 ship as object byte 5; 0 was the stream of 6 October 2026, never stamped). +pub const PROGRAM_SUBVERSION_V4: u16 = 3; /// Domain tag of the program id of a read-width class (never collides with [`PROGRAM_ID_TAG`]). pub const PROGRAM_ID_TAG_RW: &[u8] = b"igneum-program-rw/"; @@ -1237,19 +1251,26 @@ pub fn candidate_from_words_class( is_hot[slot as usize] = true; } // (2) The instructions. `fresh[r]`: r was written by an earlier instruction and no load has read it since. - // Class v4's chain draw (AP-F8-1, 7 October 2026, `docs/analysis/ca3-v4-uniform.md`): a load's source is drawn - // only from registers whose last writer injects or is a rotate (`entropy_kept[r]`), never from one last written - // by `or`, `mul` or `mulhi` (an `or`-written source is all-ones with probability (3/4)^32 per read and made the - // 153x item of the finding). Keyed on the era-composed V4_CLASS so the generator-2 ladder packs keep their stream; - // v2 and v3 take no part. The draw order and the stream are otherwise the same, draw for draw. - // Keyed on the class with the shadow's pass count set aside (the latency ladder draws the same base program at - // every rung: `of_load_class` compares the pass count too and answered None at every rung but 27, found by the - // fork's ladder test, 7 October 2026 10:06Z), the same comparison the fork's "v4 is v3 plus the shadow" test makes. - let source_rule_v4 = class.era.is_some() - && matches!(class.shadow, Some(ShadowClass { instrs: V4_SHADOW_INSTRS, .. })) + // Class v4's load-source rule (AP-F8-1, 7 October 2026, `docs/analysis/ca3-v4-uniform.md`; sub-version 2): + // a load's source is drawn only from registers that are FRESH by dataflow. Fresh at the program start (the init + // words are a per-lane hash of the nonce); after an op, the destination is fresh when: a load's source was fresh + // (a saturated source reads one fixed word and leaves a constant); add, sub, xor, mad or shfl had a fresh operand + // (dst or src); rotl or rotr rotated a fresh value (a rotate maps all-ones to all-ones); never after or, mul or + // mulhi (an or-written value is all-ones with probability (3/4)^32 per read, the 153x item of the finding; mul + // zeroes low bits; mulhi is dense near zero). Sub-version 1 looked one writer back and counted every load and + // rotate as fresh, which let an or-saturated value through a rotate or a load-after-load chain (F8's p6, p31). + // Keyed on the class v4 shape (the 256-instruction shadow block over the class v3 base, the pass count and the + // era set aside) on EVERY draw path, era or not, so a census through candidate_class reads the same stream as + // the chain; v2, v3 and every other class take no part. The draw order and the stream are otherwise the same. + let source_rule_v4 = matches!(class.shadow, Some(ShadowClass { instrs: V4_SHADOW_INSTRS, .. })) && LoadClass { era: None, shadow: None, ..class } == LoadClass { shadow: None, ..V4_CLASS }; let mut fresh = [false; 8]; - let mut entropy_kept = [false; 8]; + let mut fresh_value = [true; 8]; + // the shared-operand idiom (AP-F8-1, sub-version 3): after `or d |= s`, a later `xor d ^= s` or `sub d -= s` with + // s unwritten since is `d & ~s`; after `xor d ^= s`, a later `or d |= s` is `d | s`: lossy either way, though + // the second op would count as injecting on its own. `pair_op[d]` holds the (op, s) of the last or/xor on d + // while neither d nor s has been written since. + let mut pair_op: [Option<(Op, usize)>; 8] = [None; 8]; let mut instrs = Vec::with_capacity(INSTR_COUNT); for k in 0..INSTR_COUNT { let mut roll = rng.below(75); @@ -1275,7 +1296,7 @@ pub fn candidate_from_words_class( let mut eligible = [0u64; 8]; let mut n = 0usize; for r in 0..8u64 { - if r != dst && fresh[r as usize] && (!source_rule_v4 || entropy_kept[r as usize]) { + if r != dst && fresh[r as usize] && (!source_rule_v4 || fresh_value[r as usize]) { eligible[n] = r; n += 1; } @@ -1323,7 +1344,26 @@ pub fn candidate_from_words_class( fresh[src as usize] = false; } fresh[dst as usize] = true; - entropy_kept[dst as usize] = op.injects() || matches!(op, Op::Rotl | Op::Rotr); + let (d, a) = (dst as usize, src as usize); + let masked = matches!((pair_op[d], op), (Some((Op::Or, s)), Op::Xor) | (Some((Op::Or, s)), Op::Sub) | (Some((Op::Xor, s)), Op::Or) if s == a); + fresh_value[d] = !masked + && match op { + Op::Load | Op::WLoad | Op::Scratch | Op::Hot => fresh_value[a], + Op::Add | Op::Sub | Op::Xor | Op::Mad | Op::Shfl => fresh_value[d] || fresh_value[a], + Op::Rotl | Op::Rotr => fresh_value[d], + Op::Or | Op::Mul | Op::MulHi => false, + }; + // a write to d sets or clears d's pair; a write to any register clears every pair that names it as operand + pair_op[d] = if matches!(op, Op::Or | Op::Xor) && !masked { Some((op, a)) } else { None }; + for r in 0..8 { + if r != d { + if let Some((_, s)) = pair_op[r] { + if s == d { + pair_op[r] = None; + } + } + } + } instrs.push(Instr { op, dst: dst as u8, src: src as u8, src2: b as u8, imm, imm2, rot, bit: bit as u8, mask, width, win, off }); } // (3) The latency-shadow block (Counter ASIC 3.0 item 8): drawn after the base program from the same stream, so @@ -1410,14 +1450,38 @@ pub fn try_generate_from_seed_bytes(seed_string: &str, seed_bytes: &[u8]) -> Res /// [`try_generate_from_seed_bytes`] for a load class. pub fn try_generate_class(seed_string: &str, seed_bytes: &[u8], class: LoadClass) -> Result { let mut last = None; - for attempt in 0..MAX_ATTEMPTS { + let cap = max_attempts_for(&class); + for attempt in 0..cap { let p = candidate_class(seed_string, seed_bytes, attempt, class); match check(&p) { Ok(_) => return Ok(p), Err(r) => last = Some(r), } } - Err(Exhausted { seed_string: seed_string.to_string(), attempts: MAX_ATTEMPTS, last: last.unwrap() }) + if crate::accept::is_class_v4_shape(&class) { + // AP-F8-2 (7 October 2026, main's ruling: the draw is total and no consensus path panics): a class v4 seed that + // exhausts its attempts takes the last-resort program, deterministic and accepted as drawn + return Ok(last_resort_v4(candidate_class(seed_string, seed_bytes, cap, class))); + } + Err(Exhausted { seed_string: seed_string.to_string(), attempts: cap, last: last.unwrap() }) +} + +/// The last-resort program of a class v4 seed whose [`MAX_ATTEMPTS_V4`] candidates were all rejected (AP-F8-2): +/// the candidate at attempt [`MAX_ATTEMPTS_V4`] with every `or`, `mul` and `mulhi` of its base program and its shadow +/// block rewritten to `xor` (dst, src and the other fields kept). With no lossy op left every register stays fresh by dataflow from the +/// init words on, so rule (a') holds by construction; the program is the seed's consensus program as drawn, with no +/// further check, so the draw is total. It is reached with probability about (2/3)^256 per epoch seed (the measured +/// (a') plus (c') rejection rate of about two thirds per attempt), under 1e-45: the chain never sees it, and a test +/// walks it on real rejected candidates so the path is known to run. +pub fn last_resort_v4(mut p: Program) -> Program { + // the shadow block runs at the end of every iteration and its own lossy ops feed the next iteration's loads + // (rule (a') walks base then shadow to its fixpoint), so both are rewritten + for i in p.instrs.iter_mut().chain(p.shadow.iter_mut()) { + if matches!(i.op, Op::Or | Op::Mul | Op::MulHi) { + i.op = Op::Xor; + } + } + p } /// [`try_generate_from_seed_bytes`], treating exhaustion as the consensus fault it is. @@ -1815,6 +1879,184 @@ mod tests { /// from registers whose last writer keeps entropy, so it is its own stream over class v3's load slots and era /// draw; its generator is 4, its id `program_id(4, seed, attempt)` with the sub-version suffix, its era recorded; /// v2 and v3 are untouched. + /// Every load's source fresh by dataflow in the loop's steady state: the crate's own rule (a') of `accept.rs`. + fn every_load_source_fresh(p: &Program) -> bool { + crate::accept::check_fresh_sources_v4(p).is_ok() + } + + /// Class v4 sub-version 3, rule (c''): the distinct-index ratio refuses F8's low-entropy band on the chain's own + /// candidates (the first attempt of each strong seed past (a), (b), (c) and (c') fails the 2^20 pass), and the + /// shared-operand rule removes p23's value constant at the draw: the chain's attempt 1 (id d65122675f16a1c7) draws + /// site 7 from r5 and passes; the same program with that source put back to r6 (`or r6 |= r4; xor r6 ^= r4` + /// upstream) is refused by the static rule and, run anyway, by the ratio. + #[test] + fn class_v4_distinct_ratio_rejects_the_low_entropy_band() { + use crate::accept::{check_dynamic, check_static, Reject}; + use crate::seed::seed_words_from_bytes; + let w = |s: String| -> Vec { seed_words_from_bytes(s.as_bytes()).iter().flat_map(|x| x.to_le_bytes()).collect() }; + let f8 = |k: u32| (w(format!("igneum-attack-f8/program/{k}")), w(format!("igneum-attack-f8/era/{k}"))); + let candidate = |epoch: &[u8], era: &[u8], attempt: u32| { + let label = format!("igneum-epoch/{}", epoch.iter().map(|b| format!("{b:02x}")).collect::()); + let mut p = candidate_class(&label, epoch, attempt, LoadClass::era(V4_CLASS, era, &V3_ALLOWED)); + p.generator = GENERATOR_VERSION_V4; + p.era_bytes = Some(era.to_vec()); + p + }; + for k in [15u32, 18, 19, 56] { + let (epoch, era) = f8(k); + let mut seen = None; + for attempt in 0..MAX_ATTEMPTS_V4 { + let p = candidate(&epoch, &era, attempt); + let t0 = std::time::Instant::now(); + match check_static(&p).and_then(|_| check_dynamic(&p).map(|_| ())) { + Err(Reject::LowEntropySite { site, distinct, evaluations, ratio_milli }) => { + println!("p{k} attempt {attempt} id {:016x}: (c'') site {site} read {distinct} distinct over {evaluations}, ratio {}.{:03}, {:.1} s", p.program_id(), ratio_milli / 1000, ratio_milli % 1000, t0.elapsed().as_secs_f64()); + seen = Some(attempt); + break; + } + Err(_) => continue, + Ok(()) => break, + } + } + assert!(seen.is_some(), "p{k}: the chain reaches a candidate only the ratio refuses"); + } + let (epoch, era) = f8(23); + let p = candidate(&epoch, &era, 1); + assert_eq!(p.program_id(), 0xd65122675f16a1c7); + let site7 = p.instrs.iter().enumerate().filter(|(_, i)| i.op.is_load()).nth(7).map(|(k, _)| k).unwrap(); + println!("p23 attempt 1: site 7 is instruction {site7}, source r{}", p.instrs[site7].src); + assert_eq!(p.instrs[site7].src, 5, "the shared-operand rule moved site 7 off r6"); + assert!(check_static(&p).is_ok(), "p23 attempt 1 passes the static rule"); + let t0 = std::time::Instant::now(); + let v = check_dynamic(&p).map(|_| ()); + println!("p23 attempt 1 dynamic: {:?} in {:.1} s", v.as_ref().err().map(|x| x.to_string()), t0.elapsed().as_secs_f64()); + assert!(v.is_ok(), "p23 attempt 1 passes the dynamic rule"); + let mut q = p.clone(); + q.instrs[site7].src = 6; + assert!(matches!(check_static(&q), Err(Reject::UnfreshLoadSource { .. })), "the value constant's load is refused by the static rule"); + let v = check_dynamic(&q).map(|_| ()); + println!("p23 attempt 1 with site 7 from r6: {:?}", v.as_ref().err().map(|x| x.to_string())); + assert!(matches!(v, Err(Reject::LowEntropySite { .. })), "and by the ratio when run"); + } + + /// Diagnostic (AP-F8-1, p23): the distinct word indices per site on the closed-form words at 2^20 and 2^24 + /// evaluations, for the program F8 measured (attempt 1, id d64dbc675f13be9e): site 7 (instruction 38) reads + /// r6 = (mulhi(..) | r4) ^ r4 = r6 & ~r4, an andnot idiom the lineage rule counts as fresh. + #[test] + #[ignore] + fn diag_p23_distinct_indices_per_site() { + let hx = |h: &str| -> Vec { (0..h.len()).step_by(2).map(|i| u8::from_str_radix(&h[i..i + 2], 16).unwrap()).collect() }; + let e = hx("01aa1485fcb5d59223ca40602086e618277decf440188c5a55898f635f7be34f"); + let r = hx("00951c99e7ef952fd52611b8de7c07cc705cdec9e129a31a19d696c99909f052"); + let mut p = candidate_class("igneum-epoch/01aa1485fcb5d59223ca40602086e618277decf440188c5a55898f635f7be34f", &e, 1, LoadClass::era(V4_CLASS, &r, &V3_ALLOWED)); + p.generator = GENERATOR_VERSION_V4; + p.era_bytes = Some(r.clone()); + assert_eq!(p.program_id(), 0xd64dbc675f13be9e); + for units in [4096usize, 65536] { + let t0 = std::time::Instant::now(); + let d = crate::accept::distinct_indices_v4(&p, units).unwrap(); + println!("p23 d64dbc675f13be9e at {} evaluations per site ({:.1} s): distinct word indices per site {:?}; site 7 = {} (log2 {:.1})", units * 32 * 8, t0.elapsed().as_secs_f64(), d, d[7], (d[7] as f64).log2()); + } + } + + /// The threshold measurement for the second sub-version 3 commit: every F8 program (p1 = the devnet epoch-0 seeds, + /// p2 to p64 = the attack-pass harness's label-derived seeds), drawn under this commit's verdicts, each load + /// site's distinct word indices over 2^20 evaluations against the window expectation N - N^2 / 2W, the minimum + /// ratio per seed. Clean seeds set the threshold; the failing seeds of F8's table must sit below it. + #[test] + #[ignore] + fn diag_f8_64_distinct_index_ratios() { + use crate::seed::seed_words_from_bytes; + let w = |s: String| -> Vec { seed_words_from_bytes(s.as_bytes()).iter().flat_map(|x| x.to_le_bytes()).collect() }; + let hx = |h: &str| -> Vec { (0..h.len()).step_by(2).map(|i| u8::from_str_radix(&h[i..i + 2], 16).unwrap()).collect() }; + let n = 1u64 << 20; + for k in 1..=64u32 { + let (epoch, era) = if k == 1 { + let g = hx("edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07"); + (g.clone(), g) + } else { + (w(format!("igneum-attack-f8/program/{k}")), w(format!("igneum-attack-f8/era/{k}"))) + }; + let label = format!("igneum-epoch/{}", epoch.iter().map(|b| format!("{b:02x}")).collect::()); + let p = generate_era(&label, &epoch, V4_CLASS, &era, &V3_ALLOWED); + let t0 = std::time::Instant::now(); + let d = crate::accept::distinct_indices_v4(&p, 4096).unwrap(); + let mut ratios = Vec::new(); + let mut site = 0usize; + for i in &p.instrs { + if !i.op.is_load() { continue; } + let k_off = (i.win as u64).min(2); + let wsize = (1u64 << 28) >> k_off; + let expected = n as f64 - (n as f64) * (n as f64) / (2.0 * wsize as f64); + ratios.push((d[site] as f64 / expected, site, i.win)); + site += 1; + } + let (min_ratio, min_site, min_win) = ratios.iter().cloned().fold((9.0, 0, 0), |a, b| if b.0 < a.0 { b } else { a }); + println!("RATIO p{k} attempt {} id {:016x}: min {:.4} at site {} (win {}) ; all {} ; {:.1} s", p.attempt, p.program_id(), min_ratio, min_site, min_win, ratios.iter().map(|r| format!("{:.3}", r.0)).collect::>().join(" "), t0.elapsed().as_secs_f64()); + } + } + + /// The 2^24 reach of the ratio for the weak failing seeds (p34, p4, p8, p10 at 1.22x to 1.50x sit inside the + /// clean spread at 2^20), with p23 and five clean seeds as the scale. + #[test] + #[ignore] + fn diag_f8_weak_seeds_at_2e24() { + use crate::seed::seed_words_from_bytes; + let w = |s: String| -> Vec { seed_words_from_bytes(s.as_bytes()).iter().flat_map(|x| x.to_le_bytes()).collect() }; + let n = 1u64 << 24; + for k in [34u32, 4, 8, 10, 23, 2, 3, 5, 44, 52] { + let (epoch, era) = (w(format!("igneum-attack-f8/program/{k}")), w(format!("igneum-attack-f8/era/{k}"))); + let label = format!("igneum-epoch/{}", epoch.iter().map(|b| format!("{b:02x}")).collect::()); + let p = generate_era(&label, &epoch, V4_CLASS, &era, &V3_ALLOWED); + let t0 = std::time::Instant::now(); + let d = crate::accept::distinct_indices_v4(&p, 65536).unwrap(); + let mut ratios = Vec::new(); + let mut site = 0usize; + for i in &p.instrs { + if !i.op.is_load() { continue; } + let wsize = (1u64 << 28) >> (i.win as u64).min(2); + let expected = n as f64 - (n as f64) * (n as f64) / (2.0 * wsize as f64); + ratios.push(d[site] as f64 / expected); + site += 1; + } + let min = ratios.iter().cloned().fold(9.0f64, f64::min); + println!("RATIO24 p{k} attempt {} id {:016x}: min {:.4} ; all {} ; {:.1} s", p.attempt, p.program_id(), min, ratios.iter().map(|r| format!("{:.3}", r)).collect::>().join(" "), t0.elapsed().as_secs_f64()); + } + } + + #[test] + fn class_v4_draw_is_total_with_the_last_resort() { + assert_eq!(max_attempts_for(&V4_CLASS), MAX_ATTEMPTS_V4); + assert_eq!(max_attempts_for(&LoadClass::era(V4_CLASS, &[7u8; 32], &V3_ALLOWED)), MAX_ATTEMPTS_V4); + assert_eq!(max_attempts_for(&V3_CLASS), MAX_ATTEMPTS); + assert_eq!(max_attempts_for(&LoadClass::V2), MAX_ATTEMPTS); + let class = LoadClass::era(V4_CLASS, &EraParams::test_era_bytes("igneum-era-test/0"), &V3_ALLOWED); + // real candidates that rule (a') rejects (the exhausting shape of seed igneum-f9/331672 at 07a809a7: 32 in a + // row), repaired by the last resort: every load's source fresh in the loop's steady state + let mut rejected = 0; + for i in 0..64u32 { + let seed = format!("igneum-ca3-v4-amend/total/{i}"); + for attempt in 0..4u32 { + let c = candidate_class(&seed, seed.as_bytes(), attempt, class); + if matches!(crate::accept::check_fresh_sources_v4(&c), Err(crate::accept::Reject::UnfreshLoadSource { .. })) { + rejected += 1; + let fixed = last_resort_v4(c.clone()); + assert!(crate::accept::check_fresh_sources_v4(&fixed).is_ok(), "{seed} attempt {attempt}: the last resort is fresh at every load"); + assert!(fixed.instrs.iter().chain(fixed.shadow.iter()).all(|i| !matches!(i.op, Op::Or | Op::Mul | Op::MulHi))); + assert_eq!((fixed.instrs.len(), fixed.shadow.len()), (c.instrs.len(), c.shadow.len())); + } + } + } + assert!(rejected > 0, "the sample holds (a')-rejected candidates (about two thirds of attempts do)"); + // the chain path is total: 64 seeds, every one a program + for i in 0..64u32 { + let seed = format!("igneum-ca3-v4-amend/total/{i}"); + let p = try_generate_class(&seed, seed.as_bytes(), class).expect("a class v4 seed always draws"); + assert!(crate::accept::check_fresh_sources_v4(&p).is_ok()); + assert!(p.attempt < MAX_ATTEMPTS_V4 || p.instrs.iter().chain(p.shadow.iter()).all(|i| !matches!(i.op, Op::Or | Op::Mul | Op::MulHi))); + } + } + #[test] fn program_class_v4_is_class_v3_with_the_shadow_block() { assert_eq!(V4_CLASS, V3_CLASS.with_shadow(256, 27)); @@ -1834,20 +2076,28 @@ mod tests { // whose last writer injects or rotates, so its base program is its own stream (the 6 October stream, equal // to class v3's draw for draw, is sub-version 0 and never stamped); the load slots, the op draws and the era // draw are still class v3's, and every load site obeys the rule - assert_eq!(v4.seed, v3.seed); + // sub-version 2 rejects candidates (rules (a') and (c')), so the accepted attempt can differ from class v3's and + // the seed words carry the attempt: compare with the class v3 candidate at the SAME attempt + let v3c = candidate_class("igneum-genesis", b"igneum-genesis", v4.attempt, LoadClass::era(V3_CLASS, &era, &V3_ALLOWED)); + assert_eq!(v4.seed, v3c.seed); assert_eq!( v4.instrs.iter().map(|i| i.op.is_load()).collect::>(), - v3.instrs.iter().map(|i| i.op.is_load()).collect::>(), - "the load slots are class v3's" + v3c.instrs.iter().map(|i| i.op.is_load()).collect::>(), + "the load slots are class v3's at the same attempt" ); - let mut kept = [false; 8]; - for (k, i) in v4.instrs.iter().enumerate() { - if i.op.is_load() { - assert!(kept[i.src as usize], "load #{k} reads r{} whose last writer does not keep entropy", i.src); - } - kept[i.dst as usize] = i.op.injects() || matches!(i.op, Op::Rotl | Op::Rotr); + assert!(every_load_source_fresh(&v4), "every load of the amended v4 program reads a fresh register"); + let v3c_as_v4 = Program { class: v4.class, shadow: v4.shadow.clone(), ..v3c.clone() }; + if !every_load_source_fresh(&v3c_as_v4) { + assert_ne!(v4.instrs, v3c.instrs, "the amended v4 base program is not class v3's (a lossy-sourced load was redrawn)"); } - assert_ne!(v4.instrs, v3.instrs, "the amended v4 base program is not class v3's (a lossy-sourced load was redrawn)"); + // the same seed without an era draws under the rule too (sub-version 2: the rule is keyed on the class shape on + // every draw path), and the v3 program of the seed is the known-failed case + let v4_no_era = generate_from_seed_bytes_class("igneum-genesis", b"igneum-genesis", V4_CLASS); + assert!(every_load_source_fresh(&v4_no_era)); + // the known-failed case: the v3 program of the same seed and era, re-labelled with the v4 shape so the rule + // applies, carries an unfresh load source (96.6 percent of chain-shaped seeds do, ca3-v4-uniform.md section 3) + let v3_as_v4 = Program { class: v4.class, shadow: v4.shadow.clone(), ..v3.clone() }; + println!("class v3 of igneum-genesis under era [7; 32] (attempt {}): every load source fresh = {}; v4 accepted at attempt {}", v3.attempt, every_load_source_fresh(&v3_as_v4), v4.attempt); assert!(v3.shadow.is_empty() && !v3.has_shadow()); assert_eq!(v4.shadow.len(), 256); assert_eq!(v4.shadow_reps(), 27); @@ -2105,10 +2355,16 @@ mod tests { fn shadow_class_leaves_the_base_program_and_class_v3_untouched() { // Counter ASIC 3.0 item 8: the shadow is drawn after the 64 base instructions, so the base program, its // attempt and its acceptance verdict are the class's without the shadow; v2 and v3 draw nothing. + // Since class v4 sub-version 2 (AP-F8-1) a 256-instruction block over MX8 is the class v4 shape and draws its + // load sources under the dataflow rule on every path, so the "untouched" property is shown on a 64-instruction + // block (a measurement class, no rule) and the 256-block is shown to obey the rule instead let base = generate_class("igneum-genesis", LoadClass::MX8); + let sh64 = generate_class("igneum-genesis", LoadClass::MX8.with_shadow(64, 13)); + assert_eq!(sh64.instrs, base.instrs); + assert_eq!(sh64.attempt, base.attempt); + assert_eq!(sh64.shadow.len(), 64); let sh = generate_class("igneum-genesis", LoadClass::MX8.with_shadow(256, 13)); - assert_eq!(sh.instrs, base.instrs); - assert_eq!(sh.attempt, base.attempt); + assert!(crate::accept::check_fresh_sources_v4(&sh).is_ok(), "a 256-block over MX8 draws under the class v4 source rule"); assert!(base.shadow.is_empty() && !base.has_shadow() && base.shadow_instrs_per_hash() == 0); assert_eq!(sh.shadow.len(), 256); assert!(sh.has_shadow()); diff --git a/igneum-pow/tests/mixer.rs b/igneum-pow/tests/mixer.rs index 6230ee115..61e32aa05 100644 --- a/igneum-pow/tests/mixer.rs +++ b/igneum-pow/tests/mixer.rs @@ -18,7 +18,7 @@ //! shadow, draw for draw. The edge test is the dataset's alone (the shadow touches no dataset word) and takes no class. use igneum_pow::emit::{export_pack, vectors_json}; -use igneum_pow::generator::{era_generator_of, generate_era, generate_from_seed_bytes, generate_from_seed_bytes_class, generate_from_seed_bytes_program_class, EraParams, LoadClass, Op, Program, ProgramClass, GENERATOR_VERSION_V3, GENERATOR_VERSION_V4, INSTR_COUNT, V3_ALLOWED, V3_CLASS}; +use igneum_pow::generator::{era_generator_of, generate_era, generate_from_seed_bytes, generate_from_seed_bytes_class, generate_from_seed_bytes_program_class, EraParams, LoadClass, Op, Program, ProgramClass, GENERATOR_VERSION_V3, GENERATOR_VERSION_V4, INSTR_COUNT, V3_ALLOWED, V3_CLASS, V4_CLASS, V4_SHADOW_INSTRS}; use igneum_pow::memhard::{derive_item, mixer, round_key, Cache, MixParams, Shape}; use igneum_pow::seed::{day_key, SplitMix64}; use igneum_pow::verify::{DatasetMode, DatasetSource, Epoch}; @@ -92,16 +92,24 @@ fn contract(p: &Program, seed: &str, class: LoadClass, era: Option<[u8; 32]>) { assert_eq!((i.width, i.win, i.off), (1, 0, 0), "shadow #{k}: no load fields"); } let base = program_of(seed, LoadClass { shadow: None, ..class }, era); - if p.generator == GENERATOR_VERSION_V4 { - // the amended class v4 (AP-F8-1): the chain draw takes a load's source only from registers whose - // last writer injects or rotates, so its base program is its own stream, not class v3's; what holds - // is the rule itself, checked here on every load site in draw order - let mut kept = [false; 8]; + let v4_shape = LoadClass { era: None, shadow: None, ..class } == LoadClass { shadow: None, ..V4_CLASS } && sh.instrs == V4_SHADOW_INSTRS; + if v4_shape { + // the amended class v4 (AP-F8-1, sub-version 2): on every draw path a load's source is a register + // fresh by dataflow (a load keeps freshness only from a fresh source; add, sub, xor, mad, shfl from + // either operand; rotates from their operand; or, mul, mulhi never), so its base program is its own + // stream, not class v3's; what holds is the rule itself, checked here on every load site in draw order + let mut fresh = [true; 8]; for (k, i) in p.instrs.iter().enumerate() { + let (d, a) = (i.dst as usize, i.src as usize); if i.op.is_load() { - assert!(kept[i.src as usize], "{seed}: load #{k} reads r{} whose last writer does not keep entropy", i.src); + assert!(fresh[a], "{seed}: load #{k} reads r{} which is not fresh by dataflow", i.src); } - kept[i.dst as usize] = i.op.injects() || matches!(i.op, Op::Rotl | Op::Rotr); + fresh[d] = match i.op { + Op::Load | Op::WLoad | Op::Scratch | Op::Hot => fresh[a], + Op::Add | Op::Sub | Op::Xor | Op::Mad | Op::Shfl => fresh[d] || fresh[a], + Op::Rotl | Op::Rotr => fresh[d], + Op::Or | Op::Mul | Op::MulHi => false, + }; } } else { assert_eq!(p.instrs, base.instrs, "{seed}: the base program is the class's without the shadow"); diff --git a/igneum-pow/tests/recheck.rs b/igneum-pow/tests/recheck.rs index ad0210b15..9b2f4f768 100644 --- a/igneum-pow/tests/recheck.rs +++ b/igneum-pow/tests/recheck.rs @@ -132,9 +132,12 @@ fn program_ids_differ_between_class_v3_and_class_v4_of_one_seed() { let v3 = load("packs-ca2-mixer/mx8-devnet-epoch0", ProgramClass::V3); let v4 = load("packs-ca3-v4/v4-devnet-epoch0", ProgramClass::V4); assert_eq!(v3.reference.program.program_id(), 0x73bc_bfe8_ccf9_88f1, "the v3 control's id as pinned"); - // the amended class v4 (AP-F8-1, sub-version 1): the id of 6 October 2026, c120d7963abdcd96, is the must-differ - // vector (a binary from before the load-source rule), the pinned id below the must-equal one + // the amended class v4 (AP-F8-1, AP-F8-3): sub-version 3 (object byte 7; the acceptance executes the shadow block) + // is the pinned id below; c120d7963abdcd96 (the 6 October stream, byte 4), 1a4230699a6b9c60 (sub-version 1, the + // one-writer rule, 0.3.20's and 0.3.21's byte 5) and a788661687db4bb3 (sub-version 2, never shipped) must differ assert_ne!(v4.reference.program.program_id(), 0xc120_d796_3abd_cd96, "the pre-amendment v4 id must differ"); - assert_eq!(v4.reference.program.program_id(), 0x1a42_3069_9a6b_9c60, "the amended v4 candidate's id as pinned"); + assert_ne!(v4.reference.program.program_id(), 0x1a42_3069_9a6b_9c60, "the sub-version-1 id must differ"); + assert_ne!(v4.reference.program.program_id(), 0xa788_6616_87db_4bb3, "the sub-version-2 id must differ"); + assert_eq!(v4.reference.program.program_id(), 0xa785_0016_87d8_688a, "the sub-version-3 v4 id as pinned"); assert_ne!(v3.reference.program.program_id(), v4.reference.program.program_id()); } diff --git a/infra/build-server/devnet3/devnet3.sh b/infra/build-server/devnet3/devnet3.sh new file mode 100755 index 000000000..d8a97319e --- /dev/null +++ b/infra/build-server/devnet3/devnet3.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Devnet 3 (0.3.22) on igneum-build-1: the seed as a bare process and the hands' second instances. Dry run by default, --go executes. +# infra/build-server/devnet3/devnet3.sh seed [--go] start the Devnet 3 seed (empty datadir, NET_FLAGS, the seed ports), read back +# infra/build-server/devnet3/devnet3.sh node1 [--go] a second node1 instance on Devnet 3 (own datadir and ports), read back +# infra/build-server/devnet3/devnet3.sh observer-node [--go] the same for the observer node (p2p on loopback, peers node1-dn3) +# infra/build-server/devnet3/devnet3.sh status pids, ports, digest and genesis lines of the three +# Read-back per instance: the first log line (igneumd/-), the commit string count in the running binary, the +# "Consensus params digest" line (the devnet-3 digest), the "[igneum-exec] genesis executed" line, the GRPC and P2P server +# lines. No unit yet: the processes are detached (setsid nohup) under the build user like the Devnet 2 seed; units follow once the +# network is green. The old devnet's node1 and observer-node are not touched. +set -euo pipefail +HERE=$(cd "$(dirname "$0")" && pwd); . "$HERE/devnet3.env" +KEY="${IGNEUM_BUILD_KEY:-$HOME/.ssh/igneum_ed25519}"; HOST=$(head -1 "${IGNEUM_BUILD_HOST_FILE:-$HOME/.config/igneum/build-server}" | tr -d '[:space:]') +SSH=(ssh -i "$KEY" -o BatchMode=yes -o ConnectTimeout=15 "$HOST") +say() { echo "$(TZ=Europe/London date '+%H:%M:%S %Z') devnet3: $*" >&2; } +mode="${1:-}"; shift || true; GO=0; [ "${1:-}" = --go ] && GO=1 +case "$NET_FLAGS" in *suffix=3*) say "NET_FLAGS is still the placeholder ($NET_FLAGS): the node lane's flag goes into devnet3.env first" ;; esac +case "$IGNEUMD" in *PLACEHOLDER*) [ "$mode" = status ] || { say "IGNEUMD is the placeholder: the 0.3.22 candidate's build fills it"; [ "$GO" = 0 ] || exit 1; } ;; esac +start_one() { # [extra args...] + local name="$1" appdir="$2" p2p="$3" rpc="$4" json="$5" evm="$6" log="$7"; shift 7 + local args="$NET_FLAGS --appdir=$appdir --rpclisten=127.0.0.1:$rpc --rpclisten-json=127.0.0.1:$json --evm-rpclisten=127.0.0.1:$evm --listen=$p2p --nodnsseed --disable-upnp --nologfiles --yes $*" + if [ "$GO" = 0 ]; then say "DRY $name: $IGNEUMD $args > $log"; return 0; fi + "${SSH[@]}" bash -s -- "$name" "$IGNEUMD" "$appdir" "$log" "$args" <<'REMOTE' +set -euo pipefail; name="$1"; bin="$2"; appdir="$3"; log="$4"; args="$5" +[ -x "$bin" ] || { echo "no binary $bin"; exit 1; } +mkdir -p "$appdir"; [ -z "$(ls -A "$appdir")" ] || echo "note: $appdir is not empty" +cd "$(dirname "$log")"; setsid nohup "$bin" $args > "$log" 2>&1 < /dev/null & pid=$!; sleep 8 +echo "$name pid $pid alive=$(kill -0 $pid 2>/dev/null && echo yes || echo NO) commit-strings=$(grep -a -c "$(echo "$bin" | grep -oE '[0-9a-f]{8}' | tail -1)" /proc/$pid/exe 2>/dev/null || echo ?)" +head -1 "$log" | cut -c1-120; grep -oE "Consensus params digest: [0-9a-f]+" "$log" | head -1 +for i in $(seq 1 20); do grep -qE "genesis [0-9a-f]{8,} executed|P2P Server starting" "$log" && break; sleep 1; done +grep -oE "genesis [0-9a-f]+ executed" "$log" | head -1; grep -E "GRPC Server starting|P2P Server starting" "$log" | head -2 | cut -c1-100 +grep -iE "panic|error" "$log" | head -2 | cut -c1-140 || true +REMOTE +} +case "$mode" in + seed) start_one dn3-seed "$DN3_SEED_APPDIR" "0.0.0.0:$DN3_SEED_P2P" "$DN3_SEED_RPC" "$DN3_SEED_JSON" "$DN3_SEED_EVM" "$DN3_SEED_LOG" --maxinpeers=128 --outpeers=8 ;; + node1) start_one node1-dn3 "$DN3_NODE1_APPDIR" "0.0.0.0:$DN3_NODE1_P2P" "$DN3_NODE1_RPC" "$DN3_NODE1_JSON" "$DN3_NODE1_EVM" /srv/hands/node1-dn3.log --enable-unsynced-mining --addpeer=127.0.0.1:$DN3_SEED_P2P --maxinpeers=128 --outpeers=8 ;; + observer-node) start_one observer-dn3 "$DN3_OBS_APPDIR" "127.0.0.1:$DN3_OBS_P2P" "$DN3_OBS_RPC" "$DN3_OBS_JSON" "$DN3_OBS_EVM" /srv/hands/observer-dn3.log --addpeer=127.0.0.1:$DN3_NODE1_P2P --addpeer=127.0.0.1:$DN3_SEED_P2P ;; + status) "${SSH[@]}" "for l in $DN3_SEED_LOG /srv/hands/node1-dn3.log /srv/hands/observer-dn3.log; do [ -f \$l ] && { echo \"== \$l\"; head -1 \$l | cut -c1-100; grep -oE 'Consensus params digest: [0-9a-f]+|genesis [0-9a-f]+ executed' \$l | head -2; tail -1 \$l | cut -c1-120; }; done; ss -ltn | awk '{print \$4}' | grep -E ':(26631|26651|26661|27630|26650|26660)\$' | tr '\n' ' '; echo" ;; + *) sed -n '2,12p' "$0" | sed 's/^# \{0,1\}//'; exit 2 ;; +esac diff --git a/infra/build-server/provision.sh b/infra/build-server/provision.sh index 909a45d70..a40c9b948 100755 --- a/infra/build-server/provision.sh +++ b/infra/build-server/provision.sh @@ -55,9 +55,9 @@ SCCACHE_VERSION="${SCCACHE_VERSION:-}" NODE_MAJOR="${NODE_MAJOR:-22}" WORKTREES="${WORKTREES:-}" SLOTS_GIVEN="${SLOTS:-}"; SLOTS="${SLOTS:-2}" # 2 since main's ruling of 6 October 2026 (20:3x UK); remote-run.sh gives 90 jobs alone, 45 beside another -P2P_PORTS="${P2P_PORTS:-26611 26811 26621}" # 26621: the Devnet 2 seed on build-1 (blocked by ufw until 7 Oct 2026 16:40 BST; the fleet lane found it closed from outside) +P2P_PORTS="${P2P_PORTS:-26611 26811 26621 26631 26651}" # 26631 the Devnet 3 seed, 26651 the hands' Devnet 3 node1 (0.3.22, placeholders until the object lands) # 26621: the Devnet 2 seed on build-1 (blocked by ufw until 7 Oct 2026 16:40 BST; the fleet lane found it closed from outside) BOX_HOSTNAME="${BOX_HOSTNAME:-igneum-build-1}" -case "$BOX_HOSTNAME" in *-2) [ -n "$SLOTS_GIVEN" ] || SLOTS=3 ;; esac # build-2: three slots (main, 7 Oct 2026; the bounded runs take one 32-core band each) +case "$BOX_HOSTNAME" in *-2|*-4) [ -n "$SLOTS_GIVEN" ] || SLOTS=3 ;; esac # build-2 and build-4 (AX162-1, 96 threads): three slots (main, 7 Oct 2026; the bounded runs take one 32-core band each) WORKERS_HOST="${WORKERS_HOST:-build.igneum.network}" # the dashboard feed's HTTPS name (A record in deSEC, 6 Oct 2026) SSH_PUBKEY="${SSH_PUBKEY:-}" BUILD_USER=build @@ -75,7 +75,7 @@ RUNNER_LABELS="${RUNNER_LABELS:-igneum-build-1,ci-red}" # added to the defau # holds the red watcher's record file and poster. A second box: BOX_HOSTNAME=igneum-build-2 # RUNNER_LABELS=igneum-build-1,igneum-build-2 RUNNER_CPUS=0-31 RUNNER_JOBS=32 (register.sh --host) RUNNER_CPUS="${RUNNER_CPUS:-}" # AllowedCPUs for the runner's service when set (a second box is bounded like a suite: 32 cores, nice 10) -case "$BOX_HOSTNAME" in *-2|*-3) [ -n "$RUNNER_CPUS" ] || RUNNER_CPUS="0-31" ;; esac # build-2 and build-3 join the pool (label igneum-build-1) bounded to 32 cores at Nice 10 (main, 7 Oct 2026) +case "$BOX_HOSTNAME" in *-2|*-3|*-4) [ -n "$RUNNER_CPUS" ] || RUNNER_CPUS="0-31" ;; esac # build-2, build-3 and build-4 join the pool (label igneum-build-1) bounded to 32 cores at Nice 10 (main, 7 Oct 2026) RUNNER_JOBS="${RUNNER_JOBS:-48}" # cargo jobs for a CI job: half the box, the agents' builds keep the rest RUNNER_TOKEN="${RUNNER_TOKEN:-}" # a registration token (1 h), from infra/build-server/runner/register.sh over stdin; never logged RUNNER_SCCACHE_PORT="${RUNNER_SCCACHE_PORT:-4227}" # the runner's own sccache server; 4226 is the build user's diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cl index e1be8bee1..2fc43692a 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cu index b0a692f86..7c8d33454 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x13/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cl index 857b927e4..441b691cd 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cu index 905e46250..84ebcee8f 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x13/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/program.json b/proto-cuda/packs-ca3-shadow/sh256x13/program.json index 6042bbe0d..b52604393 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x13/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/program.metal b/proto-cuda/packs-ca3-shadow/sh256x13/program.metal index 6a17edfd7..482f96a83 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x13/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x13/program_bound.metal index c089f8803..e22b25eb3 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x13/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x13/vectors.h index c1adcfecb..76a690841 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x13/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xb359d110ac143375ull, 0x748fb5308223a682ull, 0x2a809644b94a8216ull, 0x18548dad2999d526ull, 0xb793809331b0a189ull, 0x55b034de97b5dcfdull, 0x9506b188c1becd3cull, 0x6f2a3986cb1967b3ull, - 0x376f13355e35e6c4ull, 0x35db684678b0567bull, 0xfec8f41452c07083ull, 0x324ad57e71b201e5ull, 0x1f5def2519b0dff9ull, 0x07e54a4494f2283dull, 0xc698336cb18b866cull, 0xc9808c2475fe8d66ull, - 0x82021978b9d61925ull, 0x0ef2fa3310887ec6ull, 0xdb17534bb857c9ccull, 0x5203cbc6bdb4bbb2ull, 0xb0b2b24438cf1cc0ull, 0xcb1fa6bf5e701935ull, 0x3dca8b3408c4a3f7ull, 0xd7610b168cf2943cull, - 0xcfe566147a489c75ull, 0x6294533ee65da77dull, 0x2e0774f316868b26ull, 0xd2a10f4303777610ull, 0x2e3a4b91c8962246ull, 0x00063a312aa1f50bull, 0x003794aceed11052ull, 0xcc181405cd575561ull + 0x5e04f2a662a5ee43ull, 0xfe226a51dd3afd9aull, 0xf736ad4273733d12ull, 0x80f4cd86b586f13cull, 0xdfda49a7a0e11d97ull, 0x34e000a92f1c9ab6ull, 0x71fa206fa17a3813ull, 0x279bb4d961e951f9ull, + 0x44b548b4c0109247ull, 0x14fae88f0d5514fbull, 0x35296b3bd3ffbaccull, 0x4d8c207d0f391affull, 0x2cd057e83726b941ull, 0xf1bb4599785b699cull, 0xd6a414ebcc6dc7c1ull, 0x8afd0368d5df9139ull, + 0x1614cc8584c6c682ull, 0xce12af63e979b447ull, 0x268a513c362cb199ull, 0xebce51d1aae78c01ull, 0x5b0f71a66352bc21ull, 0xfe513dd2648b2872ull, 0xe142ebaf2ee35e37ull, 0xac5d966480dc08d5ull, + 0x1d133c9f1ed91b0full, 0xc4aa96d50fec0e8dull, 0x59ca4a63a929e172ull, 0xb30b5c9e79708581ull, 0xc74583963054fd5aull, 0x0aecb6eeda83528cull, 0xd521a8d59a0d9773ull, 0xfabfdee2d6b2d993ull }, { // base nonce 4096 - 0x382ff31a848c87ceull, 0x9f83773ad5a14bf6ull, 0xb256ecebb8fcf4dcull, 0x000c632632ea0cedull, 0xcaf1f89dc457ab50ull, 0x6a3b9f2156b7b00dull, 0x9b428f619265dcfcull, 0x907f65c3591b88c6ull, - 0x0f225df3fbfb67e2ull, 0x29614e20ca52a926ull, 0x4655beaea3ad2759ull, 0xf995b623fcc6644dull, 0xce65301573c94490ull, 0xc7870bc7e5052ee9ull, 0xf7b89744f3b0b132ull, 0x80351dd1981ed5e3ull, - 0xa878aa51b297dcfcull, 0x001a834e5e050e8eull, 0xca2c133d9937349dull, 0x82d3b88dddc886bfull, 0x7ae69bce58a3da0cull, 0x4561f608a0e10777ull, 0x86a12f3d2bb459c9ull, 0x860f5151394991f8ull, - 0xe55b559c5c954cb8ull, 0x4bcbcdbefcaf412dull, 0x1e74dbd57413e73dull, 0x03d197ea39c77502ull, 0xfdff34586270344aull, 0x7e1ff6220cbc0124ull, 0xba28400b90b409d8ull, 0x592cd3eb57e1d660ull + 0xb4b0be3c11586a64ull, 0x924c56c10e0715c8ull, 0xa4f627f711ee801aull, 0x3b714eac31c24d6cull, 0x0876873cfa1abf7cull, 0x46901d0403e71760ull, 0x800200b3b7f6011cull, 0x5f4ddc69c6148d25ull, + 0xb5cb7eba7f8928b9ull, 0xc58b74264346e396ull, 0xe2566c24beaf4c02ull, 0x8c843649ac00da07ull, 0x3ae5fba79913ae34ull, 0x12f99a3701698b6eull, 0xaa1de1cd97326e16ull, 0x86221c6426e264abull, + 0x450585ff15c07cdfull, 0xe58ac64873a2613eull, 0xf537b3ff2abe3faaull, 0x7867e98279d70e30ull, 0x503ac705eb462d5aull, 0xc221cc5691c9dbc4ull, 0xc92cdf77dcd8fca4ull, 0x873bce6930f4e1daull, + 0xc80ef692bbf49e24ull, 0x1c6ac25a60b402edull, 0xae5be74c32c59413ull, 0x84a7efc802f2497full, 0x789fb21ca1d4a4a6ull, 0x796ef675c20d482aull, 0x0dcb663ad2347c5dull, 0x08d02c61a1de7606ull }, { // base nonce 1000000 - 0x99769bd9e253e017ull, 0xda7db4183c7fb68bull, 0xff5782631ce7fa14ull, 0x5c6494df049901faull, 0x3d49b9a6b55f9ee6ull, 0xa7f999e4384da8dbull, 0xd1312b67803a0c72ull, 0x85f5d8f8bb33dc9full, - 0x63664a37b11f311aull, 0x28a4b561cf2f7b36ull, 0x7674177403abf2c8ull, 0xf6ef2c094f5cb4afull, 0xbdc4a803a2e91ff4ull, 0x4459a81585f5f6e0ull, 0xb4098eb87a7489feull, 0x60d9b048e1bbefdeull, - 0xd0aec740e4aba722ull, 0x69d9e3e9c99c5391ull, 0x040fe663cbcbfdc2ull, 0x38e3b8eab6a7b6b4ull, 0x8a606e5c69c02b3full, 0xe1dd929d4296cde3ull, 0x2ad80e84d9072b65ull, 0xa1f34ff68012fd66ull, - 0xa2351892f47fbd27ull, 0xd88d059c58979055ull, 0x0c5d59a61c9c5b0bull, 0xd16f446ddd7119c7ull, 0x47aa1f6c4b48d944ull, 0xf6164e14d2937532ull, 0xd344f8977fd2d100ull, 0xf76f271447d7d772ull + 0x36d2a7c6694899f9ull, 0xe3a69827afe2c802ull, 0x27de29596b337104ull, 0x35f6908a655858d8ull, 0x69c2d88cc9494983ull, 0x274c8e3c25691905ull, 0xe4643e32c6bdd4bdull, 0xb814592665fcaf1dull, + 0xc8856f25adffbb32ull, 0x54e65e1af2ce0a92ull, 0x941b684140d99181ull, 0x9a4df41a22bd6386ull, 0x1c92fcbd298469b8ull, 0x825da611d82ebe4dull, 0x250e717c7813a839ull, 0x84b682df083f9fb8ull, + 0xe74a0443cde9cdd0ull, 0x573837a42cc1e276ull, 0x3bade0c3ba303196ull, 0xf9203e7bc3c7d217ull, 0xeed69b57673b9acbull, 0xb1b022dffd763aefull, 0x2d37b011e5508026ull, 0x514703dacca456d9ull, + 0x6d7fc77b9445a656ull, 0x7ff97c50a072e84bull, 0x9c65865ddef3fd30ull, 0x9b22990afa34c19cull, 0x75b28ae408ef946dull, 0x6647bb9eeaca10e6ull, 0x4b4b8cbf12ce6de1ull, 0x737d8bd3aa6767abull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x13/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x13/vectors.json index b3562c1ef..28f72d9dd 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x13/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x13/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xb359d110ac143375", "0x748fb5308223a682", "0x2a809644b94a8216", "0x18548dad2999d526", "0xb793809331b0a189", "0x55b034de97b5dcfd", "0x9506b188c1becd3c", "0x6f2a3986cb1967b3", - "0x376f13355e35e6c4", "0x35db684678b0567b", "0xfec8f41452c07083", "0x324ad57e71b201e5", "0x1f5def2519b0dff9", "0x07e54a4494f2283d", "0xc698336cb18b866c", "0xc9808c2475fe8d66", - "0x82021978b9d61925", "0x0ef2fa3310887ec6", "0xdb17534bb857c9cc", "0x5203cbc6bdb4bbb2", "0xb0b2b24438cf1cc0", "0xcb1fa6bf5e701935", "0x3dca8b3408c4a3f7", "0xd7610b168cf2943c", - "0xcfe566147a489c75", "0x6294533ee65da77d", "0x2e0774f316868b26", "0xd2a10f4303777610", "0x2e3a4b91c8962246", "0x00063a312aa1f50b", "0x003794aceed11052", "0xcc181405cd575561" + "0x5e04f2a662a5ee43", "0xfe226a51dd3afd9a", "0xf736ad4273733d12", "0x80f4cd86b586f13c", "0xdfda49a7a0e11d97", "0x34e000a92f1c9ab6", "0x71fa206fa17a3813", "0x279bb4d961e951f9", + "0x44b548b4c0109247", "0x14fae88f0d5514fb", "0x35296b3bd3ffbacc", "0x4d8c207d0f391aff", "0x2cd057e83726b941", "0xf1bb4599785b699c", "0xd6a414ebcc6dc7c1", "0x8afd0368d5df9139", + "0x1614cc8584c6c682", "0xce12af63e979b447", "0x268a513c362cb199", "0xebce51d1aae78c01", "0x5b0f71a66352bc21", "0xfe513dd2648b2872", "0xe142ebaf2ee35e37", "0xac5d966480dc08d5", + "0x1d133c9f1ed91b0f", "0xc4aa96d50fec0e8d", "0x59ca4a63a929e172", "0xb30b5c9e79708581", "0xc74583963054fd5a", "0x0aecb6eeda83528c", "0xd521a8d59a0d9773", "0xfabfdee2d6b2d993" ]}, {"base_nonce": 4096, "expected": [ - "0x382ff31a848c87ce", "0x9f83773ad5a14bf6", "0xb256ecebb8fcf4dc", "0x000c632632ea0ced", "0xcaf1f89dc457ab50", "0x6a3b9f2156b7b00d", "0x9b428f619265dcfc", "0x907f65c3591b88c6", - "0x0f225df3fbfb67e2", "0x29614e20ca52a926", "0x4655beaea3ad2759", "0xf995b623fcc6644d", "0xce65301573c94490", "0xc7870bc7e5052ee9", "0xf7b89744f3b0b132", "0x80351dd1981ed5e3", - "0xa878aa51b297dcfc", "0x001a834e5e050e8e", "0xca2c133d9937349d", "0x82d3b88dddc886bf", "0x7ae69bce58a3da0c", "0x4561f608a0e10777", "0x86a12f3d2bb459c9", "0x860f5151394991f8", - "0xe55b559c5c954cb8", "0x4bcbcdbefcaf412d", "0x1e74dbd57413e73d", "0x03d197ea39c77502", "0xfdff34586270344a", "0x7e1ff6220cbc0124", "0xba28400b90b409d8", "0x592cd3eb57e1d660" + "0xb4b0be3c11586a64", "0x924c56c10e0715c8", "0xa4f627f711ee801a", "0x3b714eac31c24d6c", "0x0876873cfa1abf7c", "0x46901d0403e71760", "0x800200b3b7f6011c", "0x5f4ddc69c6148d25", + "0xb5cb7eba7f8928b9", "0xc58b74264346e396", "0xe2566c24beaf4c02", "0x8c843649ac00da07", "0x3ae5fba79913ae34", "0x12f99a3701698b6e", "0xaa1de1cd97326e16", "0x86221c6426e264ab", + "0x450585ff15c07cdf", "0xe58ac64873a2613e", "0xf537b3ff2abe3faa", "0x7867e98279d70e30", "0x503ac705eb462d5a", "0xc221cc5691c9dbc4", "0xc92cdf77dcd8fca4", "0x873bce6930f4e1da", + "0xc80ef692bbf49e24", "0x1c6ac25a60b402ed", "0xae5be74c32c59413", "0x84a7efc802f2497f", "0x789fb21ca1d4a4a6", "0x796ef675c20d482a", "0x0dcb663ad2347c5d", "0x08d02c61a1de7606" ]}, {"base_nonce": 1000000, "expected": [ - "0x99769bd9e253e017", "0xda7db4183c7fb68b", "0xff5782631ce7fa14", "0x5c6494df049901fa", "0x3d49b9a6b55f9ee6", "0xa7f999e4384da8db", "0xd1312b67803a0c72", "0x85f5d8f8bb33dc9f", - "0x63664a37b11f311a", "0x28a4b561cf2f7b36", "0x7674177403abf2c8", "0xf6ef2c094f5cb4af", "0xbdc4a803a2e91ff4", "0x4459a81585f5f6e0", "0xb4098eb87a7489fe", "0x60d9b048e1bbefde", - "0xd0aec740e4aba722", "0x69d9e3e9c99c5391", "0x040fe663cbcbfdc2", "0x38e3b8eab6a7b6b4", "0x8a606e5c69c02b3f", "0xe1dd929d4296cde3", "0x2ad80e84d9072b65", "0xa1f34ff68012fd66", - "0xa2351892f47fbd27", "0xd88d059c58979055", "0x0c5d59a61c9c5b0b", "0xd16f446ddd7119c7", "0x47aa1f6c4b48d944", "0xf6164e14d2937532", "0xd344f8977fd2d100", "0xf76f271447d7d772" + "0x36d2a7c6694899f9", "0xe3a69827afe2c802", "0x27de29596b337104", "0x35f6908a655858d8", "0x69c2d88cc9494983", "0x274c8e3c25691905", "0xe4643e32c6bdd4bd", "0xb814592665fcaf1d", + "0xc8856f25adffbb32", "0x54e65e1af2ce0a92", "0x941b684140d99181", "0x9a4df41a22bd6386", "0x1c92fcbd298469b8", "0x825da611d82ebe4d", "0x250e717c7813a839", "0x84b682df083f9fb8", + "0xe74a0443cde9cdd0", "0x573837a42cc1e276", "0x3bade0c3ba303196", "0xf9203e7bc3c7d217", "0xeed69b57673b9acb", "0xb1b022dffd763aef", "0x2d37b011e5508026", "0x514703dacca456d9", + "0x6d7fc77b9445a656", "0x7ff97c50a072e84b", "0x9c65865ddef3fd30", "0x9b22990afa34c19c", "0x75b28ae408ef946d", "0x6647bb9eeaca10e6", "0x4b4b8cbf12ce6de1", "0x737d8bd3aa6767ab" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cl index 8d5ca53aa..5212c2aa0 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cu index c56c8d003..1811a7590 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x2/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cl index b98be4e5f..40c0abff5 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cu index a21c99632..c20159b89 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x2/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/program.json b/proto-cuda/packs-ca3-shadow/sh256x2/program.json index f614ebbe1..4fb063297 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x2/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/program.metal b/proto-cuda/packs-ca3-shadow/sh256x2/program.metal index 654862e09..a9c76069a 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x2/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x2/program_bound.metal index 976bdef5c..56c2b1217 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x2/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x2/vectors.h index aac6ba40e..5388824ac 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x2/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x04e491e95153d0c0ull, 0x4c42169e1e0b8105ull, 0x0d90a3f13ae112f5ull, 0x7655b613a9d5c4a1ull, 0x175f062319f0c695ull, 0x03353125cf0b0b99ull, 0xf7b735876b46c7c6ull, 0x8237cad948b448ffull, - 0x7e3457c2012f86a1ull, 0xd263e7d83b4bcf46ull, 0x59a40a1e54938c0dull, 0x1b9d1ce89913ead7ull, 0xfb61039aba89f77cull, 0x72e74850db581418ull, 0x3b3ba880375afd7bull, 0xa272b7c295b800d6ull, - 0xe5170a8eb49dc9a4ull, 0x9a09fef0590c4f68ull, 0xe339e58d335c62b1ull, 0xbbe4dcd67ef024e4ull, 0xb58d47107235fc41ull, 0x74fb7ba7185593c2ull, 0xc748f87aa4be1db6ull, 0xd3145c4e1af3852cull, - 0x2dc5b295462aa440ull, 0xd4c1f90dd516b1deull, 0xdf3749272aaa156bull, 0x5b975060e5e9ee08ull, 0x19aa57c02ff889d2ull, 0x86bf447f041aa78bull, 0x51a9bf4b0e40016aull, 0xf4cc02d0f2be1e30ull + 0xeed0aaa8c875a81cull, 0x8fd1962216b3516aull, 0xd625a5c4ae6b090eull, 0x637f4c1f4b113f0full, 0x30a517daaf1401e4ull, 0x21d805bc223df268ull, 0x520a9c2d40956d0eull, 0xb92bd5fb3339f6deull, + 0x5a0deb23e2eea0c7ull, 0x6fd799a057893a01ull, 0xc29d9c586d515ad7ull, 0xaba72863040a6c88ull, 0x8aa61065cfc2f6a6ull, 0x8879b9f0122e2a1dull, 0x322b8ba37c9dd1f6ull, 0xac1f70366649900dull, + 0xe4e965ac8348a1c6ull, 0xb8fec9763ccd6e84ull, 0x1ddd79224fe2d798ull, 0xc18154f52c37dc4full, 0x599ff3aea26add17ull, 0x4aa0ad827d84700eull, 0x5afa7ba898a5e581ull, 0x250e3d26d1f713b6ull, + 0xab8b5843abbf0a1bull, 0x06295eb8cdd68dcaull, 0x8a604b404d1831cbull, 0x84c26782fc3d0655ull, 0xd5d5a4c5baaeab87ull, 0xe79f44de60b1230bull, 0x6dbef1c3ec820084ull, 0x2e9e5d205b88da52ull }, { // base nonce 4096 - 0xfa09e795bcf4cc16ull, 0x74a0400fc0d4dd31ull, 0x18aca4406173e8b4ull, 0x3a20caf44908e583ull, 0x6fdfd9cf0198f91aull, 0x96d3c284b0e23363ull, 0x2d0237e263af2f32ull, 0xc44c5d56ddb5492eull, - 0xf862e9bb6fb96d29ull, 0x1679aa2bf73dd7f6ull, 0x123bd29e9e98b2a7ull, 0x7a2bf08712d1f05aull, 0x13eef78a31863d73ull, 0xb2c3d02ef4751a6full, 0x264c88bd8165d431ull, 0x9a1c44a5dd2f4a5dull, - 0xb2d647e692987978ull, 0x8f7fe312b703f739ull, 0x359ea150a66f254cull, 0x7432685b3fa426f6ull, 0x9fbf8c15aff45253ull, 0x30a58e634bd3e321ull, 0x68b90886acfd416cull, 0xe3bcbe6f0477291bull, - 0x33d0e37352364c88ull, 0xa69355a1e959fab7ull, 0x1f4da9c95e497dcfull, 0x66d1a41ad8b76ed9ull, 0x888cfa862362596cull, 0xdf64b72bd1469706ull, 0x29aebe5f9290a5afull, 0x426640cc3a300384ull + 0x26824b2d1e14a4abull, 0xd3a87418563cb4b9ull, 0x39dff66300ab5f1bull, 0xcc507255ffa0ec5aull, 0x031ad8efd2e47b27ull, 0x7635bc88e9ed3ee1ull, 0x73aea0055fd96691ull, 0xcc56c029d6aff931ull, + 0xfe79b398e363efddull, 0x1a10b34c890af966ull, 0xd11141d356588affull, 0x09dcf93810b3d8b7ull, 0x87b581a9be6f549cull, 0x0e927749f371070full, 0xe5e5e1c1e3320404ull, 0x3d3c8bd899d2316bull, + 0x9225c1920f8383efull, 0x3663e535ca589d18ull, 0xa8a0a2cc3c234908ull, 0xd564fc6989e26261ull, 0x15d2cce02d61c97bull, 0xdd541a3eb8dcdf68ull, 0xe5303c9cf3290d8dull, 0x8342df4aabc6eb1full, + 0xb76b6f61a9776055ull, 0x89627ea126fb5f6cull, 0xa77cf8cbfcf4aec9ull, 0x2f3ae1253d0abc4full, 0xbbecb52544f8745dull, 0x56a26c8206d842b4ull, 0x3205c2d2638130ddull, 0x3a7bffcf8b10045aull }, { // base nonce 1000000 - 0x3085acf29175f955ull, 0x71fce956fef7c0dcull, 0xd65f7f4f7b5da589ull, 0xf453369353c73bb8ull, 0x28e13e24ae8d9f89ull, 0xd7a3594113498879ull, 0x8f1f8db45dd80ee6ull, 0x847d40b7357ca8ebull, - 0xa199177bc3f7f7a3ull, 0x26e92f6b2077b4d4ull, 0x24f9f1863917dcbcull, 0x1a030d008b777b08ull, 0xebcc0cc9db7c412eull, 0xebb9e3bfa513b0c0ull, 0x5acf6325ac29d53bull, 0xc36c4c199faf1234ull, - 0xacff161df7f202a1ull, 0x2805c39d5bbfb402ull, 0xc3b49f0eda801af6ull, 0x669fa3adaf9cecfeull, 0x9d2b9f502941f5a6ull, 0x18f6d5ad37784f60ull, 0x4cc22b6763f00357ull, 0x9a600deb62c80c0aull, - 0x9ee7ff942eb3d51full, 0x465c74e3f9c48c0eull, 0xa3e54e42f498cfe7ull, 0x3e2ed6c098a6fd94ull, 0x3a3116c0b3eda0b6ull, 0x39b64b349ca5f65eull, 0x4529d689581f15e5ull, 0x4a000068b04c79c2ull + 0x1cb50ce85b39b6e2ull, 0x2db3f37c9a6b7990ull, 0x81d5a4d21cc02d96ull, 0xfc2c73051ddae3acull, 0xa0a4c483506bc576ull, 0x54add3c8ad92e765ull, 0x45a633fdb00eee22ull, 0x17206cd279b3278eull, + 0xe96d70ae3ad68a64ull, 0xb732d0cd24aa90e0ull, 0x205ed045a0182c77ull, 0x90db182ead7e2c15ull, 0xc31d60196079d9b5ull, 0x456c8820ffa56453ull, 0x9d0f201e3be297b1ull, 0x2947fe8cdb42b1a5ull, + 0x5ac7f03f12c5b151ull, 0x4ba48097c3908319ull, 0xbb6891bfdc7b283bull, 0x083374c3398a59fdull, 0x48f22c90fa33ced1ull, 0x3f373118dcf06bd6ull, 0xc15c5690ff20047aull, 0xcdb88781e748967cull, + 0x8938bf5f7d8e7c22ull, 0xfaf9eed57785e748ull, 0x6ae3b444aa611fa7ull, 0xd9e8bd0d4e5fb26eull, 0xa1db1078718d0b3dull, 0x638c86a796180bd0ull, 0x9f73d45e5061603dull, 0x609a8d515b1f71f2ull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x2/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x2/vectors.json index e6516b9db..b94871e0b 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x2/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x2/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x04e491e95153d0c0", "0x4c42169e1e0b8105", "0x0d90a3f13ae112f5", "0x7655b613a9d5c4a1", "0x175f062319f0c695", "0x03353125cf0b0b99", "0xf7b735876b46c7c6", "0x8237cad948b448ff", - "0x7e3457c2012f86a1", "0xd263e7d83b4bcf46", "0x59a40a1e54938c0d", "0x1b9d1ce89913ead7", "0xfb61039aba89f77c", "0x72e74850db581418", "0x3b3ba880375afd7b", "0xa272b7c295b800d6", - "0xe5170a8eb49dc9a4", "0x9a09fef0590c4f68", "0xe339e58d335c62b1", "0xbbe4dcd67ef024e4", "0xb58d47107235fc41", "0x74fb7ba7185593c2", "0xc748f87aa4be1db6", "0xd3145c4e1af3852c", - "0x2dc5b295462aa440", "0xd4c1f90dd516b1de", "0xdf3749272aaa156b", "0x5b975060e5e9ee08", "0x19aa57c02ff889d2", "0x86bf447f041aa78b", "0x51a9bf4b0e40016a", "0xf4cc02d0f2be1e30" + "0xeed0aaa8c875a81c", "0x8fd1962216b3516a", "0xd625a5c4ae6b090e", "0x637f4c1f4b113f0f", "0x30a517daaf1401e4", "0x21d805bc223df268", "0x520a9c2d40956d0e", "0xb92bd5fb3339f6de", + "0x5a0deb23e2eea0c7", "0x6fd799a057893a01", "0xc29d9c586d515ad7", "0xaba72863040a6c88", "0x8aa61065cfc2f6a6", "0x8879b9f0122e2a1d", "0x322b8ba37c9dd1f6", "0xac1f70366649900d", + "0xe4e965ac8348a1c6", "0xb8fec9763ccd6e84", "0x1ddd79224fe2d798", "0xc18154f52c37dc4f", "0x599ff3aea26add17", "0x4aa0ad827d84700e", "0x5afa7ba898a5e581", "0x250e3d26d1f713b6", + "0xab8b5843abbf0a1b", "0x06295eb8cdd68dca", "0x8a604b404d1831cb", "0x84c26782fc3d0655", "0xd5d5a4c5baaeab87", "0xe79f44de60b1230b", "0x6dbef1c3ec820084", "0x2e9e5d205b88da52" ]}, {"base_nonce": 4096, "expected": [ - "0xfa09e795bcf4cc16", "0x74a0400fc0d4dd31", "0x18aca4406173e8b4", "0x3a20caf44908e583", "0x6fdfd9cf0198f91a", "0x96d3c284b0e23363", "0x2d0237e263af2f32", "0xc44c5d56ddb5492e", - "0xf862e9bb6fb96d29", "0x1679aa2bf73dd7f6", "0x123bd29e9e98b2a7", "0x7a2bf08712d1f05a", "0x13eef78a31863d73", "0xb2c3d02ef4751a6f", "0x264c88bd8165d431", "0x9a1c44a5dd2f4a5d", - "0xb2d647e692987978", "0x8f7fe312b703f739", "0x359ea150a66f254c", "0x7432685b3fa426f6", "0x9fbf8c15aff45253", "0x30a58e634bd3e321", "0x68b90886acfd416c", "0xe3bcbe6f0477291b", - "0x33d0e37352364c88", "0xa69355a1e959fab7", "0x1f4da9c95e497dcf", "0x66d1a41ad8b76ed9", "0x888cfa862362596c", "0xdf64b72bd1469706", "0x29aebe5f9290a5af", "0x426640cc3a300384" + "0x26824b2d1e14a4ab", "0xd3a87418563cb4b9", "0x39dff66300ab5f1b", "0xcc507255ffa0ec5a", "0x031ad8efd2e47b27", "0x7635bc88e9ed3ee1", "0x73aea0055fd96691", "0xcc56c029d6aff931", + "0xfe79b398e363efdd", "0x1a10b34c890af966", "0xd11141d356588aff", "0x09dcf93810b3d8b7", "0x87b581a9be6f549c", "0x0e927749f371070f", "0xe5e5e1c1e3320404", "0x3d3c8bd899d2316b", + "0x9225c1920f8383ef", "0x3663e535ca589d18", "0xa8a0a2cc3c234908", "0xd564fc6989e26261", "0x15d2cce02d61c97b", "0xdd541a3eb8dcdf68", "0xe5303c9cf3290d8d", "0x8342df4aabc6eb1f", + "0xb76b6f61a9776055", "0x89627ea126fb5f6c", "0xa77cf8cbfcf4aec9", "0x2f3ae1253d0abc4f", "0xbbecb52544f8745d", "0x56a26c8206d842b4", "0x3205c2d2638130dd", "0x3a7bffcf8b10045a" ]}, {"base_nonce": 1000000, "expected": [ - "0x3085acf29175f955", "0x71fce956fef7c0dc", "0xd65f7f4f7b5da589", "0xf453369353c73bb8", "0x28e13e24ae8d9f89", "0xd7a3594113498879", "0x8f1f8db45dd80ee6", "0x847d40b7357ca8eb", - "0xa199177bc3f7f7a3", "0x26e92f6b2077b4d4", "0x24f9f1863917dcbc", "0x1a030d008b777b08", "0xebcc0cc9db7c412e", "0xebb9e3bfa513b0c0", "0x5acf6325ac29d53b", "0xc36c4c199faf1234", - "0xacff161df7f202a1", "0x2805c39d5bbfb402", "0xc3b49f0eda801af6", "0x669fa3adaf9cecfe", "0x9d2b9f502941f5a6", "0x18f6d5ad37784f60", "0x4cc22b6763f00357", "0x9a600deb62c80c0a", - "0x9ee7ff942eb3d51f", "0x465c74e3f9c48c0e", "0xa3e54e42f498cfe7", "0x3e2ed6c098a6fd94", "0x3a3116c0b3eda0b6", "0x39b64b349ca5f65e", "0x4529d689581f15e5", "0x4a000068b04c79c2" + "0x1cb50ce85b39b6e2", "0x2db3f37c9a6b7990", "0x81d5a4d21cc02d96", "0xfc2c73051ddae3ac", "0xa0a4c483506bc576", "0x54add3c8ad92e765", "0x45a633fdb00eee22", "0x17206cd279b3278e", + "0xe96d70ae3ad68a64", "0xb732d0cd24aa90e0", "0x205ed045a0182c77", "0x90db182ead7e2c15", "0xc31d60196079d9b5", "0x456c8820ffa56453", "0x9d0f201e3be297b1", "0x2947fe8cdb42b1a5", + "0x5ac7f03f12c5b151", "0x4ba48097c3908319", "0xbb6891bfdc7b283b", "0x083374c3398a59fd", "0x48f22c90fa33ced1", "0x3f373118dcf06bd6", "0xc15c5690ff20047a", "0xcdb88781e748967c", + "0x8938bf5f7d8e7c22", "0xfaf9eed57785e748", "0x6ae3b444aa611fa7", "0xd9e8bd0d4e5fb26e", "0xa1db1078718d0b3d", "0x638c86a796180bd0", "0x9f73d45e5061603d", "0x609a8d515b1f71f2" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cl index 72f7ca4d0..6d4a2b172 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cu index 62d29f6ff..df227c3fc 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x27/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cl index 02546cd07..f4a010f8b 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cu index 4a823531b..038c42c93 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x27/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/program.json b/proto-cuda/packs-ca3-shadow/sh256x27/program.json index 8588e0fe9..a4c1fe380 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x27/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/program.metal b/proto-cuda/packs-ca3-shadow/sh256x27/program.metal index 2830702a7..0a3b8b77a 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x27/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x27/program_bound.metal index 7a8da2d3e..48aed4d37 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x27/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x27/vectors.h index 17ce44606..b299bc00d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x27/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x2576769ee4a14c8dull, 0x6408f60b1f606a96ull, 0x8e1825542dbd3636ull, 0xb25c17d8820ae079ull, 0xb6e1a578d06323b2ull, 0x8bea2965eaa47f55ull, 0x3684da53df965532ull, 0x3392668d50a45aadull, - 0x5e78d14aaaadce6eull, 0xcb0a7992844c9192ull, 0xfe4ad7fbc328f9efull, 0x7e64515d7d5941a4ull, 0x425e4eedb7b0ca4bull, 0x4f57a8f93ce317b8ull, 0x081360e3cf765b3aull, 0x1e9e919c50331254ull, - 0x998e7a76718adcbaull, 0xde5600e2b1838d9full, 0x4f85d0539779a267ull, 0x40661123ffbce40cull, 0x95b247ca86ff61dcull, 0xbe2bf61b9fcd1362ull, 0xfd6d6687a07997daull, 0x9935965e43f25045ull, - 0x27fe1552873c0b40ull, 0x972c952c83cf5ea9ull, 0x525b975fb9610333ull, 0x4f81431408d27e2dull, 0x6375d14f804f061full, 0xff6492be48775872ull, 0x81b2e098e1a01f8full, 0xc58ddcb717dd3370ull + 0xdfbc8db1c06dacd8ull, 0xd56061f5411cc2cfull, 0x66c9911a020ba1e5ull, 0xc8b93c36c4c7a2a6ull, 0xac045e8343ea2521ull, 0x5cdddf6fc438de8bull, 0xad88eea3ea678e28ull, 0x6fbc5b7160399767ull, + 0x8073ccabd0764f0cull, 0x0e32bd34d9f4cd5full, 0x7d23625bccd7703bull, 0x481c64f93034050aull, 0x4d2493acc84787cfull, 0x853490ed669c5c6aull, 0x4e3b6fc3a3e9f661ull, 0xc87a8caad36cb1daull, + 0xd592f24a236b35d8ull, 0xbf8fceb08aa32461ull, 0xd174d9f2943500f2ull, 0xe5127777dd2876b0ull, 0xd709d6bdcc633059ull, 0xaa30a9b82f58568full, 0x1b05070b769f1f6cull, 0xfffc24d3fb2a74eeull, + 0x3c1187b38d01ba95ull, 0x90ef34ea51d4eb79ull, 0xfe124596a63bf602ull, 0x9ad0ff64e27608aeull, 0x7d4f699998541fb9ull, 0xc142eb65cadaaabaull, 0x7a73a36d7faedaa9ull, 0xb92715f32b721587ull }, { // base nonce 4096 - 0x1ce77a600ec573b4ull, 0xb126a41f83521e45ull, 0x875547a82d6145fcull, 0xd4b04bf258ce4941ull, 0xe24c23e2b2371ad6ull, 0x7687a4beddbbd270ull, 0x63b9346ba234a0beull, 0x2500fb30f5e7eb20ull, - 0x7a185d59a30e3333ull, 0xa3c14cec7e2bcce2ull, 0x5730e39d367c6b21ull, 0x03e10c84ac832a3full, 0xf6dd88e0208019efull, 0xd539425d3bc497fcull, 0x71461f5d0c23f626ull, 0xa4c64db97fb4a425ull, - 0x61f56436538b61f8ull, 0x749b10eccde2f0bcull, 0xbe447d39b5f3aa29ull, 0x0e4ada60a90088b7ull, 0x3eda0e2db0bc9f9eull, 0xf90d81a21a10089cull, 0x7cf50a8f14d2430eull, 0x14601dea6a5d8625ull, - 0x23c448ee2f31a26dull, 0x60e5c3d4b218c0c2ull, 0x46ed8a924ac431fbull, 0xcc77440ffbe5c23dull, 0x9a15a2da9d6ba946ull, 0x37117ce37ca8c606ull, 0x69b85ea283597190ull, 0x03600a05ffba0055ull + 0x433afad2164a8ddaull, 0x1fc487979b4dffb2ull, 0xbaf10a7e22b67b7dull, 0xe2f4c61b908c014aull, 0x8d588a69173db01full, 0x334c34ae7d8da448ull, 0xabf638cea27cf935ull, 0x06e3d4a1d6e0fbeeull, + 0xec3d53a3ecf99e86ull, 0x78987c6911255367ull, 0xbbc9c743d9576be5ull, 0x43d622ee7ed30a35ull, 0x339860b0560c988cull, 0x347fba26cb169315ull, 0xd510af804aa26d21ull, 0x5c3ca3e10e783ff8ull, + 0xc806f8afa12a937aull, 0xb6213f67b09846a2ull, 0xd875236923df5af6ull, 0x760e944b06c76d50ull, 0x87c2740caf1a4c63ull, 0xb80f96fe2edc6e9bull, 0xad6b33f2e4158ebeull, 0xac291295afd15709ull, + 0x33236c6ca9918da3ull, 0xc7365c50ce60c222ull, 0x53f84641982af8c6ull, 0xd6ada09dbb253a7bull, 0xab39a0bb6f49d28bull, 0xdf0d63f31cb955ecull, 0xe18f65eb0b5ccb6bull, 0x207c50f288cbb677ull }, { // base nonce 1000000 - 0x6b390e64bbdd91ceull, 0x9b34dd7b05214a6bull, 0x60c14bcda3df2768ull, 0x557f5df495f92ad5ull, 0x5ac883b3090f344bull, 0xdec4058df6f8b088ull, 0x6e3dcb56bbb79ec9ull, 0x6450bb96c6c686bdull, - 0xc2021c81ef714e23ull, 0xcc0b3f77c0cf7bf6ull, 0x03cb474759279b0dull, 0x93cf69a5cd961b9cull, 0x61318f0c14d7e3deull, 0x9df2144c49b171beull, 0xa335ecfaf465e9cdull, 0x4f8661257c1706c3ull, - 0xab374ea37f8e253cull, 0x117242d65e8ebdb4ull, 0x9022069313586cd7ull, 0xe97f096510d6ad03ull, 0xa93d76b12894ffc5ull, 0x7823119022da1590ull, 0xde6f389ece0c83e9ull, 0x84e97ea778e4fb15ull, - 0x23d0802d386a21c8ull, 0xbaacd8512e9bbb31ull, 0x10522970c58234bbull, 0x90f0b64b38eed0b1ull, 0xb250988d2986d15bull, 0xf81e101bb298710full, 0x20e9cca5ade09113ull, 0x91c944d603539c62ull + 0x4ffd090a02db43b4ull, 0x3df015d557eb7dffull, 0xb11e898d6f219179ull, 0x0ffff9c4715ea693ull, 0xc51e5ab1fff3e42dull, 0x3cbe173c74768e58ull, 0x0bc9c3d99d9082dcull, 0x190b0881a508b8b4ull, + 0x38e7b4a21c3c7d18ull, 0x34aa4afba0dfc716ull, 0x4a8f8a8027f08cd6ull, 0xe7ab045630e34a7eull, 0xa2bdea296316ac03ull, 0xdc85eb2818449894ull, 0xecf5cc78cb02cb05ull, 0xab138a76db952f3eull, + 0xf625a5704aab7146ull, 0x927d175dd5de47fcull, 0x249aedcf78d89c84ull, 0x66da14f5abee33faull, 0x8584faba12d0e357ull, 0xc1906204df361c55ull, 0x7eb470a084fc181dull, 0x74c114faf8ece5cfull, + 0xd15cb62a0e1eda86ull, 0x8ba7f1a7ab236d41ull, 0xfda39d1b301db5f5ull, 0x4a008ea52f3c438bull, 0x7b5486d62e2bbb45ull, 0x05440eaf2d1168a2ull, 0x0299a1d3e6c9e4e7ull, 0x60308a0e058e1e29ull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x27/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x27/vectors.json index c481669bf..fe8e9e0f7 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x27/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x27/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x2576769ee4a14c8d", "0x6408f60b1f606a96", "0x8e1825542dbd3636", "0xb25c17d8820ae079", "0xb6e1a578d06323b2", "0x8bea2965eaa47f55", "0x3684da53df965532", "0x3392668d50a45aad", - "0x5e78d14aaaadce6e", "0xcb0a7992844c9192", "0xfe4ad7fbc328f9ef", "0x7e64515d7d5941a4", "0x425e4eedb7b0ca4b", "0x4f57a8f93ce317b8", "0x081360e3cf765b3a", "0x1e9e919c50331254", - "0x998e7a76718adcba", "0xde5600e2b1838d9f", "0x4f85d0539779a267", "0x40661123ffbce40c", "0x95b247ca86ff61dc", "0xbe2bf61b9fcd1362", "0xfd6d6687a07997da", "0x9935965e43f25045", - "0x27fe1552873c0b40", "0x972c952c83cf5ea9", "0x525b975fb9610333", "0x4f81431408d27e2d", "0x6375d14f804f061f", "0xff6492be48775872", "0x81b2e098e1a01f8f", "0xc58ddcb717dd3370" + "0xdfbc8db1c06dacd8", "0xd56061f5411cc2cf", "0x66c9911a020ba1e5", "0xc8b93c36c4c7a2a6", "0xac045e8343ea2521", "0x5cdddf6fc438de8b", "0xad88eea3ea678e28", "0x6fbc5b7160399767", + "0x8073ccabd0764f0c", "0x0e32bd34d9f4cd5f", "0x7d23625bccd7703b", "0x481c64f93034050a", "0x4d2493acc84787cf", "0x853490ed669c5c6a", "0x4e3b6fc3a3e9f661", "0xc87a8caad36cb1da", + "0xd592f24a236b35d8", "0xbf8fceb08aa32461", "0xd174d9f2943500f2", "0xe5127777dd2876b0", "0xd709d6bdcc633059", "0xaa30a9b82f58568f", "0x1b05070b769f1f6c", "0xfffc24d3fb2a74ee", + "0x3c1187b38d01ba95", "0x90ef34ea51d4eb79", "0xfe124596a63bf602", "0x9ad0ff64e27608ae", "0x7d4f699998541fb9", "0xc142eb65cadaaaba", "0x7a73a36d7faedaa9", "0xb92715f32b721587" ]}, {"base_nonce": 4096, "expected": [ - "0x1ce77a600ec573b4", "0xb126a41f83521e45", "0x875547a82d6145fc", "0xd4b04bf258ce4941", "0xe24c23e2b2371ad6", "0x7687a4beddbbd270", "0x63b9346ba234a0be", "0x2500fb30f5e7eb20", - "0x7a185d59a30e3333", "0xa3c14cec7e2bcce2", "0x5730e39d367c6b21", "0x03e10c84ac832a3f", "0xf6dd88e0208019ef", "0xd539425d3bc497fc", "0x71461f5d0c23f626", "0xa4c64db97fb4a425", - "0x61f56436538b61f8", "0x749b10eccde2f0bc", "0xbe447d39b5f3aa29", "0x0e4ada60a90088b7", "0x3eda0e2db0bc9f9e", "0xf90d81a21a10089c", "0x7cf50a8f14d2430e", "0x14601dea6a5d8625", - "0x23c448ee2f31a26d", "0x60e5c3d4b218c0c2", "0x46ed8a924ac431fb", "0xcc77440ffbe5c23d", "0x9a15a2da9d6ba946", "0x37117ce37ca8c606", "0x69b85ea283597190", "0x03600a05ffba0055" + "0x433afad2164a8dda", "0x1fc487979b4dffb2", "0xbaf10a7e22b67b7d", "0xe2f4c61b908c014a", "0x8d588a69173db01f", "0x334c34ae7d8da448", "0xabf638cea27cf935", "0x06e3d4a1d6e0fbee", + "0xec3d53a3ecf99e86", "0x78987c6911255367", "0xbbc9c743d9576be5", "0x43d622ee7ed30a35", "0x339860b0560c988c", "0x347fba26cb169315", "0xd510af804aa26d21", "0x5c3ca3e10e783ff8", + "0xc806f8afa12a937a", "0xb6213f67b09846a2", "0xd875236923df5af6", "0x760e944b06c76d50", "0x87c2740caf1a4c63", "0xb80f96fe2edc6e9b", "0xad6b33f2e4158ebe", "0xac291295afd15709", + "0x33236c6ca9918da3", "0xc7365c50ce60c222", "0x53f84641982af8c6", "0xd6ada09dbb253a7b", "0xab39a0bb6f49d28b", "0xdf0d63f31cb955ec", "0xe18f65eb0b5ccb6b", "0x207c50f288cbb677" ]}, {"base_nonce": 1000000, "expected": [ - "0x6b390e64bbdd91ce", "0x9b34dd7b05214a6b", "0x60c14bcda3df2768", "0x557f5df495f92ad5", "0x5ac883b3090f344b", "0xdec4058df6f8b088", "0x6e3dcb56bbb79ec9", "0x6450bb96c6c686bd", - "0xc2021c81ef714e23", "0xcc0b3f77c0cf7bf6", "0x03cb474759279b0d", "0x93cf69a5cd961b9c", "0x61318f0c14d7e3de", "0x9df2144c49b171be", "0xa335ecfaf465e9cd", "0x4f8661257c1706c3", - "0xab374ea37f8e253c", "0x117242d65e8ebdb4", "0x9022069313586cd7", "0xe97f096510d6ad03", "0xa93d76b12894ffc5", "0x7823119022da1590", "0xde6f389ece0c83e9", "0x84e97ea778e4fb15", - "0x23d0802d386a21c8", "0xbaacd8512e9bbb31", "0x10522970c58234bb", "0x90f0b64b38eed0b1", "0xb250988d2986d15b", "0xf81e101bb298710f", "0x20e9cca5ade09113", "0x91c944d603539c62" + "0x4ffd090a02db43b4", "0x3df015d557eb7dff", "0xb11e898d6f219179", "0x0ffff9c4715ea693", "0xc51e5ab1fff3e42d", "0x3cbe173c74768e58", "0x0bc9c3d99d9082dc", "0x190b0881a508b8b4", + "0x38e7b4a21c3c7d18", "0x34aa4afba0dfc716", "0x4a8f8a8027f08cd6", "0xe7ab045630e34a7e", "0xa2bdea296316ac03", "0xdc85eb2818449894", "0xecf5cc78cb02cb05", "0xab138a76db952f3e", + "0xf625a5704aab7146", "0x927d175dd5de47fc", "0x249aedcf78d89c84", "0x66da14f5abee33fa", "0x8584faba12d0e357", "0xc1906204df361c55", "0x7eb470a084fc181d", "0x74c114faf8ece5cf", + "0xd15cb62a0e1eda86", "0x8ba7f1a7ab236d41", "0xfda39d1b301db5f5", "0x4a008ea52f3c438b", "0x7b5486d62e2bbb45", "0x05440eaf2d1168a2", "0x0299a1d3e6c9e4e7", "0x60308a0e058e1e29" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cl index 776a24c7f..a12b6903a 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cu index 41461c8dd..7c3da10e4 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x40/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cl index a4c319201..94b20b7b5 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cu index 3d97c4eef..bcc5a9149 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x40/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/program.json b/proto-cuda/packs-ca3-shadow/sh256x40/program.json index 91c8f62b2..ebe2a9edf 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x40/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/program.metal b/proto-cuda/packs-ca3-shadow/sh256x40/program.metal index aef8058fb..0bdda5d2d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x40/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x40/program_bound.metal index 662225c59..45f0ed86c 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x40/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x40/vectors.h index aa6a964ab..f57a8fed0 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x40/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x8b33d5c60f0e3fe5ull, 0xe7edd93c9eae6505ull, 0x99381f4d81c722ceull, 0xd817d5d01693d9a7ull, 0x473d0bad742a6609ull, 0xd75c29c497cab02aull, 0xa0db8f5aaca58cceull, 0xc4de295193e75862ull, - 0x1d2deb87726a3503ull, 0x36ed34ba8370eac0ull, 0x689b5ddaae423450ull, 0x6507132e18ef25b0ull, 0xca4892dafa48ab61ull, 0x26b39a0a8d7583f0ull, 0xbcf46e4d6e4341a5ull, 0xdbe9237704a4b8bcull, - 0x6fb724f6807cac26ull, 0xb48986723b644466ull, 0xa8958ab2c831dbdcull, 0x1095bb8955a0a48eull, 0x6fde063371fad10eull, 0x01420d707cfb6e57ull, 0x9ef8e88c4c35736aull, 0x92607050d08b24e8ull, - 0xab117dfce555499eull, 0xbd480c8ceee753baull, 0x6a9a73bb40b9801aull, 0x4bcf4bc90fc9a717ull, 0xbe2ecde94eba586dull, 0x50e5397b12ec1613ull, 0xa33764874745d040ull, 0x47d202c031c1ca74ull + 0x5179a95dd5733f10ull, 0x63a462b0c710bcadull, 0x5d2e6023819b9793ull, 0x6f95d8931cc61b17ull, 0xaec76ffb955baa1cull, 0xe737ad39963a091dull, 0xc14aef1f0a8490b1ull, 0x960b14c3824ee067ull, + 0x5e630fadbb007d3cull, 0x3bddc2bd3a29133dull, 0x8a34fdeb41300bb5ull, 0x35203796b392eeaeull, 0x2b9ac1b72859d002ull, 0x233f790e76e3dad2ull, 0x99e7ac44571f8fdcull, 0xd32a65caad0dc5f4ull, + 0x1cefadd2f1b2740cull, 0xe508d4663fe52f10ull, 0x9c4ec37a890aaea3ull, 0xd11de92c1b99b44aull, 0x4e85b62e5887bc05ull, 0xf8c2b9198c3bf7a8ull, 0x4bc25053b9cbe5d6ull, 0xfd625756f73124faull, + 0x55e73f0267e07550ull, 0x412f93650db99908ull, 0xd816d40bfdbfab18ull, 0xb437d79c8b5c2103ull, 0xc0ae289eff2b5edbull, 0x72e12d2149ca1651ull, 0xcf588093d8b91531ull, 0x0087fe84ca512942ull }, { // base nonce 4096 - 0x5572ea4a9de11931ull, 0x8ff20445d6db9cbfull, 0x2ac92983c0b49f15ull, 0x53189e447652e67cull, 0xd306b369e7d69af2ull, 0xb6488339eadca189ull, 0x7d0b22bb03c16619ull, 0x8814f4c029865d21ull, - 0x1698acbdfb4243eeull, 0x5b7f512dba18348bull, 0x0a18e4d3b1ac196eull, 0xbfeb9dac4fb12147ull, 0x4125abc3821d7eceull, 0x904a7a143f625da8ull, 0x9c7f2dcf10d2821aull, 0x43a3a87c90e84f15ull, - 0x886f5e9b2071b703ull, 0xeebf6555b0b0aafaull, 0xbc24a7292fc5279full, 0xf318100baa65191eull, 0x6036d6041cb052f5ull, 0xc72a5f8ea8ed07b7ull, 0x094e56f99032053bull, 0x89fd5acef5db38cdull, - 0xcf851955c44686fbull, 0x6c2cc8415a1cf4b5ull, 0x5915cc380747e0f7ull, 0xa5b8bfb7fb74c026ull, 0x5f5d268692d0fe2cull, 0xa92420eca4648fb2ull, 0x1323611e33754623ull, 0x708a051993795984ull + 0x11b20965d4b7d770ull, 0x79f9e81683b6b40dull, 0xa0a29deeb1bfe7fcull, 0x659c39b046e302cdull, 0x1d73b3b2b028e3c6ull, 0x5684f9cfca250f42ull, 0x3557e8a38274caf6ull, 0xc21936f699aab134ull, + 0xfff312b773b99b1bull, 0x67b5c77fc5684ab0ull, 0xcf674c04840dbf12ull, 0x142ece093c93d350ull, 0x34c8c7df40652ad5ull, 0x3489a9c4ca6de4deull, 0x52cdee49cf933e76ull, 0xb8109e27514efc9bull, + 0xb413283169ee54d8ull, 0x1da83f61cb227e14ull, 0x3392031e13f74f71ull, 0x8230c93965561ab5ull, 0xb83f25c6bfd1c007ull, 0x415a786a28400e23ull, 0x1cf31ff356e65345ull, 0x68f478572ab71688ull, + 0x18a989906a75dd4dull, 0xacb23094b3c493abull, 0xd261a6670fb96cbbull, 0xae4cb824de7294e0ull, 0xba88064fcfaa87a7ull, 0x8006c7f5c93f05e8ull, 0x69521e59ea0f419full, 0x46f01a8f8ef90e81ull }, { // base nonce 1000000 - 0x19f68656190c2d72ull, 0x0614eaf9f9786625ull, 0xc89b4c0b29cdf6a5ull, 0xe97552dfa51cd165ull, 0x095c3022193068e8ull, 0x1e8a83a6a1fc8167ull, 0xe684677a507c0dbcull, 0x39cd59b33ec6cc84ull, - 0xfbc7a722d8425a7full, 0x1a981ddc1319f337ull, 0x32ee67aa5212f3dfull, 0x53740c1f0e06f0e7ull, 0x4172139189021dbdull, 0xc99a60f6ea64747eull, 0x90c00b9aa598eafeull, 0xe849b8130b611a18ull, - 0x8f13d1a9611505d8ull, 0x50375ccddca5426eull, 0xe46afc8f034bdd7aull, 0xb3a279c9d73e9db6ull, 0xd81ead7c33d0d6b6ull, 0x164c0027d0291b60ull, 0x0d18d4b1f079f6baull, 0xf3e90f353be8a5deull, - 0xe31e3bf0d3f81e9aull, 0xfc14feadaecb44c8ull, 0x67d396bc37e6b80full, 0xa1cf4ff5cebc1004ull, 0xd3889081b6417effull, 0x74e3a2d09456ad15ull, 0x709460054c25e190ull, 0x14449eee6d3957a3ull + 0xf00317a0694d9610ull, 0x63708d2a7a5eb92dull, 0x088c6fc1772d7e02ull, 0xf141e5e0a4f5b3e1ull, 0x6a7323eba17685ecull, 0x0b165944db77b8dcull, 0x1f9e983986308684ull, 0x7dcbc9e7541c7467ull, + 0x8d33359a995972afull, 0x92230c4eb4f5119eull, 0x4a710f070d1973d9ull, 0x19e7b5167a992db8ull, 0xff3f02b6dc60a71bull, 0x2ac8417d64148a64ull, 0x4cf04ec8086dd4a3ull, 0x9504a843c0633bd2ull, + 0x5c6e295388094f37ull, 0x0d8a5b3711e8636cull, 0xb7677e2e05f2e89cull, 0x3b462f883b4f5ce5ull, 0xf00ad0bdf39b66e8ull, 0xb19453da44412614ull, 0x7add316a7b588c36ull, 0x24594f7f2940ebd6ull, + 0x5c6dc34b1ae87ce3ull, 0xa710c84800eef41full, 0x395d45e20ae50794ull, 0x6f619f31d7576194ull, 0xdaad9e363b0dfc2cull, 0x50bf1848a4499860ull, 0x709c1d92c78fd94cull, 0xbe45b661e97933f3ull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x40/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x40/vectors.json index 8fb6681fb..e7e624242 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x40/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x40/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x8b33d5c60f0e3fe5", "0xe7edd93c9eae6505", "0x99381f4d81c722ce", "0xd817d5d01693d9a7", "0x473d0bad742a6609", "0xd75c29c497cab02a", "0xa0db8f5aaca58cce", "0xc4de295193e75862", - "0x1d2deb87726a3503", "0x36ed34ba8370eac0", "0x689b5ddaae423450", "0x6507132e18ef25b0", "0xca4892dafa48ab61", "0x26b39a0a8d7583f0", "0xbcf46e4d6e4341a5", "0xdbe9237704a4b8bc", - "0x6fb724f6807cac26", "0xb48986723b644466", "0xa8958ab2c831dbdc", "0x1095bb8955a0a48e", "0x6fde063371fad10e", "0x01420d707cfb6e57", "0x9ef8e88c4c35736a", "0x92607050d08b24e8", - "0xab117dfce555499e", "0xbd480c8ceee753ba", "0x6a9a73bb40b9801a", "0x4bcf4bc90fc9a717", "0xbe2ecde94eba586d", "0x50e5397b12ec1613", "0xa33764874745d040", "0x47d202c031c1ca74" + "0x5179a95dd5733f10", "0x63a462b0c710bcad", "0x5d2e6023819b9793", "0x6f95d8931cc61b17", "0xaec76ffb955baa1c", "0xe737ad39963a091d", "0xc14aef1f0a8490b1", "0x960b14c3824ee067", + "0x5e630fadbb007d3c", "0x3bddc2bd3a29133d", "0x8a34fdeb41300bb5", "0x35203796b392eeae", "0x2b9ac1b72859d002", "0x233f790e76e3dad2", "0x99e7ac44571f8fdc", "0xd32a65caad0dc5f4", + "0x1cefadd2f1b2740c", "0xe508d4663fe52f10", "0x9c4ec37a890aaea3", "0xd11de92c1b99b44a", "0x4e85b62e5887bc05", "0xf8c2b9198c3bf7a8", "0x4bc25053b9cbe5d6", "0xfd625756f73124fa", + "0x55e73f0267e07550", "0x412f93650db99908", "0xd816d40bfdbfab18", "0xb437d79c8b5c2103", "0xc0ae289eff2b5edb", "0x72e12d2149ca1651", "0xcf588093d8b91531", "0x0087fe84ca512942" ]}, {"base_nonce": 4096, "expected": [ - "0x5572ea4a9de11931", "0x8ff20445d6db9cbf", "0x2ac92983c0b49f15", "0x53189e447652e67c", "0xd306b369e7d69af2", "0xb6488339eadca189", "0x7d0b22bb03c16619", "0x8814f4c029865d21", - "0x1698acbdfb4243ee", "0x5b7f512dba18348b", "0x0a18e4d3b1ac196e", "0xbfeb9dac4fb12147", "0x4125abc3821d7ece", "0x904a7a143f625da8", "0x9c7f2dcf10d2821a", "0x43a3a87c90e84f15", - "0x886f5e9b2071b703", "0xeebf6555b0b0aafa", "0xbc24a7292fc5279f", "0xf318100baa65191e", "0x6036d6041cb052f5", "0xc72a5f8ea8ed07b7", "0x094e56f99032053b", "0x89fd5acef5db38cd", - "0xcf851955c44686fb", "0x6c2cc8415a1cf4b5", "0x5915cc380747e0f7", "0xa5b8bfb7fb74c026", "0x5f5d268692d0fe2c", "0xa92420eca4648fb2", "0x1323611e33754623", "0x708a051993795984" + "0x11b20965d4b7d770", "0x79f9e81683b6b40d", "0xa0a29deeb1bfe7fc", "0x659c39b046e302cd", "0x1d73b3b2b028e3c6", "0x5684f9cfca250f42", "0x3557e8a38274caf6", "0xc21936f699aab134", + "0xfff312b773b99b1b", "0x67b5c77fc5684ab0", "0xcf674c04840dbf12", "0x142ece093c93d350", "0x34c8c7df40652ad5", "0x3489a9c4ca6de4de", "0x52cdee49cf933e76", "0xb8109e27514efc9b", + "0xb413283169ee54d8", "0x1da83f61cb227e14", "0x3392031e13f74f71", "0x8230c93965561ab5", "0xb83f25c6bfd1c007", "0x415a786a28400e23", "0x1cf31ff356e65345", "0x68f478572ab71688", + "0x18a989906a75dd4d", "0xacb23094b3c493ab", "0xd261a6670fb96cbb", "0xae4cb824de7294e0", "0xba88064fcfaa87a7", "0x8006c7f5c93f05e8", "0x69521e59ea0f419f", "0x46f01a8f8ef90e81" ]}, {"base_nonce": 1000000, "expected": [ - "0x19f68656190c2d72", "0x0614eaf9f9786625", "0xc89b4c0b29cdf6a5", "0xe97552dfa51cd165", "0x095c3022193068e8", "0x1e8a83a6a1fc8167", "0xe684677a507c0dbc", "0x39cd59b33ec6cc84", - "0xfbc7a722d8425a7f", "0x1a981ddc1319f337", "0x32ee67aa5212f3df", "0x53740c1f0e06f0e7", "0x4172139189021dbd", "0xc99a60f6ea64747e", "0x90c00b9aa598eafe", "0xe849b8130b611a18", - "0x8f13d1a9611505d8", "0x50375ccddca5426e", "0xe46afc8f034bdd7a", "0xb3a279c9d73e9db6", "0xd81ead7c33d0d6b6", "0x164c0027d0291b60", "0x0d18d4b1f079f6ba", "0xf3e90f353be8a5de", - "0xe31e3bf0d3f81e9a", "0xfc14feadaecb44c8", "0x67d396bc37e6b80f", "0xa1cf4ff5cebc1004", "0xd3889081b6417eff", "0x74e3a2d09456ad15", "0x709460054c25e190", "0x14449eee6d3957a3" + "0xf00317a0694d9610", "0x63708d2a7a5eb92d", "0x088c6fc1772d7e02", "0xf141e5e0a4f5b3e1", "0x6a7323eba17685ec", "0x0b165944db77b8dc", "0x1f9e983986308684", "0x7dcbc9e7541c7467", + "0x8d33359a995972af", "0x92230c4eb4f5119e", "0x4a710f070d1973d9", "0x19e7b5167a992db8", "0xff3f02b6dc60a71b", "0x2ac8417d64148a64", "0x4cf04ec8086dd4a3", "0x9504a843c0633bd2", + "0x5c6e295388094f37", "0x0d8a5b3711e8636c", "0xb7677e2e05f2e89c", "0x3b462f883b4f5ce5", "0xf00ad0bdf39b66e8", "0xb19453da44412614", "0x7add316a7b588c36", "0x24594f7f2940ebd6", + "0x5c6dc34b1ae87ce3", "0xa710c84800eef41f", "0x395d45e20ae50794", "0x6f619f31d7576194", "0xdaad9e363b0dfc2c", "0x50bf1848a4499860", "0x709c1d92c78fd94c", "0xbe45b661e97933f3" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cl index cbc5d4b19..7bba494b4 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cu index 722d87900..fd94c02c9 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x53/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cl index 3dda5afeb..31b6707f5 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cu index a9862303b..80dc54300 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x53/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/program.json b/proto-cuda/packs-ca3-shadow/sh256x53/program.json index 4fb00e833..5e0441f8f 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x53/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/program.metal b/proto-cuda/packs-ca3-shadow/sh256x53/program.metal index 38e5b41da..c24c6dbcc 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x53/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x53/program_bound.metal index f26665ab9..52ef3e532 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x53/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x53/vectors.h index df08f36e3..f6378865f 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x53/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x9771dab715d71261ull, 0x2f789c8578ad45f7ull, 0xfc9da4810f8196b1ull, 0x508616513c0103d9ull, 0xa4437c880d633e32ull, 0x972fdd14748673e4ull, 0xe58326218e52e816ull, 0x05f1aa766a05de2full, - 0x5a0802a428181a19ull, 0x5a33aa0527816100ull, 0x94e0eabd07b2fa2aull, 0xc7c20dc8566cb721ull, 0x189b9c2a14bba8faull, 0xa28f1353d5ba7b25ull, 0x86ce3df7aad12544ull, 0xdf3bccff4743de4eull, - 0x8d788ef1940c8864ull, 0xaa7671fb6d21e245ull, 0x9165ff575e147e30ull, 0x69e94a6a8b82e4b1ull, 0xcfad1b0dddaee567ull, 0x1d0527a178cf26d4ull, 0xda6c967f7d8e5e63ull, 0xed3f837cb1438585ull, - 0x9bb14627ef025cc2ull, 0x08084c71b63b8874ull, 0x51109206194ff893ull, 0xae4c0bd30a87da1bull, 0x636f54b9276801d6ull, 0x6508c23d1146c64aull, 0x137df6b1c65d335bull, 0x525676cf580b6f11ull + 0x2cf77375fada9562ull, 0x29d1272de509227full, 0x91d4136c1505e09full, 0xa7bb8a5de67e242bull, 0x8dc3ba1f46c6982aull, 0x6a16b690b0b99075ull, 0xaa5d27189935536aull, 0x8aacbe2c6b96d9bcull, + 0x4794ff27e0386224ull, 0x36ef7f6f61ecf041ull, 0x11447b9d4747bd72ull, 0xb744b71146fa1be9ull, 0x219e4d6c1c688c3eull, 0x0cc3c78cdd9cc443ull, 0x82b3951c79c0b612ull, 0x4dacf9d786eab45full, + 0x968aa75296ca85eeull, 0xa5b79d7af5d26480ull, 0x8bbd9792883e97c8ull, 0xe03b213b93d33432ull, 0x518e02a3aa6948ecull, 0x97e40fd2cdbed5d5ull, 0xff29e1c7580b88f4ull, 0x20ed302326713307ull, + 0x9404c771848120d6ull, 0x4689d78169b03940ull, 0x51cd99fba4f10a8eull, 0x90b3a264a4e7cfe5ull, 0xd1b1ecae4b866946ull, 0x6c68f33e7d2fd56full, 0x91a69762e7300969ull, 0x4691dedb4b1bdbe5ull }, { // base nonce 4096 - 0x1afa4ca3c965c3f5ull, 0x979626393ac908adull, 0x0ec8c4ba1abcd027ull, 0x7e6c26f6c03f15ccull, 0x7def92a296c97be7ull, 0xbeaec262659d72d4ull, 0xf5a7dda50892b2c5ull, 0x6c89bc70a249c825ull, - 0x0c58d024140130d3ull, 0x9a2ab37761c1f47bull, 0x241677b9869dc2f3ull, 0xc7e551770535e858ull, 0xf5b3125d49e65a78ull, 0x674212e38ba61f44ull, 0x8e69f6080a33d03eull, 0xfbed48ca3b12e78cull, - 0xc2dd49a4ad9ca24aull, 0x936d68e8a66b1204ull, 0x59b11d7e652b5c65ull, 0x742732ec4e6bfe6dull, 0xc3996c9b213ee4a5ull, 0x54e68ade1af61d71ull, 0x05117d54c3dfac1full, 0xd9fad59ae411d402ull, - 0x6f3d3c87a70c5350ull, 0xe84ad8082fc0d872ull, 0x50dc66ee26fee450ull, 0x447d4c50908467eeull, 0xde45e7f7fdbeb172ull, 0x0950381288b5a588ull, 0x2a57b3be740708b6ull, 0x4e238e93b5f0101dull + 0x276657d8f69e5c15ull, 0x8b7de4c5dbf992bdull, 0xd0a4f182b24e6cf0ull, 0xacbb5c48526e188eull, 0xa38306b53cc67c42ull, 0x11cca470ed3887fbull, 0x5687fc4637adf809ull, 0x9ba3a4d450661103ull, + 0x0a5c1266dc10a37bull, 0x935910f586486be0ull, 0x7a3b8af810c33ff7ull, 0xf324837ae40df38dull, 0x34012348f40cf383ull, 0x79dd9fb9f17f5c38ull, 0x84549c6a1667b679ull, 0x735932def43371d4ull, + 0x2b956e719488e32cull, 0x6fd05b9e1ca92977ull, 0xc90a97c6d8d1d05aull, 0xd4c0884d5941b52cull, 0x740bb899f1a208afull, 0xb63923c69f07876cull, 0xa730d4ea6d61689cull, 0xf79b56aa6ff39842ull, + 0x5c8dddc078c3551cull, 0xcb347b5d45709873ull, 0x26fb86ec45b4adb7ull, 0x2b5a7e626f7ce6c4ull, 0xc860e2532d6c9b36ull, 0x3a41b6f5e41c3de0ull, 0x6902b73e141f5ceaull, 0x48407f4b51fa3bfaull }, { // base nonce 1000000 - 0x21a07085d7c0bd82ull, 0x16a84b9d075f9acaull, 0xc4db8ee34ce88c5dull, 0xfaa43b3000940f4full, 0xb405ce2db3692d88ull, 0x4cc7c7604a634f08ull, 0xbd4deebb5fd0e1e8ull, 0x7f46c28a6d2f24deull, - 0xe79b310591584a6cull, 0xef3086c61a0b7d50ull, 0x3b5c32e6ec12e734ull, 0x5a95d256113ebd96ull, 0x3ae4561425816798ull, 0x7c5651ebd73d47d5ull, 0x5dd33e0d572cc4a1ull, 0xbeb53b6f4484b746ull, - 0x835212401c6e031dull, 0x45af4100c20b9b22ull, 0x0cc0538f479f2cddull, 0x4c160b9e0eb0ad3cull, 0x04d7a06292ea77b6ull, 0x623d2a40e1bbc924ull, 0x344eddcb7ef1f0ecull, 0x32d8eeb5e34f7935ull, - 0xb96144ba3c229441ull, 0xf03d905f538fefacull, 0x634397d3aa9343d3ull, 0x6dd337c6d3022fc1ull, 0xcae8e601f71a75f8ull, 0x0f24c6af99d12d4cull, 0x573c2b15b7befadeull, 0x39fd0197590efb2aull + 0xef548901f57297a8ull, 0xc7c688b741e1f2bcull, 0x99c904d364125a98ull, 0x1fd32794e62f65a8ull, 0x5ee860f5856aed76ull, 0xe3a3a76d9cacb3bfull, 0x0601eb8c8695a20eull, 0xcffa8d77def957edull, + 0x456e437d53517611ull, 0x022a3cfcd15a0406ull, 0x853e23294b5b7f7cull, 0x60f191a3c0f1db59ull, 0x7ff4099eb109b53cull, 0x7283109085693c13ull, 0x30dfc0718bbbfd4aull, 0x2567814e93c90627ull, + 0xa8b40888e7520f5cull, 0x0ca3cbc6c4767544ull, 0x64ff170528ae8295ull, 0x3b26500579048bc6ull, 0xbf425e07c180313dull, 0x5113a37cbe431b46ull, 0x997e53bceb25ec0dull, 0x348f11fa1f2cee1full, + 0xd92a6fba289adfa3ull, 0x483ec1da5250bef5ull, 0xa8f7bddd3020cea0ull, 0xc0d51bdca41ee79dull, 0xb42487c8ea632388ull, 0x34dfe9b0215d4b50ull, 0x1821307bd2238854ull, 0x1e2d9ce0dd65e623ull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x53/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x53/vectors.json index 0023718d7..534ab71fe 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x53/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x53/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x9771dab715d71261", "0x2f789c8578ad45f7", "0xfc9da4810f8196b1", "0x508616513c0103d9", "0xa4437c880d633e32", "0x972fdd14748673e4", "0xe58326218e52e816", "0x05f1aa766a05de2f", - "0x5a0802a428181a19", "0x5a33aa0527816100", "0x94e0eabd07b2fa2a", "0xc7c20dc8566cb721", "0x189b9c2a14bba8fa", "0xa28f1353d5ba7b25", "0x86ce3df7aad12544", "0xdf3bccff4743de4e", - "0x8d788ef1940c8864", "0xaa7671fb6d21e245", "0x9165ff575e147e30", "0x69e94a6a8b82e4b1", "0xcfad1b0dddaee567", "0x1d0527a178cf26d4", "0xda6c967f7d8e5e63", "0xed3f837cb1438585", - "0x9bb14627ef025cc2", "0x08084c71b63b8874", "0x51109206194ff893", "0xae4c0bd30a87da1b", "0x636f54b9276801d6", "0x6508c23d1146c64a", "0x137df6b1c65d335b", "0x525676cf580b6f11" + "0x2cf77375fada9562", "0x29d1272de509227f", "0x91d4136c1505e09f", "0xa7bb8a5de67e242b", "0x8dc3ba1f46c6982a", "0x6a16b690b0b99075", "0xaa5d27189935536a", "0x8aacbe2c6b96d9bc", + "0x4794ff27e0386224", "0x36ef7f6f61ecf041", "0x11447b9d4747bd72", "0xb744b71146fa1be9", "0x219e4d6c1c688c3e", "0x0cc3c78cdd9cc443", "0x82b3951c79c0b612", "0x4dacf9d786eab45f", + "0x968aa75296ca85ee", "0xa5b79d7af5d26480", "0x8bbd9792883e97c8", "0xe03b213b93d33432", "0x518e02a3aa6948ec", "0x97e40fd2cdbed5d5", "0xff29e1c7580b88f4", "0x20ed302326713307", + "0x9404c771848120d6", "0x4689d78169b03940", "0x51cd99fba4f10a8e", "0x90b3a264a4e7cfe5", "0xd1b1ecae4b866946", "0x6c68f33e7d2fd56f", "0x91a69762e7300969", "0x4691dedb4b1bdbe5" ]}, {"base_nonce": 4096, "expected": [ - "0x1afa4ca3c965c3f5", "0x979626393ac908ad", "0x0ec8c4ba1abcd027", "0x7e6c26f6c03f15cc", "0x7def92a296c97be7", "0xbeaec262659d72d4", "0xf5a7dda50892b2c5", "0x6c89bc70a249c825", - "0x0c58d024140130d3", "0x9a2ab37761c1f47b", "0x241677b9869dc2f3", "0xc7e551770535e858", "0xf5b3125d49e65a78", "0x674212e38ba61f44", "0x8e69f6080a33d03e", "0xfbed48ca3b12e78c", - "0xc2dd49a4ad9ca24a", "0x936d68e8a66b1204", "0x59b11d7e652b5c65", "0x742732ec4e6bfe6d", "0xc3996c9b213ee4a5", "0x54e68ade1af61d71", "0x05117d54c3dfac1f", "0xd9fad59ae411d402", - "0x6f3d3c87a70c5350", "0xe84ad8082fc0d872", "0x50dc66ee26fee450", "0x447d4c50908467ee", "0xde45e7f7fdbeb172", "0x0950381288b5a588", "0x2a57b3be740708b6", "0x4e238e93b5f0101d" + "0x276657d8f69e5c15", "0x8b7de4c5dbf992bd", "0xd0a4f182b24e6cf0", "0xacbb5c48526e188e", "0xa38306b53cc67c42", "0x11cca470ed3887fb", "0x5687fc4637adf809", "0x9ba3a4d450661103", + "0x0a5c1266dc10a37b", "0x935910f586486be0", "0x7a3b8af810c33ff7", "0xf324837ae40df38d", "0x34012348f40cf383", "0x79dd9fb9f17f5c38", "0x84549c6a1667b679", "0x735932def43371d4", + "0x2b956e719488e32c", "0x6fd05b9e1ca92977", "0xc90a97c6d8d1d05a", "0xd4c0884d5941b52c", "0x740bb899f1a208af", "0xb63923c69f07876c", "0xa730d4ea6d61689c", "0xf79b56aa6ff39842", + "0x5c8dddc078c3551c", "0xcb347b5d45709873", "0x26fb86ec45b4adb7", "0x2b5a7e626f7ce6c4", "0xc860e2532d6c9b36", "0x3a41b6f5e41c3de0", "0x6902b73e141f5cea", "0x48407f4b51fa3bfa" ]}, {"base_nonce": 1000000, "expected": [ - "0x21a07085d7c0bd82", "0x16a84b9d075f9aca", "0xc4db8ee34ce88c5d", "0xfaa43b3000940f4f", "0xb405ce2db3692d88", "0x4cc7c7604a634f08", "0xbd4deebb5fd0e1e8", "0x7f46c28a6d2f24de", - "0xe79b310591584a6c", "0xef3086c61a0b7d50", "0x3b5c32e6ec12e734", "0x5a95d256113ebd96", "0x3ae4561425816798", "0x7c5651ebd73d47d5", "0x5dd33e0d572cc4a1", "0xbeb53b6f4484b746", - "0x835212401c6e031d", "0x45af4100c20b9b22", "0x0cc0538f479f2cdd", "0x4c160b9e0eb0ad3c", "0x04d7a06292ea77b6", "0x623d2a40e1bbc924", "0x344eddcb7ef1f0ec", "0x32d8eeb5e34f7935", - "0xb96144ba3c229441", "0xf03d905f538fefac", "0x634397d3aa9343d3", "0x6dd337c6d3022fc1", "0xcae8e601f71a75f8", "0x0f24c6af99d12d4c", "0x573c2b15b7befade", "0x39fd0197590efb2a" + "0xef548901f57297a8", "0xc7c688b741e1f2bc", "0x99c904d364125a98", "0x1fd32794e62f65a8", "0x5ee860f5856aed76", "0xe3a3a76d9cacb3bf", "0x0601eb8c8695a20e", "0xcffa8d77def957ed", + "0x456e437d53517611", "0x022a3cfcd15a0406", "0x853e23294b5b7f7c", "0x60f191a3c0f1db59", "0x7ff4099eb109b53c", "0x7283109085693c13", "0x30dfc0718bbbfd4a", "0x2567814e93c90627", + "0xa8b40888e7520f5c", "0x0ca3cbc6c4767544", "0x64ff170528ae8295", "0x3b26500579048bc6", "0xbf425e07c180313d", "0x5113a37cbe431b46", "0x997e53bceb25ec0d", "0x348f11fa1f2cee1f", + "0xd92a6fba289adfa3", "0x483ec1da5250bef5", "0xa8f7bddd3020cea0", "0xc0d51bdca41ee79d", "0xb42487c8ea632388", "0x34dfe9b0215d4b50", "0x1821307bd2238854", "0x1e2d9ce0dd65e623" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cl index 29c0bf356..6b2f16344 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cu index 2da273cfa..4e546f947 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x7/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cl index 90a79d334..dc712a127 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cu index 8be9979c6..b9160475b 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x7/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/program.json b/proto-cuda/packs-ca3-shadow/sh256x7/program.json index 8758bb590..558ee55a5 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x7/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/program.metal b/proto-cuda/packs-ca3-shadow/sh256x7/program.metal index 428804334..28cc87993 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x7/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x7/program_bound.metal index 7665e7144..384b02c1c 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x7/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x7/vectors.h index 90226dedd..bd4128547 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x7/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xda6688d14887f390ull, 0xa967fb5329ab8301ull, 0xb36d89ddf3f7013aull, 0x8e5916887c019c5bull, 0x0b1b5e0a470dda07ull, 0x9743557891c694a0ull, 0x8b58ec4694a4b51eull, 0xaaa22b2c46199c0dull, - 0xb5e07c83348843f6ull, 0xda3e0641a2fbfa9aull, 0xea345b25e33952a8ull, 0x60b3693e4faa00b0ull, 0x11d7c24c8a92244cull, 0x3ac69fc6a553a1c5ull, 0x3248ecb535caa90eull, 0x5ed2eb6b3cdf16d0ull, - 0xaf92f32b6f8168d2ull, 0x753473cbf8f9d4baull, 0xb5aebafe1e77eb62ull, 0xf14ddaae76168834ull, 0xf4fcd368a46402e2ull, 0x219ab478cf87bd15ull, 0xb7742b0f7031c081ull, 0x17ea8d82545060e5ull, - 0xced8eb883ff74e61ull, 0xeb0ea2bf4b3dd264ull, 0x4c6fa8f5f99206faull, 0x3e6345b3f4e6938cull, 0x3ff0db0f089c87e7ull, 0x3d6f1b5d9f4795abull, 0xb9d7ad3179722417ull, 0xb7c54d6324fb8b3bull + 0x3f77ec1d2d2164bfull, 0x19167b09e9ab3787ull, 0x7eee7a0d62f1737eull, 0xb84f93f13600859cull, 0x6569d4717aa2c6d5ull, 0xa2e0c966fe871a99ull, 0xb95a138c1276d3a8ull, 0x4809eb421f66de0dull, + 0x631e2dd238e7c198ull, 0xe36192956680183dull, 0x9c1329d8697e46f8ull, 0xe712ef0751e3521eull, 0x50067d9a09e8d0e7ull, 0x9562b8e6ece0f14eull, 0x16d72cb2431cbd2full, 0x196d95a41f13da5bull, + 0x0374a46f9b0f1b44ull, 0x6e5776eca6afe212ull, 0xf09902b7b386c555ull, 0x81d9179d60947966ull, 0x337df375bbfec1e5ull, 0x833e4ce2f4276021ull, 0xbaefde5705d8f0afull, 0x7282967fcb82fce3ull, + 0x8b1010c0c8e031cbull, 0xcafc56c61eeaadf1ull, 0x58de8b86916cc34aull, 0x03bf7fcecae0e4d7ull, 0x65e6e49711b071ffull, 0xbef5a4cd55215039ull, 0x543ba6f45ee75bfbull, 0x93076193183bd94eull }, { // base nonce 4096 - 0xe3b44b175fc21b28ull, 0x3cbcac8cf0157f56ull, 0x8ba8bd15c6e4fac5ull, 0xeea33e58ceaff2f9ull, 0x1aa91b8ed208e63dull, 0x2de5d74a2ea58735ull, 0x1441f49981a3d1b0ull, 0x23435140f8545861ull, - 0x5b1d6ad6819e4d55ull, 0x92c7cd25d7f03d99ull, 0x9e52bf6eee3cd384ull, 0x296d5aea3ceed953ull, 0xd8ea21a9e77eaa7full, 0xb1f3ca3d7765a2a1ull, 0xf092c73783629a7bull, 0x2fca1ad4ca6ebeafull, - 0x6502fa6e2782982dull, 0xfddb10daa3a8bee3ull, 0x2e231d6ec341e3faull, 0xa37b7630551c909aull, 0xc38f37d60ea55cbfull, 0x2dca68ba3d90427cull, 0x632441c2905865fbull, 0xe222a7879098bad0ull, - 0x0b9702bfdfd8b4d4ull, 0xf647dd13007d96beull, 0x047245e2c8ed40d4ull, 0x522dd7eb913cf443ull, 0x44c1490f64d1eb99ull, 0xbbb4e274a10aadabull, 0x87f54e49f42ea1b4ull, 0x976c2cdffe1e715dull + 0x62796225b9343743ull, 0x73608fb72fba080bull, 0x6629d503d566520dull, 0x50546818723f8b26ull, 0xdc09b82b62b7dc50ull, 0x0edf31be85850c31ull, 0x35e57b7b0407e5d1ull, 0xbb462a1c7a2caf22ull, + 0xb4036d651348e0afull, 0x32cacc6ab061d940ull, 0x956d7fc493bccec2ull, 0x29a39f1ec1f8f3c0ull, 0x3b4fc8c76c85dc88ull, 0xc096c4caba862939ull, 0x1616610991a07920ull, 0x6f76d451fbf8a9c6ull, + 0x49d284fe56e94dbeull, 0x43f3559a627a6863ull, 0x2bf6124189fab751ull, 0x2bf4a7add8c354cfull, 0x9f4f351538d8d0feull, 0x0481d7544942f217ull, 0x5a7f7daaa39957fbull, 0x8524491ac8a5701cull, + 0xa78f95e61ea5838dull, 0x54c584251ca7b0eeull, 0xb1d2cafb1d6af869ull, 0xee761cf06ef8a18cull, 0x4adc0e55809a4d1cull, 0x8d73e06326ec5beaull, 0xe66881c3358d5130ull, 0x38b763467ee63d86ull }, { // base nonce 1000000 - 0x8d57cd337f20fb07ull, 0x7ec4cd550630e97dull, 0x19e3be943d762816ull, 0xa82016fc05af1cb4ull, 0xf9df7904600efee9ull, 0xeee8357d45fc5da0ull, 0x7034a05b56de2729ull, 0xa49c0f26c2c6c30aull, - 0x8f6a1f26ad5d3ca8ull, 0x54be93649be7de81ull, 0xd91797784e113edeull, 0x6629319ac39754fbull, 0x03a17cbe16fc0b12ull, 0x1844d087f8df1e4aull, 0x032115e4fee93f48ull, 0x97f1da84a885b38aull, - 0x6a3cbad5a2cfe5baull, 0x6ecebd0bae287f5full, 0xaf2bce191bd441caull, 0x880692461306a21aull, 0xae648081f8f93103ull, 0xf43d9de1f8d4f816ull, 0x93ed1344d9bae877ull, 0xa90b327f4ae55408ull, - 0xa497f12476c412caull, 0x907602bbe1d48d10ull, 0x7252c27e00e43794ull, 0x7382d4e82184f352ull, 0x70db6147f84715e8ull, 0x818f22a7878fbe21ull, 0x70d92097d7a7e469ull, 0xe03d1f285eab54a1ull + 0xfc82ff6910466fdfull, 0x42eb3bb4be8a5ef9ull, 0x86013923cd34b10dull, 0xd02dfeef1fce8153ull, 0x93764bf47dd6f49bull, 0x64f0232f9ddac8c6ull, 0x4cc32e27b98d82f8ull, 0x03736968d676e3adull, + 0xb5fd0d7b8edaa1c5ull, 0x572d46bd70260af4ull, 0x3a3e7912cd496f16ull, 0x41b75fd82cd1304dull, 0x930d1910fbb0378eull, 0x281dfbdae2723aa5ull, 0xa1dd8041ea0f57feull, 0xef393e1fbfdc7a58ull, + 0xe83a26ae4aa68767ull, 0xe640f8b81e63e66dull, 0xcdad5e57f751eae1ull, 0x223c7272385c7f40ull, 0x5181b6520f505df5ull, 0xd04747c6c600124bull, 0x7f5189b8cc3cc25aull, 0xbe0051bff24f2128ull, + 0x25d36bfa771be610ull, 0x730985dd8e3bb214ull, 0x3f32c40a5a204e3aull, 0x7889550129289027ull, 0x3d56c08a835ab5edull, 0xd0417d0dc1782f94ull, 0x45896ebd32f1f6e1ull, 0x07e9912c038a242full } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x7/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x7/vectors.json index 9eac3ef12..ee9233cb5 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x7/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x7/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xda6688d14887f390", "0xa967fb5329ab8301", "0xb36d89ddf3f7013a", "0x8e5916887c019c5b", "0x0b1b5e0a470dda07", "0x9743557891c694a0", "0x8b58ec4694a4b51e", "0xaaa22b2c46199c0d", - "0xb5e07c83348843f6", "0xda3e0641a2fbfa9a", "0xea345b25e33952a8", "0x60b3693e4faa00b0", "0x11d7c24c8a92244c", "0x3ac69fc6a553a1c5", "0x3248ecb535caa90e", "0x5ed2eb6b3cdf16d0", - "0xaf92f32b6f8168d2", "0x753473cbf8f9d4ba", "0xb5aebafe1e77eb62", "0xf14ddaae76168834", "0xf4fcd368a46402e2", "0x219ab478cf87bd15", "0xb7742b0f7031c081", "0x17ea8d82545060e5", - "0xced8eb883ff74e61", "0xeb0ea2bf4b3dd264", "0x4c6fa8f5f99206fa", "0x3e6345b3f4e6938c", "0x3ff0db0f089c87e7", "0x3d6f1b5d9f4795ab", "0xb9d7ad3179722417", "0xb7c54d6324fb8b3b" + "0x3f77ec1d2d2164bf", "0x19167b09e9ab3787", "0x7eee7a0d62f1737e", "0xb84f93f13600859c", "0x6569d4717aa2c6d5", "0xa2e0c966fe871a99", "0xb95a138c1276d3a8", "0x4809eb421f66de0d", + "0x631e2dd238e7c198", "0xe36192956680183d", "0x9c1329d8697e46f8", "0xe712ef0751e3521e", "0x50067d9a09e8d0e7", "0x9562b8e6ece0f14e", "0x16d72cb2431cbd2f", "0x196d95a41f13da5b", + "0x0374a46f9b0f1b44", "0x6e5776eca6afe212", "0xf09902b7b386c555", "0x81d9179d60947966", "0x337df375bbfec1e5", "0x833e4ce2f4276021", "0xbaefde5705d8f0af", "0x7282967fcb82fce3", + "0x8b1010c0c8e031cb", "0xcafc56c61eeaadf1", "0x58de8b86916cc34a", "0x03bf7fcecae0e4d7", "0x65e6e49711b071ff", "0xbef5a4cd55215039", "0x543ba6f45ee75bfb", "0x93076193183bd94e" ]}, {"base_nonce": 4096, "expected": [ - "0xe3b44b175fc21b28", "0x3cbcac8cf0157f56", "0x8ba8bd15c6e4fac5", "0xeea33e58ceaff2f9", "0x1aa91b8ed208e63d", "0x2de5d74a2ea58735", "0x1441f49981a3d1b0", "0x23435140f8545861", - "0x5b1d6ad6819e4d55", "0x92c7cd25d7f03d99", "0x9e52bf6eee3cd384", "0x296d5aea3ceed953", "0xd8ea21a9e77eaa7f", "0xb1f3ca3d7765a2a1", "0xf092c73783629a7b", "0x2fca1ad4ca6ebeaf", - "0x6502fa6e2782982d", "0xfddb10daa3a8bee3", "0x2e231d6ec341e3fa", "0xa37b7630551c909a", "0xc38f37d60ea55cbf", "0x2dca68ba3d90427c", "0x632441c2905865fb", "0xe222a7879098bad0", - "0x0b9702bfdfd8b4d4", "0xf647dd13007d96be", "0x047245e2c8ed40d4", "0x522dd7eb913cf443", "0x44c1490f64d1eb99", "0xbbb4e274a10aadab", "0x87f54e49f42ea1b4", "0x976c2cdffe1e715d" + "0x62796225b9343743", "0x73608fb72fba080b", "0x6629d503d566520d", "0x50546818723f8b26", "0xdc09b82b62b7dc50", "0x0edf31be85850c31", "0x35e57b7b0407e5d1", "0xbb462a1c7a2caf22", + "0xb4036d651348e0af", "0x32cacc6ab061d940", "0x956d7fc493bccec2", "0x29a39f1ec1f8f3c0", "0x3b4fc8c76c85dc88", "0xc096c4caba862939", "0x1616610991a07920", "0x6f76d451fbf8a9c6", + "0x49d284fe56e94dbe", "0x43f3559a627a6863", "0x2bf6124189fab751", "0x2bf4a7add8c354cf", "0x9f4f351538d8d0fe", "0x0481d7544942f217", "0x5a7f7daaa39957fb", "0x8524491ac8a5701c", + "0xa78f95e61ea5838d", "0x54c584251ca7b0ee", "0xb1d2cafb1d6af869", "0xee761cf06ef8a18c", "0x4adc0e55809a4d1c", "0x8d73e06326ec5bea", "0xe66881c3358d5130", "0x38b763467ee63d86" ]}, {"base_nonce": 1000000, "expected": [ - "0x8d57cd337f20fb07", "0x7ec4cd550630e97d", "0x19e3be943d762816", "0xa82016fc05af1cb4", "0xf9df7904600efee9", "0xeee8357d45fc5da0", "0x7034a05b56de2729", "0xa49c0f26c2c6c30a", - "0x8f6a1f26ad5d3ca8", "0x54be93649be7de81", "0xd91797784e113ede", "0x6629319ac39754fb", "0x03a17cbe16fc0b12", "0x1844d087f8df1e4a", "0x032115e4fee93f48", "0x97f1da84a885b38a", - "0x6a3cbad5a2cfe5ba", "0x6ecebd0bae287f5f", "0xaf2bce191bd441ca", "0x880692461306a21a", "0xae648081f8f93103", "0xf43d9de1f8d4f816", "0x93ed1344d9bae877", "0xa90b327f4ae55408", - "0xa497f12476c412ca", "0x907602bbe1d48d10", "0x7252c27e00e43794", "0x7382d4e82184f352", "0x70db6147f84715e8", "0x818f22a7878fbe21", "0x70d92097d7a7e469", "0xe03d1f285eab54a1" + "0xfc82ff6910466fdf", "0x42eb3bb4be8a5ef9", "0x86013923cd34b10d", "0xd02dfeef1fce8153", "0x93764bf47dd6f49b", "0x64f0232f9ddac8c6", "0x4cc32e27b98d82f8", "0x03736968d676e3ad", + "0xb5fd0d7b8edaa1c5", "0x572d46bd70260af4", "0x3a3e7912cd496f16", "0x41b75fd82cd1304d", "0x930d1910fbb0378e", "0x281dfbdae2723aa5", "0xa1dd8041ea0f57fe", "0xef393e1fbfdc7a58", + "0xe83a26ae4aa68767", "0xe640f8b81e63e66d", "0xcdad5e57f751eae1", "0x223c7272385c7f40", "0x5181b6520f505df5", "0xd04747c6c600124b", "0x7f5189b8cc3cc25a", "0xbe0051bff24f2128", + "0x25d36bfa771be610", "0x730985dd8e3bb214", "0x3f32c40a5a204e3a", "0x7889550129289027", "0x3d56c08a835ab5ed", "0xd0417d0dc1782f94", "0x45896ebd32f1f6e1", "0x07e9912c038a242f" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cl b/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cl index 389c69a32..409c1530d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cu b/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cu index 04b229046..d5a8dfadc 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x88/kernel.cu @@ -70,19 +70,19 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -90,13 +90,13 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -108,7 +108,7 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -117,8 +117,8 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cl b/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cl index 34d4fea9d..2d73eb17d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cl +++ b/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cl @@ -210,19 +210,19 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -230,13 +230,13 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -248,7 +248,7 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -257,8 +257,8 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add @@ -572,19 +572,19 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = mul_hi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 18 shfl r5 = r5 * r0; // 19 mul { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r3 = r3 ^ t_; } // 20 shfl { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r2 = r2 ^ t_; } // 21 shfl r6 = mul_hi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // 26 shfl @@ -592,13 +592,13 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = mul_hi(r0, r5); // 35 mulhi { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r5 = r5 ^ t_; } // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add { uint t_; IGNEUM_SHFL_XOR(t_, r5, 4u); r1 = r1 ^ t_; } // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -610,7 +610,7 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r1 = mul_hi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -619,8 +619,8 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cu b/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cu index 00ae080ba..a82b5e5c1 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cu +++ b/proto-cuda/packs-ca3-shadow/sh256x88/kernel_bound.cu @@ -46,19 +46,19 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 8 mulhi r6 = rotr_var(r6, r3); // 9 rotr r3 = r3 | r4; // 10 or - r4 = r4 ^ ds[r3 & mask]; // 11 load + r4 = r4 ^ ds[r6 & mask]; // 11 load r0 = __umulhi(r0, r4); // 12 mulhi r5 = r5 + r1 + ((((sel >> 30u) & 1u) != 0u) ? 0xd3177981u : 0xc7934706u); // 13 add - r0 = r0 ^ ds[r4 & mask]; // 14 load + r0 = r0 ^ ds[r5 & mask]; // 14 load r2 = r2 - r4; // 15 sub - r2 = r2 ^ ds[r0 & mask]; // 16 load - r7 = r7 ^ ds[r2 & mask]; // 17 load + r2 = r2 ^ ds[r7 & mask]; // 16 load + r7 = r7 ^ ds[r4 & mask]; // 17 load r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 18 shfl r5 = r5 * r0; // 19 mul r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // 20 shfl r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // 21 shfl r6 = __umulhi(r6, r2); // 22 mulhi - r6 = r6 ^ ds[r1 & mask]; // 23 load + r6 = r6 ^ ds[r3 & mask]; // 23 load r5 = r5 * r0; // 24 mul r5 = rotl_imm(r5, 19u); // 25 rotl r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // 26 shfl @@ -66,13 +66,13 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r0 = r0 ^ r4; // 28 xor r3 = r3 - r0; // 29 sub r5 = r5 * r1; // 30 mul - r7 = r7 ^ ds[r2 & mask]; // 31 load - r1 = r1 ^ ds[r0 & mask]; // 32 load + r7 = r7 ^ ds[r3 & mask]; // 31 load + r1 = r1 ^ ds[r2 & mask]; // 32 load r5 = r5 ^ r6; // 33 xor - r5 = r5 ^ ds[r1 & mask]; // 34 load + r5 = r5 ^ ds[r0 & mask]; // 34 load r0 = __umulhi(r0, r5); // 35 mulhi r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // 36 shfl - r7 = r7 ^ ds[r0 & mask]; // 37 load + r7 = r7 ^ ds[r6 & mask]; // 37 load r3 = r3 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0x230c005cu : 0x75ba2fadu); // 38 add r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 4); // 39 shfl r2 = r2 ^ r5; // 40 xor @@ -84,7 +84,7 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r1 = __umulhi(r1, r5); // 46 mulhi r4 = r4 - r3; // 47 sub r2 = rotr_var(r2, r6); // 48 rotr - r3 = r3 ^ ds[r5 & mask]; // 49 load + r3 = r3 ^ ds[r4 & mask]; // 49 load r1 = r1 + r5 + ((((sel >> 7u) & 1u) != 0u) ? 0x1907970cu : 0x81b8bc2cu); // 50 add r0 = r0 * r2; // 51 mul r0 = r0 + r2 + ((((sel >> 6u) & 1u) != 0u) ? 0x699fd448u : 0x4f92b968u); // 52 add @@ -93,8 +93,8 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba r3 = r3 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0xa54c55a0u : 0x7b0fe07au); // 55 add r6 = r6 ^ ds[r7 & mask]; // 56 load r1 = rotr_var(r1, r5); // 57 rotr - r5 = r5 ^ ds[r4 & mask]; // 58 load - r6 = r6 ^ ds[r2 & mask]; // 59 load + r5 = r5 ^ ds[r3 & mask]; // 58 load + r6 = r6 ^ ds[r1 & mask]; // 59 load r3 = r5 * r0 + r3; // 60 mad r5 = r5 + r7 + ((((sel >> 31u) & 1u) != 0u) ? 0xad7493e7u : 0xaf9dd72du); // 61 add r4 = r4 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x1e07c3d9u : 0x89841d87u); // 62 add diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/program.json b/proto-cuda/packs-ca3-shadow/sh256x88/program.json index a3659596c..477aa8dc9 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/program.json +++ b/proto-cuda/packs-ca3-shadow/sh256x88/program.json @@ -332,19 +332,19 @@ {"i": 8, "op": "mulhi", "dst": 1, "src": 5, "src2": 2, "imm": "0xa5eebca5", "imm2": "0x5703a72b", "rot": 13, "bit": 13, "mask": 16, "width": 1}, {"i": 9, "op": "rotr", "dst": 6, "src": 3, "src2": 4, "imm": "0x17a5a9c7", "imm2": "0xdcfb93a1", "rot": 20, "bit": 27, "mask": 2, "width": 1}, {"i": 10, "op": "or", "dst": 3, "src": 4, "src2": 1, "imm": "0xccb7d785", "imm2": "0xc335364c", "rot": 14, "bit": 12, "mask": 4, "width": 1}, - {"i": 11, "op": "load", "dst": 4, "src": 3, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, + {"i": 11, "op": "load", "dst": 4, "src": 6, "src2": 2, "imm": "0x88cb9af3", "imm2": "0x4e7dc10d", "rot": 24, "bit": 17, "mask": 4, "width": 1}, {"i": 12, "op": "mulhi", "dst": 0, "src": 4, "src2": 4, "imm": "0x45374321", "imm2": "0x3cd91989", "rot": 11, "bit": 4, "mask": 2, "width": 1}, {"i": 13, "op": "add", "dst": 5, "src": 1, "src2": 2, "imm": "0xc7934706", "imm2": "0xd3177981", "rot": 16, "bit": 30, "mask": 2, "width": 1}, - {"i": 14, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, + {"i": 14, "op": "load", "dst": 0, "src": 5, "src2": 3, "imm": "0xfd7f56bb", "imm2": "0x65e14f52", "rot": 13, "bit": 22, "mask": 2, "width": 1}, {"i": 15, "op": "sub", "dst": 2, "src": 4, "src2": 4, "imm": "0x35a80b49", "imm2": "0x060f2d13", "rot": 16, "bit": 20, "mask": 16, "width": 1}, - {"i": 16, "op": "load", "dst": 2, "src": 0, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, - {"i": 17, "op": "load", "dst": 7, "src": 2, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, + {"i": 16, "op": "load", "dst": 2, "src": 7, "src2": 2, "imm": "0xae0a32c2", "imm2": "0x4c2a4cfe", "rot": 8, "bit": 31, "mask": 16, "width": 1}, + {"i": 17, "op": "load", "dst": 7, "src": 4, "src2": 6, "imm": "0x82a84cc3", "imm2": "0x21a38d68", "rot": 15, "bit": 21, "mask": 2, "width": 1}, {"i": 18, "op": "shfl", "dst": 7, "src": 3, "src2": 3, "imm": "0xa3818806", "imm2": "0x8f66b5c8", "rot": 14, "bit": 6, "mask": 4, "width": 1}, {"i": 19, "op": "mul", "dst": 5, "src": 0, "src2": 1, "imm": "0xa00de107", "imm2": "0x77bfcaa5", "rot": 3, "bit": 10, "mask": 2, "width": 1}, {"i": 20, "op": "shfl", "dst": 3, "src": 4, "src2": 7, "imm": "0x1d2b8cab", "imm2": "0x80b4f9a2", "rot": 14, "bit": 25, "mask": 2, "width": 1}, {"i": 21, "op": "shfl", "dst": 2, "src": 4, "src2": 5, "imm": "0x3ac915d2", "imm2": "0x5fba7bc2", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 22, "op": "mulhi", "dst": 6, "src": 2, "src2": 0, "imm": "0xdc3ec8fd", "imm2": "0x599e2fa3", "rot": 22, "bit": 3, "mask": 2, "width": 1}, - {"i": 23, "op": "load", "dst": 6, "src": 1, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, + {"i": 23, "op": "load", "dst": 6, "src": 3, "src2": 5, "imm": "0x2a6b16d5", "imm2": "0xd73e396f", "rot": 28, "bit": 29, "mask": 2, "width": 1}, {"i": 24, "op": "mul", "dst": 5, "src": 0, "src2": 7, "imm": "0x376d0223", "imm2": "0xe1c2169a", "rot": 4, "bit": 16, "mask": 16, "width": 1}, {"i": 25, "op": "rotl", "dst": 5, "src": 7, "src2": 3, "imm": "0x78ad8c60", "imm2": "0x6f5b77d5", "rot": 19, "bit": 11, "mask": 16, "width": 1}, {"i": 26, "op": "shfl", "dst": 7, "src": 6, "src2": 5, "imm": "0x93915b9f", "imm2": "0x1e61fb6b", "rot": 28, "bit": 23, "mask": 2, "width": 1}, @@ -352,13 +352,13 @@ {"i": 28, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x20a57fda", "imm2": "0x088c848e", "rot": 16, "bit": 13, "mask": 4, "width": 1}, {"i": 29, "op": "sub", "dst": 3, "src": 0, "src2": 2, "imm": "0x49d95fd5", "imm2": "0x1a5f946a", "rot": 6, "bit": 12, "mask": 1, "width": 1}, {"i": 30, "op": "mul", "dst": 5, "src": 1, "src2": 7, "imm": "0x0a816217", "imm2": "0x405c4f73", "rot": 13, "bit": 27, "mask": 4, "width": 1}, - {"i": 31, "op": "load", "dst": 7, "src": 2, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, - {"i": 32, "op": "load", "dst": 1, "src": 0, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, + {"i": 31, "op": "load", "dst": 7, "src": 3, "src2": 2, "imm": "0x09ed045e", "imm2": "0xd69c4715", "rot": 5, "bit": 9, "mask": 2, "width": 1}, + {"i": 32, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0xeb79ea49", "imm2": "0xcc587f5a", "rot": 6, "bit": 8, "mask": 16, "width": 1}, {"i": 33, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x3027401e", "imm2": "0x5f20c27e", "rot": 18, "bit": 9, "mask": 2, "width": 1}, - {"i": 34, "op": "load", "dst": 5, "src": 1, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, + {"i": 34, "op": "load", "dst": 5, "src": 0, "src2": 3, "imm": "0x0e1cab07", "imm2": "0x09356c5b", "rot": 19, "bit": 31, "mask": 1, "width": 1}, {"i": 35, "op": "mulhi", "dst": 0, "src": 5, "src2": 2, "imm": "0x90e31357", "imm2": "0xabd32484", "rot": 26, "bit": 5, "mask": 8, "width": 1}, {"i": 36, "op": "shfl", "dst": 5, "src": 2, "src2": 5, "imm": "0xee9a955f", "imm2": "0x31b3faed", "rot": 8, "bit": 24, "mask": 4, "width": 1}, - {"i": 37, "op": "load", "dst": 7, "src": 0, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, + {"i": 37, "op": "load", "dst": 7, "src": 6, "src2": 7, "imm": "0x3ba2f832", "imm2": "0x1160dcd3", "rot": 4, "bit": 29, "mask": 1, "width": 1}, {"i": 38, "op": "add", "dst": 3, "src": 1, "src2": 7, "imm": "0x75ba2fad", "imm2": "0x230c005c", "rot": 4, "bit": 27, "mask": 1, "width": 1}, {"i": 39, "op": "shfl", "dst": 1, "src": 5, "src2": 3, "imm": "0xdbf37e75", "imm2": "0xb5ac1969", "rot": 30, "bit": 13, "mask": 4, "width": 1}, {"i": 40, "op": "xor", "dst": 2, "src": 5, "src2": 5, "imm": "0x47f136c5", "imm2": "0x06ce9153", "rot": 19, "bit": 10, "mask": 2, "width": 1}, @@ -370,7 +370,7 @@ {"i": 46, "op": "mulhi", "dst": 1, "src": 5, "src2": 1, "imm": "0xffb2147a", "imm2": "0xccde9b05", "rot": 13, "bit": 9, "mask": 2, "width": 1}, {"i": 47, "op": "sub", "dst": 4, "src": 3, "src2": 5, "imm": "0x73b36234", "imm2": "0x3f5d5997", "rot": 7, "bit": 18, "mask": 2, "width": 1}, {"i": 48, "op": "rotr", "dst": 2, "src": 6, "src2": 3, "imm": "0x3a4d9aa9", "imm2": "0x212bec7b", "rot": 4, "bit": 29, "mask": 16, "width": 1}, - {"i": 49, "op": "load", "dst": 3, "src": 5, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, + {"i": 49, "op": "load", "dst": 3, "src": 4, "src2": 2, "imm": "0x626f11df", "imm2": "0x56cd5bfd", "rot": 7, "bit": 1, "mask": 1, "width": 1}, {"i": 50, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x81b8bc2c", "imm2": "0x1907970c", "rot": 28, "bit": 7, "mask": 4, "width": 1}, {"i": 51, "op": "mul", "dst": 0, "src": 2, "src2": 2, "imm": "0xa8848b30", "imm2": "0xef6ac348", "rot": 9, "bit": 15, "mask": 8, "width": 1}, {"i": 52, "op": "add", "dst": 0, "src": 2, "src2": 0, "imm": "0x4f92b968", "imm2": "0x699fd448", "rot": 22, "bit": 6, "mask": 4, "width": 1}, @@ -379,8 +379,8 @@ {"i": 55, "op": "add", "dst": 3, "src": 7, "src2": 2, "imm": "0x7b0fe07a", "imm2": "0xa54c55a0", "rot": 10, "bit": 1, "mask": 1, "width": 1}, {"i": 56, "op": "load", "dst": 6, "src": 7, "src2": 4, "imm": "0x01eba9aa", "imm2": "0x2758c0f7", "rot": 14, "bit": 15, "mask": 4, "width": 1}, {"i": 57, "op": "rotr", "dst": 1, "src": 5, "src2": 2, "imm": "0x1f5267b3", "imm2": "0x236f5a27", "rot": 2, "bit": 31, "mask": 16, "width": 1}, - {"i": 58, "op": "load", "dst": 5, "src": 4, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, - {"i": 59, "op": "load", "dst": 6, "src": 2, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, + {"i": 58, "op": "load", "dst": 5, "src": 3, "src2": 3, "imm": "0xa9954a9b", "imm2": "0x6a54d4e8", "rot": 11, "bit": 10, "mask": 16, "width": 1}, + {"i": 59, "op": "load", "dst": 6, "src": 1, "src2": 4, "imm": "0x9923ff88", "imm2": "0x9357254e", "rot": 16, "bit": 1, "mask": 16, "width": 1}, {"i": 60, "op": "mad", "dst": 3, "src": 5, "src2": 0, "imm": "0xc0cc51a6", "imm2": "0x3fd7701b", "rot": 20, "bit": 1, "mask": 4, "width": 1}, {"i": 61, "op": "add", "dst": 5, "src": 7, "src2": 7, "imm": "0xaf9dd72d", "imm2": "0xad7493e7", "rot": 7, "bit": 31, "mask": 16, "width": 1}, {"i": 62, "op": "add", "dst": 4, "src": 6, "src2": 2, "imm": "0x89841d87", "imm2": "0x1e07c3d9", "rot": 6, "bit": 27, "mask": 1, "width": 1}, diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/program.metal b/proto-cuda/packs-ca3-shadow/sh256x88/program.metal index ad068f3b0..5e8dc6a8b 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/program.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x88/program.metal @@ -49,19 +49,19 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -69,13 +69,13 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -87,7 +87,7 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -96,8 +96,8 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/program_bound.metal b/proto-cuda/packs-ca3-shadow/sh256x88/program_bound.metal index 9eac74ef2..a92943d6d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/program_bound.metal +++ b/proto-cuda/packs-ca3-shadow/sh256x88/program_bound.metal @@ -51,19 +51,19 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 8 r6 = rotr_var(r6, r3); // 9 r3 = r3 | r4; // 10 - r4 = r4 ^ dataset[r3 & MASK]; // 11 + r4 = r4 ^ dataset[r6 & MASK]; // 11 r0 = mulhi(r0, r4); // 12 r5 = r5 + r1 + select(0xc7934706u, 0xd3177981u, ((sel >> 30u) & 1u) != 0u); // 13 - r0 = r0 ^ dataset[r4 & MASK]; // 14 + r0 = r0 ^ dataset[r5 & MASK]; // 14 r2 = r2 - r4; // 15 - r2 = r2 ^ dataset[r0 & MASK]; // 16 - r7 = r7 ^ dataset[r2 & MASK]; // 17 + r2 = r2 ^ dataset[r7 & MASK]; // 16 + r7 = r7 ^ dataset[r4 & MASK]; // 17 r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 18 r5 = r5 * r0; // 19 r3 = r3 ^ simd_shuffle_xor(r4, (ushort)2); // 20 r2 = r2 ^ simd_shuffle_xor(r4, (ushort)16); // 21 r6 = mulhi(r6, r2); // 22 - r6 = r6 ^ dataset[r1 & MASK]; // 23 + r6 = r6 ^ dataset[r3 & MASK]; // 23 r5 = r5 * r0; // 24 r5 = rotl_imm(r5, 19u); // 25 r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // 26 @@ -71,13 +71,13 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r0 = r0 ^ r4; // 28 r3 = r3 - r0; // 29 r5 = r5 * r1; // 30 - r7 = r7 ^ dataset[r2 & MASK]; // 31 - r1 = r1 ^ dataset[r0 & MASK]; // 32 + r7 = r7 ^ dataset[r3 & MASK]; // 31 + r1 = r1 ^ dataset[r2 & MASK]; // 32 r5 = r5 ^ r6; // 33 - r5 = r5 ^ dataset[r1 & MASK]; // 34 + r5 = r5 ^ dataset[r0 & MASK]; // 34 r0 = mulhi(r0, r5); // 35 r5 = r5 ^ simd_shuffle_xor(r2, (ushort)4); // 36 - r7 = r7 ^ dataset[r0 & MASK]; // 37 + r7 = r7 ^ dataset[r6 & MASK]; // 37 r3 = r3 + r1 + select(0x75ba2fadu, 0x230c005cu, ((sel >> 27u) & 1u) != 0u); // 38 r1 = r1 ^ simd_shuffle_xor(r5, (ushort)4); // 39 r2 = r2 ^ r5; // 40 @@ -89,7 +89,7 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r1 = mulhi(r1, r5); // 46 r4 = r4 - r3; // 47 r2 = rotr_var(r2, r6); // 48 - r3 = r3 ^ dataset[r5 & MASK]; // 49 + r3 = r3 ^ dataset[r4 & MASK]; // 49 r1 = r1 + r5 + select(0x81b8bc2cu, 0x1907970cu, ((sel >> 7u) & 1u) != 0u); // 50 r0 = r0 * r2; // 51 r0 = r0 + r2 + select(0x4f92b968u, 0x699fd448u, ((sel >> 6u) & 1u) != 0u); // 52 @@ -98,8 +98,8 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], r3 = r3 + r7 + select(0x7b0fe07au, 0xa54c55a0u, ((sel >> 1u) & 1u) != 0u); // 55 r6 = r6 ^ dataset[r7 & MASK]; // 56 r1 = rotr_var(r1, r5); // 57 - r5 = r5 ^ dataset[r4 & MASK]; // 58 - r6 = r6 ^ dataset[r2 & MASK]; // 59 + r5 = r5 ^ dataset[r3 & MASK]; // 58 + r6 = r6 ^ dataset[r1 & MASK]; // 59 r3 = r5 * r0 + r3; // 60 r5 = r5 + r7 + select(0xaf9dd72du, 0xad7493e7u, ((sel >> 31u) & 1u) != 0u); // 61 r4 = r4 + r6 + select(0x89841d87u, 0x1e07c3d9u, ((sel >> 27u) & 1u) != 0u); // 62 diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/vectors.h b/proto-cuda/packs-ca3-shadow/sh256x88/vectors.h index 6b2e73d7a..55135ad63 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/vectors.h +++ b/proto-cuda/packs-ca3-shadow/sh256x88/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x84beec0429c7ef83ull, 0xf00d1a75c1983cc7ull, 0xa90bcc4907b862d3ull, 0xc4878beb87ecd1f8ull, 0xfc91443ee8482aa9ull, 0xcc6dec63ee8af2d2ull, 0x27bb87776a04a4b8ull, 0x52390b4de0bb62a9ull, - 0xccbe1f94b1b40f4full, 0x64baf9332b181a98ull, 0x397d39dc01b32f0eull, 0xa8f87eb4e8bc75deull, 0x6d941c833a2e5badull, 0xc57e923c71cfadedull, 0x6ebb7f26d71568dcull, 0x0dbdc04d57ad57e1ull, - 0xc29faa2c84db2ed7ull, 0x996c05fc549bbb92ull, 0x2fbd7656e887882dull, 0xacd8bcf4005ee812ull, 0x767be8ac588d2e38ull, 0x47ec828643046423ull, 0x4c01d7965ae941c1ull, 0x57c5c70ffbbb0e65ull, - 0x13b17316cb50fb7bull, 0x76a1f54649a370cfull, 0xad69f76836ba8a7aull, 0x733bd56efa378d81ull, 0x981c426d71f2ed8full, 0x54e1d4cbc0a62512ull, 0x67aff49ed29616c6ull, 0x334b204a4a68c30dull + 0x4e64318234942c72ull, 0xd32fdb168ebd4480ull, 0x6a02ae359310ac78ull, 0xad038fc83d25a39cull, 0xf890d0386a7a5499ull, 0x64836880e58ce81eull, 0x740f838c7051cb9cull, 0xa4acf2d3e549a5daull, + 0x8039b03e5895ae6bull, 0x0a60aad58ad27c36ull, 0x72100b423a60d0faull, 0x7240e8147f60833eull, 0x23b9bbed7ea1993bull, 0x36fd90fa1f02c8edull, 0x387122913be5f809ull, 0xd5a4f420bf17ff8eull, + 0x983378a1940aef46ull, 0x22123a1b08a47e3full, 0x5a54e63877b9953eull, 0x1dbd846da35c699aull, 0x21cdd2e69ca2798cull, 0x7dbd40eb1f2da0dbull, 0xa81d12131d5f1a84ull, 0x09cef91af5a74839ull, + 0xccaaa6047d482fefull, 0x633c0c9bfb6f305dull, 0x731678f40bfde42dull, 0x6410a0773de515ccull, 0x42043082ccf18bbdull, 0x926dc795c99303beull, 0xc7bfc1861a1f2e81ull, 0xc1e77d7251cec9ceull }, { // base nonce 4096 - 0x32be0f5b7d992255ull, 0x015d46bc9c3a63e5ull, 0xd484e83305387249ull, 0xbd6caf73759993a4ull, 0xa45046fe4ffea71cull, 0x998be3d8bc3b6b83ull, 0x22733e1011bb3899ull, 0xd43f643f374ec091ull, - 0x58af12ece0d06893ull, 0xc2c70d187309237dull, 0xc63a383d3e949238ull, 0x6021dfa5644f37d6ull, 0x98403c9184ee7f9aull, 0x41918aa77c615242ull, 0x4521bda069686b99ull, 0x063ad2e6be2a91b9ull, - 0xf4e60507ea9cebe7ull, 0x1af1193c38198412ull, 0xe888f6fb01c7122cull, 0x64ba2c1961141fa6ull, 0xc86cd2ac3841a269ull, 0x3488615eda9032dfull, 0xdf7cd491843ee85cull, 0x6661e8614d9e6c8bull, - 0x3cf20cd75714f0c0ull, 0xc494aa0916c00aefull, 0x659a06ca296e221cull, 0x55641c3a74d4078aull, 0xb4c4cde4ab6c19e2ull, 0xeeb96f46b670a71full, 0x2876607f7e2ea1c3ull, 0x2c8dbd443403bc84ull + 0x79df1e7b1beb1213ull, 0x2d273d56dd5200e7ull, 0x5e1b4113f6bc264cull, 0xf77f629627462121ull, 0x4fc2b35a1904d1a7ull, 0x6810c18bf5581a8aull, 0xb332000f56b4e12eull, 0xc1b025ff62403b33ull, + 0x20d84642f49f823full, 0x75d45f0c9f423cd8ull, 0xc756a54d47bd55d7ull, 0xbd2fc6f009ae7d55ull, 0x2ee1390bf34be77dull, 0x2a69582f4aadcf47ull, 0x654b6ab8c8fa0677ull, 0x2e59a9ba14c510c9ull, + 0x002d9bc041f88540ull, 0xe968fc417135e8c8ull, 0xa66eaf92795a4ab2ull, 0xe3eb3ffac1b700c7ull, 0x0f8fd4c924174251ull, 0x2616a50fbbee50cdull, 0xa3e9cafe7a137d18ull, 0xa6a6017e1d18ce0cull, + 0x1943bdfe7a875a10ull, 0x767e42ddba3b0f06ull, 0xb86f041b1ff5b12bull, 0x1adbda14a1f697fcull, 0xc0ef3be5f0768eddull, 0x79a57b9dda53fe92ull, 0x0c99bd453acb2340ull, 0xbd4bfc19881a5c27ull }, { // base nonce 1000000 - 0x78541813d6547a59ull, 0x4048c2a56e0aeb32ull, 0xdde4ab04573bd691ull, 0x2efd693c76d79f20ull, 0xf2c68f0fe9a342d3ull, 0x35da60ca90cbe845ull, 0x36798fb3123a26c0ull, 0x0d889aeaaec59a84ull, - 0xe2a0581848e9bc0bull, 0xed7a2887d34e286aull, 0x7f933c3acbcae9d4ull, 0x11be5af68c3a8bd2ull, 0xee163f620d49e2daull, 0xa959ae35321ed248ull, 0xecbbfca1292bdaccull, 0x7ce337105114c1c4ull, - 0xc73aafe51ed8fde3ull, 0x760fdbb27982fcbdull, 0xb9b573c20dc494c2ull, 0x55f9c2d1ef8cc32dull, 0x2af4bfeea1c32c93ull, 0x3fe179c0b56193aeull, 0x92bff7aaec5b772full, 0x80271a03ee19287cull, - 0x4b98c3ac7191efc4ull, 0xe36245f5d990f94bull, 0x2f7c0ed899091a02ull, 0xfbf09b3a6f2fb8dbull, 0x07ff9acffccbf012ull, 0xdcd9727fe482d3e3ull, 0xcae6d467f721bb31ull, 0xfd7fb2e05bbc316full + 0x129fdfb505d8affeull, 0x2cc0a7c8fd1b1f35ull, 0x953f1545253bb0ebull, 0x4a736f04c55d047cull, 0x1fc7cc8c3656890eull, 0x95ebc86278e85c75ull, 0x1f1141b16359ec41ull, 0xfa45a8846231572cull, + 0x79117cc8c0b33d68ull, 0xc588cf4d6ae802d1ull, 0xf60b0cda9cb25e9bull, 0xffe590410f314156ull, 0xdacc186be7ae2b77ull, 0x1b768aca0a6bcf89ull, 0x50b39f3bfe9f9b55ull, 0x13f9d0bbccc7a3ebull, + 0xbf1ae5ca14c1d5b4ull, 0x8855bf4bc3d9a4e2ull, 0x86f148623f1cd498ull, 0x9becef62ac65ab24ull, 0xcccd6eb1fbd50eecull, 0xc2a1f71e6fdefbeaull, 0x3bb376588202c20eull, 0x4eb08fd8d6e3aabfull, + 0xa244a5410b77be38ull, 0x5c6a15b6a4a42a38ull, 0x2b83d3e8bc9108c5ull, 0x7b5e1db001e3d387ull, 0x34bae1d26c20bba2ull, 0x8b54b1dae16d1fb4ull, 0x932b4f9e3cb2643aull, 0x884e120050b465b7ull } }; diff --git a/proto-cuda/packs-ca3-shadow/sh256x88/vectors.json b/proto-cuda/packs-ca3-shadow/sh256x88/vectors.json index e8fe6391a..0bb4a469d 100644 --- a/proto-cuda/packs-ca3-shadow/sh256x88/vectors.json +++ b/proto-cuda/packs-ca3-shadow/sh256x88/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v2, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x84beec0429c7ef83", "0xf00d1a75c1983cc7", "0xa90bcc4907b862d3", "0xc4878beb87ecd1f8", "0xfc91443ee8482aa9", "0xcc6dec63ee8af2d2", "0x27bb87776a04a4b8", "0x52390b4de0bb62a9", - "0xccbe1f94b1b40f4f", "0x64baf9332b181a98", "0x397d39dc01b32f0e", "0xa8f87eb4e8bc75de", "0x6d941c833a2e5bad", "0xc57e923c71cfaded", "0x6ebb7f26d71568dc", "0x0dbdc04d57ad57e1", - "0xc29faa2c84db2ed7", "0x996c05fc549bbb92", "0x2fbd7656e887882d", "0xacd8bcf4005ee812", "0x767be8ac588d2e38", "0x47ec828643046423", "0x4c01d7965ae941c1", "0x57c5c70ffbbb0e65", - "0x13b17316cb50fb7b", "0x76a1f54649a370cf", "0xad69f76836ba8a7a", "0x733bd56efa378d81", "0x981c426d71f2ed8f", "0x54e1d4cbc0a62512", "0x67aff49ed29616c6", "0x334b204a4a68c30d" + "0x4e64318234942c72", "0xd32fdb168ebd4480", "0x6a02ae359310ac78", "0xad038fc83d25a39c", "0xf890d0386a7a5499", "0x64836880e58ce81e", "0x740f838c7051cb9c", "0xa4acf2d3e549a5da", + "0x8039b03e5895ae6b", "0x0a60aad58ad27c36", "0x72100b423a60d0fa", "0x7240e8147f60833e", "0x23b9bbed7ea1993b", "0x36fd90fa1f02c8ed", "0x387122913be5f809", "0xd5a4f420bf17ff8e", + "0x983378a1940aef46", "0x22123a1b08a47e3f", "0x5a54e63877b9953e", "0x1dbd846da35c699a", "0x21cdd2e69ca2798c", "0x7dbd40eb1f2da0db", "0xa81d12131d5f1a84", "0x09cef91af5a74839", + "0xccaaa6047d482fef", "0x633c0c9bfb6f305d", "0x731678f40bfde42d", "0x6410a0773de515cc", "0x42043082ccf18bbd", "0x926dc795c99303be", "0xc7bfc1861a1f2e81", "0xc1e77d7251cec9ce" ]}, {"base_nonce": 4096, "expected": [ - "0x32be0f5b7d992255", "0x015d46bc9c3a63e5", "0xd484e83305387249", "0xbd6caf73759993a4", "0xa45046fe4ffea71c", "0x998be3d8bc3b6b83", "0x22733e1011bb3899", "0xd43f643f374ec091", - "0x58af12ece0d06893", "0xc2c70d187309237d", "0xc63a383d3e949238", "0x6021dfa5644f37d6", "0x98403c9184ee7f9a", "0x41918aa77c615242", "0x4521bda069686b99", "0x063ad2e6be2a91b9", - "0xf4e60507ea9cebe7", "0x1af1193c38198412", "0xe888f6fb01c7122c", "0x64ba2c1961141fa6", "0xc86cd2ac3841a269", "0x3488615eda9032df", "0xdf7cd491843ee85c", "0x6661e8614d9e6c8b", - "0x3cf20cd75714f0c0", "0xc494aa0916c00aef", "0x659a06ca296e221c", "0x55641c3a74d4078a", "0xb4c4cde4ab6c19e2", "0xeeb96f46b670a71f", "0x2876607f7e2ea1c3", "0x2c8dbd443403bc84" + "0x79df1e7b1beb1213", "0x2d273d56dd5200e7", "0x5e1b4113f6bc264c", "0xf77f629627462121", "0x4fc2b35a1904d1a7", "0x6810c18bf5581a8a", "0xb332000f56b4e12e", "0xc1b025ff62403b33", + "0x20d84642f49f823f", "0x75d45f0c9f423cd8", "0xc756a54d47bd55d7", "0xbd2fc6f009ae7d55", "0x2ee1390bf34be77d", "0x2a69582f4aadcf47", "0x654b6ab8c8fa0677", "0x2e59a9ba14c510c9", + "0x002d9bc041f88540", "0xe968fc417135e8c8", "0xa66eaf92795a4ab2", "0xe3eb3ffac1b700c7", "0x0f8fd4c924174251", "0x2616a50fbbee50cd", "0xa3e9cafe7a137d18", "0xa6a6017e1d18ce0c", + "0x1943bdfe7a875a10", "0x767e42ddba3b0f06", "0xb86f041b1ff5b12b", "0x1adbda14a1f697fc", "0xc0ef3be5f0768edd", "0x79a57b9dda53fe92", "0x0c99bd453acb2340", "0xbd4bfc19881a5c27" ]}, {"base_nonce": 1000000, "expected": [ - "0x78541813d6547a59", "0x4048c2a56e0aeb32", "0xdde4ab04573bd691", "0x2efd693c76d79f20", "0xf2c68f0fe9a342d3", "0x35da60ca90cbe845", "0x36798fb3123a26c0", "0x0d889aeaaec59a84", - "0xe2a0581848e9bc0b", "0xed7a2887d34e286a", "0x7f933c3acbcae9d4", "0x11be5af68c3a8bd2", "0xee163f620d49e2da", "0xa959ae35321ed248", "0xecbbfca1292bdacc", "0x7ce337105114c1c4", - "0xc73aafe51ed8fde3", "0x760fdbb27982fcbd", "0xb9b573c20dc494c2", "0x55f9c2d1ef8cc32d", "0x2af4bfeea1c32c93", "0x3fe179c0b56193ae", "0x92bff7aaec5b772f", "0x80271a03ee19287c", - "0x4b98c3ac7191efc4", "0xe36245f5d990f94b", "0x2f7c0ed899091a02", "0xfbf09b3a6f2fb8db", "0x07ff9acffccbf012", "0xdcd9727fe482d3e3", "0xcae6d467f721bb31", "0xfd7fb2e05bbc316f" + "0x129fdfb505d8affe", "0x2cc0a7c8fd1b1f35", "0x953f1545253bb0eb", "0x4a736f04c55d047c", "0x1fc7cc8c3656890e", "0x95ebc86278e85c75", "0x1f1141b16359ec41", "0xfa45a8846231572c", + "0x79117cc8c0b33d68", "0xc588cf4d6ae802d1", "0xf60b0cda9cb25e9b", "0xffe590410f314156", "0xdacc186be7ae2b77", "0x1b768aca0a6bcf89", "0x50b39f3bfe9f9b55", "0x13f9d0bbccc7a3eb", + "0xbf1ae5ca14c1d5b4", "0x8855bf4bc3d9a4e2", "0x86f148623f1cd498", "0x9becef62ac65ab24", "0xcccd6eb1fbd50eec", "0xc2a1f71e6fdefbea", "0x3bb376588202c20e", "0x4eb08fd8d6e3aabf", + "0xa244a5410b77be38", "0x5c6a15b6a4a42a38", "0x2b83d3e8bc9108c5", "0x7b5e1db001e3d387", "0x34bae1d26c20bba2", "0x8b54b1dae16d1fb4", "0x932b4f9e3cb2643a", "0x884e120050b465b7" ]} ], "dataset_head": ["0xfdad4319", "0x1a7b68e1", "0xde6db608", "0x13d73892", "0xd17f447a", "0xb2221ccf", "0x9db004bd", "0x57d7d367", "0xdbc4cf34", "0x697c009a", "0xc43af1d4", "0x97f12b2e", "0x74c37cd0", "0xc651ea15", "0x665a6d29", "0x22330a2d"], diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cl b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cl index 8860b09f9..f3bd69ba5 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cu b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cu index 74f18d5a6..bc7e7ebc6 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cl index 30d551532..d54070789 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cu index 9b0644623..381756885 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.h b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.h index 797566612..74dca4aa4 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.h +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x9ad30d99u #define IGNEUM_ERA_STRIDE_ROT 29 #define IGNEUM_ERA_INTERLEAVE { 0, 2, 12, 13 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.json b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.json index 0df7ca434..16211bc41 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.json +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", "load_class": "mx8-erad810f22d+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.metal b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.metal index 695629bf9..c23b75c2e 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program_bound.metal index 8378806cd..2d5209c8b 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x9ad30d99u, 29u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x9ad30d99u, 29u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x9ad30d99u, 29u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.h b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.h index 15de69d34..3706c598b 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xcefc114b62c2013bull, 0x82df54bee88f1fa9ull, 0x94ed24d32cecf436ull, 0x8a9bd67e3fed0c5bull, 0x7c1a21514ebe42b7ull, 0x0edd5b084c5815edull, 0x077927721192da87ull, 0x28e26e3eb72cd8c4ull, - 0xbc7f3f9fd6f31019ull, 0x9760c30962c54b67ull, 0x1d3973217b0f60e9ull, 0xb9dce5f8dbc47f84ull, 0xf48230bc1c38a8a6ull, 0xab2be58a952ee580ull, 0x063033462d39b5faull, 0x63ca56a0425cd505ull, - 0xc8c1e7342452a6d5ull, 0xe936506b6f9c5859ull, 0xbe73aaebab23a47dull, 0x185855356357c704ull, 0x8e4d10d9f929e4c6ull, 0x8162627beec866c7ull, 0x5bfae763cdba41f4ull, 0xbd133821e099c624ull, - 0x11a8f07f88a424aaull, 0x9f872faaa642d022ull, 0xe02e4e5a55e161bbull, 0xec4674b8e19443a3ull, 0xcb09ce61d2a7a482ull, 0x246fc454a58d9623ull, 0xe4e9d962e94f9d44ull, 0xea8f7e5f79b3cd6cull + 0xb9034ec6711e5facull, 0x3b65da691cea9030ull, 0x7b301843257b4173ull, 0x713bf5a5f38ccf4full, 0x6c9c3fd5c15f968eull, 0x2d94c255d425ed0eull, 0x8d033249c0e58699ull, 0x7aa65017b710b983ull, + 0x973b1d8a1da0bdb3ull, 0x7ec9dc4b566a81b1ull, 0x150979b82faa600full, 0xd5740bf45f08e654ull, 0x5528af13c00bcc3dull, 0x268afd261090be98ull, 0x6ef15127533eea28ull, 0x5f88019cbd228bc7ull, + 0x75e6c5ccc55416e9ull, 0x5ee9a2c1ecb2158aull, 0x6ab3c45b65c29b47ull, 0x4bd3ac4e709cfefdull, 0x61ce3e84a909bd39ull, 0x3edd286e7bdb497full, 0xe74e6dde7048febeull, 0x2cdd8f9d358d4900ull, + 0xe9a26cb57e5e6e4cull, 0xf7416fc907a6021aull, 0xe41fd2f41763f29full, 0xa69d1cdad4d28b05ull, 0x623b6d8ee6c254c0ull, 0x54dfe10b503e014eull, 0xe7f3412da6be7d86ull, 0x213e90469133f321ull }, { // base nonce 4096 - 0x72369740c7e914faull, 0x4e26670191e736b1ull, 0xfd0539ebd2476ba2ull, 0xbe026940c9b9b0cfull, 0x173cb4ffa35536dbull, 0x7a8c9f39fee473c8ull, 0xf1edbc92d4cf8fa7ull, 0x94cafcf8fe4d3484ull, - 0xaf52574e663f35d4ull, 0x3bfb83843cd530d1ull, 0x2276280eeb130699ull, 0x15363890a20c32c8ull, 0xfef7c4da969248c5ull, 0x53a0e23bb0180cbbull, 0x282baa859711bdcfull, 0x6b4175f6beb71cddull, - 0xa4e2f89843daa5b2ull, 0x9869cfcd682cb892ull, 0x8cb61b6583116468ull, 0x6a229c5101f56038ull, 0x16879e17e3a67e45ull, 0x0bfd173dfec23e7dull, 0x163009720a7cbe26ull, 0xc981a122be3e093eull, - 0xc8b10d937fd4fd68ull, 0x046db9ec4d476d23ull, 0x24d7d036955fc12aull, 0x6d4a7f64498eb506ull, 0x4bc021381be82d8dull, 0x8b53fe60b02ff39eull, 0x4f4aa55e80356ed4ull, 0xb87adc5371e0d7f3ull + 0x0abb1a33c33fed29ull, 0x40acb8def3182680ull, 0x675db8c94a10fe90ull, 0xdb908aebe430d846ull, 0x13e90dfc31ae0dc2ull, 0x251b48fb47b2efd6ull, 0x25ba483b581d066dull, 0xc46aa67187e2a4b8ull, + 0x9a74429f6cd66397ull, 0xc878d2f559c74e4cull, 0x25cd89ed15b7341dull, 0x11927a7fb04b26d9ull, 0x74a13ce8a36afb4dull, 0x147a25ddeadb0c66ull, 0xe75d2b6ee3b5070aull, 0x0daccd94c68c5f5cull, + 0xebbb7b1640189a85ull, 0x1db2520374cb70daull, 0x8838b438566d7ed8ull, 0x92a398ee06882414ull, 0xe7fa6b03fe98186eull, 0xc3a81a28ebfe6b0eull, 0x970b159a800539b5ull, 0x2827315a44d52b00ull, + 0x51a12b1836476b78ull, 0x95bed1e378db02a1ull, 0xabf6a2fb188a6b44ull, 0xb753403d29a19cc4ull, 0x6e833396b29fe244ull, 0x6596073c01686655ull, 0x53bb903a73881fd0ull, 0x4f5a08344ede11e9ull }, { // base nonce 1000000 - 0xed8dab53b5e8e8edull, 0xa9094d1bb25a004eull, 0x26ec1cf0f7dbc177ull, 0x27a48a41c3b4e0d4ull, 0x56e048da75af2d13ull, 0xfedf9d48b3ed20d4ull, 0x68ab0258d0717aa6ull, 0x350a3144bf94e1c1ull, - 0x001a69003600a82full, 0x14ad260948d3e939ull, 0x5e255b44fd3e47b7ull, 0x53b5103bdee253beull, 0xc8cf96e4e28c7827ull, 0x10714ce66ccdbf82ull, 0x970092db360dd3c8ull, 0x0910d973b2114663ull, - 0x5755d28da59e923full, 0x867d702953278b8eull, 0x24d34058189ed262ull, 0xa38e73420b9e0405ull, 0xfdb7f7ceb03ae23bull, 0xf0e19d50f68941fdull, 0x0745a1fbcd7c081bull, 0xf56202c4322ddc9full, - 0x7754d69c1e232baeull, 0x8f769e87329523f7ull, 0x72005edcdb8bbe99ull, 0x1cc4600ef8652eb6ull, 0x9edcc4a4a846dd5cull, 0x16d2ba401de9992cull, 0x41ea900971c6a4f4ull, 0xc06178510e3ce787ull + 0x02493ab815583376ull, 0x8d9a7ff0fdf16442ull, 0x908d52ce709dbb1dull, 0x1c69e3e6d883b9b9ull, 0x7e55155355078823ull, 0x466083cea4ecba2eull, 0xd860a395df3d66dbull, 0x6cada4840fc1d081ull, + 0x1ef2ece8ea806bc6ull, 0x307fdd310a269ab6ull, 0x8dfcd78bcee2acdbull, 0x8c115ab38668fc7dull, 0xbcd5f7aeba052ad5ull, 0x8b10a6055c905b90ull, 0x3969e34ac3021036ull, 0xf7f4b601c8a76e98ull, + 0x55fcf6a8ec630592ull, 0xccb811f1351524f8ull, 0x1360c0a14f7735bbull, 0x2ab06c8ca4f045a0ull, 0xef6d642b91b98179ull, 0xa0b7f593a6c5a093ull, 0xe1aa8b798594627dull, 0x709cc4b4fda01c96ull, + 0x92cb5eaf81e5d25bull, 0x7c49cfb8b3581e4cull, 0xc650dc1450b0944aull, 0xe0cb41c8cf857b42ull, 0xcb39f235a32429d4ull, 0xdd2258f3569632dcull, 0x1f8fa5377e178ebeull, 0x5a7f6378f386d557ull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.json b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.json index 91635da08..4e0236188 100644 --- a/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-devnet-epoch0/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xcefc114b62c2013b", "0x82df54bee88f1fa9", "0x94ed24d32cecf436", "0x8a9bd67e3fed0c5b", "0x7c1a21514ebe42b7", "0x0edd5b084c5815ed", "0x077927721192da87", "0x28e26e3eb72cd8c4", - "0xbc7f3f9fd6f31019", "0x9760c30962c54b67", "0x1d3973217b0f60e9", "0xb9dce5f8dbc47f84", "0xf48230bc1c38a8a6", "0xab2be58a952ee580", "0x063033462d39b5fa", "0x63ca56a0425cd505", - "0xc8c1e7342452a6d5", "0xe936506b6f9c5859", "0xbe73aaebab23a47d", "0x185855356357c704", "0x8e4d10d9f929e4c6", "0x8162627beec866c7", "0x5bfae763cdba41f4", "0xbd133821e099c624", - "0x11a8f07f88a424aa", "0x9f872faaa642d022", "0xe02e4e5a55e161bb", "0xec4674b8e19443a3", "0xcb09ce61d2a7a482", "0x246fc454a58d9623", "0xe4e9d962e94f9d44", "0xea8f7e5f79b3cd6c" + "0xb9034ec6711e5fac", "0x3b65da691cea9030", "0x7b301843257b4173", "0x713bf5a5f38ccf4f", "0x6c9c3fd5c15f968e", "0x2d94c255d425ed0e", "0x8d033249c0e58699", "0x7aa65017b710b983", + "0x973b1d8a1da0bdb3", "0x7ec9dc4b566a81b1", "0x150979b82faa600f", "0xd5740bf45f08e654", "0x5528af13c00bcc3d", "0x268afd261090be98", "0x6ef15127533eea28", "0x5f88019cbd228bc7", + "0x75e6c5ccc55416e9", "0x5ee9a2c1ecb2158a", "0x6ab3c45b65c29b47", "0x4bd3ac4e709cfefd", "0x61ce3e84a909bd39", "0x3edd286e7bdb497f", "0xe74e6dde7048febe", "0x2cdd8f9d358d4900", + "0xe9a26cb57e5e6e4c", "0xf7416fc907a6021a", "0xe41fd2f41763f29f", "0xa69d1cdad4d28b05", "0x623b6d8ee6c254c0", "0x54dfe10b503e014e", "0xe7f3412da6be7d86", "0x213e90469133f321" ]}, {"base_nonce": 4096, "expected": [ - "0x72369740c7e914fa", "0x4e26670191e736b1", "0xfd0539ebd2476ba2", "0xbe026940c9b9b0cf", "0x173cb4ffa35536db", "0x7a8c9f39fee473c8", "0xf1edbc92d4cf8fa7", "0x94cafcf8fe4d3484", - "0xaf52574e663f35d4", "0x3bfb83843cd530d1", "0x2276280eeb130699", "0x15363890a20c32c8", "0xfef7c4da969248c5", "0x53a0e23bb0180cbb", "0x282baa859711bdcf", "0x6b4175f6beb71cdd", - "0xa4e2f89843daa5b2", "0x9869cfcd682cb892", "0x8cb61b6583116468", "0x6a229c5101f56038", "0x16879e17e3a67e45", "0x0bfd173dfec23e7d", "0x163009720a7cbe26", "0xc981a122be3e093e", - "0xc8b10d937fd4fd68", "0x046db9ec4d476d23", "0x24d7d036955fc12a", "0x6d4a7f64498eb506", "0x4bc021381be82d8d", "0x8b53fe60b02ff39e", "0x4f4aa55e80356ed4", "0xb87adc5371e0d7f3" + "0x0abb1a33c33fed29", "0x40acb8def3182680", "0x675db8c94a10fe90", "0xdb908aebe430d846", "0x13e90dfc31ae0dc2", "0x251b48fb47b2efd6", "0x25ba483b581d066d", "0xc46aa67187e2a4b8", + "0x9a74429f6cd66397", "0xc878d2f559c74e4c", "0x25cd89ed15b7341d", "0x11927a7fb04b26d9", "0x74a13ce8a36afb4d", "0x147a25ddeadb0c66", "0xe75d2b6ee3b5070a", "0x0daccd94c68c5f5c", + "0xebbb7b1640189a85", "0x1db2520374cb70da", "0x8838b438566d7ed8", "0x92a398ee06882414", "0xe7fa6b03fe98186e", "0xc3a81a28ebfe6b0e", "0x970b159a800539b5", "0x2827315a44d52b00", + "0x51a12b1836476b78", "0x95bed1e378db02a1", "0xabf6a2fb188a6b44", "0xb753403d29a19cc4", "0x6e833396b29fe244", "0x6596073c01686655", "0x53bb903a73881fd0", "0x4f5a08344ede11e9" ]}, {"base_nonce": 1000000, "expected": [ - "0xed8dab53b5e8e8ed", "0xa9094d1bb25a004e", "0x26ec1cf0f7dbc177", "0x27a48a41c3b4e0d4", "0x56e048da75af2d13", "0xfedf9d48b3ed20d4", "0x68ab0258d0717aa6", "0x350a3144bf94e1c1", - "0x001a69003600a82f", "0x14ad260948d3e939", "0x5e255b44fd3e47b7", "0x53b5103bdee253be", "0xc8cf96e4e28c7827", "0x10714ce66ccdbf82", "0x970092db360dd3c8", "0x0910d973b2114663", - "0x5755d28da59e923f", "0x867d702953278b8e", "0x24d34058189ed262", "0xa38e73420b9e0405", "0xfdb7f7ceb03ae23b", "0xf0e19d50f68941fd", "0x0745a1fbcd7c081b", "0xf56202c4322ddc9f", - "0x7754d69c1e232bae", "0x8f769e87329523f7", "0x72005edcdb8bbe99", "0x1cc4600ef8652eb6", "0x9edcc4a4a846dd5c", "0x16d2ba401de9992c", "0x41ea900971c6a4f4", "0xc06178510e3ce787" + "0x02493ab815583376", "0x8d9a7ff0fdf16442", "0x908d52ce709dbb1d", "0x1c69e3e6d883b9b9", "0x7e55155355078823", "0x466083cea4ecba2e", "0xd860a395df3d66db", "0x6cada4840fc1d081", + "0x1ef2ece8ea806bc6", "0x307fdd310a269ab6", "0x8dfcd78bcee2acdb", "0x8c115ab38668fc7d", "0xbcd5f7aeba052ad5", "0x8b10a6055c905b90", "0x3969e34ac3021036", "0xf7f4b601c8a76e98", + "0x55fcf6a8ec630592", "0xccb811f1351524f8", "0x1360c0a14f7735bb", "0x2ab06c8ca4f045a0", "0xef6d642b91b98179", "0xa0b7f593a6c5a093", "0xe1aa8b798594627d", "0x709cc4b4fda01c96", + "0x92cb5eaf81e5d25b", "0x7c49cfb8b3581e4c", "0xc650dc1450b0944a", "0xe0cb41c8cf857b42", "0xcb39f235a32429d4", "0xdd2258f3569632dc", "0x1f8fa5377e178ebe", "0x5a7f6378f386d557" ]} ], "dataset_head": ["0x19c6837f", "0xdf3adfb8", "0xbd3f6aed", "0xb8bede0d", "0xc5f0629f", "0x03e38ae8", "0xc435a60e", "0xfadee916", "0x827e59af", "0x8cf592f5", "0x60286061", "0x5d9abc1c", "0xa85d0c39", "0x4247a100", "0xd41a5b0d", "0x3f33dc64"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cl index ec346a73c..c41c07a68 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cu index 3b7fe1322..d961bac97 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-0/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cl index f68444176..74ce1b64b 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cu index 60bfb1fc7..eab526305 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-0/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/program.h b/proto-cuda/packs-ca3-v4/v4-era-0/program.h index 12e272815..961299f34 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-0/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "8bffdd3366b9c3ffe89c1231e91538d531cfa717307df5c48ccba43096e17212" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x625e5ab3u #define IGNEUM_ERA_STRIDE_ROT 19 #define IGNEUM_ERA_INTERLEAVE { 0, 2, 10, 15 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/program.json b/proto-cuda/packs-ca3-v4/v4-era-0/program.json index 0f1becba3..e48c4856f 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-0/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "8bffdd3366b9c3ffe89c1231e91538d531cfa717307df5c48ccba43096e17212", "load_class": "mx8-erab2ed8a89+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/program.metal b/proto-cuda/packs-ca3-v4/v4-era-0/program.metal index 8eb97ed01..b0902d10d 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-0/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-0/program_bound.metal index a273a20c9..a7696dcc8 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-0/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x625e5ab3u, 19u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x625e5ab3u, 19u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x625e5ab3u, 19u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-0/vectors.h index 84254f8d6..d7b365e4c 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-0/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xc6ac65d8c667c94bull, 0x423ba68373b366fbull, 0x21eb7c55ad8be449ull, 0x241e717cf2ab882aull, 0xa615906f3f9be2ceull, 0xce309393aa36b7efull, 0x6243ddb51a337304ull, 0xe0495ce514ee4267ull, - 0xf479942a15b82d19ull, 0x3484f32ff6dcf936ull, 0x3d485cd36298b5daull, 0xcdb8c5017040e9edull, 0xed23ab1ee79266d1ull, 0x1a56ee16d69ad2a3ull, 0x0646e3397a174f83ull, 0x98ea781f02a5071aull, - 0x8c77f5c840d7762full, 0x4720419c079f4b89ull, 0xa9b0e2c3c07d9885ull, 0x612ecd1ff4ecd3c5ull, 0x254f3b36ad521004ull, 0x46d1f55d10cac72dull, 0xd7a5ba62b5d9315dull, 0xeac91757fb066b5full, - 0x84f6904c2da56898ull, 0x06efd77b90561e3cull, 0x9e152e00cd51627bull, 0x708c82cc2f545ca5ull, 0x7fb90cbb65b09681ull, 0x1a170cf306c6b81cull, 0x3d5fa555658bc6bfull, 0xb1dbc3e905378746ull + 0xb3a9a56cd6262839ull, 0x9647a7f847f7b325ull, 0x564b5523fff06340ull, 0xc6b94f272c812a6full, 0x00ba391677bde6f7ull, 0x48b1e3d9ec8e190aull, 0x9323412d568f9ad3ull, 0x7df41522e473a8a6ull, + 0xaac4056991cc3405ull, 0x71e7a72beb505030ull, 0xa35319b04b4e4ebcull, 0xf349e07c1aa5d583ull, 0xf4c43b4c2cd64f87ull, 0x4e9f50752f13feccull, 0xfa0efdaa136b1e4eull, 0xf9ee1ad7daca0341ull, + 0xd7e56db6f446d928ull, 0x80adf5c0a46f57bdull, 0xfe5d70ff9519f0aeull, 0x3a05fd971f2d2b84ull, 0x63fd27f5a142a2e7ull, 0xa4e7026d85ef279bull, 0x19f39e118a13a03cull, 0xc1492288692aa3c2ull, + 0x53167ff9a20ff7f2ull, 0xcbb8c81293e3dd73ull, 0x48c86a037d9d2df9ull, 0x64a4bd23551fb76eull, 0x793b72a3533c1df5ull, 0x7813144720ffde55ull, 0x76e43fadd4811e1cull, 0xb25190d644354880ull }, { // base nonce 4096 - 0x3be623a0f075d1f3ull, 0x2552e70de3533e93ull, 0x4c58e7fac79e754dull, 0x4c6ce1acd35693f6ull, 0x9c356bcd5f1d4639ull, 0x29361be2e3fa88efull, 0x8a1878dfba4b4637ull, 0x9289b157d1a01a8cull, - 0x70a4b5646d471b8eull, 0xcf1595ab96209aa0ull, 0xe83503a00680799aull, 0x7c1179b26025fcb4ull, 0x5a7aa05cd428f182ull, 0x02466e4a89473e34ull, 0xbd379fafb5889deeull, 0x914679b7d4a92eceull, - 0x71b1611d70b03bd4ull, 0x9b6ec7ca5afd24dbull, 0x955f2305b288ef17ull, 0x456aeb62e25e0a8cull, 0x40724ed4d6c72cc7ull, 0xf520227cecca4067ull, 0x92146b6c5d82408full, 0xbacdfeaa3693bba5ull, - 0xb50a632febcaff29ull, 0x60bfffcb8b540752ull, 0x3eb9dbc42fc7b9d9ull, 0x73fd73c129763cd9ull, 0x701a9ec7130c5833ull, 0x02845e3260dbb636ull, 0x3b15ad42edfd3e74ull, 0x531d777ef600ee58ull + 0x35813a1d007cc4fcull, 0xbf6038d6d7c608c2ull, 0xc700ed43d0c221a6ull, 0x8201f42c036a6973ull, 0xf3a5ed87522d4457ull, 0xd37336f086cea31bull, 0xbd07db8b671cba07ull, 0x88d71b593dbb4d79ull, + 0xb5dd7efa2dc38724ull, 0xd7ceac05ede80cb1ull, 0xa2be5e0eeb558be3ull, 0x4b223a2da3b1cbfaull, 0xe80a880e8c423b58ull, 0xf72e6726f6dd2cedull, 0x4f4a249ec493e01aull, 0xc3f3e9d9ed2557b6ull, + 0x7a1975bb4a421973ull, 0x6b530daddda86c5eull, 0xcc9c310997045fd4ull, 0xc7883cd20e1175a5ull, 0xc57e2ccc938321b6ull, 0x95e590fbb7745b98ull, 0x73841df2638f1939ull, 0x9424cb4cd3912794ull, + 0xa55f44b470857c26ull, 0xe4cb5e800792abebull, 0xed0d57d573ca2667ull, 0x73fba711d826246full, 0x3a84b0f691909d4cull, 0x776c3141730962a3ull, 0xd0d78d5ddb93529cull, 0x2fffc4d89eab7b0eull }, { // base nonce 1000000 - 0xde8458bcb18fb637ull, 0x0206b58b1f067ff0ull, 0xe107cdd0e87d28aeull, 0x49fef7f22bc586d4ull, 0xff64163d017070ccull, 0x968adfe921ccec1bull, 0xe9560f8a3fa830daull, 0x5d6f239c97224957ull, - 0xcc2f980c31f7c7e5ull, 0x4d7cd09c7b731241ull, 0x5b1841dcfa517b45ull, 0xabd19c355dd4723full, 0x316eaf5ba7e30331ull, 0xec8156a374468b8dull, 0x0e3505a1ec9fe2a1ull, 0x5f1f5a94a69a1178ull, - 0xd4e6f7fda43c5056ull, 0x5ce560511eddb335ull, 0x88180b5ce94621cfull, 0xb1095ce2dc071b55ull, 0xded0110936b4cf80ull, 0x43d2bbff72e231bcull, 0xdd2bae28dbc4a9feull, 0x1c5055680fc7bca6ull, - 0x1917e8e4e79db0adull, 0xb4f64af4d8f8a7c2ull, 0xd6df5b0607279b60ull, 0x3da81ec2899f8314ull, 0x384c998c46ab8b80ull, 0x7c8ada8b7ca44cd5ull, 0x1346a6394b7e4e05ull, 0x4e9868001eb79a14ull + 0x17881d377595f04eull, 0xc871723058cb5d50ull, 0x4abf11697cb006abull, 0xaec0866dd6e5ad07ull, 0x841be78533292829ull, 0xad66114389a58451ull, 0xe2334630db45f4c8ull, 0xf1070ddd26c0026full, + 0xb579139914ec135cull, 0xbe47563f4c0a7866ull, 0xc4546a5054a3083bull, 0xcff83f4ce6ff9935ull, 0x4d5b18143981fd4eull, 0x64ae78e02c05c6d4ull, 0x6c5b9b35a7910710ull, 0xedf6034405a57daeull, + 0x90dc45a093cfdb4aull, 0x8191ad8ee229568eull, 0xc6d768fd41832f4aull, 0xa27592dde1e532afull, 0x051f489cf807aee0ull, 0xdcfcbc9fc6de509eull, 0x3a9e85b4bb2c9e9bull, 0xd00110ad255f826dull, + 0x4e8ce146e485efd4ull, 0x31833f529fc93b2full, 0x866f00944db10630ull, 0xed23b5114f69e28cull, 0x4dc9486df35eabd2ull, 0x8ea710f6445acecaull, 0xf475659cf080d0abull, 0x995c17d2590c8c3cull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-0/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-0/vectors.json index 832538fa7..ce7355389 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-0/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-0/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xc6ac65d8c667c94b", "0x423ba68373b366fb", "0x21eb7c55ad8be449", "0x241e717cf2ab882a", "0xa615906f3f9be2ce", "0xce309393aa36b7ef", "0x6243ddb51a337304", "0xe0495ce514ee4267", - "0xf479942a15b82d19", "0x3484f32ff6dcf936", "0x3d485cd36298b5da", "0xcdb8c5017040e9ed", "0xed23ab1ee79266d1", "0x1a56ee16d69ad2a3", "0x0646e3397a174f83", "0x98ea781f02a5071a", - "0x8c77f5c840d7762f", "0x4720419c079f4b89", "0xa9b0e2c3c07d9885", "0x612ecd1ff4ecd3c5", "0x254f3b36ad521004", "0x46d1f55d10cac72d", "0xd7a5ba62b5d9315d", "0xeac91757fb066b5f", - "0x84f6904c2da56898", "0x06efd77b90561e3c", "0x9e152e00cd51627b", "0x708c82cc2f545ca5", "0x7fb90cbb65b09681", "0x1a170cf306c6b81c", "0x3d5fa555658bc6bf", "0xb1dbc3e905378746" + "0xb3a9a56cd6262839", "0x9647a7f847f7b325", "0x564b5523fff06340", "0xc6b94f272c812a6f", "0x00ba391677bde6f7", "0x48b1e3d9ec8e190a", "0x9323412d568f9ad3", "0x7df41522e473a8a6", + "0xaac4056991cc3405", "0x71e7a72beb505030", "0xa35319b04b4e4ebc", "0xf349e07c1aa5d583", "0xf4c43b4c2cd64f87", "0x4e9f50752f13fecc", "0xfa0efdaa136b1e4e", "0xf9ee1ad7daca0341", + "0xd7e56db6f446d928", "0x80adf5c0a46f57bd", "0xfe5d70ff9519f0ae", "0x3a05fd971f2d2b84", "0x63fd27f5a142a2e7", "0xa4e7026d85ef279b", "0x19f39e118a13a03c", "0xc1492288692aa3c2", + "0x53167ff9a20ff7f2", "0xcbb8c81293e3dd73", "0x48c86a037d9d2df9", "0x64a4bd23551fb76e", "0x793b72a3533c1df5", "0x7813144720ffde55", "0x76e43fadd4811e1c", "0xb25190d644354880" ]}, {"base_nonce": 4096, "expected": [ - "0x3be623a0f075d1f3", "0x2552e70de3533e93", "0x4c58e7fac79e754d", "0x4c6ce1acd35693f6", "0x9c356bcd5f1d4639", "0x29361be2e3fa88ef", "0x8a1878dfba4b4637", "0x9289b157d1a01a8c", - "0x70a4b5646d471b8e", "0xcf1595ab96209aa0", "0xe83503a00680799a", "0x7c1179b26025fcb4", "0x5a7aa05cd428f182", "0x02466e4a89473e34", "0xbd379fafb5889dee", "0x914679b7d4a92ece", - "0x71b1611d70b03bd4", "0x9b6ec7ca5afd24db", "0x955f2305b288ef17", "0x456aeb62e25e0a8c", "0x40724ed4d6c72cc7", "0xf520227cecca4067", "0x92146b6c5d82408f", "0xbacdfeaa3693bba5", - "0xb50a632febcaff29", "0x60bfffcb8b540752", "0x3eb9dbc42fc7b9d9", "0x73fd73c129763cd9", "0x701a9ec7130c5833", "0x02845e3260dbb636", "0x3b15ad42edfd3e74", "0x531d777ef600ee58" + "0x35813a1d007cc4fc", "0xbf6038d6d7c608c2", "0xc700ed43d0c221a6", "0x8201f42c036a6973", "0xf3a5ed87522d4457", "0xd37336f086cea31b", "0xbd07db8b671cba07", "0x88d71b593dbb4d79", + "0xb5dd7efa2dc38724", "0xd7ceac05ede80cb1", "0xa2be5e0eeb558be3", "0x4b223a2da3b1cbfa", "0xe80a880e8c423b58", "0xf72e6726f6dd2ced", "0x4f4a249ec493e01a", "0xc3f3e9d9ed2557b6", + "0x7a1975bb4a421973", "0x6b530daddda86c5e", "0xcc9c310997045fd4", "0xc7883cd20e1175a5", "0xc57e2ccc938321b6", "0x95e590fbb7745b98", "0x73841df2638f1939", "0x9424cb4cd3912794", + "0xa55f44b470857c26", "0xe4cb5e800792abeb", "0xed0d57d573ca2667", "0x73fba711d826246f", "0x3a84b0f691909d4c", "0x776c3141730962a3", "0xd0d78d5ddb93529c", "0x2fffc4d89eab7b0e" ]}, {"base_nonce": 1000000, "expected": [ - "0xde8458bcb18fb637", "0x0206b58b1f067ff0", "0xe107cdd0e87d28ae", "0x49fef7f22bc586d4", "0xff64163d017070cc", "0x968adfe921ccec1b", "0xe9560f8a3fa830da", "0x5d6f239c97224957", - "0xcc2f980c31f7c7e5", "0x4d7cd09c7b731241", "0x5b1841dcfa517b45", "0xabd19c355dd4723f", "0x316eaf5ba7e30331", "0xec8156a374468b8d", "0x0e3505a1ec9fe2a1", "0x5f1f5a94a69a1178", - "0xd4e6f7fda43c5056", "0x5ce560511eddb335", "0x88180b5ce94621cf", "0xb1095ce2dc071b55", "0xded0110936b4cf80", "0x43d2bbff72e231bc", "0xdd2bae28dbc4a9fe", "0x1c5055680fc7bca6", - "0x1917e8e4e79db0ad", "0xb4f64af4d8f8a7c2", "0xd6df5b0607279b60", "0x3da81ec2899f8314", "0x384c998c46ab8b80", "0x7c8ada8b7ca44cd5", "0x1346a6394b7e4e05", "0x4e9868001eb79a14" + "0x17881d377595f04e", "0xc871723058cb5d50", "0x4abf11697cb006ab", "0xaec0866dd6e5ad07", "0x841be78533292829", "0xad66114389a58451", "0xe2334630db45f4c8", "0xf1070ddd26c0026f", + "0xb579139914ec135c", "0xbe47563f4c0a7866", "0xc4546a5054a3083b", "0xcff83f4ce6ff9935", "0x4d5b18143981fd4e", "0x64ae78e02c05c6d4", "0x6c5b9b35a7910710", "0xedf6034405a57dae", + "0x90dc45a093cfdb4a", "0x8191ad8ee229568e", "0xc6d768fd41832f4a", "0xa27592dde1e532af", "0x051f489cf807aee0", "0xdcfcbc9fc6de509e", "0x3a9e85b4bb2c9e9b", "0xd00110ad255f826d", + "0x4e8ce146e485efd4", "0x31833f529fc93b2f", "0x866f00944db10630", "0xed23b5114f69e28c", "0x4dc9486df35eabd2", "0x8ea710f6445aceca", "0xf475659cf080d0ab", "0x995c17d2590c8c3c" ]} ], "dataset_head": ["0x19c6837f", "0xdf3adfb8", "0xbd3f6aed", "0xb8bede0d", "0xc5f0629f", "0x03e38ae8", "0xc435a60e", "0xfadee916", "0x827e59af", "0x8cf592f5", "0x60286061", "0x5d9abc1c", "0xa85d0c39", "0x4247a100", "0xd41a5b0d", "0x3f33dc64"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cl index 4393f4742..a1dc954a1 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cu index 262ddb4ce..f0b5e49e2 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-1/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cl index 6eb871a96..e7038aa2c 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cu index fb11f746d..2d4ca92e1 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-1/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/program.h b/proto-cuda/packs-ca3-v4/v4-era-1/program.h index 9e205a43b..905c2642f 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-1/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "ff87ad96a1b53f367a95d5ca123bab64211bd9aa57fc7ad3c5e2d496c20138d4" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0xb2a9d70du #define IGNEUM_ERA_STRIDE_ROT 6 #define IGNEUM_ERA_INTERLEAVE { 1, 3, 8, 13 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/program.json b/proto-cuda/packs-ca3-v4/v4-era-1/program.json index 8c26983fd..4fbdfb5cf 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-1/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "ff87ad96a1b53f367a95d5ca123bab64211bd9aa57fc7ad3c5e2d496c20138d4", "load_class": "mx8-era676a17fc+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/program.metal b/proto-cuda/packs-ca3-v4/v4-era-1/program.metal index 0ff6abf37..3076995c8 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-1/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-1/program_bound.metal index e315d069f..b72dc39f2 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-1/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0xb2a9d70du, 6u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0xb2a9d70du, 6u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0xb2a9d70du, 6u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-1/vectors.h index 5a0861fe4..66509bf6b 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-1/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xbd25be585e9f483aull, 0x42415dc1008bc167ull, 0x808b481a2ba0ee31ull, 0x9482f0d11a102aacull, 0xc8782e4fbd38f71dull, 0xbef02f6193c78dfeull, 0xf790061d0baf0ee2ull, 0x8df707bfebbb5266ull, - 0xd47ebe3648c32aa3ull, 0x8e337e0d74000f5full, 0xa2c1dfcf9bfd9b2bull, 0xbdc82bdf98d937e5ull, 0x6d8c6d41b0556cf1ull, 0x170c6a842bd29f8cull, 0x7cbb60763f8211e9ull, 0x091ae60c8df77ff1ull, - 0x85a309968b859efaull, 0xf917cf6f7e727926ull, 0xfa93a9f444db6381ull, 0x7ce089b8173f1af8ull, 0xdd4a1af297ec79f9ull, 0x3a1b907f25b76559ull, 0x5961a512eae86334ull, 0xf424423457ea3765ull, - 0x29c91de1b47e5cc1ull, 0x42dbeea9049ee394ull, 0xf1e5b7db42c969fcull, 0x05bd552362270025ull, 0xcc9d52e46c34e222ull, 0xea7a8dd12d9b5215ull, 0xb3767e4e3995df68ull, 0xe8ef919d038d88c5ull + 0x6d0d13f33130a9c2ull, 0x19d85963287f40beull, 0xf923f2c8c6fdd431ull, 0x65b30356009b29ddull, 0xb8050303b3b87fffull, 0x9409d0c9834ad96bull, 0x0ce7b5248f887343ull, 0x11da65fd8d1cba14ull, + 0x95f80aa1925d6bedull, 0x4af36c21279d8eaaull, 0x733f506887416358ull, 0xffb9b48eabda6c14ull, 0x0e312ff91b7e2ee5ull, 0x692fb750bdfafdd4ull, 0x0b94c06a99ade0a2ull, 0x838dfd7e4fad03c9ull, + 0xcf633a2599d6bff1ull, 0x0d88ec47e46bab4aull, 0x247ae87b45e1a3f3ull, 0x33850bf248a09442ull, 0x8e713f3860453b6eull, 0xbc72591fdd48a84dull, 0x26973c1dd2b62f26ull, 0x0237c53bebb667ddull, + 0x07b5d654af48289cull, 0x92b5bb645688e739ull, 0xadcaf3c3c96d75b6ull, 0x183f0f05f4657172ull, 0xe34a3539a865a0a5ull, 0x9cf7928a07a94d91ull, 0xf64241706404d725ull, 0x024410955d6f13fdull }, { // base nonce 4096 - 0x3f56bb1287c456ceull, 0x82ea484e42cdc735ull, 0xf23918f44eb4b16bull, 0x35fa0e1461907922ull, 0x8f5ce24039e15677ull, 0xacd1c99175c3d7ecull, 0xd178a7b614ed8146ull, 0x47f918cfd5054696ull, - 0xc563739e8a6f80edull, 0x9e60aeeb9ca06c4eull, 0x857d4b51b3d98e10ull, 0xfaf2d0a4f79095ebull, 0x0b71b8fc789ac2ecull, 0x43a232348714b127ull, 0x285acfdac594da71ull, 0x3a7b88c3ce2b8072ull, - 0xa42762355d7a0a94ull, 0x12a5093c741ccfabull, 0x1c9132a046e1ca9full, 0xe88f10a778a1aabeull, 0xb54049c213699dc2ull, 0x3bb616b0bffda6b0ull, 0x2d2f0a25b94ecb3eull, 0x38c41e74a75e5921ull, - 0x631515adfa1edd4full, 0x80a01b3952ea1c95ull, 0x00afd63a2d4afcc2ull, 0x00fa1532253d3ea2ull, 0x76a824e91f58ad63ull, 0x15f3aa3ce283008bull, 0x8c4593b01e90cf5bull, 0x9b772227f63f5c1dull + 0xa349b923150cce34ull, 0xfe374af7464a6e22ull, 0x7e89332c37b8db17ull, 0x2731bae965d9ede8ull, 0x2968762bc404bd32ull, 0xd637b12938b4aa6eull, 0xa9c5f96d4bc3ec28ull, 0x031a65bd9ecfd009ull, + 0xa90a407631c53a1dull, 0xf48734de2bde55b1ull, 0x9b833ad8f2ceb3c3ull, 0x83f1d8c7637dba1aull, 0x7dd2fbafe5838a70ull, 0x195dec2c7a1abdcdull, 0x06021aa87f9a6199ull, 0xd75c84d95a9561fdull, + 0x0b19dbc35c1665ceull, 0x9d5697afada2e764ull, 0x5ee4ce1f9d582f4cull, 0xb8090a24a9c9b7e5ull, 0x4be263a5e6f36507ull, 0xadba852a874ba45aull, 0x11f40a3debcd25aaull, 0xcd644eb2d6399a13ull, + 0x51d517c234ffe80bull, 0x676a7423448682e7ull, 0xd1e28b62fdd19d8dull, 0x269e3684fc97e7d8ull, 0x432173ccec0c4c56ull, 0x27386bcaaa569e02ull, 0x23e5f4c343737bcdull, 0x1324feb52ab1ef54ull }, { // base nonce 1000000 - 0xffc8d9c97d88e620ull, 0x1d7ee1acd496f181ull, 0xdff243b4a319c51aull, 0x1fd170c09f160fe3ull, 0xf67e0b69767852b0ull, 0x472912b4be99cdcdull, 0x5fad91fd832b3b61ull, 0xa5c9c1359d6aa74eull, - 0x6954523bb04ee9afull, 0xb048141f79726eb7ull, 0xe0c3182a16efb402ull, 0x39a09b038893b946ull, 0x2755e09f37d5efe2ull, 0x1e3338adcbbbaa5eull, 0x9036ec64d8816dbeull, 0xb6f6ffa4a73b774eull, - 0x514532b888255135ull, 0xc201f3dad4148ea0ull, 0x48cbcb6a4c9ba357ull, 0xf199b90384342df7ull, 0x9657e131356782d8ull, 0x5aa6f64a15b174f9ull, 0x6442f6fc30cd2f6cull, 0xdbd16862aff1b9b5ull, - 0xf62576ff01a1e6d6ull, 0xc3f654831ee4d08full, 0xbbe065fb2695bdffull, 0x1b9851d988309c48ull, 0x8474d21940bcc812ull, 0xa90030c199ad1c6bull, 0xb0752b8985cb7723ull, 0x2e5049d028c84c43ull + 0xc72739c720cccff8ull, 0xc636c3fb73bfa2e2ull, 0x9c7d3b3f5e1344a5ull, 0x661676da94059438ull, 0x059b7cce292934eaull, 0xabd6b4b55dc88ab6ull, 0x6371d0e025f2c310ull, 0xbb5684f9863dd482ull, + 0x80945ef982d33c9dull, 0x33334b3042065708ull, 0x0cb33376f0fbebbfull, 0x676452be1aa688d4ull, 0x8a58806a10dc211dull, 0x9bd5a9d76b632222ull, 0x206d94200e01a190ull, 0x2d390d8923d1a871ull, + 0x1c8d9f8bc4fb860dull, 0x76254d06ec107efaull, 0x20f205689169a9d3ull, 0x8177412e65746d6full, 0x5c5c2ccd269f9c84ull, 0x81eda0d83ba4352dull, 0x2e5c776402343acaull, 0xb9a3aba804cf316bull, + 0x52c4467f914982b8ull, 0x29b510ec94341afeull, 0x4b8fe210069b0cfaull, 0x41a3da23d35f70e0ull, 0x084be680d9164cd2ull, 0x65c88b0cbefaa81bull, 0xc07c4d709177ca1aull, 0xd89acba46d478885ull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-1/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-1/vectors.json index d3d40ed6a..20eabcdfb 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-1/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-1/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xbd25be585e9f483a", "0x42415dc1008bc167", "0x808b481a2ba0ee31", "0x9482f0d11a102aac", "0xc8782e4fbd38f71d", "0xbef02f6193c78dfe", "0xf790061d0baf0ee2", "0x8df707bfebbb5266", - "0xd47ebe3648c32aa3", "0x8e337e0d74000f5f", "0xa2c1dfcf9bfd9b2b", "0xbdc82bdf98d937e5", "0x6d8c6d41b0556cf1", "0x170c6a842bd29f8c", "0x7cbb60763f8211e9", "0x091ae60c8df77ff1", - "0x85a309968b859efa", "0xf917cf6f7e727926", "0xfa93a9f444db6381", "0x7ce089b8173f1af8", "0xdd4a1af297ec79f9", "0x3a1b907f25b76559", "0x5961a512eae86334", "0xf424423457ea3765", - "0x29c91de1b47e5cc1", "0x42dbeea9049ee394", "0xf1e5b7db42c969fc", "0x05bd552362270025", "0xcc9d52e46c34e222", "0xea7a8dd12d9b5215", "0xb3767e4e3995df68", "0xe8ef919d038d88c5" + "0x6d0d13f33130a9c2", "0x19d85963287f40be", "0xf923f2c8c6fdd431", "0x65b30356009b29dd", "0xb8050303b3b87fff", "0x9409d0c9834ad96b", "0x0ce7b5248f887343", "0x11da65fd8d1cba14", + "0x95f80aa1925d6bed", "0x4af36c21279d8eaa", "0x733f506887416358", "0xffb9b48eabda6c14", "0x0e312ff91b7e2ee5", "0x692fb750bdfafdd4", "0x0b94c06a99ade0a2", "0x838dfd7e4fad03c9", + "0xcf633a2599d6bff1", "0x0d88ec47e46bab4a", "0x247ae87b45e1a3f3", "0x33850bf248a09442", "0x8e713f3860453b6e", "0xbc72591fdd48a84d", "0x26973c1dd2b62f26", "0x0237c53bebb667dd", + "0x07b5d654af48289c", "0x92b5bb645688e739", "0xadcaf3c3c96d75b6", "0x183f0f05f4657172", "0xe34a3539a865a0a5", "0x9cf7928a07a94d91", "0xf64241706404d725", "0x024410955d6f13fd" ]}, {"base_nonce": 4096, "expected": [ - "0x3f56bb1287c456ce", "0x82ea484e42cdc735", "0xf23918f44eb4b16b", "0x35fa0e1461907922", "0x8f5ce24039e15677", "0xacd1c99175c3d7ec", "0xd178a7b614ed8146", "0x47f918cfd5054696", - "0xc563739e8a6f80ed", "0x9e60aeeb9ca06c4e", "0x857d4b51b3d98e10", "0xfaf2d0a4f79095eb", "0x0b71b8fc789ac2ec", "0x43a232348714b127", "0x285acfdac594da71", "0x3a7b88c3ce2b8072", - "0xa42762355d7a0a94", "0x12a5093c741ccfab", "0x1c9132a046e1ca9f", "0xe88f10a778a1aabe", "0xb54049c213699dc2", "0x3bb616b0bffda6b0", "0x2d2f0a25b94ecb3e", "0x38c41e74a75e5921", - "0x631515adfa1edd4f", "0x80a01b3952ea1c95", "0x00afd63a2d4afcc2", "0x00fa1532253d3ea2", "0x76a824e91f58ad63", "0x15f3aa3ce283008b", "0x8c4593b01e90cf5b", "0x9b772227f63f5c1d" + "0xa349b923150cce34", "0xfe374af7464a6e22", "0x7e89332c37b8db17", "0x2731bae965d9ede8", "0x2968762bc404bd32", "0xd637b12938b4aa6e", "0xa9c5f96d4bc3ec28", "0x031a65bd9ecfd009", + "0xa90a407631c53a1d", "0xf48734de2bde55b1", "0x9b833ad8f2ceb3c3", "0x83f1d8c7637dba1a", "0x7dd2fbafe5838a70", "0x195dec2c7a1abdcd", "0x06021aa87f9a6199", "0xd75c84d95a9561fd", + "0x0b19dbc35c1665ce", "0x9d5697afada2e764", "0x5ee4ce1f9d582f4c", "0xb8090a24a9c9b7e5", "0x4be263a5e6f36507", "0xadba852a874ba45a", "0x11f40a3debcd25aa", "0xcd644eb2d6399a13", + "0x51d517c234ffe80b", "0x676a7423448682e7", "0xd1e28b62fdd19d8d", "0x269e3684fc97e7d8", "0x432173ccec0c4c56", "0x27386bcaaa569e02", "0x23e5f4c343737bcd", "0x1324feb52ab1ef54" ]}, {"base_nonce": 1000000, "expected": [ - "0xffc8d9c97d88e620", "0x1d7ee1acd496f181", "0xdff243b4a319c51a", "0x1fd170c09f160fe3", "0xf67e0b69767852b0", "0x472912b4be99cdcd", "0x5fad91fd832b3b61", "0xa5c9c1359d6aa74e", - "0x6954523bb04ee9af", "0xb048141f79726eb7", "0xe0c3182a16efb402", "0x39a09b038893b946", "0x2755e09f37d5efe2", "0x1e3338adcbbbaa5e", "0x9036ec64d8816dbe", "0xb6f6ffa4a73b774e", - "0x514532b888255135", "0xc201f3dad4148ea0", "0x48cbcb6a4c9ba357", "0xf199b90384342df7", "0x9657e131356782d8", "0x5aa6f64a15b174f9", "0x6442f6fc30cd2f6c", "0xdbd16862aff1b9b5", - "0xf62576ff01a1e6d6", "0xc3f654831ee4d08f", "0xbbe065fb2695bdff", "0x1b9851d988309c48", "0x8474d21940bcc812", "0xa90030c199ad1c6b", "0xb0752b8985cb7723", "0x2e5049d028c84c43" + "0xc72739c720cccff8", "0xc636c3fb73bfa2e2", "0x9c7d3b3f5e1344a5", "0x661676da94059438", "0x059b7cce292934ea", "0xabd6b4b55dc88ab6", "0x6371d0e025f2c310", "0xbb5684f9863dd482", + "0x80945ef982d33c9d", "0x33334b3042065708", "0x0cb33376f0fbebbf", "0x676452be1aa688d4", "0x8a58806a10dc211d", "0x9bd5a9d76b632222", "0x206d94200e01a190", "0x2d390d8923d1a871", + "0x1c8d9f8bc4fb860d", "0x76254d06ec107efa", "0x20f205689169a9d3", "0x8177412e65746d6f", "0x5c5c2ccd269f9c84", "0x81eda0d83ba4352d", "0x2e5c776402343aca", "0xb9a3aba804cf316b", + "0x52c4467f914982b8", "0x29b510ec94341afe", "0x4b8fe210069b0cfa", "0x41a3da23d35f70e0", "0x084be680d9164cd2", "0x65c88b0cbefaa81b", "0xc07c4d709177ca1a", "0xd89acba46d478885" ]} ], "dataset_head": ["0x19c6837f", "0xbd3f6aed", "0xdf3adfb8", "0xb8bede0d", "0x827e59af", "0x60286061", "0x8cf592f5", "0x5d9abc1c", "0xc5f0629f", "0xc435a60e", "0x03e38ae8", "0xfadee916", "0xa85d0c39", "0xd41a5b0d", "0x4247a100", "0x3f33dc64"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cl index 6f8d2196e..7f2cdd62b 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cu index 519c701df..151241fe3 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-2/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cl index 94eab846c..06d5a7101 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cu index 0c0e9413f..9c8bb441a 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-2/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/program.h b/proto-cuda/packs-ca3-v4/v4-era-2/program.h index 8a962d87e..cce449944 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-2/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "df57136f2ad5f410e6145023090eea148c1342ccef5a5f541afa590be7e44745" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x2b4a5b97u #define IGNEUM_ERA_STRIDE_ROT 28 #define IGNEUM_ERA_INTERLEAVE { 1, 3, 4, 8 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/program.json b/proto-cuda/packs-ca3-v4/v4-era-2/program.json index 554430aa9..a0ee358c4 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-2/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "df57136f2ad5f410e6145023090eea148c1342ccef5a5f541afa590be7e44745", "load_class": "mx8-era843155d7+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/program.metal b/proto-cuda/packs-ca3-v4/v4-era-2/program.metal index c3d2819c4..7a755f02b 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-2/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-2/program_bound.metal index 2d3430e65..5106c21bf 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-2/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x2b4a5b97u, 28u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x2b4a5b97u, 28u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x2b4a5b97u, 28u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-2/vectors.h index 78a83a960..4bd67c31d 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-2/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xd15f7638ecab0638ull, 0xf71dc04ca33f9049ull, 0xdda27e825b83045full, 0x0babd54b6eb42cb6ull, 0x22b4cafe1d3a82d7ull, 0x1ded091e583999c8ull, 0x9445769b44b82cbdull, 0xbd850d3ec7937586ull, - 0xd503809c85e89628ull, 0xe1c06157f7c30353ull, 0xd60623d3d7eea552ull, 0x7d893fab4009c4d4ull, 0xa153fbc5e57b66a5ull, 0xd60055d442ad5f10ull, 0xd68537a9835ef4d5ull, 0xf904817a6a8188d3ull, - 0x024eef8355667005ull, 0x498b0d273a1f70d3ull, 0x04719bd1c8633f5bull, 0x153f8f65912540caull, 0x5d19c2cb32a9be86ull, 0x68a1791304d4c616ull, 0x65cee64ecdd50cf8ull, 0xd14b2d91df1e6c36ull, - 0x0a9f67bd86a20bcaull, 0x99068e67d3d9da10ull, 0x84c845b2f4a99b52ull, 0xb2d622100c4cb3c9ull, 0x312854dbc455f269ull, 0x6bfd7d56844bd049ull, 0x654be06144c8aaabull, 0xb97c033d13ff45b9ull + 0xfdf35828bf38af2full, 0x84034a93bc7c2b8bull, 0x8bbc331f3d02a362ull, 0x56ad56b48fc2826eull, 0x6bcfe9c2b7a0f2a7ull, 0xe80349aba26374b3ull, 0x7554c05e94857ae1ull, 0xfd6b806bbe13ba99ull, + 0x86734b3c9c31bcb9ull, 0xe0c23bd6f58f1848ull, 0xb85fe29f58a2bc1dull, 0xf9e184c1a459093bull, 0xe6231dd4900ada2dull, 0xf8f096cb4d1ca71dull, 0x1017212ef357f0f2ull, 0xcfe454dc62f424dbull, + 0x0b918cd35d29b278ull, 0x8cb94d20fc5e3bc4ull, 0xeba1c8be957e43f8ull, 0xd8204ee1267e8fd4ull, 0xce37a685a1bce92cull, 0x5a92b97519c774a9ull, 0x20a2615497dbc8f7ull, 0xe4e455d2e83ca124ull, + 0x24937e269b5f8270ull, 0x2ddc5fba2260e246ull, 0x6370a650a1e63ea9ull, 0x5a99d77c7ad304f0ull, 0x7fb7a8ecdf04fe99ull, 0x08722dd720e40069ull, 0xaf0b938f66f29157ull, 0xed83390e9923edcfull }, { // base nonce 4096 - 0xca511aa94bb7de28ull, 0xf50562fbd930d7cbull, 0x90d1d21d286f4526ull, 0xf7dd004498042c76ull, 0x4015a3dedf539b30ull, 0xbf188aa13bf0d0b0ull, 0x3562a5190ceb5c0eull, 0x6d8fc479c085e14bull, - 0x0c028bae78f97b7aull, 0x83438623fdef4ab5ull, 0x12d046bb02e00e62ull, 0x70ec066026f7e35aull, 0x593aa049f2d1a94aull, 0x8ca00d8f621627adull, 0x6e1ca47c67a11a4aull, 0x44b0e6fba37093ceull, - 0x26557f61f6b46af6ull, 0xa8fb8acbd4f447f9ull, 0x8b5d5d8fea192771ull, 0x05319f2d2a379723ull, 0xea48c6831e5c4e09ull, 0x77dc8af07fbffad6ull, 0xf73f12c67ee72439ull, 0xbd6ca871de1f5a15ull, - 0xfa023ce22a449fcdull, 0x4d10b2e249f230c7ull, 0x8eb20cbc44bb4cd3ull, 0x0f6a25ef75994a9cull, 0xf3e2b830c7268634ull, 0xbb9b9d9cb45a3ba7ull, 0xe1a7cfda15d5d859ull, 0x469597ce101451dcull + 0x83ee085a7ee89443ull, 0xf0da5711de8af0bbull, 0xffbf8d4946e7dd6eull, 0x0da7c4bf3ff9f8e2ull, 0x62c1aa1ff310b5c1ull, 0xa5a3a8012010ccdaull, 0xceaf84b0ba2fe3cdull, 0xe5a3b8e2858798f6ull, + 0x2699a1ecc39a51c1ull, 0xe3579f4372a699bfull, 0x1a92f1d6f073f3f7ull, 0x457afcda759526f5ull, 0x37e4fedcd6659668ull, 0x0ed702977d3e1343ull, 0xa02610bb2509d93bull, 0xdabd7606aa4fab93ull, + 0x47ec9cbc512de908ull, 0xef57c7de6ff997b1ull, 0x9e31e31384b19824ull, 0x20af911c4f7faa3aull, 0x9577ccd74224cf81ull, 0xa34b46917f27d9a3ull, 0xf0fe13766f771a73ull, 0xc132417380e287dcull, + 0xb8ba69c2b911657dull, 0xd6a867fc7cc9375bull, 0x2c357a660e70fe6eull, 0x0e0100ff0a51f445ull, 0x85d874c251f8ae20ull, 0x97c25725a0f1bbd6ull, 0xe12bef4d417aa5f7ull, 0xb351ee6a927bb5ccull }, { // base nonce 1000000 - 0x1b69d837d0e478f9ull, 0x7f4ea76a066e3abfull, 0x877d6e73bc9d55eeull, 0x2ce7115def57d121ull, 0xbaa9996f8db3a59full, 0xaf8f831594ef4cfbull, 0x7e15598c87bd4319ull, 0x5dbf2e8fe7d65335ull, - 0x69de5134b0e4260eull, 0x48f3865c27bdf852ull, 0xe470c56ea8799783ull, 0x3d99bbf38de6d92full, 0x16355adc8947980full, 0xeaf478e9b3c281e9ull, 0x64ad42cd95af5cb0ull, 0x8f3042a5ae75653full, - 0x5bd477dc9ace031bull, 0xe49671e0b12b9c88ull, 0xc2af87b389841379ull, 0x5f24587ff2b07510ull, 0xec5862ebad445432ull, 0x53a1995450693ed4ull, 0x62dacf7f2f8020cdull, 0x30cb5459c52a6779ull, - 0x616ba82cf713a033ull, 0x2ab4f3fc72d72c9eull, 0xd095040ca4fd494dull, 0x9cbf315db4bee964ull, 0xb3288c63109bd0d5ull, 0x7a8122aca003c5c5ull, 0x5e7054016621ab58ull, 0x116981c856dd2a2dull + 0x8d264dd1f53bc0a8ull, 0x598b9ede58af6bdeull, 0x8d302ebda9cc611cull, 0x3b84dc81fe142831ull, 0xdfd4a17b7c0a769full, 0x9310faac99c3290dull, 0x0a29fbbdb1d6a9e0ull, 0xc2e56e8377adde26ull, + 0x1292dbddd3e9d890ull, 0x938f59295de57468ull, 0xa9c980f474336105ull, 0xb2eea047d6e91a5full, 0x62e13f1ba6960945ull, 0xd2f713a75b550fbfull, 0xf23e8d2371916615ull, 0x1865fa8d92879255ull, + 0xfe62adcc6430cacaull, 0x4d37002af2f275f0ull, 0x2bf1e6f35e373634ull, 0xd43778a84b161445ull, 0xd1c3678edcb0a82bull, 0x391b9d6a57440de8ull, 0x7491232f92fad9b0ull, 0x6ef5639edce04d93ull, + 0x4108bad8895f9e9eull, 0x42e3b15d463b4b2aull, 0x5a7a9e1b02386173ull, 0xd4b19b080c8a633cull, 0xaa63b95de3dddf71ull, 0xbd0462d7ff0c7a71ull, 0x987cf7a4c77a2f06ull, 0x9e7adf0e32932ca1ull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-2/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-2/vectors.json index 731647a9d..3a5a2277d 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-2/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-2/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xd15f7638ecab0638", "0xf71dc04ca33f9049", "0xdda27e825b83045f", "0x0babd54b6eb42cb6", "0x22b4cafe1d3a82d7", "0x1ded091e583999c8", "0x9445769b44b82cbd", "0xbd850d3ec7937586", - "0xd503809c85e89628", "0xe1c06157f7c30353", "0xd60623d3d7eea552", "0x7d893fab4009c4d4", "0xa153fbc5e57b66a5", "0xd60055d442ad5f10", "0xd68537a9835ef4d5", "0xf904817a6a8188d3", - "0x024eef8355667005", "0x498b0d273a1f70d3", "0x04719bd1c8633f5b", "0x153f8f65912540ca", "0x5d19c2cb32a9be86", "0x68a1791304d4c616", "0x65cee64ecdd50cf8", "0xd14b2d91df1e6c36", - "0x0a9f67bd86a20bca", "0x99068e67d3d9da10", "0x84c845b2f4a99b52", "0xb2d622100c4cb3c9", "0x312854dbc455f269", "0x6bfd7d56844bd049", "0x654be06144c8aaab", "0xb97c033d13ff45b9" + "0xfdf35828bf38af2f", "0x84034a93bc7c2b8b", "0x8bbc331f3d02a362", "0x56ad56b48fc2826e", "0x6bcfe9c2b7a0f2a7", "0xe80349aba26374b3", "0x7554c05e94857ae1", "0xfd6b806bbe13ba99", + "0x86734b3c9c31bcb9", "0xe0c23bd6f58f1848", "0xb85fe29f58a2bc1d", "0xf9e184c1a459093b", "0xe6231dd4900ada2d", "0xf8f096cb4d1ca71d", "0x1017212ef357f0f2", "0xcfe454dc62f424db", + "0x0b918cd35d29b278", "0x8cb94d20fc5e3bc4", "0xeba1c8be957e43f8", "0xd8204ee1267e8fd4", "0xce37a685a1bce92c", "0x5a92b97519c774a9", "0x20a2615497dbc8f7", "0xe4e455d2e83ca124", + "0x24937e269b5f8270", "0x2ddc5fba2260e246", "0x6370a650a1e63ea9", "0x5a99d77c7ad304f0", "0x7fb7a8ecdf04fe99", "0x08722dd720e40069", "0xaf0b938f66f29157", "0xed83390e9923edcf" ]}, {"base_nonce": 4096, "expected": [ - "0xca511aa94bb7de28", "0xf50562fbd930d7cb", "0x90d1d21d286f4526", "0xf7dd004498042c76", "0x4015a3dedf539b30", "0xbf188aa13bf0d0b0", "0x3562a5190ceb5c0e", "0x6d8fc479c085e14b", - "0x0c028bae78f97b7a", "0x83438623fdef4ab5", "0x12d046bb02e00e62", "0x70ec066026f7e35a", "0x593aa049f2d1a94a", "0x8ca00d8f621627ad", "0x6e1ca47c67a11a4a", "0x44b0e6fba37093ce", - "0x26557f61f6b46af6", "0xa8fb8acbd4f447f9", "0x8b5d5d8fea192771", "0x05319f2d2a379723", "0xea48c6831e5c4e09", "0x77dc8af07fbffad6", "0xf73f12c67ee72439", "0xbd6ca871de1f5a15", - "0xfa023ce22a449fcd", "0x4d10b2e249f230c7", "0x8eb20cbc44bb4cd3", "0x0f6a25ef75994a9c", "0xf3e2b830c7268634", "0xbb9b9d9cb45a3ba7", "0xe1a7cfda15d5d859", "0x469597ce101451dc" + "0x83ee085a7ee89443", "0xf0da5711de8af0bb", "0xffbf8d4946e7dd6e", "0x0da7c4bf3ff9f8e2", "0x62c1aa1ff310b5c1", "0xa5a3a8012010ccda", "0xceaf84b0ba2fe3cd", "0xe5a3b8e2858798f6", + "0x2699a1ecc39a51c1", "0xe3579f4372a699bf", "0x1a92f1d6f073f3f7", "0x457afcda759526f5", "0x37e4fedcd6659668", "0x0ed702977d3e1343", "0xa02610bb2509d93b", "0xdabd7606aa4fab93", + "0x47ec9cbc512de908", "0xef57c7de6ff997b1", "0x9e31e31384b19824", "0x20af911c4f7faa3a", "0x9577ccd74224cf81", "0xa34b46917f27d9a3", "0xf0fe13766f771a73", "0xc132417380e287dc", + "0xb8ba69c2b911657d", "0xd6a867fc7cc9375b", "0x2c357a660e70fe6e", "0x0e0100ff0a51f445", "0x85d874c251f8ae20", "0x97c25725a0f1bbd6", "0xe12bef4d417aa5f7", "0xb351ee6a927bb5cc" ]}, {"base_nonce": 1000000, "expected": [ - "0x1b69d837d0e478f9", "0x7f4ea76a066e3abf", "0x877d6e73bc9d55ee", "0x2ce7115def57d121", "0xbaa9996f8db3a59f", "0xaf8f831594ef4cfb", "0x7e15598c87bd4319", "0x5dbf2e8fe7d65335", - "0x69de5134b0e4260e", "0x48f3865c27bdf852", "0xe470c56ea8799783", "0x3d99bbf38de6d92f", "0x16355adc8947980f", "0xeaf478e9b3c281e9", "0x64ad42cd95af5cb0", "0x8f3042a5ae75653f", - "0x5bd477dc9ace031b", "0xe49671e0b12b9c88", "0xc2af87b389841379", "0x5f24587ff2b07510", "0xec5862ebad445432", "0x53a1995450693ed4", "0x62dacf7f2f8020cd", "0x30cb5459c52a6779", - "0x616ba82cf713a033", "0x2ab4f3fc72d72c9e", "0xd095040ca4fd494d", "0x9cbf315db4bee964", "0xb3288c63109bd0d5", "0x7a8122aca003c5c5", "0x5e7054016621ab58", "0x116981c856dd2a2d" + "0x8d264dd1f53bc0a8", "0x598b9ede58af6bde", "0x8d302ebda9cc611c", "0x3b84dc81fe142831", "0xdfd4a17b7c0a769f", "0x9310faac99c3290d", "0x0a29fbbdb1d6a9e0", "0xc2e56e8377adde26", + "0x1292dbddd3e9d890", "0x938f59295de57468", "0xa9c980f474336105", "0xb2eea047d6e91a5f", "0x62e13f1ba6960945", "0xd2f713a75b550fbf", "0xf23e8d2371916615", "0x1865fa8d92879255", + "0xfe62adcc6430caca", "0x4d37002af2f275f0", "0x2bf1e6f35e373634", "0xd43778a84b161445", "0xd1c3678edcb0a82b", "0x391b9d6a57440de8", "0x7491232f92fad9b0", "0x6ef5639edce04d93", + "0x4108bad8895f9e9e", "0x42e3b15d463b4b2a", "0x5a7a9e1b02386173", "0xd4b19b080c8a633c", "0xaa63b95de3dddf71", "0xbd0462d7ff0c7a71", "0x987cf7a4c77a2f06", "0x9e7adf0e32932ca1" ]} ], "dataset_head": ["0x19c6837f", "0xbd3f6aed", "0xdf3adfb8", "0xb8bede0d", "0x827e59af", "0x60286061", "0x8cf592f5", "0x5d9abc1c", "0xc5f0629f", "0xc435a60e", "0x03e38ae8", "0xfadee916", "0xa85d0c39", "0xd41a5b0d", "0x4247a100", "0x3f33dc64"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cl index f85e305c6..6b653d28d 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cu index 55fc0a08f..241786ae6 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-3/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cl index 126a54ca8..a8498e19a 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cu index cc5b36119..c3f2b0b82 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-3/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/program.h b/proto-cuda/packs-ca3-v4/v4-era-3/program.h index 8481a9f52..f7789cf48 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-3/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "e593fc1d48475c88e456632f6aa0a752a5fdbca3c33022afe37680e44b7dfd11" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x27ea7effu #define IGNEUM_ERA_STRIDE_ROT 30 #define IGNEUM_ERA_INTERLEAVE { 2, 3, 8, 13 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/program.json b/proto-cuda/packs-ca3-v4/v4-era-3/program.json index 09cc22767..1742f600c 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-3/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "e593fc1d48475c88e456632f6aa0a752a5fdbca3c33022afe37680e44b7dfd11", "load_class": "mx8-erad6367bfe+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/program.metal b/proto-cuda/packs-ca3-v4/v4-era-3/program.metal index 5b1ef6401..08392ad00 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-3/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-3/program_bound.metal index 0e3bcc4e6..9bfd2a2af 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-3/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x27ea7effu, 30u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x27ea7effu, 30u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x27ea7effu, 30u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-3/vectors.h index a2557ab32..b2687b9a5 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-3/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x40b750d1c8a8070full, 0x0eabee774c28ab59ull, 0xcc13c43e53c39432ull, 0x6a9c15036cd8ea3eull, 0x33632873969d8edeull, 0x598d17a33791fdc9ull, 0x2eff1230b4254f1eull, 0xe94dd51fbd984bceull, - 0xb99fbeb7ee79e111ull, 0xf96bf58191e27007ull, 0x0d0eeb157f2fb140ull, 0xc63153f0272b9855ull, 0x73805af5544b3db0ull, 0x79c1b5a74c8560e9ull, 0x0ea9cca3277890e5ull, 0x1d176fab1cd2973aull, - 0x119ab8f645bf8a2dull, 0xf1c9b6889298e177ull, 0x46f901ebdb35452aull, 0x383a4d749d1ad0e8ull, 0xf4353dc68a21fac5ull, 0xa6c45db77d51deb9ull, 0x82603eb8e3a8df60ull, 0xf8245dd6e5b8de09ull, - 0x3c5ad35824c49228ull, 0xc2ea030a6104da05ull, 0x6059173f71a28844ull, 0x42356c03e7c14337ull, 0xe707beb14ff8afa9ull, 0x0d572180b81363b2ull, 0xbd4479364aaac437ull, 0x3e6fd0864a730c42ull + 0x934168fcc6a7f38dull, 0xf2497a4f0979d96bull, 0x667122dc026e7defull, 0xba457a7aec530815ull, 0xe2415969c790dca7ull, 0xcd35e02524e2a55eull, 0x020a689f4474d3a0ull, 0x6aa3b86cf015699dull, + 0x4244ec17f9f27fe7ull, 0x9e79ab3953f2b4c5ull, 0x92463614b23ada93ull, 0x8a0c1844bd046423ull, 0xc3307dfd948c8a8full, 0x2c13b74642f4ad5dull, 0xfb035f6aeedfe480ull, 0xe612c9f11a28a1a8ull, + 0xff9cff39157ff89bull, 0x5a54907336b42a7bull, 0xc00d22a6ec83faceull, 0xbcd523922a18e009ull, 0x8257021372a00369ull, 0x5af833659a0a620dull, 0xd3d9cdcc75159fb6ull, 0x3f948fe1c057f5ffull, + 0x8dbac4b11956efa9ull, 0x02eae3679bded2c5ull, 0x6d4d56a2e467b395ull, 0x967a52c0791d940eull, 0x638bf2fa1c6349e2ull, 0x06f7b04aa795e552ull, 0xb1a54967db89e1a9ull, 0x38e66030915a6295ull }, { // base nonce 4096 - 0x0db15f7c616f2d25ull, 0x17b04f540b4846d6ull, 0xcddd5a8ee8a5efe0ull, 0x0cf0cf62d997c83eull, 0xbd5b7795b4dbd26cull, 0x2d7b8aa0a985480full, 0x10d7689b878233c2ull, 0xbeed4790abb65517ull, - 0x22c14a4e0a10eeaeull, 0xcdfa941f2e7960f9ull, 0x879bf9554455ec49ull, 0x5cec926ae13470fdull, 0xad086583b0bccd24ull, 0xa76fa9afc7d6d9f8ull, 0x4dc4e1184adb00c8ull, 0x5410c5c88a875d85ull, - 0x6ba2aed6fc622330ull, 0x4664d893aac13b54ull, 0x94bca09b542c77b6ull, 0x7ac3a74d54d15c2eull, 0x8fd7503272ef64b9ull, 0xd9ffc122880e7432ull, 0xd232c638aba55395ull, 0xf25659961199829cull, - 0xe87691a335d4d5b4ull, 0xc24e26d570d76954ull, 0xc2bf85ff359b2121ull, 0xa4195d2eec65f9c8ull, 0x260b4f6b0a9b6138ull, 0x6b7082ed96379d93ull, 0x7a4d1e4f9cd0276bull, 0x90afe3c042fed6e2ull + 0xb0f2ff5704556859ull, 0x6c6cba11e059e0e2ull, 0xae24e16f954eaf82ull, 0x6ab3d7f4a7da083full, 0xcbb672b589efdeebull, 0x9b6f276f8d384aa9ull, 0x8d31fc26ebe6b3cbull, 0x62c52eae2f66ec28ull, + 0x68a996c3099ee3b1ull, 0x86125b22906b3bceull, 0xe34b06c1af7551a5ull, 0x5b40a4495b20619dull, 0x1d84ce90f05f2727ull, 0xdfed7d625ee30ff8ull, 0x2f103e6e9a8a6419ull, 0x4dd6c4feb1fcc91aull, + 0xb8a4e6a9f27ff8feull, 0x7b29c57c20ff78f5ull, 0xaa25aff7440d0d98ull, 0x9adce3c313d1e84full, 0x63dce2906fe586d6ull, 0x9eae99ddce0797aaull, 0x508d6fe88f833694ull, 0x095c08757d6258edull, + 0x4a75e3b52be40d55ull, 0x05ee4268bc91ec56ull, 0x7a633ad337a9da17ull, 0x21bf4b3cc4d4e07cull, 0x62fd3eba4f7180d4ull, 0xffc62aeb3c533f6bull, 0x2314e56d54d11e07ull, 0x7605b086476cf2fcull }, { // base nonce 1000000 - 0x06897e48ecfdf30dull, 0xc2407e8c2e0a6df7ull, 0xfc7b70f2531fc0efull, 0x747fb0709c82c21bull, 0x2c1b6c10825e53edull, 0x4fc0e3d09485cbc3ull, 0x36a8e3d8a83dcb87ull, 0xa9b04c51829184f8ull, - 0x16c05be25080fcbeull, 0x488eec7576d2a293ull, 0xab03139ccbf27fa0ull, 0x85246c99a37d87d0ull, 0x09b2c5ae915b6eafull, 0x8e0a34f2ec25ba0cull, 0xa5313b7d8a58e010ull, 0x8cb897eb47b626a6ull, - 0x3c06e7453858ef65ull, 0xcee4fc69243cbf1bull, 0xfe2f0b3329d6ef34ull, 0x3a19eccb6a374b0aull, 0xa8848523eb449ec3ull, 0xc84ea452644c79caull, 0x23f77955e2b1c1d8ull, 0x1ec75c6675ca3245ull, - 0xbe1c597e1dc237a3ull, 0x524841798abd82bcull, 0x21c1b17d075c9356ull, 0xbeea164bb5aed2faull, 0x7e8db3ca049cde0eull, 0x1a6f526d31708af9ull, 0x06096e878273cab7ull, 0x707399fc4e364b01ull + 0x9c07f5dc47a75591ull, 0xb69de15d8ecdeaedull, 0x0b671c5d20921c3eull, 0x5e2168ba2b6f83baull, 0xb86c2f4f8c5e89a2ull, 0xa7705716e6ea8038ull, 0x061621f74a197575ull, 0xb67840deb42204a3ull, + 0xb05ee1dd4cff9b82ull, 0x9833843c23b414f6ull, 0x67dd35f01e68f87dull, 0x5c4f02c27ea546e9ull, 0x1225d6f23d8f2a3bull, 0x545f7b3fe8d39fcdull, 0x6ed2bd3163174bb1ull, 0x98183a2b92fedda9ull, + 0x17898a13df0b0f3full, 0xea59f25c9fec5ca1ull, 0x1d65d385245744c9ull, 0x6969966938da6cb6ull, 0x2f09a5ac6e257ce2ull, 0x9cd03743d1525eeaull, 0x6ebe439dca4b3275ull, 0xad9734fac196179eull, + 0xa41bda11b90a76f0ull, 0xcee1fb45949a8e5aull, 0x4e1831e67fc20708ull, 0x4282e8b2982ce43eull, 0xe306e373faaa68c8ull, 0x05f88efad6049bc1ull, 0x3281bea7aa1d72ddull, 0x94d1374c46c51b53ull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-3/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-3/vectors.json index 7ef3fb872..4ba7f4144 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-3/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-3/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x40b750d1c8a8070f", "0x0eabee774c28ab59", "0xcc13c43e53c39432", "0x6a9c15036cd8ea3e", "0x33632873969d8ede", "0x598d17a33791fdc9", "0x2eff1230b4254f1e", "0xe94dd51fbd984bce", - "0xb99fbeb7ee79e111", "0xf96bf58191e27007", "0x0d0eeb157f2fb140", "0xc63153f0272b9855", "0x73805af5544b3db0", "0x79c1b5a74c8560e9", "0x0ea9cca3277890e5", "0x1d176fab1cd2973a", - "0x119ab8f645bf8a2d", "0xf1c9b6889298e177", "0x46f901ebdb35452a", "0x383a4d749d1ad0e8", "0xf4353dc68a21fac5", "0xa6c45db77d51deb9", "0x82603eb8e3a8df60", "0xf8245dd6e5b8de09", - "0x3c5ad35824c49228", "0xc2ea030a6104da05", "0x6059173f71a28844", "0x42356c03e7c14337", "0xe707beb14ff8afa9", "0x0d572180b81363b2", "0xbd4479364aaac437", "0x3e6fd0864a730c42" + "0x934168fcc6a7f38d", "0xf2497a4f0979d96b", "0x667122dc026e7def", "0xba457a7aec530815", "0xe2415969c790dca7", "0xcd35e02524e2a55e", "0x020a689f4474d3a0", "0x6aa3b86cf015699d", + "0x4244ec17f9f27fe7", "0x9e79ab3953f2b4c5", "0x92463614b23ada93", "0x8a0c1844bd046423", "0xc3307dfd948c8a8f", "0x2c13b74642f4ad5d", "0xfb035f6aeedfe480", "0xe612c9f11a28a1a8", + "0xff9cff39157ff89b", "0x5a54907336b42a7b", "0xc00d22a6ec83face", "0xbcd523922a18e009", "0x8257021372a00369", "0x5af833659a0a620d", "0xd3d9cdcc75159fb6", "0x3f948fe1c057f5ff", + "0x8dbac4b11956efa9", "0x02eae3679bded2c5", "0x6d4d56a2e467b395", "0x967a52c0791d940e", "0x638bf2fa1c6349e2", "0x06f7b04aa795e552", "0xb1a54967db89e1a9", "0x38e66030915a6295" ]}, {"base_nonce": 4096, "expected": [ - "0x0db15f7c616f2d25", "0x17b04f540b4846d6", "0xcddd5a8ee8a5efe0", "0x0cf0cf62d997c83e", "0xbd5b7795b4dbd26c", "0x2d7b8aa0a985480f", "0x10d7689b878233c2", "0xbeed4790abb65517", - "0x22c14a4e0a10eeae", "0xcdfa941f2e7960f9", "0x879bf9554455ec49", "0x5cec926ae13470fd", "0xad086583b0bccd24", "0xa76fa9afc7d6d9f8", "0x4dc4e1184adb00c8", "0x5410c5c88a875d85", - "0x6ba2aed6fc622330", "0x4664d893aac13b54", "0x94bca09b542c77b6", "0x7ac3a74d54d15c2e", "0x8fd7503272ef64b9", "0xd9ffc122880e7432", "0xd232c638aba55395", "0xf25659961199829c", - "0xe87691a335d4d5b4", "0xc24e26d570d76954", "0xc2bf85ff359b2121", "0xa4195d2eec65f9c8", "0x260b4f6b0a9b6138", "0x6b7082ed96379d93", "0x7a4d1e4f9cd0276b", "0x90afe3c042fed6e2" + "0xb0f2ff5704556859", "0x6c6cba11e059e0e2", "0xae24e16f954eaf82", "0x6ab3d7f4a7da083f", "0xcbb672b589efdeeb", "0x9b6f276f8d384aa9", "0x8d31fc26ebe6b3cb", "0x62c52eae2f66ec28", + "0x68a996c3099ee3b1", "0x86125b22906b3bce", "0xe34b06c1af7551a5", "0x5b40a4495b20619d", "0x1d84ce90f05f2727", "0xdfed7d625ee30ff8", "0x2f103e6e9a8a6419", "0x4dd6c4feb1fcc91a", + "0xb8a4e6a9f27ff8fe", "0x7b29c57c20ff78f5", "0xaa25aff7440d0d98", "0x9adce3c313d1e84f", "0x63dce2906fe586d6", "0x9eae99ddce0797aa", "0x508d6fe88f833694", "0x095c08757d6258ed", + "0x4a75e3b52be40d55", "0x05ee4268bc91ec56", "0x7a633ad337a9da17", "0x21bf4b3cc4d4e07c", "0x62fd3eba4f7180d4", "0xffc62aeb3c533f6b", "0x2314e56d54d11e07", "0x7605b086476cf2fc" ]}, {"base_nonce": 1000000, "expected": [ - "0x06897e48ecfdf30d", "0xc2407e8c2e0a6df7", "0xfc7b70f2531fc0ef", "0x747fb0709c82c21b", "0x2c1b6c10825e53ed", "0x4fc0e3d09485cbc3", "0x36a8e3d8a83dcb87", "0xa9b04c51829184f8", - "0x16c05be25080fcbe", "0x488eec7576d2a293", "0xab03139ccbf27fa0", "0x85246c99a37d87d0", "0x09b2c5ae915b6eaf", "0x8e0a34f2ec25ba0c", "0xa5313b7d8a58e010", "0x8cb897eb47b626a6", - "0x3c06e7453858ef65", "0xcee4fc69243cbf1b", "0xfe2f0b3329d6ef34", "0x3a19eccb6a374b0a", "0xa8848523eb449ec3", "0xc84ea452644c79ca", "0x23f77955e2b1c1d8", "0x1ec75c6675ca3245", - "0xbe1c597e1dc237a3", "0x524841798abd82bc", "0x21c1b17d075c9356", "0xbeea164bb5aed2fa", "0x7e8db3ca049cde0e", "0x1a6f526d31708af9", "0x06096e878273cab7", "0x707399fc4e364b01" + "0x9c07f5dc47a75591", "0xb69de15d8ecdeaed", "0x0b671c5d20921c3e", "0x5e2168ba2b6f83ba", "0xb86c2f4f8c5e89a2", "0xa7705716e6ea8038", "0x061621f74a197575", "0xb67840deb42204a3", + "0xb05ee1dd4cff9b82", "0x9833843c23b414f6", "0x67dd35f01e68f87d", "0x5c4f02c27ea546e9", "0x1225d6f23d8f2a3b", "0x545f7b3fe8d39fcd", "0x6ed2bd3163174bb1", "0x98183a2b92fedda9", + "0x17898a13df0b0f3f", "0xea59f25c9fec5ca1", "0x1d65d385245744c9", "0x6969966938da6cb6", "0x2f09a5ac6e257ce2", "0x9cd03743d1525eea", "0x6ebe439dca4b3275", "0xad9734fac196179e", + "0xa41bda11b90a76f0", "0xcee1fb45949a8e5a", "0x4e1831e67fc20708", "0x4282e8b2982ce43e", "0xe306e373faaa68c8", "0x05f88efad6049bc1", "0x3281bea7aa1d72dd", "0x94d1374c46c51b53" ]} ], "dataset_head": ["0x19c6837f", "0xbd3f6aed", "0x827e59af", "0x60286061", "0xdf3adfb8", "0xb8bede0d", "0x8cf592f5", "0x5d9abc1c", "0xc5f0629f", "0xc435a60e", "0xa85d0c39", "0xd41a5b0d", "0x03e38ae8", "0xfadee916", "0x4247a100", "0x3f33dc64"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cl index 70619d9d6..864f534db 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cu index 53f6f0107..91e41dcb6 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-4/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cl index 210e25170..d5f9e94fc 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cu index 0cbfd453e..c01db8e59 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-4/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/program.h b/proto-cuda/packs-ca3-v4/v4-era-4/program.h index 0d279daaa..549333f89 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-4/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "5e0587f455a86e91e4990f5c481a34cca0044d3f3ae519adcae58ddc82885d31" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x4d38603du #define IGNEUM_ERA_STRIDE_ROT 10 #define IGNEUM_ERA_INTERLEAVE { 2, 9, 13, 15 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/program.json b/proto-cuda/packs-ca3-v4/v4-era-4/program.json index b3eec7bbf..8dff7f2a3 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-4/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "5e0587f455a86e91e4990f5c481a34cca0044d3f3ae519adcae58ddc82885d31", "load_class": "mx8-era4488f3ed+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/program.metal b/proto-cuda/packs-ca3-v4/v4-era-4/program.metal index 2a354e058..5a81cba94 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-4/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-4/program_bound.metal index 8bb8dafcd..61c7ccbb6 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-4/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x4d38603du, 10u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x4d38603du, 10u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x4d38603du, 10u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-4/vectors.h index f11d1b8cd..de55da4c6 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-4/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0x32d75a818461b0feull, 0xfb58b5a9a0749f1aull, 0x7f1ef1c14a39acb7ull, 0x241bbf0d64ef82daull, 0xa91a888a98e1a327ull, 0x85236aa911aee1ccull, 0x2b621fc52bd4de06ull, 0xccb36c7b29b9f7eeull, - 0x81d5f71dddc9d99eull, 0x77e66510f1716ed8ull, 0x1dfc423f41cc325eull, 0xe4b7dc733eca22b9ull, 0x252e914ee1a1b811ull, 0xd60b7bb383400268ull, 0x68c45f316313a46eull, 0xb44e1d40659b5c0full, - 0x3317b1e961fa97caull, 0x048195572a542bd0ull, 0xbfc8c57f13ac1c9cull, 0x90b11f960392b615ull, 0x833c4d8bf2b4e7a3ull, 0x85e8a998130d39adull, 0x46989748ffc3f693ull, 0xbd9b68036b5db585ull, - 0x2a7b248a138b7764ull, 0xa808e45213e9e428ull, 0x1cd401d2d14d73caull, 0xf380476406eaa703ull, 0x61c78feb89981977ull, 0xf9f0d9a7a6a3bff5ull, 0x8e862238e6607e1bull, 0x81bb469c84523c38ull + 0x9882ff74f40fd713ull, 0x262fbf7789f813d7ull, 0x2d6540eb4ecae938ull, 0x1044875f3a71a4f9ull, 0x1742fd6d480e50dfull, 0xcecebae525f2bdd5ull, 0xd80d0719f745238dull, 0x2dce7ce873961004ull, + 0x3f5f5b90c5d829f5ull, 0xe3ac9f61b7efde8aull, 0x190f222cf9c004b9ull, 0xda6162a4e1cb7078ull, 0xb7c34219a983600eull, 0xca654bea4a49c116ull, 0x49148b619e7ab60bull, 0x9b607248eb378a52ull, + 0x8cbc4c2bdf4d7e3aull, 0x1e14127d34b09cb5ull, 0x88f021c95fb8d7e9ull, 0x5b130b8164644cdfull, 0x1287c3452669120cull, 0x416f6cb2b7a46e98ull, 0x737b656f87cd4dbeull, 0x1a8a1631f0508c21ull, + 0xbc50f0a30ef92039ull, 0x5f912b417ec7377eull, 0x53c1949f7d919000ull, 0x556f1ba36dffc822ull, 0x53ac89faf3df8175ull, 0xea5614e9a2a45c3bull, 0x58eb4c822dfd9b6aull, 0x60ef6cfc33893363ull }, { // base nonce 4096 - 0x16a13c6b8953521full, 0xb6fc3248eab8ad1bull, 0xd7636da2cadffb33ull, 0x0e4b29dbfbc26c03ull, 0xdc3628881ff4d880ull, 0xd7b5b538a83fa397ull, 0xd628f6e4c1faea5cull, 0x1b7271fe675ac8d2ull, - 0xc2e58dc8651838edull, 0xeceb83b391908d90ull, 0x4d2ced55dd770a57ull, 0x8476f19f2dced0beull, 0x7943efb7511ec325ull, 0x39517e839ac5cad6ull, 0xa93a24a60552fef4ull, 0xd06f827bfad0666full, - 0x8ad225381fec0d20ull, 0xc533e53132f29515ull, 0xccf64b20e5996785ull, 0xca92afef337bf781ull, 0x0346c9056575b868ull, 0xbd579e3afcad5227ull, 0xebbb7866335220acull, 0xae3cdc60a6b6614aull, - 0xbb0d1a802ba23492ull, 0x694ff6fa089a8a70ull, 0xb56b49abd8dae21dull, 0x8c1fac2bf309ccecull, 0x79b9689a4b61c18cull, 0x3cb6c19bfbcce52eull, 0xe908bb28f2574c34ull, 0x35080bd5bf213879ull + 0xab9e219e7ddb35b7ull, 0x365d153f8d7f58abull, 0x56d87607639a8fd0ull, 0x8a53622cb1615d87ull, 0xdf98ef09820d3b04ull, 0x5f351dc7a2724619ull, 0xcc9b1d0ca54f08b4ull, 0xedc18242c6b8a950ull, + 0x01fb095cc903fce5ull, 0x8713b8d109f9b747ull, 0xd9b74c93df851435ull, 0x488749a5905fbb1dull, 0x427abee1bc673829ull, 0xafacb358f189921full, 0x7287c99c8126c463ull, 0x964bc5f8f29064f3ull, + 0x1c889bf131dbb15full, 0x4c47cc828452e5c6ull, 0xc33a7038bf706697ull, 0x38109ceea06bc163ull, 0xdd09c9965d0e0bf8ull, 0xdb8697aec43751e3ull, 0x84156497686d9e25ull, 0x4722e0be78e31141ull, + 0xa3cbc6827439ef83ull, 0x41ec07f136aebf82ull, 0x25390b6dea061aebull, 0xc89b2b45e800d8eaull, 0x8c1736f1c0ac9069ull, 0x0125bc755eb88facull, 0x1376860c608c32f9ull, 0xcc99b5862680fd94ull }, { // base nonce 1000000 - 0x41302c423e89263bull, 0x5152c4fdb644c7ebull, 0xa9886ee87da41e91ull, 0x52a1e6209b2119baull, 0xce336b33dc0eea27ull, 0x59b61d9b32a49598ull, 0x9fcabf472fe74364ull, 0x5d0d09ce86a6ddbaull, - 0x884e7ebff4a1a28bull, 0xa39081f4965aac7dull, 0xdae88580d7337c0eull, 0xba0f4c8b0d79c15cull, 0x66392f1948e70a94ull, 0xa7f0aeab677fb0aaull, 0x0efa4e6ea43702e4ull, 0xc2944100f48711f1ull, - 0xe22bf44299adaf79ull, 0x1a6c099e2b3836caull, 0x7595a2366be1b0dfull, 0xa0dc4af86aec0108ull, 0xa0b96e19fea7aed8ull, 0x52ca60aeb1c3dfc6ull, 0xde7a719d2d766daaull, 0x477f9497ccbf9388ull, - 0x8ce858b1f1d19a94ull, 0xdeab496a568e6df5ull, 0x6eb8896aff7fc737ull, 0xa3ef1cbbc0084fb9ull, 0x8609281ee7caf702ull, 0x6a403ada59e40b68ull, 0x7ee1a0b4bafe9a8aull, 0x6a6017a19d0e6879ull + 0x94454f2d180f9f4full, 0xbb824190332d5726ull, 0x0d17f90637f60048ull, 0x41bcbca88d437608ull, 0x4c8938d0124b5a03ull, 0xe57653cb9f129c7bull, 0x236cfb567de1162dull, 0x38486cc8a0837a00ull, + 0xfeae7138f23b1ffdull, 0xf0cccaacbb4c0d4dull, 0x4ec07ec8b044d4cbull, 0xa4ff716aed3550b9ull, 0xa4145cd241f68d27ull, 0x2b6e595d8e5aae51ull, 0xa69e8d80b7d41540ull, 0x6714cd9012e350d7ull, + 0xe2d11401cfb68de8ull, 0x77557479a98a4dfeull, 0xaa8fdf813248b71cull, 0x46d00743cc17c9e0ull, 0x13b34ad0b3845401ull, 0x2da06479cc370441ull, 0x15485d6296a08db0ull, 0xbd73d7288f64b0e1ull, + 0xbba8ebcdfda30783ull, 0xdcb064935bba15e6ull, 0x89196f440273d6f3ull, 0x1ef704a3592d9968ull, 0x27107f523252add4ull, 0x28842c55f5796723ull, 0x59276f5c439122acull, 0xdce762e619b1372aull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-4/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-4/vectors.json index cc5539d3f..2ce810be6 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-4/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-4/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0x32d75a818461b0fe", "0xfb58b5a9a0749f1a", "0x7f1ef1c14a39acb7", "0x241bbf0d64ef82da", "0xa91a888a98e1a327", "0x85236aa911aee1cc", "0x2b621fc52bd4de06", "0xccb36c7b29b9f7ee", - "0x81d5f71dddc9d99e", "0x77e66510f1716ed8", "0x1dfc423f41cc325e", "0xe4b7dc733eca22b9", "0x252e914ee1a1b811", "0xd60b7bb383400268", "0x68c45f316313a46e", "0xb44e1d40659b5c0f", - "0x3317b1e961fa97ca", "0x048195572a542bd0", "0xbfc8c57f13ac1c9c", "0x90b11f960392b615", "0x833c4d8bf2b4e7a3", "0x85e8a998130d39ad", "0x46989748ffc3f693", "0xbd9b68036b5db585", - "0x2a7b248a138b7764", "0xa808e45213e9e428", "0x1cd401d2d14d73ca", "0xf380476406eaa703", "0x61c78feb89981977", "0xf9f0d9a7a6a3bff5", "0x8e862238e6607e1b", "0x81bb469c84523c38" + "0x9882ff74f40fd713", "0x262fbf7789f813d7", "0x2d6540eb4ecae938", "0x1044875f3a71a4f9", "0x1742fd6d480e50df", "0xcecebae525f2bdd5", "0xd80d0719f745238d", "0x2dce7ce873961004", + "0x3f5f5b90c5d829f5", "0xe3ac9f61b7efde8a", "0x190f222cf9c004b9", "0xda6162a4e1cb7078", "0xb7c34219a983600e", "0xca654bea4a49c116", "0x49148b619e7ab60b", "0x9b607248eb378a52", + "0x8cbc4c2bdf4d7e3a", "0x1e14127d34b09cb5", "0x88f021c95fb8d7e9", "0x5b130b8164644cdf", "0x1287c3452669120c", "0x416f6cb2b7a46e98", "0x737b656f87cd4dbe", "0x1a8a1631f0508c21", + "0xbc50f0a30ef92039", "0x5f912b417ec7377e", "0x53c1949f7d919000", "0x556f1ba36dffc822", "0x53ac89faf3df8175", "0xea5614e9a2a45c3b", "0x58eb4c822dfd9b6a", "0x60ef6cfc33893363" ]}, {"base_nonce": 4096, "expected": [ - "0x16a13c6b8953521f", "0xb6fc3248eab8ad1b", "0xd7636da2cadffb33", "0x0e4b29dbfbc26c03", "0xdc3628881ff4d880", "0xd7b5b538a83fa397", "0xd628f6e4c1faea5c", "0x1b7271fe675ac8d2", - "0xc2e58dc8651838ed", "0xeceb83b391908d90", "0x4d2ced55dd770a57", "0x8476f19f2dced0be", "0x7943efb7511ec325", "0x39517e839ac5cad6", "0xa93a24a60552fef4", "0xd06f827bfad0666f", - "0x8ad225381fec0d20", "0xc533e53132f29515", "0xccf64b20e5996785", "0xca92afef337bf781", "0x0346c9056575b868", "0xbd579e3afcad5227", "0xebbb7866335220ac", "0xae3cdc60a6b6614a", - "0xbb0d1a802ba23492", "0x694ff6fa089a8a70", "0xb56b49abd8dae21d", "0x8c1fac2bf309ccec", "0x79b9689a4b61c18c", "0x3cb6c19bfbcce52e", "0xe908bb28f2574c34", "0x35080bd5bf213879" + "0xab9e219e7ddb35b7", "0x365d153f8d7f58ab", "0x56d87607639a8fd0", "0x8a53622cb1615d87", "0xdf98ef09820d3b04", "0x5f351dc7a2724619", "0xcc9b1d0ca54f08b4", "0xedc18242c6b8a950", + "0x01fb095cc903fce5", "0x8713b8d109f9b747", "0xd9b74c93df851435", "0x488749a5905fbb1d", "0x427abee1bc673829", "0xafacb358f189921f", "0x7287c99c8126c463", "0x964bc5f8f29064f3", + "0x1c889bf131dbb15f", "0x4c47cc828452e5c6", "0xc33a7038bf706697", "0x38109ceea06bc163", "0xdd09c9965d0e0bf8", "0xdb8697aec43751e3", "0x84156497686d9e25", "0x4722e0be78e31141", + "0xa3cbc6827439ef83", "0x41ec07f136aebf82", "0x25390b6dea061aeb", "0xc89b2b45e800d8ea", "0x8c1736f1c0ac9069", "0x0125bc755eb88fac", "0x1376860c608c32f9", "0xcc99b5862680fd94" ]}, {"base_nonce": 1000000, "expected": [ - "0x41302c423e89263b", "0x5152c4fdb644c7eb", "0xa9886ee87da41e91", "0x52a1e6209b2119ba", "0xce336b33dc0eea27", "0x59b61d9b32a49598", "0x9fcabf472fe74364", "0x5d0d09ce86a6ddba", - "0x884e7ebff4a1a28b", "0xa39081f4965aac7d", "0xdae88580d7337c0e", "0xba0f4c8b0d79c15c", "0x66392f1948e70a94", "0xa7f0aeab677fb0aa", "0x0efa4e6ea43702e4", "0xc2944100f48711f1", - "0xe22bf44299adaf79", "0x1a6c099e2b3836ca", "0x7595a2366be1b0df", "0xa0dc4af86aec0108", "0xa0b96e19fea7aed8", "0x52ca60aeb1c3dfc6", "0xde7a719d2d766daa", "0x477f9497ccbf9388", - "0x8ce858b1f1d19a94", "0xdeab496a568e6df5", "0x6eb8896aff7fc737", "0xa3ef1cbbc0084fb9", "0x8609281ee7caf702", "0x6a403ada59e40b68", "0x7ee1a0b4bafe9a8a", "0x6a6017a19d0e6879" + "0x94454f2d180f9f4f", "0xbb824190332d5726", "0x0d17f90637f60048", "0x41bcbca88d437608", "0x4c8938d0124b5a03", "0xe57653cb9f129c7b", "0x236cfb567de1162d", "0x38486cc8a0837a00", + "0xfeae7138f23b1ffd", "0xf0cccaacbb4c0d4d", "0x4ec07ec8b044d4cb", "0xa4ff716aed3550b9", "0xa4145cd241f68d27", "0x2b6e595d8e5aae51", "0xa69e8d80b7d41540", "0x6714cd9012e350d7", + "0xe2d11401cfb68de8", "0x77557479a98a4dfe", "0xaa8fdf813248b71c", "0x46d00743cc17c9e0", "0x13b34ad0b3845401", "0x2da06479cc370441", "0x15485d6296a08db0", "0xbd73d7288f64b0e1", + "0xbba8ebcdfda30783", "0xdcb064935bba15e6", "0x89196f440273d6f3", "0x1ef704a3592d9968", "0x27107f523252add4", "0x28842c55f5796723", "0x59276f5c439122ac", "0xdce762e619b1372a" ]} ], "dataset_head": ["0x19c6837f", "0xbd3f6aed", "0x827e59af", "0x60286061", "0xdf3adfb8", "0xb8bede0d", "0x8cf592f5", "0x5d9abc1c", "0x680c3063", "0x64552beb", "0x43376a1c", "0x84d86df8", "0x15623a58", "0x50d157a7", "0x9d970ef9", "0x02b7d1e4"], diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cl b/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cl index 41b4e47d0..40a46b030 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cu b/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cu index 319729458..c7405f2ae 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-5/kernel.cu @@ -47,339 +47,339 @@ __global__ void igneum_hash(const uint32_t* ds, uint64_t* out, uint32_t baseNonc uint32_t gid = blockIdx.x * blockDim.x + threadIdx.x; uint32_t nonce = baseNonce + gid; uint32_t r0, r1, r2, r3, r4, r5, r6, r7; - { uint32_t x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint32_t x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint32_t x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint32_t x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint32_t x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint32_t x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint32_t x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint32_t x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint32_t x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint32_t x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint32_t x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint32_t x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint32_t x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint32_t x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint32_t x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint32_t x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cl b/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cl index 324e97444..d28829254 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cl +++ b/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cl @@ -191,339 +191,339 @@ IGNEUM_KERNEL_HASH void igneum_hash(__global const uint* ds, __global ulong* out #else (void)lid; #endif - { uint x = nonce ^ 0x667d0fbdu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0x7b8e5963u; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] - { uint x = nonce ^ 0x7b8e5963u; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x31c67e5eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] - { uint x = nonce ^ 0x31c67e5eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0x4529ddc6u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] - { uint x = nonce ^ 0x4529ddc6u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0xef19d6d8u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] - { uint x = nonce ^ 0xef19d6d8u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0xaccf6211u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] - { uint x = nonce ^ 0xaccf6211u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0xda0aed32u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] - { uint x = nonce ^ 0xda0aed32u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0xabc6df31u; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] - { uint x = nonce ^ 0xabc6df31u; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x667d0fbdu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] + { uint x = nonce ^ 0x29e76ddbu; x += 0x9e3779b9u; x = splitmix32(x); r0 = x ^ 0xdb25cf2au; } // SEEDW[0], 0x9e3779b9u * 1u, SEEDW[1] + { uint x = nonce ^ 0xdb25cf2au; x += 0x3c6ef372u; x = splitmix32(x); r1 = x ^ 0x596c281eu; } // SEEDW[1], 0x9e3779b9u * 2u, SEEDW[2] + { uint x = nonce ^ 0x596c281eu; x += 0xdaa66d2bu; x = splitmix32(x); r2 = x ^ 0xb8284534u; } // SEEDW[2], 0x9e3779b9u * 3u, SEEDW[3] + { uint x = nonce ^ 0xb8284534u; x += 0x78dde6e4u; x = splitmix32(x); r3 = x ^ 0x50556ce6u; } // SEEDW[3], 0x9e3779b9u * 4u, SEEDW[4] + { uint x = nonce ^ 0x50556ce6u; x += 0x1715609du; x = splitmix32(x); r4 = x ^ 0x336eb6d5u; } // SEEDW[4], 0x9e3779b9u * 5u, SEEDW[5] + { uint x = nonce ^ 0x336eb6d5u; x += 0xb54cda56u; x = splitmix32(x); r5 = x ^ 0x01933285u; } // SEEDW[5], 0x9e3779b9u * 6u, SEEDW[6] + { uint x = nonce ^ 0x01933285u; x += 0x5384540fu; x = splitmix32(x); r6 = x ^ 0x39690d9fu; } // SEEDW[6], 0x9e3779b9u * 7u, SEEDW[7] + { uint x = nonce ^ 0x39690d9fu; x += 0xf1bbcdc8u; x = splitmix32(x); r7 = x ^ 0x29e76ddbu; } // SEEDW[7], 0x9e3779b9u * 8u, SEEDW[0] for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); @@ -564,328 +564,328 @@ IGNEUM_KERNEL_HASH void igneum_hash_bound(__global const uint* ds, __global ulon for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r3 = r3 ^ t_; } // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // 14 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r3 = r3 ^ t_; } // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = mul_hi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = mul_hi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r0 = r0 ^ t_; } // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = mul_hi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 8u); r5 = r5 ^ t_; } // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = mul_hi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = mul_hi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 1u); r1 = r1 ^ t_; } // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = mul_hi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r2 = r2 ^ t_; } // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = mul_hi(r6, r1); // 47 mulhi + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r3 = r3 ^ t_; } // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r4 = r4 ^ t_; } // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = mul_hi(r5, r0); // s2 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r4 = r4 ^ t_; } // s3 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 1u); r4 = r4 ^ t_; } // s4 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 8u); r4 = r4 ^ t_; } // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mul_hi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r1 = r1 ^ t_; } // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mul_hi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s22 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r1 = r1 ^ t_; } // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mul_hi(r4, r2); // s27 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 2u); r1 = r1 ^ t_; } // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mul_hi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r3 = r3 ^ t_; } // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r0 = r0 ^ t_; } // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mul_hi(r0, r2); // s55 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r6 = r6 ^ t_; } // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r0 = r0 ^ t_; } // s75 shfl - r5 = r5 - r7; // s76 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 2u); r5 = r5 ^ t_; } // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r6 = r6 ^ t_; } // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s86 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 4u); r2 = r2 ^ t_; } // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = mul_hi(r0, r1); // s92 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r6 = r6 ^ t_; } // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 4u); r1 = r1 ^ t_; } // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mul_hi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mul_hi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = mul_hi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r1 = r1 ^ t_; } // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r4 = r4 ^ t_; } // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r3 = r3 ^ t_; } // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r5, 16u); r6 = r6 ^ t_; } // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r1 = r1 ^ t_; } // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r1 = r1 ^ t_; } // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mul_hi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r5 = r5 ^ t_; } // s167 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r2 = r2 ^ t_; } // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mul_hi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mul_hi(r1, r0); // s187 mulhi - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 16u); r4 = r4 ^ t_; } // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 16u); r6 = r6 ^ t_; } // s201 shfl - r4 = r4 * r2; // s202 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 1u); r3 = r3 ^ t_; } // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r7 = r7 ^ t_; } // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - { uint t_; IGNEUM_SHFL_XOR(t_, r2, 8u); r4 = r4 ^ t_; } // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 2u); r6 = r6 ^ t_; } // s216 shfl - r2 = mul_hi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - { uint t_; IGNEUM_SHFL_XOR(t_, r1, 8u); r2 = r2 ^ t_; } // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mul_hi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mul_hi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 16u); r5 = r5 ^ t_; } // s225 shfl - r3 = mul_hi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - { uint t_; IGNEUM_SHFL_XOR(t_, r7, 2u); r1 = r1 ^ t_; } // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = mul_hi(r7, r5); // s239 mulhi - r3 = mul_hi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - { uint t_; IGNEUM_SHFL_XOR(t_, r0, 2u); r4 = r4 ^ t_; } // s247 shfl - r3 = r3 ^ r2; // s248 xor - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r7 = r7 ^ t_; } // s249 shfl - { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r5 = r5 ^ t_; } // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mul_hi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r1 = r1 ^ t_; } // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r2 = r2 ^ t_; } // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 4u); r1 = r1 ^ t_; } // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mul_hi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mul_hi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mul_hi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mul_hi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r7 = r7 ^ t_; } // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = mul_hi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mul_hi(r1, r0); // s77 mulhi + r2 = mul_hi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 2u); r5 = r5 ^ t_; } // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 16u); r2 = r2 ^ t_; } // s84 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r3 = r3 ^ t_; } // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 8u); r4 = r4 ^ t_; } // s89 shfl + r4 = r4 ^ r1; // s90 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r1 = r1 ^ t_; } // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mul_hi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r5 = r5 ^ t_; } // s96 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 1u); r6 = r6 ^ t_; } // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 4u); r4 = r4 ^ t_; } // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mul_hi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + { uint t_; IGNEUM_SHFL_XOR(t_, r7, 1u); r1 = r1 ^ t_; } // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 16u); r1 = r1 ^ t_; } // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mul_hi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mul_hi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mul_hi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r6, 2u); r4 = r4 ^ t_; } // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mul_hi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mul_hi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mul_hi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r0, 8u); r5 = r5 ^ t_; } // s217 shfl + r3 = r3 | r6; // s218 or + { uint t_; IGNEUM_SHFL_XOR(t_, r2, 4u); r0 = r0 ^ t_; } // s219 shfl + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 1u); r0 = r0 ^ t_; } // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + { uint t_; IGNEUM_SHFL_XOR(t_, r3, 8u); r4 = r4 ^ t_; } // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + { uint t_; IGNEUM_SHFL_XOR(t_, r4, 4u); r3 = r3 ^ t_; } // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mul_hi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + { uint t_; IGNEUM_SHFL_XOR(t_, r5, 2u); r7 = r7 ^ t_; } // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cu b/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cu index b87b863a6..004c5a6e5 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cu +++ b/proto-cuda/packs-ca3-v4/v4-era-5/kernel_bound.cu @@ -35,328 +35,328 @@ __global__ void igneum_hash_bound(const uint32_t* ds, uint64_t* out, uint32_t ba for (uint32_t it = 0u; it < 8u; ++it) { uint32_t sel = r0; - r4 = r4 + r5 + ((((sel >> 13u) & 1u) != 0u) ? 0x5810667au : 0xea86e152u); // 0 add - r7 = r7 ^ r0; // 1 xor - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 2 shfl - r4 = r4 - r1; // 3 sub - r2 = r0 * r4 + r2; // 4 mad - r4 = rotl_imm(r4, 9u); // 5 rotl - r0 = rotr_var(r0, r2); // 6 rotr - r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 7 load - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 8 load - r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 9 load - r7 = r7 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load - r7 = r7 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 11 load - r5 = r5 * r4; // 12 mul - r7 = r7 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 13 load - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // 14 shfl - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // 15 shfl - r2 = r2 | r7; // 16 or - r0 = rotr_var(r0, r6); // 17 rotr - r7 = r7 + r5 + ((((sel >> 12u) & 1u) != 0u) ? 0xb9e3577eu : 0xf66e7017u); // 18 add - r7 = rotl_imm(r7, 24u); // 19 rotl - r6 = r6 + r7 + ((((sel >> 23u) & 1u) != 0u) ? 0x8c9f0ef8u : 0x52334d12u); // 20 add - r2 = r2 | r6; // 21 or - r6 = r5 * r4 + r6; // 22 mad - r1 = r1 | r0; // 23 or - r6 = r6 ^ r1; // 24 xor - r2 = r2 + r6 + ((((sel >> 17u) & 1u) != 0u) ? 0x9cec0e12u : 0x659fc3d3u); // 25 add - r7 = rotr_var(r7, r0); // 26 rotr - r4 = r5 * r7 + r4; // 27 mad - r3 = r2 * r4 + r3; // 28 mad - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 29 load - r2 = r2 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & mask]; // 30 load - r1 = r1 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 31 load - r7 = r7 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0xe403240eu : 0x070888a8u); // 32 add - r2 = r2 + r0 + ((((sel >> 28u) & 1u) != 0u) ? 0x29701828u : 0xf2e46d55u); // 33 add - r2 = r2 + r3 + ((((sel >> 14u) & 1u) != 0u) ? 0x343b7aeeu : 0x58f75b87u); // 34 add - r2 = __umulhi(r2, r5); // 35 mulhi - r4 = r4 ^ r2; // 36 xor - r6 = r6 * r5; // 37 mul - r7 = r7 ^ r0; // 38 xor - r7 = r7 + r2 + ((((sel >> 19u) & 1u) != 0u) ? 0x32bbd117u : 0xb8180e9du); // 39 add - r2 = rotr_var(r2, r3); // 40 rotr - r7 = r7 - r0; // 41 sub - r4 = r4 + r3 + ((((sel >> 4u) & 1u) != 0u) ? 0x6df7aed4u : 0x6ced15b7u); // 42 add - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // 43 shfl - r0 = r0 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 44 load - r1 = r1 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0x83e825bfu : 0xe09f54e9u); // 45 add - r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 46 load - r6 = r6 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 47 load - r4 = __umulhi(r4, r2); // 48 mulhi - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xf572bdb9u : 0xa8bae6dfu); // 49 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 50 shfl - r6 = r6 + r0 + ((((sel >> 19u) & 1u) != 0u) ? 0x11e17c61u : 0x383b9260u); // 51 add - r5 = r5 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 52 load - r6 = rotl_imm(r6, 12u); // 53 rotl - r3 = rotl_imm(r3, 12u); // 54 rotl - r2 = r2 + r1 + ((((sel >> 10u) & 1u) != 0u) ? 0x18d67dbbu : 0xac6be8e3u); // 55 add - r1 = r1 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 56 load - r5 = r5 + r0 + ((((sel >> 12u) & 1u) != 0u) ? 0xa75cd60du : 0xf03673feu); // 57 add - r5 = r5 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & mask]; // 58 load - r1 = r1 + r4 + ((((sel >> 7u) & 1u) != 0u) ? 0x8dfb96bbu : 0xdecd4794u); // 59 add - r3 = __umulhi(r3, r2); // 60 mulhi - r6 = r6 | r4; // 61 or - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 8); // 62 shfl - r3 = r3 ^ ds[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 63 load + r7 = rotl_imm(r7, 4u); // 0 rotl + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 1 load + r7 = r1 * r2 + r7; // 2 mad + r3 = __umulhi(r3, r0); // 3 mulhi + r0 = r0 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 4 load + r1 = r7 * r5 + r1; // 5 mad + r6 = r6 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 6 load + r1 = r1 * r0; // 7 mul + r3 = __umulhi(r3, r6); // 8 mulhi + r1 = r1 * r5; // 9 mul + r6 = r6 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 10 load + r2 = rotl_imm(r2, 29u); // 11 rotl + r1 = r1 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 12 load + r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x3dfa4fd3u : 0x2adfcf68u); // 13 add + r7 = r6 * r7 + r7; // 14 mad + r3 = r3 ^ r1; // 15 xor + r4 = rotr_var(r4, r1); // 16 rotr + r0 = r0 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0x07ec281fu : 0x80dfe651u); // 17 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 1); // 18 shfl + r2 = r2 - r5; // 19 sub + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 20 load + r0 = r2 * r1 + r0; // 21 mad + r3 = r3 - r1; // 22 sub + r4 = r6 * r6 + r4; // 23 mad + r1 = rotr_var(r1, r0); // 24 rotr + r6 = r6 | r2; // 25 or + r6 = __umulhi(r6, r3); // 26 mulhi + r4 = r4 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 27 load + r4 = r3 * r5 + r4; // 28 mad + r6 = r6 - r5; // 29 sub + r6 = r6 ^ ds[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 30 load + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 31 shfl + r2 = r2 - r1; // 32 sub + r4 = r4 ^ r1; // 33 xor + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // 34 shfl + r7 = r7 ^ ds[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & mask]; // 35 load + r5 = r5 + r6 + ((((sel >> 11u) & 1u) != 0u) ? 0x8a978b3cu : 0x165f4767u); // 36 add + r5 = r5 * r2; // 37 mul + r7 = r1 * r4 + r7; // 38 mad + r5 = r5 ^ r7; // 39 xor + r1 = r1 ^ ds[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 40 load + r2 = r2 ^ ds[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 41 load + r5 = r5 ^ r2; // 42 xor + r1 = r1 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 43 load + r6 = r6 + r4 + ((((sel >> 18u) & 1u) != 0u) ? 0xd11e2febu : 0x7950576cu); // 44 add + r6 = r6 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 45 load + r1 = rotr_var(r1, r3); // 46 rotr + r6 = __umulhi(r6, r1); // 47 mulhi + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // 48 shfl + r4 = rotr_var(r4, r5); // 49 rotr + r0 = r0 * r7; // 50 mul + r5 = r6 * r5 + r5; // 51 mad + r3 = r3 ^ ds[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & mask]; // 52 load + r5 = r5 ^ ds[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & mask]; // 53 load + r6 = r6 ^ ds[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & mask]; // 54 load + r5 = rotl_imm(r5, 18u); // 55 rotl + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // 56 shfl + r5 = r5 ^ r0; // 57 xor + r1 = rotl_imm(r1, 28u); // 58 rotl + r0 = r0 - r7; // 59 sub + r1 = rotr_var(r1, r0); // 60 rotr + r1 = r1 * r0; // 61 mul + r6 = r6 ^ r0; // 62 xor + r5 = r5 * r4; // 63 mul // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint32_t sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + ((((sel >> 16u) & 1u) != 0u) ? 0x06575fd2u : 0xecb44e9cu); // s1 add - r5 = __umulhi(r5, r0); // s2 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s3 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 1); // s4 shfl - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r5, 8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = __umulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + ((((sel >> 29u) & 1u) != 0u) ? 0x41da8352u : 0x78295146u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + ((((sel >> 12u) & 1u) != 0u) ? 0x491bea93u : 0x1126a483u); // s15 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = __umulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0xd0df3d0au : 0x7289ac7cu); // s21 add - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s22 shfl - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = __umulhi(r4, r2); // s27 mulhi - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = __umulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + ((((sel >> 4u) & 1u) != 0u) ? 0xb3e87396u : 0xfe2b1c7du); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + ((((sel >> 16u) & 1u) != 0u) ? 0x31a906adu : 0xe036a560u); // s39 add - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + ((((sel >> 27u) & 1u) != 0u) ? 0xc839ad2eu : 0xd802a3efu); // s48 add - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s49 shfl - r6 = r6 + r0 + ((((sel >> 18u) & 1u) != 0u) ? 0xe9d06965u : 0x8e71c4c0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = __umulhi(r0, r2); // s55 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s56 shfl - r1 = r1 + r2 + ((((sel >> 21u) & 1u) != 0u) ? 0x5b84a832u : 0xb0eb7d4eu); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0x4e1a16c6u : 0xd35e37c1u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + ((((sel >> 27u) & 1u) != 0u) ? 0xec29413au : 0x16221227u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + ((((sel >> 4u) & 1u) != 0u) ? 0x85c0f694u : 0x5708524au); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r1, 2); // s77 shfl - r5 = r5 + r0 + ((((sel >> 26u) & 1u) != 0u) ? 0xad4f292bu : 0xc4195db9u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s86 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s90 shfl - r5 = r5 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0xb41704ddu : 0x5570a07eu); // s91 add - r0 = __umulhi(r0, r1); // s92 mulhi - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s93 shfl - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0x4674baa3u : 0xcd1be982u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + ((((sel >> 7u) & 1u) != 0u) ? 0x3d25f873u : 0x60f87347u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r6, 4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + ((((sel >> 22u) & 1u) != 0u) ? 0x018722b4u : 0x9a16bcfbu); // s106 add - r2 = r2 + r5 + ((((sel >> 6u) & 1u) != 0u) ? 0x44cbb3d8u : 0xbc4b5e44u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = __umulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = __umulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + ((((sel >> 16u) & 1u) != 0u) ? 0x153e7b81u : 0x227a1887u); // s121 add - r6 = r6 + r3 + ((((sel >> 31u) & 1u) != 0u) ? 0x537e0843u : 0xfbb1908bu); // s122 add - r4 = __umulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + ((((sel >> 15u) & 1u) != 0u) ? 0xc2875857u : 0xc3e1337du); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s130 shfl - r4 = r4 + r0 + ((((sel >> 5u) & 1u) != 0u) ? 0x39900c5eu : 0x87bd1ad9u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + ((((sel >> 28u) & 1u) != 0u) ? 0xcb7e81cau : 0xc59dd71du); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + ((((sel >> 9u) & 1u) != 0u) ? 0x602dc90du : 0x273f8ee2u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + ((((sel >> 17u) & 1u) != 0u) ? 0xb3e8ca69u : 0x6f435830u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = __umulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + ((((sel >> 18u) & 1u) != 0u) ? 0xe88bec07u : 0x7b5c68f7u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s167 shfl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s172 shfl - r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0xadc930fcu : 0xc53a1209u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = __umulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + ((((sel >> 16u) & 1u) != 0u) ? 0x36cdb68eu : 0x2def94b8u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + ((((sel >> 5u) & 1u) != 0u) ? 0x230f4372u : 0x774065efu); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + ((((sel >> 18u) & 1u) != 0u) ? 0xbc379c7cu : 0x8c37e75bu); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = __umulhi(r1, r0); // s187 mulhi - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x8751e547u : 0x2f8a59eeu); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + ((((sel >> 2u) & 1u) != 0u) ? 0x02b9bb4cu : 0x0f369a86u); // s197 add - r4 = r4 + r2 + ((((sel >> 11u) & 1u) != 0u) ? 0x74240d4cu : 0xe7922061u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x7649c3c3u : 0xee0e3356u); // s200 add - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r1, 16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r2, 1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + ((((sel >> 23u) & 1u) != 0u) ? 0x3d8f8187u : 0xc8db10a0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r2, 8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r3, 2); // s216 shfl - r2 = __umulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r1, 8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = __umulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = __umulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + ((((sel >> 24u) & 1u) != 0u) ? 0xd5a3fb54u : 0x689cdcf5u); // s224 add - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r7, 16); // s225 shfl - r3 = __umulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + ((((sel >> 8u) & 1u) != 0u) ? 0xba3b9728u : 0x267f928du); // s228 add - r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0xa437db0eu : 0xed6dd62au); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x1c000e82u : 0x9f612006u); // s238 add - r7 = __umulhi(r7, r5); // s239 mulhi - r3 = __umulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + ((((sel >> 13u) & 1u) != 0u) ? 0x12705678u : 0x83ba196cu); // s244 add - r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0xea712528u : 0xa5d39c13u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r0, 2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s249 shfl - r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s250 shfl - r5 = r5 + r3 + ((((sel >> 21u) & 1u) != 0u) ? 0x26ce965fu : 0x3006c6ebu); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = __umulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + ((((sel >> 1u) & 1u) != 0u) ? 0x9e34c13fu : 0xc2f46c6du); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0x12eb25c3u : 0x7281530eu); // s4 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x47f0ce9fu : 0xd4a7ed9eu); // s10 add + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x39d16785u : 0x80b09095u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + ((((sel >> 29u) & 1u) != 0u) ? 0xdca22ff9u : 0xdea5ac3fu); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r0, 4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = __umulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = __umulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + ((((sel >> 8u) & 1u) != 0u) ? 0xf7b2ae68u : 0xd4145381u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + ((((sel >> 23u) & 1u) != 0u) ? 0x08943973u : 0x3c843ffeu); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = __umulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = __umulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + ((((sel >> 25u) & 1u) != 0u) ? 0xaeef7b36u : 0x3725676au); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + ((((sel >> 13u) & 1u) != 0u) ? 0xd4d858e5u : 0x41cd8f60u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + ((((sel >> 6u) & 1u) != 0u) ? 0xfa91d5a6u : 0x8f5932f9u); // s57 add + r3 = r3 + r7 + ((((sel >> 8u) & 1u) != 0u) ? 0x970ece18u : 0xe7f14444u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + ((((sel >> 27u) & 1u) != 0u) ? 0xd55319ebu : 0x7c44e743u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + ((((sel >> 16u) & 1u) != 0u) ? 0x542db8e4u : 0x811bed22u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + ((((sel >> 24u) & 1u) != 0u) ? 0x33eeb746u : 0x6a3a9047u); // s66 add + r7 = r7 + r4 + ((((sel >> 22u) & 1u) != 0u) ? 0x27aae05fu : 0x4e0c939du); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + ((((sel >> 2u) & 1u) != 0u) ? 0x9e39c430u : 0x44e0e964u); // s71 add + r4 = __umulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = __umulhi(r1, r0); // s77 mulhi + r2 = __umulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + ((((sel >> 21u) & 1u) != 0u) ? 0xc3a9acb8u : 0x61f3d247u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ __shfl_xor_sync(0xffffffffu, r3, 16); // s84 shfl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s85 shfl + r1 = r1 + r5 + ((((sel >> 29u) & 1u) != 0u) ? 0x8aac6339u : 0x693f4b88u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r7, 8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = __umulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s96 shfl + r6 = r6 ^ __shfl_xor_sync(0xffffffffu, r5, 1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + ((((sel >> 23u) & 1u) != 0u) ? 0x227996ecu : 0x7c3da932u); // s103 add + r1 = r1 + r0 + ((((sel >> 31u) & 1u) != 0u) ? 0x924ae879u : 0x7f163b1bu); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = __umulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + ((((sel >> 15u) & 1u) != 0u) ? 0x21e83993u : 0xa288a176u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + ((((sel >> 10u) & 1u) != 0u) ? 0x0f2327f2u : 0x9df51761u); // s121 add + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r7, 1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + ((((sel >> 7u) & 1u) != 0u) ? 0x2ebd98a2u : 0x19c0a4f8u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ __shfl_xor_sync(0xffffffffu, r4, 16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = __umulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + ((((sel >> 9u) & 1u) != 0u) ? 0x70024b77u : 0xd49ef2cfu); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + ((((sel >> 3u) & 1u) != 0u) ? 0x4c39b70bu : 0x96954048u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + ((((sel >> 9u) & 1u) != 0u) ? 0x3c3cdf42u : 0x5b35ff4au); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + ((((sel >> 31u) & 1u) != 0u) ? 0x0b3bd787u : 0xc2137621u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + ((((sel >> 28u) & 1u) != 0u) ? 0x7f3d99bfu : 0xaf6409eau); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = __umulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + ((((sel >> 4u) & 1u) != 0u) ? 0x084ad732u : 0xbf35527cu); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = __umulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + ((((sel >> 11u) & 1u) != 0u) ? 0x9e1aa79bu : 0x4d9683b5u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + ((((sel >> 18u) & 1u) != 0u) ? 0x47f22138u : 0xa33023afu); // s171 add + r3 = r3 + r4 + ((((sel >> 17u) & 1u) != 0u) ? 0xb4561a0cu : 0xb4c0dd62u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r6, 2); // s174 shfl + r4 = r4 + r2 + ((((sel >> 18u) & 1u) != 0u) ? 0x50dcdd8du : 0xc9a1b546u); // s175 add + r6 = r6 + r1 + ((((sel >> 16u) & 1u) != 0u) ? 0xeb88782du : 0x6d7dd3a8u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = __umulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + ((((sel >> 2u) & 1u) != 0u) ? 0x15f552efu : 0xf5421b9au); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + ((((sel >> 15u) & 1u) != 0u) ? 0xda481a5du : 0x1c29c85bu); // s201 add + r5 = r5 * r3; // s202 mul + r5 = __umulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + ((((sel >> 15u) & 1u) != 0u) ? 0xbff40052u : 0x7975e016u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = __umulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + ((((sel >> 24u) & 1u) != 0u) ? 0xb1f05c54u : 0x57f3f8acu); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ __shfl_xor_sync(0xffffffffu, r0, 8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r2, 4); // s219 shfl + r0 = r0 ^ __shfl_xor_sync(0xffffffffu, r3, 1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ __shfl_xor_sync(0xffffffffu, r3, 8); // s223 shfl + r4 = r4 + r2 + ((((sel >> 3u) & 1u) != 0u) ? 0x1023c67eu : 0xa0235028u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + ((((sel >> 17u) & 1u) != 0u) ? 0x410d0f7au : 0xf2e2fbbau); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ __shfl_xor_sync(0xffffffffu, r4, 4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = __umulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + ((((sel >> 1u) & 1u) != 0u) ? 0x90b2f1c9u : 0xf495035bu); // s241 add + r5 = r5 + r1 + ((((sel >> 19u) & 1u) != 0u) ? 0x43fe7580u : 0xad76bafbu); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ __shfl_xor_sync(0xffffffffu, r5, 2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + ((((sel >> 23u) & 1u) != 0u) ? 0xa1eaac90u : 0x7b0d685du); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + ((((sel >> 26u) & 1u) != 0u) ? 0xca0faca7u : 0x14c6d26au); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + ((((sel >> 14u) & 1u) != 0u) ? 0xf887f9eau : 0x5c6e41f5u); // s254 add + r7 = r7 + r6 + ((((sel >> 19u) & 1u) != 0u) ? 0x1eeb32d4u : 0x9389bb50u); // s255 add } } uint32_t lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/program.h b/proto-cuda/packs-ca3-v4/v4-era-5/program.h index 11c7c9895..b29376beb 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/program.h +++ b/proto-cuda/packs-ca3-v4/v4-era-5/program.h @@ -14,8 +14,8 @@ #define IGNEUM_SEED_STRING "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000" #define IGNEUM_SEED_BYTES_HEX "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07" #define IGNEUM_GENERATOR 4 -#define IGNEUM_PROGRAM_ATTEMPT 0 -#define IGNEUM_PROGRAM_ID 0xc120d7963abdcd96ull +#define IGNEUM_PROGRAM_ATTEMPT 1 +#define IGNEUM_PROGRAM_ID 0xa785001687d8688aull #define IGNEUM_DAY_STRING "bytes:69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY_BYTES_HEX "69676e65756d2d6461792ffa50000000000000" #define IGNEUM_DAY0 0xceed56d7u @@ -27,11 +27,12 @@ #define IGNEUM_INSTR_COUNT 64 #define IGNEUM_LOADS_PER_HASH 128 #define IGNEUM_WIDE_LOADS_PER_HASH 0 -#define IGNEUM_OP_MIX "load=16 add=15 shfl=6 mad=4 or=4 rotl=4 rotr=4 xor=4 mulhi=3 mul=2 sub=2" +#define IGNEUM_OP_MIX "load=16 mad=8 mul=6 xor=6 rotr=5 shfl=5 sub=5 add=4 mulhi=4 rotl=4 or=1" // Program class v4 (Counter ASIC 3.0, docs/plans/counter-asic-3-node.md): generator version 4, class v3 plus the // latency-shadow block (IGNEUM_SHADOW_INSTRS x IGNEUM_SHADOW_REPS per iteration); a worker that runs another class // refuses this pack, and a job line names the class it wants (class=v4 era=). #define IGNEUM_PROGRAM_CLASS "v4" +#define IGNEUM_PROGRAM_SUBVERSION 3 #define IGNEUM_ERA_SEED_HEX "7f450623297a954f493ca08abcdfe7142bb753900abcee38256266007b4b48b7" // Class v3 construction (Counter ASIC 2.0, 5 October 2026, docs/plans/mixer-x4.md): version 2 loads; the dataset item // derivation applies the mixer IGNEUM_MIXER_MULT times per round (memhard.h), and the cache follows the growth rule. @@ -55,18 +56,18 @@ #define IGNEUM_ERA_STRIDE_MUL 0x03ac37adu #define IGNEUM_ERA_STRIDE_ROT 22 #define IGNEUM_ERA_INTERLEAVE { 0, 2, 10, 13 } -#define IGNEUM_ERA_WINDOWS "7:2:1 8:1:1 9:1:1 10:1:1 11:0:0 13:1:1 29:0:0 30:2:2 31:1:1 44:1:1 46:2:0 47:0:0 52:0:0 56:0:0 58:2:0 63:1:1" +#define IGNEUM_ERA_WINDOWS "1:2:3 4:2:1 6:2:1 10:1:1 12:0:0 20:0:0 27:0:0 30:0:0 35:2:3 40:0:0 41:2:1 43:0:0 45:2:1 52:1:1 53:0:0 54:2:1" // Latency-shadow block (Counter ASIC 3.0 item 8, docs/analysis/latency-shadow-2026-10-06.md): NOT the lottery hash. A block of // IGNEUM_SHADOW_INSTRS ALU instructions (the ten non-load families) runs IGNEUM_SHADOW_REPS times at the end of every // iteration; the 16 loads, the acceptance rule and the base program are the class's without the shadow. #define IGNEUM_SHADOW_INSTRS 256 #define IGNEUM_SHADOW_REPS 27 #define IGNEUM_SHADOW_INSTRS_PER_HASH 55296 -#define IGNEUM_SHADOW_OP_MIX "add=43 shfl=39 xor=29 mul=27 mad=26 rotl=26 mulhi=20 rotr=18 or=14 sub=14" +#define IGNEUM_SHADOW_OP_MIX "add=45 xor=39 mad=29 mul=25 rotl=23 sub=23 shfl=22 rotr=18 mulhi=16 or=16" // 0 = closed-form dataset (ds_elem), 1 = memory-hard cache construction (MEMHARD.md, memhard.h) #define IGNEUM_DATASET_MODE 1 -#define IGNEUM_SEEDW_INIT { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u } +#define IGNEUM_SEEDW_INIT { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu } #define IGNEUM_KEY_INIT { 0xceed56d7u, 0x9ba270d2u, 0x82caab2du, 0x81ebce0eu, 0x12b6ecf1u, 0xd0f3fd7cu, 0xd872eefeu, 0xc158c7bdu } #define IGNEUM_CACHE_LOG2_WORDS 26 #define IGNEUM_CACHE_SEGMENT_LOG2_LINES 6 diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/program.json b/proto-cuda/packs-ca3-v4/v4-era-5/program.json index 8dae1d59a..fd1a13e07 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/program.json +++ b/proto-cuda/packs-ca3-v4/v4-era-5/program.json @@ -1,13 +1,13 @@ { "format": "igneum-program-pack-3", "generator": 4, - "attempt": 0, - "program_id": "0xc120d7963abdcd96", + "attempt": 1, + "program_id": "0xa785001687d8688a", "program_id_derivation": "FNV-1a 64 over 'igneum-program/' || generator_le32 || seed_words as little-endian bytes || attempt_le32", "dataset_mode": "memory-hard", "seed": "igneum-epoch/edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07/day/69676e65756d2d6461792ffa50000000000000", "seed_bytes": "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07", - "seed_words": ["0x667d0fbd", "0x7b8e5963", "0x31c67e5e", "0x4529ddc6", "0xef19d6d8", "0xaccf6211", "0xda0aed32", "0xabc6df31"], + "seed_words": ["0x29e76ddb", "0xdb25cf2a", "0x596c281e", "0xb8284534", "0x50556ce6", "0x336eb6d5", "0x01933285", "0x39690d9f"], "seed_derivation": "seed_words = FNV-1a 64 over seed_bytes (attempt 0) or seed_bytes || attempt_le32 (attempt k >= 1), basis ^ (salt * 0x9E3779B97F4A7C15) for salt 0..3, then h ^= h>>33; h *= 0xff51afd7ed558ccd; h ^= h>>33; words[2*salt] = low 32, words[2*salt+1] = high 32", "generator_rule": "version 2: exactly 16 load slots drawn first from instructions 1..63 (partial Fisher-Yates), the other 48 ops from the ten non-load weights (sum 75); a load's source is drawn from the registers other than dst written by an earlier instruction and not read by a load since; the candidate must pass the acceptance rule of spec 01 section 1.4.6 (static: no cyclically stale load source, every register has an injecting write; dynamic: 64 units on the seed-keyed closed-form dataset with no constant register bit, no lane-constant load site, under 164 saturated final values, every output bit within 136 of 1024, distinct addresses above 245760), else the next attempt of the seed is tried", "lanes": 32, @@ -16,6 +16,7 @@ "instruction_count": 64, "loads_per_hash": 128, "program_class": "v4", + "sub_version": 3, "era_seed_bytes": "7f450623297a954f493ca08abcdfe7142bb753900abcee38256266007b4b48b7", "load_class": "mx8-eraf897c84e+sh256x27", "mixer_mult": 8, @@ -40,7 +41,7 @@ "dataset_word": "dataset[w] = item(t(w))[j(w)]: j(w) gathers the bits of w at the interleave positions, t(w) is w with those bits removed", "program_id_suffix": "'era/' || allowed[3] || width_words || stride_mul_le32 || stride_rot_le32 || interleave[4]" }, - "op_mix": {"load": 16, "add": 15, "shfl": 6, "mad": 4, "or": 4, "rotl": 4, "rotr": 4, "xor": 4, "mulhi": 3, "mul": 2, "sub": 2}, + "op_mix": {"load": 16, "mad": 8, "mul": 6, "xor": 6, "rotr": 5, "shfl": 5, "sub": 5, "add": 4, "mulhi": 4, "rotl": 4, "or": 1}, "register_init": "for i in 0..7: x = nonce ^ seed_words[i]; x += 0x9e3779b9 * (i+1) (mod 2^32); x = splitmix32(x); r[i] = x ^ seed_words[(i+1) & 7]", "splitmix32": "x ^= x>>16; x *= 0x7feb352d; x ^= x>>15; x *= 0x846ca68b; x ^= x>>16", "iteration": "sel = r0 sampled once at the top of each iteration, then all instructions in order", @@ -78,328 +79,328 @@ "item": "s[0..7] = key; s[8+i] = t * mul[i] + rc[i] for i in 0..7; for r in 0..7: for j in 0..7: s = M(s, rk = (r * 8 + j + 1) * 0x9E3779B9); line = s[0] & 0x003fffff; s[i] ^= cache[line * 16 + i]; then for j in 0..7: s = M(s, rk = (64 + j + 1) * 0x9E3779B9); item(t) = s", "word": "dataset[w] = item(w >> 4)[w & 15]" }, - "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 43, "shfl": 39, "xor": 29, "mul": 27, "mad": 26, "rotl": 26, "mulhi": 20, "rotr": 18, "or": 14, "sub": 14}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ - {"i": 0, "op": "mul", "dst": 7, "src": 3, "src2": 5, "imm": "0xfe5e2b6e", "imm2": "0xeb4d8108", "rot": 2, "bit": 23, "mask": 2}, - {"i": 1, "op": "add", "dst": 7, "src": 4, "src2": 3, "imm": "0xecb44e9c", "imm2": "0x06575fd2", "rot": 25, "bit": 16, "mask": 16}, - {"i": 2, "op": "mulhi", "dst": 5, "src": 0, "src2": 7, "imm": "0x9d575cf8", "imm2": "0xee83a9b9", "rot": 21, "bit": 4, "mask": 1}, - {"i": 3, "op": "shfl", "dst": 4, "src": 5, "src2": 0, "imm": "0x98784606", "imm2": "0xf94c3e56", "rot": 23, "bit": 3, "mask": 2}, - {"i": 4, "op": "shfl", "dst": 4, "src": 1, "src2": 5, "imm": "0x1c09a3cc", "imm2": "0xd90c6054", "rot": 29, "bit": 24, "mask": 1}, - {"i": 5, "op": "shfl", "dst": 4, "src": 5, "src2": 4, "imm": "0x01029b88", "imm2": "0x67a3c3c9", "rot": 13, "bit": 6, "mask": 8}, - {"i": 6, "op": "sub", "dst": 6, "src": 1, "src2": 6, "imm": "0x2b3ef06c", "imm2": "0x0e3feb0d", "rot": 5, "bit": 9, "mask": 8}, - {"i": 7, "op": "or", "dst": 3, "src": 4, "src2": 7, "imm": "0x6144d12b", "imm2": "0x5a9108b9", "rot": 2, "bit": 27, "mask": 16}, - {"i": 8, "op": "mad", "dst": 0, "src": 4, "src2": 7, "imm": "0x79cb60ef", "imm2": "0xb538e066", "rot": 18, "bit": 19, "mask": 1}, - {"i": 9, "op": "sub", "dst": 3, "src": 4, "src2": 0, "imm": "0xae520f42", "imm2": "0x020901e9", "rot": 28, "bit": 21, "mask": 16}, - {"i": 10, "op": "mul", "dst": 6, "src": 3, "src2": 6, "imm": "0x8d7963c5", "imm2": "0x08eb5c99", "rot": 7, "bit": 12, "mask": 2}, - {"i": 11, "op": "mulhi", "dst": 5, "src": 0, "src2": 3, "imm": "0x736eae8f", "imm2": "0x03d87026", "rot": 17, "bit": 18, "mask": 16}, - {"i": 12, "op": "mad", "dst": 0, "src": 4, "src2": 5, "imm": "0x7e911298", "imm2": "0x4d50d009", "rot": 7, "bit": 14, "mask": 8}, - {"i": 13, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0x78295146", "imm2": "0x41da8352", "rot": 16, "bit": 29, "mask": 8}, - {"i": 14, "op": "xor", "dst": 7, "src": 2, "src2": 5, "imm": "0xe702e92c", "imm2": "0x7fd7ecb5", "rot": 17, "bit": 5, "mask": 4}, - {"i": 15, "op": "add", "dst": 1, "src": 4, "src2": 6, "imm": "0x1126a483", "imm2": "0x491bea93", "rot": 13, "bit": 12, "mask": 8}, - {"i": 16, "op": "shfl", "dst": 1, "src": 2, "src2": 4, "imm": "0xa21b5866", "imm2": "0x46986cb4", "rot": 8, "bit": 8, "mask": 8}, - {"i": 17, "op": "rotr", "dst": 5, "src": 0, "src2": 1, "imm": "0xfafda5ac", "imm2": "0x9f10759e", "rot": 8, "bit": 4, "mask": 2}, - {"i": 18, "op": "sub", "dst": 2, "src": 1, "src2": 1, "imm": "0xf6a4b452", "imm2": "0x73980ef4", "rot": 18, "bit": 18, "mask": 4}, - {"i": 19, "op": "mulhi", "dst": 3, "src": 2, "src2": 0, "imm": "0x8d0916ee", "imm2": "0x7eaa3cd5", "rot": 28, "bit": 12, "mask": 8}, - {"i": 20, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0xabaf6c88", "imm2": "0x9a7284f4", "rot": 4, "bit": 18, "mask": 2}, - {"i": 21, "op": "add", "dst": 2, "src": 3, "src2": 7, "imm": "0x7289ac7c", "imm2": "0xd0df3d0a", "rot": 26, "bit": 31, "mask": 4}, - {"i": 22, "op": "shfl", "dst": 2, "src": 7, "src2": 5, "imm": "0x3d88fa83", "imm2": "0x638c95f0", "rot": 26, "bit": 25, "mask": 2}, - {"i": 23, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xde5da76b", "imm2": "0xedfbe430", "rot": 19, "bit": 10, "mask": 8}, - {"i": 24, "op": "sub", "dst": 1, "src": 2, "src2": 0, "imm": "0x9fcf6309", "imm2": "0xa3db8694", "rot": 26, "bit": 4, "mask": 16}, - {"i": 25, "op": "mad", "dst": 7, "src": 3, "src2": 1, "imm": "0xd6d896c2", "imm2": "0x024c888f", "rot": 4, "bit": 0, "mask": 8}, - {"i": 26, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0xd3330bb1", "imm2": "0x38a6cc66", "rot": 30, "bit": 15, "mask": 2}, - {"i": 27, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x35d8cc82", "imm2": "0x1d3e3647", "rot": 22, "bit": 8, "mask": 8}, - {"i": 28, "op": "shfl", "dst": 1, "src": 2, "src2": 2, "imm": "0xf7f77cb0", "imm2": "0x0c805262", "rot": 13, "bit": 29, "mask": 2}, - {"i": 29, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x31a70269", "imm2": "0xb50c95da", "rot": 27, "bit": 26, "mask": 1}, - {"i": 30, "op": "mulhi", "dst": 7, "src": 6, "src2": 0, "imm": "0x943c199e", "imm2": "0x4c40e216", "rot": 24, "bit": 30, "mask": 8}, - {"i": 31, "op": "rotr", "dst": 2, "src": 7, "src2": 1, "imm": "0xe2dcfc61", "imm2": "0x6277afb6", "rot": 17, "bit": 4, "mask": 2}, - {"i": 32, "op": "rotl", "dst": 6, "src": 3, "src2": 6, "imm": "0x94294e24", "imm2": "0x1cd9a33f", "rot": 26, "bit": 14, "mask": 1}, - {"i": 33, "op": "mul", "dst": 0, "src": 7, "src2": 7, "imm": "0x0ed307ed", "imm2": "0x78df58f9", "rot": 15, "bit": 10, "mask": 1}, - {"i": 34, "op": "mul", "dst": 7, "src": 4, "src2": 7, "imm": "0xfdece04e", "imm2": "0xfc6ffb1c", "rot": 20, "bit": 27, "mask": 8}, - {"i": 35, "op": "mad", "dst": 6, "src": 0, "src2": 1, "imm": "0x86d504f2", "imm2": "0x19102025", "rot": 30, "bit": 10, "mask": 1}, - {"i": 36, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0xfe2b1c7d", "imm2": "0xb3e87396", "rot": 14, "bit": 4, "mask": 2}, - {"i": 37, "op": "rotr", "dst": 7, "src": 4, "src2": 0, "imm": "0x057006cd", "imm2": "0xe6ea534d", "rot": 22, "bit": 18, "mask": 1}, - {"i": 38, "op": "mad", "dst": 5, "src": 2, "src2": 7, "imm": "0xc7625d26", "imm2": "0xb337fac2", "rot": 28, "bit": 19, "mask": 16}, - {"i": 39, "op": "add", "dst": 6, "src": 2, "src2": 0, "imm": "0xe036a560", "imm2": "0x31a906ad", "rot": 13, "bit": 16, "mask": 16}, - {"i": 40, "op": "shfl", "dst": 3, "src": 6, "src2": 1, "imm": "0x44d611f3", "imm2": "0x75af7196", "rot": 9, "bit": 11, "mask": 4}, - {"i": 41, "op": "xor", "dst": 5, "src": 0, "src2": 7, "imm": "0x906a3ed7", "imm2": "0xa9c73c99", "rot": 6, "bit": 17, "mask": 8}, - {"i": 42, "op": "xor", "dst": 5, "src": 3, "src2": 4, "imm": "0x414a90ea", "imm2": "0x9184e622", "rot": 21, "bit": 17, "mask": 4}, - {"i": 43, "op": "rotl", "dst": 6, "src": 5, "src2": 3, "imm": "0x58161888", "imm2": "0xded078af", "rot": 31, "bit": 15, "mask": 2}, - {"i": 44, "op": "rotl", "dst": 0, "src": 5, "src2": 2, "imm": "0xaabde762", "imm2": "0x0f1e27f4", "rot": 6, "bit": 16, "mask": 1}, - {"i": 45, "op": "mad", "dst": 2, "src": 0, "src2": 6, "imm": "0x63b08cf9", "imm2": "0x09908a2b", "rot": 20, "bit": 22, "mask": 1}, - {"i": 46, "op": "mad", "dst": 0, "src": 6, "src2": 0, "imm": "0xf142fb39", "imm2": "0xd5c736b4", "rot": 28, "bit": 21, "mask": 16}, - {"i": 47, "op": "xor", "dst": 5, "src": 2, "src2": 7, "imm": "0x1dd9a881", "imm2": "0xfe4b819f", "rot": 21, "bit": 3, "mask": 1}, - {"i": 48, "op": "add", "dst": 1, "src": 5, "src2": 0, "imm": "0xd802a3ef", "imm2": "0xc839ad2e", "rot": 28, "bit": 27, "mask": 8}, - {"i": 49, "op": "shfl", "dst": 0, "src": 1, "src2": 2, "imm": "0x5e8bde57", "imm2": "0x960a95cf", "rot": 13, "bit": 25, "mask": 2}, - {"i": 50, "op": "add", "dst": 6, "src": 0, "src2": 2, "imm": "0x8e71c4c0", "imm2": "0xe9d06965", "rot": 17, "bit": 18, "mask": 16}, - {"i": 51, "op": "rotl", "dst": 1, "src": 7, "src2": 2, "imm": "0xc5e6bbf6", "imm2": "0x88daa4e7", "rot": 3, "bit": 14, "mask": 4}, - {"i": 52, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x61d216d8", "imm2": "0x7bf2e9c3", "rot": 31, "bit": 24, "mask": 1}, - {"i": 53, "op": "xor", "dst": 5, "src": 6, "src2": 3, "imm": "0xb3cd34c7", "imm2": "0xc496bc19", "rot": 6, "bit": 26, "mask": 8}, - {"i": 54, "op": "mul", "dst": 2, "src": 6, "src2": 0, "imm": "0x52657ff2", "imm2": "0xcf02547a", "rot": 24, "bit": 0, "mask": 2}, - {"i": 55, "op": "mulhi", "dst": 0, "src": 2, "src2": 4, "imm": "0xa50f4a00", "imm2": "0x6d97995b", "rot": 24, "bit": 30, "mask": 2}, - {"i": 56, "op": "shfl", "dst": 6, "src": 3, "src2": 0, "imm": "0xf72d04b9", "imm2": "0x9449b432", "rot": 27, "bit": 24, "mask": 1}, - {"i": 57, "op": "add", "dst": 1, "src": 2, "src2": 6, "imm": "0xb0eb7d4e", "imm2": "0x5b84a832", "rot": 15, "bit": 21, "mask": 4}, - {"i": 58, "op": "rotr", "dst": 0, "src": 1, "src2": 5, "imm": "0x5b51f8c3", "imm2": "0xf6791ab2", "rot": 31, "bit": 10, "mask": 2}, - {"i": 59, "op": "add", "dst": 6, "src": 4, "src2": 1, "imm": "0xd35e37c1", "imm2": "0x4e1a16c6", "rot": 20, "bit": 8, "mask": 1}, - {"i": 60, "op": "or", "dst": 0, "src": 2, "src2": 0, "imm": "0xb3710a70", "imm2": "0x798cbfda", "rot": 18, "bit": 4, "mask": 4}, - {"i": 61, "op": "rotr", "dst": 5, "src": 3, "src2": 3, "imm": "0x75129c5b", "imm2": "0xcb9b6b47", "rot": 28, "bit": 1, "mask": 8}, - {"i": 62, "op": "sub", "dst": 4, "src": 2, "src2": 2, "imm": "0xab8a6c85", "imm2": "0x8d3c8b70", "rot": 2, "bit": 5, "mask": 1}, - {"i": 63, "op": "add", "dst": 0, "src": 1, "src2": 4, "imm": "0x16221227", "imm2": "0xec29413a", "rot": 24, "bit": 27, "mask": 2}, - {"i": 64, "op": "rotl", "dst": 6, "src": 0, "src2": 7, "imm": "0xb940d207", "imm2": "0x04b817f2", "rot": 20, "bit": 31, "mask": 2}, - {"i": 65, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0xf675aa34", "imm2": "0xdeb309ea", "rot": 4, "bit": 10, "mask": 4}, - {"i": 66, "op": "rotl", "dst": 6, "src": 4, "src2": 5, "imm": "0x3f1b4ba7", "imm2": "0x4da6cfdc", "rot": 23, "bit": 6, "mask": 4}, - {"i": 67, "op": "or", "dst": 1, "src": 4, "src2": 2, "imm": "0xcdb688a8", "imm2": "0x216a3f11", "rot": 11, "bit": 22, "mask": 1}, - {"i": 68, "op": "mad", "dst": 7, "src": 4, "src2": 0, "imm": "0x41605fe7", "imm2": "0xd3a5988d", "rot": 29, "bit": 20, "mask": 8}, - {"i": 69, "op": "or", "dst": 1, "src": 5, "src2": 7, "imm": "0x4d48f2c3", "imm2": "0x47644a85", "rot": 21, "bit": 17, "mask": 16}, - {"i": 70, "op": "xor", "dst": 7, "src": 4, "src2": 3, "imm": "0xe6ebd408", "imm2": "0xcb8c12c8", "rot": 25, "bit": 29, "mask": 8}, - {"i": 71, "op": "mul", "dst": 2, "src": 3, "src2": 4, "imm": "0x2468d03d", "imm2": "0x8bbe79d8", "rot": 3, "bit": 27, "mask": 16}, - {"i": 72, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0x0ee57027", "imm2": "0x9403ee2a", "rot": 7, "bit": 11, "mask": 16}, - {"i": 73, "op": "add", "dst": 7, "src": 6, "src2": 3, "imm": "0x5708524a", "imm2": "0x85c0f694", "rot": 21, "bit": 4, "mask": 8}, - {"i": 74, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0xa654c842", "imm2": "0x9128331c", "rot": 14, "bit": 0, "mask": 2}, - {"i": 75, "op": "shfl", "dst": 0, "src": 2, "src2": 1, "imm": "0x1426e90c", "imm2": "0x6fda60bc", "rot": 3, "bit": 16, "mask": 8}, - {"i": 76, "op": "sub", "dst": 5, "src": 7, "src2": 3, "imm": "0x4f69f78a", "imm2": "0x02fbad88", "rot": 24, "bit": 10, "mask": 16}, - {"i": 77, "op": "shfl", "dst": 5, "src": 1, "src2": 7, "imm": "0xe79a2a0e", "imm2": "0x279c4885", "rot": 22, "bit": 18, "mask": 2}, - {"i": 78, "op": "add", "dst": 5, "src": 0, "src2": 3, "imm": "0xc4195db9", "imm2": "0xad4f292b", "rot": 4, "bit": 26, "mask": 16}, - {"i": 79, "op": "mul", "dst": 5, "src": 6, "src2": 2, "imm": "0xb5e31a9c", "imm2": "0xbe647403", "rot": 9, "bit": 25, "mask": 8}, - {"i": 80, "op": "shfl", "dst": 6, "src": 7, "src2": 5, "imm": "0x4b8dac91", "imm2": "0xa848d1cc", "rot": 2, "bit": 20, "mask": 2}, - {"i": 81, "op": "mul", "dst": 5, "src": 6, "src2": 1, "imm": "0xe176a1ad", "imm2": "0xfc322952", "rot": 26, "bit": 9, "mask": 1}, - {"i": 82, "op": "or", "dst": 7, "src": 3, "src2": 3, "imm": "0xb7ec126e", "imm2": "0x7baffaa9", "rot": 6, "bit": 29, "mask": 8}, - {"i": 83, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x645a1340", "imm2": "0x9ee976ae", "rot": 5, "bit": 30, "mask": 16}, - {"i": 84, "op": "rotl", "dst": 4, "src": 3, "src2": 2, "imm": "0x61c1df4b", "imm2": "0x857206ef", "rot": 12, "bit": 7, "mask": 2}, - {"i": 85, "op": "mul", "dst": 3, "src": 4, "src2": 6, "imm": "0xec2e43b4", "imm2": "0x8d5757c3", "rot": 22, "bit": 1, "mask": 2}, - {"i": 86, "op": "shfl", "dst": 0, "src": 2, "src2": 0, "imm": "0x6c65ca2e", "imm2": "0x4834f788", "rot": 23, "bit": 0, "mask": 4}, - {"i": 87, "op": "shfl", "dst": 2, "src": 7, "src2": 6, "imm": "0xb76f0305", "imm2": "0x1aa8ea68", "rot": 14, "bit": 25, "mask": 4}, - {"i": 88, "op": "xor", "dst": 1, "src": 3, "src2": 1, "imm": "0x8a7f5021", "imm2": "0xdd5cb131", "rot": 27, "bit": 16, "mask": 8}, - {"i": 89, "op": "xor", "dst": 5, "src": 1, "src2": 2, "imm": "0x6d746f35", "imm2": "0x3b4e00ef", "rot": 26, "bit": 14, "mask": 8}, - {"i": 90, "op": "shfl", "dst": 6, "src": 1, "src2": 2, "imm": "0xd66909e1", "imm2": "0x10113b61", "rot": 18, "bit": 20, "mask": 16}, - {"i": 91, "op": "add", "dst": 5, "src": 0, "src2": 7, "imm": "0x5570a07e", "imm2": "0xb41704dd", "rot": 2, "bit": 7, "mask": 2}, - {"i": 92, "op": "mulhi", "dst": 0, "src": 1, "src2": 1, "imm": "0xea035c3a", "imm2": "0x40da42e0", "rot": 28, "bit": 0, "mask": 1}, - {"i": 93, "op": "shfl", "dst": 6, "src": 0, "src2": 1, "imm": "0x20d46627", "imm2": "0x6d18141c", "rot": 1, "bit": 27, "mask": 8}, - {"i": 94, "op": "add", "dst": 3, "src": 6, "src2": 7, "imm": "0xcd1be982", "imm2": "0x4674baa3", "rot": 16, "bit": 18, "mask": 8}, - {"i": 95, "op": "rotl", "dst": 4, "src": 1, "src2": 7, "imm": "0x3e33035f", "imm2": "0xb9dd590e", "rot": 24, "bit": 3, "mask": 8}, - {"i": 96, "op": "mad", "dst": 3, "src": 7, "src2": 4, "imm": "0x41aa1a68", "imm2": "0x57a73520", "rot": 7, "bit": 13, "mask": 8}, - {"i": 97, "op": "sub", "dst": 6, "src": 3, "src2": 4, "imm": "0x13fc2afb", "imm2": "0x7a61f225", "rot": 30, "bit": 6, "mask": 2}, - {"i": 98, "op": "mad", "dst": 1, "src": 5, "src2": 6, "imm": "0x7c61b2b8", "imm2": "0xf17c8b35", "rot": 29, "bit": 18, "mask": 8}, - {"i": 99, "op": "rotr", "dst": 6, "src": 2, "src2": 5, "imm": "0x893a00fe", "imm2": "0x1e91b7df", "rot": 14, "bit": 28, "mask": 4}, - {"i": 100, "op": "xor", "dst": 5, "src": 1, "src2": 3, "imm": "0x6153760e", "imm2": "0x04f754ab", "rot": 27, "bit": 18, "mask": 16}, - {"i": 101, "op": "add", "dst": 3, "src": 7, "src2": 6, "imm": "0x60f87347", "imm2": "0x3d25f873", "rot": 25, "bit": 7, "mask": 1}, - {"i": 102, "op": "sub", "dst": 3, "src": 5, "src2": 3, "imm": "0xc048b6a7", "imm2": "0x77660c09", "rot": 19, "bit": 7, "mask": 8}, - {"i": 103, "op": "sub", "dst": 3, "src": 6, "src2": 6, "imm": "0x7b69c617", "imm2": "0x830f5e6d", "rot": 24, "bit": 15, "mask": 16}, - {"i": 104, "op": "shfl", "dst": 1, "src": 6, "src2": 4, "imm": "0x4dd3d618", "imm2": "0x9409762e", "rot": 24, "bit": 26, "mask": 4}, - {"i": 105, "op": "or", "dst": 3, "src": 5, "src2": 2, "imm": "0xd88ad8e9", "imm2": "0xd9be9692", "rot": 26, "bit": 19, "mask": 16}, - {"i": 106, "op": "add", "dst": 0, "src": 1, "src2": 5, "imm": "0x9a16bcfb", "imm2": "0x018722b4", "rot": 21, "bit": 22, "mask": 2}, - {"i": 107, "op": "add", "dst": 2, "src": 5, "src2": 1, "imm": "0xbc4b5e44", "imm2": "0x44cbb3d8", "rot": 21, "bit": 6, "mask": 4}, - {"i": 108, "op": "mad", "dst": 2, "src": 6, "src2": 1, "imm": "0x298112d4", "imm2": "0xe4846636", "rot": 17, "bit": 20, "mask": 2}, - {"i": 109, "op": "xor", "dst": 0, "src": 1, "src2": 5, "imm": "0x4100bbe5", "imm2": "0x896888e9", "rot": 29, "bit": 19, "mask": 2}, - {"i": 110, "op": "or", "dst": 4, "src": 2, "src2": 7, "imm": "0xc82eac02", "imm2": "0x87751aa9", "rot": 22, "bit": 28, "mask": 16}, - {"i": 111, "op": "rotl", "dst": 2, "src": 1, "src2": 0, "imm": "0x8d1ade42", "imm2": "0x9c40df71", "rot": 13, "bit": 8, "mask": 16}, - {"i": 112, "op": "mulhi", "dst": 5, "src": 2, "src2": 7, "imm": "0x72d97749", "imm2": "0xbb813754", "rot": 21, "bit": 29, "mask": 8}, - {"i": 113, "op": "xor", "dst": 5, "src": 1, "src2": 7, "imm": "0x5f71704c", "imm2": "0xe586e7c4", "rot": 10, "bit": 27, "mask": 8}, - {"i": 114, "op": "rotl", "dst": 0, "src": 3, "src2": 1, "imm": "0x8240f1ba", "imm2": "0x4875df3f", "rot": 15, "bit": 29, "mask": 1}, - {"i": 115, "op": "mul", "dst": 7, "src": 0, "src2": 0, "imm": "0xe58f5eea", "imm2": "0xfbb11c8b", "rot": 2, "bit": 1, "mask": 4}, - {"i": 116, "op": "mad", "dst": 0, "src": 7, "src2": 0, "imm": "0x5be825c2", "imm2": "0x78fc5ac2", "rot": 28, "bit": 29, "mask": 8}, - {"i": 117, "op": "rotl", "dst": 4, "src": 1, "src2": 1, "imm": "0x068ac28a", "imm2": "0xb9b2d080", "rot": 12, "bit": 27, "mask": 16}, - {"i": 118, "op": "mul", "dst": 1, "src": 6, "src2": 6, "imm": "0xca7b0114", "imm2": "0x8120bdff", "rot": 13, "bit": 27, "mask": 1}, - {"i": 119, "op": "mulhi", "dst": 0, "src": 3, "src2": 4, "imm": "0x72f1db15", "imm2": "0xd763290a", "rot": 16, "bit": 17, "mask": 4}, - {"i": 120, "op": "mad", "dst": 4, "src": 0, "src2": 0, "imm": "0x1738e691", "imm2": "0x40c41a1f", "rot": 13, "bit": 15, "mask": 16}, - {"i": 121, "op": "add", "dst": 0, "src": 5, "src2": 7, "imm": "0x227a1887", "imm2": "0x153e7b81", "rot": 13, "bit": 16, "mask": 4}, - {"i": 122, "op": "add", "dst": 6, "src": 3, "src2": 5, "imm": "0xfbb1908b", "imm2": "0x537e0843", "rot": 3, "bit": 31, "mask": 2}, - {"i": 123, "op": "mulhi", "dst": 4, "src": 5, "src2": 4, "imm": "0x9f4a05d3", "imm2": "0xc3544292", "rot": 2, "bit": 28, "mask": 1}, - {"i": 124, "op": "xor", "dst": 3, "src": 1, "src2": 3, "imm": "0x117f8a26", "imm2": "0x295117bc", "rot": 26, "bit": 23, "mask": 4}, - {"i": 125, "op": "add", "dst": 3, "src": 7, "src2": 1, "imm": "0xc3e1337d", "imm2": "0xc2875857", "rot": 19, "bit": 15, "mask": 2}, - {"i": 126, "op": "rotr", "dst": 4, "src": 7, "src2": 5, "imm": "0x29267284", "imm2": "0x31f748ca", "rot": 21, "bit": 23, "mask": 8}, - {"i": 127, "op": "shfl", "dst": 1, "src": 0, "src2": 5, "imm": "0xa6b542d0", "imm2": "0x0e488c4f", "rot": 2, "bit": 14, "mask": 2}, - {"i": 128, "op": "rotr", "dst": 3, "src": 6, "src2": 4, "imm": "0xe878c8e6", "imm2": "0x3a43ac1a", "rot": 24, "bit": 30, "mask": 8}, - {"i": 129, "op": "mul", "dst": 1, "src": 0, "src2": 7, "imm": "0x926a789c", "imm2": "0xb1d1742f", "rot": 5, "bit": 21, "mask": 16}, - {"i": 130, "op": "shfl", "dst": 4, "src": 1, "src2": 2, "imm": "0x95146814", "imm2": "0x38d6edcd", "rot": 15, "bit": 17, "mask": 16}, - {"i": 131, "op": "add", "dst": 4, "src": 0, "src2": 4, "imm": "0x87bd1ad9", "imm2": "0x39900c5e", "rot": 25, "bit": 5, "mask": 1}, - {"i": 132, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x29506758", "imm2": "0x756d6e2b", "rot": 26, "bit": 6, "mask": 2}, - {"i": 133, "op": "mul", "dst": 4, "src": 2, "src2": 2, "imm": "0xbc67d1c5", "imm2": "0xb2a46381", "rot": 23, "bit": 2, "mask": 2}, - {"i": 134, "op": "mad", "dst": 5, "src": 6, "src2": 0, "imm": "0x8d8296f3", "imm2": "0x1d77ab51", "rot": 29, "bit": 30, "mask": 16}, - {"i": 135, "op": "mad", "dst": 4, "src": 5, "src2": 4, "imm": "0x9864ce1f", "imm2": "0x90aa7ca1", "rot": 21, "bit": 14, "mask": 4}, - {"i": 136, "op": "add", "dst": 6, "src": 3, "src2": 0, "imm": "0xc59dd71d", "imm2": "0xcb7e81ca", "rot": 12, "bit": 28, "mask": 8}, - {"i": 137, "op": "mul", "dst": 7, "src": 5, "src2": 2, "imm": "0x6584f1e0", "imm2": "0x4fd64dc0", "rot": 16, "bit": 25, "mask": 8}, - {"i": 138, "op": "mul", "dst": 6, "src": 3, "src2": 4, "imm": "0x8ba7f74c", "imm2": "0xfe194e7c", "rot": 20, "bit": 22, "mask": 1}, - {"i": 139, "op": "rotr", "dst": 0, "src": 4, "src2": 3, "imm": "0x8f198cb8", "imm2": "0xf1643254", "rot": 13, "bit": 22, "mask": 8}, - {"i": 140, "op": "shfl", "dst": 3, "src": 5, "src2": 6, "imm": "0x12d58c6a", "imm2": "0xc0df61e4", "rot": 12, "bit": 20, "mask": 16}, - {"i": 141, "op": "rotr", "dst": 6, "src": 7, "src2": 3, "imm": "0x4b531a73", "imm2": "0xd0d06219", "rot": 10, "bit": 23, "mask": 1}, - {"i": 142, "op": "mul", "dst": 3, "src": 7, "src2": 7, "imm": "0x098bdd13", "imm2": "0x32895e1a", "rot": 15, "bit": 28, "mask": 1}, - {"i": 143, "op": "add", "dst": 0, "src": 7, "src2": 4, "imm": "0x273f8ee2", "imm2": "0x602dc90d", "rot": 24, "bit": 9, "mask": 2}, - {"i": 144, "op": "rotl", "dst": 5, "src": 6, "src2": 0, "imm": "0x941dcf22", "imm2": "0x9e794182", "rot": 26, "bit": 29, "mask": 4}, - {"i": 145, "op": "xor", "dst": 2, "src": 4, "src2": 3, "imm": "0xa05d46ba", "imm2": "0x5531e463", "rot": 12, "bit": 17, "mask": 2}, - {"i": 146, "op": "shfl", "dst": 6, "src": 5, "src2": 2, "imm": "0xb0756734", "imm2": "0x234aa1ba", "rot": 17, "bit": 25, "mask": 16}, - {"i": 147, "op": "mul", "dst": 1, "src": 4, "src2": 0, "imm": "0xc793d1f4", "imm2": "0x3bc0638f", "rot": 2, "bit": 15, "mask": 2}, - {"i": 148, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xe119f195", "imm2": "0xfbcf0ce6", "rot": 26, "bit": 29, "mask": 1}, - {"i": 149, "op": "rotr", "dst": 7, "src": 2, "src2": 3, "imm": "0xe45f4896", "imm2": "0xa4cd37ba", "rot": 28, "bit": 26, "mask": 1}, - {"i": 150, "op": "rotr", "dst": 7, "src": 3, "src2": 0, "imm": "0xe025b7d5", "imm2": "0xa8dc1168", "rot": 6, "bit": 30, "mask": 2}, - {"i": 151, "op": "add", "dst": 5, "src": 2, "src2": 1, "imm": "0x6f435830", "imm2": "0xb3e8ca69", "rot": 23, "bit": 17, "mask": 8}, - {"i": 152, "op": "xor", "dst": 6, "src": 2, "src2": 6, "imm": "0x6fcb7a5a", "imm2": "0x159a6b6c", "rot": 8, "bit": 31, "mask": 8}, - {"i": 153, "op": "shfl", "dst": 1, "src": 2, "src2": 3, "imm": "0xb9d4ff9a", "imm2": "0x852cc51e", "rot": 8, "bit": 31, "mask": 16}, - {"i": 154, "op": "xor", "dst": 2, "src": 6, "src2": 6, "imm": "0x26ed4738", "imm2": "0x3622f4c4", "rot": 24, "bit": 29, "mask": 16}, - {"i": 155, "op": "rotr", "dst": 5, "src": 7, "src2": 0, "imm": "0x11938c76", "imm2": "0xebfffd0f", "rot": 27, "bit": 12, "mask": 4}, - {"i": 156, "op": "shfl", "dst": 1, "src": 3, "src2": 1, "imm": "0xb14cac3d", "imm2": "0x4b29eac7", "rot": 12, "bit": 27, "mask": 4}, - {"i": 157, "op": "xor", "dst": 6, "src": 5, "src2": 0, "imm": "0xd79766fb", "imm2": "0xb14c8405", "rot": 6, "bit": 24, "mask": 16}, - {"i": 158, "op": "xor", "dst": 0, "src": 7, "src2": 6, "imm": "0xddadbf78", "imm2": "0x1531802d", "rot": 29, "bit": 15, "mask": 4}, - {"i": 159, "op": "xor", "dst": 0, "src": 7, "src2": 4, "imm": "0x0b1a06aa", "imm2": "0xcdbc77ac", "rot": 17, "bit": 19, "mask": 2}, - {"i": 160, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0x55c10e82", "imm2": "0x94a0ea39", "rot": 15, "bit": 31, "mask": 8}, - {"i": 161, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xe838ce69", "imm2": "0xe8b04d2b", "rot": 8, "bit": 7, "mask": 16}, - {"i": 162, "op": "rotr", "dst": 4, "src": 0, "src2": 7, "imm": "0x7878ae1e", "imm2": "0x85e7e9c5", "rot": 14, "bit": 15, "mask": 8}, - {"i": 163, "op": "mad", "dst": 4, "src": 1, "src2": 2, "imm": "0x56ad03fc", "imm2": "0xa3f4b771", "rot": 20, "bit": 19, "mask": 16}, - {"i": 164, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7b5c68f7", "imm2": "0xe88bec07", "rot": 19, "bit": 18, "mask": 2}, - {"i": 165, "op": "rotl", "dst": 0, "src": 3, "src2": 5, "imm": "0x311ef5aa", "imm2": "0x2ff76b76", "rot": 13, "bit": 22, "mask": 4}, - {"i": 166, "op": "xor", "dst": 2, "src": 6, "src2": 3, "imm": "0x7e89cc0a", "imm2": "0xcb97959d", "rot": 7, "bit": 14, "mask": 1}, - {"i": 167, "op": "shfl", "dst": 5, "src": 4, "src2": 6, "imm": "0x2900556b", "imm2": "0x1b467953", "rot": 7, "bit": 9, "mask": 16}, - {"i": 168, "op": "shfl", "dst": 2, "src": 7, "src2": 2, "imm": "0x235202e1", "imm2": "0xc077885f", "rot": 14, "bit": 25, "mask": 2}, - {"i": 169, "op": "xor", "dst": 7, "src": 6, "src2": 6, "imm": "0x1fca476c", "imm2": "0xeafc0b19", "rot": 1, "bit": 10, "mask": 8}, - {"i": 170, "op": "mad", "dst": 0, "src": 7, "src2": 2, "imm": "0x487fd092", "imm2": "0x78d1cb17", "rot": 29, "bit": 27, "mask": 16}, - {"i": 171, "op": "rotl", "dst": 3, "src": 2, "src2": 0, "imm": "0x91e2ce96", "imm2": "0xf09c550d", "rot": 3, "bit": 12, "mask": 1}, - {"i": 172, "op": "shfl", "dst": 7, "src": 6, "src2": 2, "imm": "0x54edb75b", "imm2": "0xfa03231c", "rot": 17, "bit": 19, "mask": 2}, - {"i": 173, "op": "add", "dst": 0, "src": 1, "src2": 0, "imm": "0xc53a1209", "imm2": "0xadc930fc", "rot": 30, "bit": 28, "mask": 4}, - {"i": 174, "op": "mul", "dst": 0, "src": 6, "src2": 7, "imm": "0xf9b378dc", "imm2": "0x30dbe02d", "rot": 3, "bit": 4, "mask": 4}, - {"i": 175, "op": "mulhi", "dst": 7, "src": 0, "src2": 2, "imm": "0x68fff9f9", "imm2": "0x3601d87b", "rot": 10, "bit": 22, "mask": 4}, - {"i": 176, "op": "or", "dst": 3, "src": 2, "src2": 3, "imm": "0xbb7b99c3", "imm2": "0x3265e3b7", "rot": 30, "bit": 7, "mask": 8}, - {"i": 177, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x2def94b8", "imm2": "0x36cdb68e", "rot": 22, "bit": 16, "mask": 16}, - {"i": 178, "op": "xor", "dst": 6, "src": 2, "src2": 0, "imm": "0xefbbad1b", "imm2": "0x25c1f3a3", "rot": 23, "bit": 27, "mask": 8}, - {"i": 179, "op": "rotl", "dst": 0, "src": 6, "src2": 2, "imm": "0xdfb91641", "imm2": "0x5fa6bd10", "rot": 16, "bit": 1, "mask": 2}, - {"i": 180, "op": "add", "dst": 4, "src": 3, "src2": 1, "imm": "0x774065ef", "imm2": "0x230f4372", "rot": 30, "bit": 5, "mask": 1}, - {"i": 181, "op": "mad", "dst": 6, "src": 2, "src2": 2, "imm": "0xbb3ff351", "imm2": "0x44f03bbd", "rot": 28, "bit": 21, "mask": 2}, - {"i": 182, "op": "add", "dst": 4, "src": 5, "src2": 1, "imm": "0x8c37e75b", "imm2": "0xbc379c7c", "rot": 20, "bit": 18, "mask": 16}, - {"i": 183, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x2ee09a64", "imm2": "0x468c0302", "rot": 26, "bit": 2, "mask": 8}, - {"i": 184, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0x9655a84b", "imm2": "0x0817cb5e", "rot": 22, "bit": 27, "mask": 16}, - {"i": 185, "op": "mul", "dst": 0, "src": 2, "src2": 0, "imm": "0xe241b075", "imm2": "0xe98e01d7", "rot": 21, "bit": 29, "mask": 2}, - {"i": 186, "op": "or", "dst": 3, "src": 5, "src2": 3, "imm": "0xd4d1c421", "imm2": "0x79996af4", "rot": 31, "bit": 15, "mask": 1}, - {"i": 187, "op": "mulhi", "dst": 1, "src": 0, "src2": 1, "imm": "0xcb599916", "imm2": "0x0b601133", "rot": 11, "bit": 1, "mask": 1}, - {"i": 188, "op": "shfl", "dst": 4, "src": 2, "src2": 3, "imm": "0xf0914c47", "imm2": "0x8be15ab4", "rot": 30, "bit": 14, "mask": 16}, - {"i": 189, "op": "rotr", "dst": 5, "src": 4, "src2": 4, "imm": "0xad7e0550", "imm2": "0x01a2ab62", "rot": 27, "bit": 23, "mask": 2}, - {"i": 190, "op": "mad", "dst": 3, "src": 0, "src2": 3, "imm": "0x8472ae31", "imm2": "0xd19d0a54", "rot": 14, "bit": 9, "mask": 1}, - {"i": 191, "op": "or", "dst": 1, "src": 7, "src2": 1, "imm": "0x4021a813", "imm2": "0x1cf8bf72", "rot": 26, "bit": 11, "mask": 8}, - {"i": 192, "op": "or", "dst": 7, "src": 1, "src2": 0, "imm": "0x11da1299", "imm2": "0xf24223a2", "rot": 21, "bit": 29, "mask": 16}, - {"i": 193, "op": "mad", "dst": 1, "src": 5, "src2": 4, "imm": "0x5e8c993c", "imm2": "0x1365e732", "rot": 16, "bit": 25, "mask": 16}, - {"i": 194, "op": "sub", "dst": 0, "src": 7, "src2": 3, "imm": "0xff355fe2", "imm2": "0x32c3bf6b", "rot": 22, "bit": 31, "mask": 8}, - {"i": 195, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x2f8a59ee", "imm2": "0x8751e547", "rot": 25, "bit": 9, "mask": 4}, - {"i": 196, "op": "rotl", "dst": 0, "src": 5, "src2": 6, "imm": "0x3daaadbb", "imm2": "0x3e8cc3ef", "rot": 8, "bit": 22, "mask": 1}, - {"i": 197, "op": "add", "dst": 3, "src": 4, "src2": 1, "imm": "0x0f369a86", "imm2": "0x02b9bb4c", "rot": 5, "bit": 2, "mask": 8}, - {"i": 198, "op": "add", "dst": 4, "src": 2, "src2": 0, "imm": "0xe7922061", "imm2": "0x74240d4c", "rot": 18, "bit": 11, "mask": 2}, - {"i": 199, "op": "mul", "dst": 2, "src": 5, "src2": 7, "imm": "0x139bf0ad", "imm2": "0xfa52e82c", "rot": 13, "bit": 26, "mask": 4}, - {"i": 200, "op": "add", "dst": 6, "src": 7, "src2": 2, "imm": "0xee0e3356", "imm2": "0x7649c3c3", "rot": 18, "bit": 16, "mask": 1}, - {"i": 201, "op": "shfl", "dst": 6, "src": 1, "src2": 1, "imm": "0x53178e6a", "imm2": "0x9432bffa", "rot": 5, "bit": 18, "mask": 16}, - {"i": 202, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0x0b3407f9", "imm2": "0x4cb9e4c3", "rot": 7, "bit": 9, "mask": 1}, - {"i": 203, "op": "shfl", "dst": 3, "src": 2, "src2": 7, "imm": "0xf2b2955e", "imm2": "0xa945ac34", "rot": 1, "bit": 14, "mask": 1}, - {"i": 204, "op": "mad", "dst": 7, "src": 2, "src2": 1, "imm": "0x89b40586", "imm2": "0x41af34d6", "rot": 21, "bit": 29, "mask": 4}, - {"i": 205, "op": "rotl", "dst": 2, "src": 6, "src2": 4, "imm": "0x5030ec54", "imm2": "0xd7e914a1", "rot": 5, "bit": 8, "mask": 4}, - {"i": 206, "op": "shfl", "dst": 7, "src": 1, "src2": 4, "imm": "0x0bd819a9", "imm2": "0xd50608e6", "rot": 1, "bit": 31, "mask": 8}, - {"i": 207, "op": "mul", "dst": 7, "src": 2, "src2": 7, "imm": "0xd5618c2e", "imm2": "0xf83c5e21", "rot": 3, "bit": 7, "mask": 4}, - {"i": 208, "op": "mul", "dst": 0, "src": 3, "src2": 6, "imm": "0xfd8c61ab", "imm2": "0xa9a5ed92", "rot": 31, "bit": 25, "mask": 16}, - {"i": 209, "op": "rotl", "dst": 1, "src": 2, "src2": 6, "imm": "0x30870d28", "imm2": "0xcf010462", "rot": 7, "bit": 7, "mask": 2}, - {"i": 210, "op": "add", "dst": 5, "src": 3, "src2": 2, "imm": "0xc8db10a0", "imm2": "0x3d8f8187", "rot": 11, "bit": 23, "mask": 8}, - {"i": 211, "op": "sub", "dst": 5, "src": 0, "src2": 1, "imm": "0x4cfd08ce", "imm2": "0xdb87006a", "rot": 18, "bit": 6, "mask": 4}, - {"i": 212, "op": "rotr", "dst": 0, "src": 7, "src2": 3, "imm": "0x48870bce", "imm2": "0xc75cb916", "rot": 9, "bit": 16, "mask": 4}, - {"i": 213, "op": "shfl", "dst": 4, "src": 2, "src2": 6, "imm": "0x72ec68cb", "imm2": "0xb4b178ce", "rot": 30, "bit": 25, "mask": 8}, - {"i": 214, "op": "xor", "dst": 1, "src": 3, "src2": 3, "imm": "0x88c9304d", "imm2": "0x4a9d03ce", "rot": 8, "bit": 22, "mask": 1}, - {"i": 215, "op": "rotl", "dst": 1, "src": 3, "src2": 6, "imm": "0xa31f4565", "imm2": "0x46231de4", "rot": 19, "bit": 29, "mask": 1}, - {"i": 216, "op": "shfl", "dst": 6, "src": 3, "src2": 3, "imm": "0x5a2484ee", "imm2": "0x5b9cb817", "rot": 29, "bit": 15, "mask": 2}, - {"i": 217, "op": "mulhi", "dst": 2, "src": 5, "src2": 0, "imm": "0x07b37c31", "imm2": "0xfa99004c", "rot": 3, "bit": 2, "mask": 2}, - {"i": 218, "op": "rotl", "dst": 5, "src": 3, "src2": 4, "imm": "0xa179efbd", "imm2": "0xb61b2b7e", "rot": 14, "bit": 22, "mask": 8}, - {"i": 219, "op": "shfl", "dst": 2, "src": 1, "src2": 6, "imm": "0x91e7f8b0", "imm2": "0x3a4b0b31", "rot": 28, "bit": 9, "mask": 8}, - {"i": 220, "op": "sub", "dst": 7, "src": 5, "src2": 5, "imm": "0xab7ddfe6", "imm2": "0x445f0984", "rot": 17, "bit": 17, "mask": 8}, - {"i": 221, "op": "mulhi", "dst": 3, "src": 6, "src2": 0, "imm": "0x85f16061", "imm2": "0x5c825aaa", "rot": 21, "bit": 1, "mask": 2}, - {"i": 222, "op": "or", "dst": 7, "src": 1, "src2": 1, "imm": "0xb09fbd8c", "imm2": "0x8efb07ba", "rot": 4, "bit": 10, "mask": 16}, - {"i": 223, "op": "mulhi", "dst": 1, "src": 5, "src2": 0, "imm": "0x6ca811d6", "imm2": "0x5b9bdc07", "rot": 10, "bit": 18, "mask": 2}, - {"i": 224, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0x689cdcf5", "imm2": "0xd5a3fb54", "rot": 21, "bit": 24, "mask": 4}, - {"i": 225, "op": "shfl", "dst": 5, "src": 7, "src2": 0, "imm": "0x394093f4", "imm2": "0x8f00ab86", "rot": 9, "bit": 20, "mask": 16}, - {"i": 226, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0xdb937851", "imm2": "0xde20a3b4", "rot": 11, "bit": 29, "mask": 1}, - {"i": 227, "op": "xor", "dst": 0, "src": 2, "src2": 4, "imm": "0xc59c1538", "imm2": "0x4c287438", "rot": 14, "bit": 29, "mask": 4}, - {"i": 228, "op": "add", "dst": 7, "src": 4, "src2": 0, "imm": "0x267f928d", "imm2": "0xba3b9728", "rot": 20, "bit": 8, "mask": 4}, - {"i": 229, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0x4242df07", "imm2": "0xe9f4f5bc", "rot": 2, "bit": 12, "mask": 2}, - {"i": 230, "op": "sub", "dst": 4, "src": 6, "src2": 1, "imm": "0xd873d778", "imm2": "0xd69c88f9", "rot": 19, "bit": 29, "mask": 2}, - {"i": 231, "op": "or", "dst": 0, "src": 1, "src2": 6, "imm": "0x244f872e", "imm2": "0x4748e4c2", "rot": 22, "bit": 27, "mask": 1}, - {"i": 232, "op": "rotl", "dst": 2, "src": 7, "src2": 1, "imm": "0x631b063b", "imm2": "0xe4162bdc", "rot": 10, "bit": 16, "mask": 2}, - {"i": 233, "op": "mul", "dst": 4, "src": 7, "src2": 0, "imm": "0x0f73935d", "imm2": "0x9ecb95a8", "rot": 15, "bit": 25, "mask": 1}, - {"i": 234, "op": "mad", "dst": 6, "src": 0, "src2": 0, "imm": "0x0c265371", "imm2": "0x11f4ed05", "rot": 24, "bit": 21, "mask": 2}, - {"i": 235, "op": "rotl", "dst": 4, "src": 5, "src2": 6, "imm": "0x2307926c", "imm2": "0xd871d381", "rot": 29, "bit": 20, "mask": 1}, - {"i": 236, "op": "add", "dst": 7, "src": 2, "src2": 6, "imm": "0xed6dd62a", "imm2": "0xa437db0e", "rot": 8, "bit": 13, "mask": 1}, - {"i": 237, "op": "rotr", "dst": 4, "src": 7, "src2": 4, "imm": "0x7f7b1ea5", "imm2": "0x0c9f29bb", "rot": 12, "bit": 14, "mask": 4}, - {"i": 238, "op": "add", "dst": 2, "src": 0, "src2": 4, "imm": "0x9f612006", "imm2": "0x1c000e82", "rot": 25, "bit": 17, "mask": 2}, - {"i": 239, "op": "mulhi", "dst": 7, "src": 5, "src2": 0, "imm": "0xaf194815", "imm2": "0xa0840e26", "rot": 12, "bit": 1, "mask": 1}, - {"i": 240, "op": "mulhi", "dst": 3, "src": 6, "src2": 3, "imm": "0x2e7121ba", "imm2": "0xfb8def27", "rot": 9, "bit": 25, "mask": 8}, - {"i": 241, "op": "xor", "dst": 0, "src": 7, "src2": 3, "imm": "0x66f9e726", "imm2": "0x4055a2dc", "rot": 26, "bit": 20, "mask": 8}, - {"i": 242, "op": "rotl", "dst": 4, "src": 1, "src2": 6, "imm": "0x0c1a2c3f", "imm2": "0x17f95fa5", "rot": 11, "bit": 13, "mask": 4}, - {"i": 243, "op": "rotl", "dst": 3, "src": 6, "src2": 1, "imm": "0xc53f813d", "imm2": "0x2d5ee0d7", "rot": 21, "bit": 5, "mask": 1}, - {"i": 244, "op": "add", "dst": 4, "src": 2, "src2": 6, "imm": "0x83ba196c", "imm2": "0x12705678", "rot": 2, "bit": 13, "mask": 16}, - {"i": 245, "op": "add", "dst": 7, "src": 5, "src2": 2, "imm": "0xa5d39c13", "imm2": "0xea712528", "rot": 19, "bit": 2, "mask": 2}, - {"i": 246, "op": "mul", "dst": 0, "src": 5, "src2": 5, "imm": "0x010aaff4", "imm2": "0x3d651c33", "rot": 24, "bit": 8, "mask": 1}, - {"i": 247, "op": "shfl", "dst": 4, "src": 0, "src2": 0, "imm": "0xb42b49ac", "imm2": "0xd97cc75e", "rot": 15, "bit": 22, "mask": 2}, - {"i": 248, "op": "xor", "dst": 3, "src": 2, "src2": 1, "imm": "0x6d42358f", "imm2": "0x410d9e78", "rot": 8, "bit": 3, "mask": 2}, - {"i": 249, "op": "shfl", "dst": 7, "src": 3, "src2": 6, "imm": "0x80d6cb0d", "imm2": "0x7d45237a", "rot": 20, "bit": 31, "mask": 4}, - {"i": 250, "op": "shfl", "dst": 5, "src": 3, "src2": 1, "imm": "0xed61f3bc", "imm2": "0xa9a32779", "rot": 15, "bit": 21, "mask": 16}, - {"i": 251, "op": "add", "dst": 5, "src": 3, "src2": 0, "imm": "0x3006c6eb", "imm2": "0x26ce965f", "rot": 18, "bit": 21, "mask": 2}, - {"i": 252, "op": "rotl", "dst": 3, "src": 7, "src2": 1, "imm": "0x5de2de20", "imm2": "0x5faffc25", "rot": 1, "bit": 6, "mask": 16}, - {"i": 253, "op": "mulhi", "dst": 7, "src": 1, "src2": 1, "imm": "0x3bdc77ee", "imm2": "0x4a432983", "rot": 3, "bit": 20, "mask": 8}, - {"i": 254, "op": "add", "dst": 1, "src": 5, "src2": 4, "imm": "0xc2f46c6d", "imm2": "0x9e34c13f", "rot": 10, "bit": 1, "mask": 8}, - {"i": 255, "op": "rotr", "dst": 4, "src": 7, "src2": 6, "imm": "0xde1cdb62", "imm2": "0xeb3894ba", "rot": 16, "bit": 15, "mask": 2} + "shadow": {"instrs": 256, "reps": 27, "instrs_per_hash": 55296, "op_mix": {"add": 45, "xor": 39, "mad": 29, "mul": 25, "rotl": 23, "sub": 23, "shfl": 22, "rotr": 18, "mulhi": 16, "or": 16}, "rule": "Counter ASIC 3.0 item 8 (docs/analysis/latency-shadow-2026-10-06.md): after the 64 base instructions the program stream draws instrs more ALU instructions (the non-load table, nine draws each, the source as on an ALU slot); the block runs reps times at the end of every iteration with the iteration's sel; the acceptance rule interprets the base program only", "program_id_suffix": "'shadow/' || instrs_le16 || reps_le16", "instructions": [ + {"i": 0, "op": "or", "dst": 4, "src": 1, "src2": 0, "imm": "0x309ef277", "imm2": "0x42f2da2f", "rot": 17, "bit": 0, "mask": 1}, + {"i": 1, "op": "mad", "dst": 0, "src": 2, "src2": 0, "imm": "0x5b458b0d", "imm2": "0x79b53cb6", "rot": 12, "bit": 31, "mask": 16}, + {"i": 2, "op": "sub", "dst": 0, "src": 6, "src2": 3, "imm": "0xd0f04763", "imm2": "0x9d97a503", "rot": 17, "bit": 1, "mask": 2}, + {"i": 3, "op": "or", "dst": 2, "src": 1, "src2": 4, "imm": "0xba74c91c", "imm2": "0x4e51c78f", "rot": 7, "bit": 6, "mask": 4}, + {"i": 4, "op": "add", "dst": 2, "src": 1, "src2": 1, "imm": "0x7281530e", "imm2": "0x12eb25c3", "rot": 13, "bit": 16, "mask": 2}, + {"i": 5, "op": "shfl", "dst": 1, "src": 5, "src2": 0, "imm": "0x87328994", "imm2": "0x8007d065", "rot": 26, "bit": 5, "mask": 1}, + {"i": 6, "op": "rotl", "dst": 5, "src": 1, "src2": 6, "imm": "0x8e053474", "imm2": "0xd25590dd", "rot": 19, "bit": 3, "mask": 16}, + {"i": 7, "op": "rotl", "dst": 6, "src": 0, "src2": 6, "imm": "0x7ce18ede", "imm2": "0xcf63a771", "rot": 1, "bit": 10, "mask": 16}, + {"i": 8, "op": "mad", "dst": 5, "src": 3, "src2": 4, "imm": "0xb7e49776", "imm2": "0x5ea94338", "rot": 10, "bit": 13, "mask": 16}, + {"i": 9, "op": "mad", "dst": 1, "src": 7, "src2": 3, "imm": "0x7986b8d8", "imm2": "0x8011f474", "rot": 21, "bit": 24, "mask": 4}, + {"i": 10, "op": "add", "dst": 5, "src": 0, "src2": 6, "imm": "0xd4a7ed9e", "imm2": "0x47f0ce9f", "rot": 11, "bit": 2, "mask": 4}, + {"i": 11, "op": "shfl", "dst": 2, "src": 3, "src2": 0, "imm": "0x492ee2fb", "imm2": "0xf87ca180", "rot": 1, "bit": 11, "mask": 8}, + {"i": 12, "op": "mad", "dst": 5, "src": 3, "src2": 2, "imm": "0x023a9e11", "imm2": "0x45ac6aad", "rot": 11, "bit": 20, "mask": 8}, + {"i": 13, "op": "add", "dst": 3, "src": 0, "src2": 1, "imm": "0x80b09095", "imm2": "0x39d16785", "rot": 24, "bit": 17, "mask": 16}, + {"i": 14, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x12ab5989", "imm2": "0x670f2ad4", "rot": 3, "bit": 19, "mask": 1}, + {"i": 15, "op": "add", "dst": 0, "src": 1, "src2": 6, "imm": "0xdea5ac3f", "imm2": "0xdca22ff9", "rot": 6, "bit": 29, "mask": 16}, + {"i": 16, "op": "mul", "dst": 5, "src": 7, "src2": 4, "imm": "0xf9eb9361", "imm2": "0xdba72c8a", "rot": 9, "bit": 15, "mask": 2}, + {"i": 17, "op": "sub", "dst": 3, "src": 1, "src2": 5, "imm": "0xef8a836d", "imm2": "0x69726f7d", "rot": 5, "bit": 22, "mask": 16}, + {"i": 18, "op": "shfl", "dst": 1, "src": 0, "src2": 6, "imm": "0xa651d104", "imm2": "0x45731ef2", "rot": 15, "bit": 19, "mask": 4}, + {"i": 19, "op": "rotl", "dst": 0, "src": 4, "src2": 0, "imm": "0x4b1f398c", "imm2": "0x6282aa69", "rot": 26, "bit": 30, "mask": 16}, + {"i": 20, "op": "mulhi", "dst": 7, "src": 1, "src2": 3, "imm": "0xbc190704", "imm2": "0x73e35606", "rot": 28, "bit": 26, "mask": 16}, + {"i": 21, "op": "mul", "dst": 7, "src": 1, "src2": 5, "imm": "0xd4a9b312", "imm2": "0x449683be", "rot": 31, "bit": 18, "mask": 1}, + {"i": 22, "op": "xor", "dst": 0, "src": 4, "src2": 2, "imm": "0x9c9c2860", "imm2": "0xa96c01fc", "rot": 21, "bit": 16, "mask": 4}, + {"i": 23, "op": "mulhi", "dst": 5, "src": 7, "src2": 2, "imm": "0x5b6c758d", "imm2": "0xb7cc5102", "rot": 21, "bit": 8, "mask": 8}, + {"i": 24, "op": "rotl", "dst": 0, "src": 6, "src2": 0, "imm": "0x40d706fe", "imm2": "0xae08c01f", "rot": 5, "bit": 27, "mask": 16}, + {"i": 25, "op": "rotr", "dst": 1, "src": 3, "src2": 7, "imm": "0x4652eb38", "imm2": "0x94571cbf", "rot": 2, "bit": 11, "mask": 1}, + {"i": 26, "op": "mul", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dce6c9d", "imm2": "0x2a07acab", "rot": 12, "bit": 11, "mask": 2}, + {"i": 27, "op": "rotr", "dst": 2, "src": 3, "src2": 5, "imm": "0x692fe409", "imm2": "0xa18b4818", "rot": 1, "bit": 16, "mask": 2}, + {"i": 28, "op": "add", "dst": 6, "src": 2, "src2": 2, "imm": "0xd4145381", "imm2": "0xf7b2ae68", "rot": 26, "bit": 8, "mask": 16}, + {"i": 29, "op": "or", "dst": 1, "src": 0, "src2": 5, "imm": "0xa0f7d359", "imm2": "0x0d15a2e1", "rot": 24, "bit": 3, "mask": 1}, + {"i": 30, "op": "sub", "dst": 1, "src": 5, "src2": 4, "imm": "0x92998a02", "imm2": "0xd62b9224", "rot": 17, "bit": 14, "mask": 16}, + {"i": 31, "op": "rotr", "dst": 5, "src": 4, "src2": 1, "imm": "0x785f7b95", "imm2": "0xa0d323a8", "rot": 20, "bit": 4, "mask": 8}, + {"i": 32, "op": "shfl", "dst": 4, "src": 7, "src2": 3, "imm": "0x0b4c99c3", "imm2": "0xf04f7f13", "rot": 8, "bit": 25, "mask": 8}, + {"i": 33, "op": "or", "dst": 1, "src": 3, "src2": 0, "imm": "0xebaca5cc", "imm2": "0x05418209", "rot": 10, "bit": 15, "mask": 1}, + {"i": 34, "op": "rotl", "dst": 0, "src": 7, "src2": 2, "imm": "0x8948a9b4", "imm2": "0x626acaa6", "rot": 7, "bit": 8, "mask": 16}, + {"i": 35, "op": "rotl", "dst": 5, "src": 2, "src2": 2, "imm": "0xef0e5da9", "imm2": "0xc2aa3df3", "rot": 29, "bit": 1, "mask": 1}, + {"i": 36, "op": "xor", "dst": 7, "src": 6, "src2": 3, "imm": "0x95eb29c3", "imm2": "0xdcee5054", "rot": 3, "bit": 9, "mask": 4}, + {"i": 37, "op": "rotr", "dst": 3, "src": 2, "src2": 5, "imm": "0x62f8e91d", "imm2": "0xef78b877", "rot": 15, "bit": 10, "mask": 4}, + {"i": 38, "op": "xor", "dst": 5, "src": 7, "src2": 6, "imm": "0x537bfe50", "imm2": "0xfea7d317", "rot": 12, "bit": 13, "mask": 8}, + {"i": 39, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0x4431f00f", "imm2": "0xf4af2f49", "rot": 2, "bit": 16, "mask": 4}, + {"i": 40, "op": "xor", "dst": 0, "src": 6, "src2": 2, "imm": "0x0c298d0d", "imm2": "0xe93f28f5", "rot": 2, "bit": 18, "mask": 16}, + {"i": 41, "op": "mul", "dst": 4, "src": 2, "src2": 7, "imm": "0xc5398e82", "imm2": "0x219d5619", "rot": 27, "bit": 17, "mask": 4}, + {"i": 42, "op": "sub", "dst": 1, "src": 7, "src2": 5, "imm": "0x82b8b192", "imm2": "0x898043a3", "rot": 2, "bit": 6, "mask": 2}, + {"i": 43, "op": "add", "dst": 1, "src": 4, "src2": 4, "imm": "0x3c843ffe", "imm2": "0x08943973", "rot": 4, "bit": 23, "mask": 8}, + {"i": 44, "op": "or", "dst": 3, "src": 1, "src2": 0, "imm": "0xa47d850a", "imm2": "0x7c95c5bc", "rot": 18, "bit": 0, "mask": 1}, + {"i": 45, "op": "mul", "dst": 4, "src": 0, "src2": 3, "imm": "0x2981616d", "imm2": "0x55c6f770", "rot": 11, "bit": 31, "mask": 8}, + {"i": 46, "op": "xor", "dst": 0, "src": 4, "src2": 7, "imm": "0x29ced7d0", "imm2": "0xd3055f5a", "rot": 19, "bit": 21, "mask": 2}, + {"i": 47, "op": "mulhi", "dst": 2, "src": 0, "src2": 2, "imm": "0xafc83709", "imm2": "0xb2281314", "rot": 31, "bit": 1, "mask": 16}, + {"i": 48, "op": "sub", "dst": 1, "src": 0, "src2": 7, "imm": "0x5d75fa3c", "imm2": "0x35e125e7", "rot": 8, "bit": 16, "mask": 1}, + {"i": 49, "op": "xor", "dst": 1, "src": 4, "src2": 5, "imm": "0xdb3be989", "imm2": "0x620505ac", "rot": 5, "bit": 25, "mask": 16}, + {"i": 50, "op": "mulhi", "dst": 6, "src": 4, "src2": 6, "imm": "0x26101cc8", "imm2": "0x59419247", "rot": 29, "bit": 6, "mask": 4}, + {"i": 51, "op": "add", "dst": 4, "src": 2, "src2": 7, "imm": "0x3725676a", "imm2": "0xaeef7b36", "rot": 21, "bit": 25, "mask": 8}, + {"i": 52, "op": "xor", "dst": 0, "src": 2, "src2": 0, "imm": "0x6bbf6a74", "imm2": "0xe716d9b3", "rot": 3, "bit": 27, "mask": 4}, + {"i": 53, "op": "shfl", "dst": 7, "src": 6, "src2": 3, "imm": "0x23f75cda", "imm2": "0xe2b24d2d", "rot": 16, "bit": 20, "mask": 2}, + {"i": 54, "op": "mad", "dst": 1, "src": 5, "src2": 1, "imm": "0xe9729dbf", "imm2": "0x4b191a83", "rot": 24, "bit": 19, "mask": 8}, + {"i": 55, "op": "add", "dst": 5, "src": 3, "src2": 1, "imm": "0x41cd8f60", "imm2": "0xd4d858e5", "rot": 23, "bit": 13, "mask": 2}, + {"i": 56, "op": "sub", "dst": 2, "src": 1, "src2": 7, "imm": "0xbbf66283", "imm2": "0xc72caf4a", "rot": 29, "bit": 25, "mask": 8}, + {"i": 57, "op": "add", "dst": 7, "src": 3, "src2": 6, "imm": "0x8f5932f9", "imm2": "0xfa91d5a6", "rot": 11, "bit": 6, "mask": 16}, + {"i": 58, "op": "add", "dst": 3, "src": 7, "src2": 7, "imm": "0xe7f14444", "imm2": "0x970ece18", "rot": 13, "bit": 8, "mask": 4}, + {"i": 59, "op": "mad", "dst": 2, "src": 4, "src2": 7, "imm": "0xadfcd9d8", "imm2": "0x9dce4791", "rot": 21, "bit": 28, "mask": 1}, + {"i": 60, "op": "mad", "dst": 5, "src": 1, "src2": 7, "imm": "0x1ef103e4", "imm2": "0x9e65277f", "rot": 22, "bit": 25, "mask": 8}, + {"i": 61, "op": "add", "dst": 3, "src": 6, "src2": 4, "imm": "0x7c44e743", "imm2": "0xd55319eb", "rot": 19, "bit": 27, "mask": 16}, + {"i": 62, "op": "mad", "dst": 0, "src": 6, "src2": 5, "imm": "0x16a90fed", "imm2": "0xfa7ba641", "rot": 10, "bit": 22, "mask": 1}, + {"i": 63, "op": "or", "dst": 6, "src": 0, "src2": 0, "imm": "0xb071d15e", "imm2": "0x47c17341", "rot": 13, "bit": 22, "mask": 16}, + {"i": 64, "op": "add", "dst": 5, "src": 7, "src2": 6, "imm": "0x811bed22", "imm2": "0x542db8e4", "rot": 4, "bit": 16, "mask": 4}, + {"i": 65, "op": "mul", "dst": 4, "src": 2, "src2": 5, "imm": "0x7c0fda82", "imm2": "0xaf7e882b", "rot": 4, "bit": 18, "mask": 8}, + {"i": 66, "op": "add", "dst": 4, "src": 1, "src2": 5, "imm": "0x6a3a9047", "imm2": "0x33eeb746", "rot": 21, "bit": 24, "mask": 2}, + {"i": 67, "op": "add", "dst": 7, "src": 4, "src2": 7, "imm": "0x4e0c939d", "imm2": "0x27aae05f", "rot": 22, "bit": 22, "mask": 2}, + {"i": 68, "op": "xor", "dst": 1, "src": 2, "src2": 5, "imm": "0x8b0fac0e", "imm2": "0x773d591e", "rot": 25, "bit": 21, "mask": 16}, + {"i": 69, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0x769b5174", "imm2": "0x0e211a1a", "rot": 14, "bit": 2, "mask": 4}, + {"i": 70, "op": "sub", "dst": 4, "src": 2, "src2": 0, "imm": "0x048c0c73", "imm2": "0xeae95d39", "rot": 10, "bit": 9, "mask": 2}, + {"i": 71, "op": "add", "dst": 7, "src": 5, "src2": 6, "imm": "0x44e0e964", "imm2": "0x9e39c430", "rot": 15, "bit": 2, "mask": 4}, + {"i": 72, "op": "mulhi", "dst": 4, "src": 6, "src2": 7, "imm": "0xa6781d34", "imm2": "0x09702575", "rot": 14, "bit": 14, "mask": 1}, + {"i": 73, "op": "sub", "dst": 7, "src": 6, "src2": 6, "imm": "0x67be60ec", "imm2": "0x985d6d54", "rot": 17, "bit": 23, "mask": 16}, + {"i": 74, "op": "mul", "dst": 7, "src": 3, "src2": 4, "imm": "0x1397f8aa", "imm2": "0x8e3d4432", "rot": 24, "bit": 8, "mask": 4}, + {"i": 75, "op": "mad", "dst": 5, "src": 1, "src2": 5, "imm": "0xb0f19594", "imm2": "0x05af0ffb", "rot": 14, "bit": 10, "mask": 1}, + {"i": 76, "op": "sub", "dst": 0, "src": 6, "src2": 1, "imm": "0xbe5f8ad2", "imm2": "0x15cf3077", "rot": 22, "bit": 11, "mask": 2}, + {"i": 77, "op": "mulhi", "dst": 1, "src": 0, "src2": 5, "imm": "0x792ab9fa", "imm2": "0x6ddddf47", "rot": 13, "bit": 21, "mask": 8}, + {"i": 78, "op": "mulhi", "dst": 2, "src": 6, "src2": 7, "imm": "0xfb39e0a1", "imm2": "0xfe045786", "rot": 30, "bit": 1, "mask": 2}, + {"i": 79, "op": "mad", "dst": 7, "src": 6, "src2": 4, "imm": "0xfd22ec62", "imm2": "0x88a6e1eb", "rot": 17, "bit": 8, "mask": 2}, + {"i": 80, "op": "shfl", "dst": 5, "src": 4, "src2": 0, "imm": "0x2959187b", "imm2": "0x0818d2ea", "rot": 17, "bit": 15, "mask": 2}, + {"i": 81, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x75eb3918", "imm2": "0x7b0e8940", "rot": 4, "bit": 21, "mask": 2}, + {"i": 82, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x61f3d247", "imm2": "0xc3a9acb8", "rot": 30, "bit": 21, "mask": 16}, + {"i": 83, "op": "sub", "dst": 3, "src": 5, "src2": 0, "imm": "0x287df7c7", "imm2": "0x873097ac", "rot": 1, "bit": 31, "mask": 2}, + {"i": 84, "op": "shfl", "dst": 2, "src": 3, "src2": 2, "imm": "0x1d855bac", "imm2": "0xc3af60b1", "rot": 8, "bit": 22, "mask": 16}, + {"i": 85, "op": "shfl", "dst": 3, "src": 7, "src2": 5, "imm": "0x1dffd417", "imm2": "0x5eff3b7f", "rot": 10, "bit": 28, "mask": 8}, + {"i": 86, "op": "add", "dst": 1, "src": 5, "src2": 6, "imm": "0x693f4b88", "imm2": "0x8aac6339", "rot": 25, "bit": 29, "mask": 8}, + {"i": 87, "op": "sub", "dst": 1, "src": 2, "src2": 6, "imm": "0xd193f092", "imm2": "0x9f02b743", "rot": 8, "bit": 9, "mask": 8}, + {"i": 88, "op": "rotr", "dst": 7, "src": 4, "src2": 5, "imm": "0xec60ed5d", "imm2": "0xb416e7ca", "rot": 5, "bit": 11, "mask": 1}, + {"i": 89, "op": "shfl", "dst": 4, "src": 7, "src2": 5, "imm": "0x18a30e99", "imm2": "0x72fccf9e", "rot": 11, "bit": 11, "mask": 8}, + {"i": 90, "op": "xor", "dst": 4, "src": 1, "src2": 2, "imm": "0xeb9b94f7", "imm2": "0x64eba514", "rot": 16, "bit": 12, "mask": 2}, + {"i": 91, "op": "shfl", "dst": 1, "src": 3, "src2": 5, "imm": "0xbf6fc372", "imm2": "0xdaad690b", "rot": 17, "bit": 8, "mask": 1}, + {"i": 92, "op": "mul", "dst": 0, "src": 5, "src2": 4, "imm": "0xe44c8e17", "imm2": "0x13c08dc1", "rot": 29, "bit": 0, "mask": 8}, + {"i": 93, "op": "rotr", "dst": 5, "src": 4, "src2": 5, "imm": "0x3da73e17", "imm2": "0x54e1454d", "rot": 22, "bit": 3, "mask": 2}, + {"i": 94, "op": "mulhi", "dst": 0, "src": 3, "src2": 5, "imm": "0xd0464408", "imm2": "0x50a1278c", "rot": 21, "bit": 6, "mask": 2}, + {"i": 95, "op": "rotl", "dst": 2, "src": 6, "src2": 2, "imm": "0xff444229", "imm2": "0x6002eac5", "rot": 5, "bit": 13, "mask": 4}, + {"i": 96, "op": "shfl", "dst": 5, "src": 4, "src2": 7, "imm": "0x4992531a", "imm2": "0x9d44d37c", "rot": 5, "bit": 25, "mask": 4}, + {"i": 97, "op": "shfl", "dst": 6, "src": 5, "src2": 1, "imm": "0xa003998c", "imm2": "0xd1501fac", "rot": 19, "bit": 15, "mask": 1}, + {"i": 98, "op": "rotl", "dst": 6, "src": 5, "src2": 0, "imm": "0xad22bb50", "imm2": "0xb4dd73ca", "rot": 14, "bit": 15, "mask": 4}, + {"i": 99, "op": "sub", "dst": 7, "src": 2, "src2": 4, "imm": "0xbd51e332", "imm2": "0x91444d55", "rot": 21, "bit": 10, "mask": 16}, + {"i": 100, "op": "mad", "dst": 2, "src": 1, "src2": 7, "imm": "0xdcd58135", "imm2": "0x25cf5f5d", "rot": 21, "bit": 29, "mask": 1}, + {"i": 101, "op": "mul", "dst": 3, "src": 0, "src2": 1, "imm": "0x708d8754", "imm2": "0xc3c30426", "rot": 29, "bit": 30, "mask": 4}, + {"i": 102, "op": "mad", "dst": 0, "src": 3, "src2": 5, "imm": "0x9bb09c93", "imm2": "0xdc509217", "rot": 14, "bit": 28, "mask": 8}, + {"i": 103, "op": "add", "dst": 0, "src": 6, "src2": 3, "imm": "0x7c3da932", "imm2": "0x227996ec", "rot": 24, "bit": 23, "mask": 1}, + {"i": 104, "op": "add", "dst": 1, "src": 0, "src2": 2, "imm": "0x7f163b1b", "imm2": "0x924ae879", "rot": 12, "bit": 31, "mask": 4}, + {"i": 105, "op": "rotl", "dst": 3, "src": 4, "src2": 1, "imm": "0xf8e25690", "imm2": "0x8a082e1f", "rot": 8, "bit": 2, "mask": 4}, + {"i": 106, "op": "rotr", "dst": 0, "src": 4, "src2": 4, "imm": "0xceabe7ab", "imm2": "0x3e718566", "rot": 31, "bit": 8, "mask": 4}, + {"i": 107, "op": "mul", "dst": 4, "src": 0, "src2": 1, "imm": "0x96d77e8d", "imm2": "0x1cefd84c", "rot": 9, "bit": 16, "mask": 16}, + {"i": 108, "op": "mad", "dst": 0, "src": 6, "src2": 6, "imm": "0x405dde21", "imm2": "0x8309e55c", "rot": 1, "bit": 4, "mask": 8}, + {"i": 109, "op": "mad", "dst": 0, "src": 3, "src2": 1, "imm": "0xcb99dd37", "imm2": "0xdb0ab009", "rot": 25, "bit": 8, "mask": 16}, + {"i": 110, "op": "rotr", "dst": 7, "src": 4, "src2": 1, "imm": "0x0f08530d", "imm2": "0x5ee7cc2e", "rot": 13, "bit": 27, "mask": 2}, + {"i": 111, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xe38769c5", "imm2": "0x2c60e343", "rot": 18, "bit": 4, "mask": 4}, + {"i": 112, "op": "mul", "dst": 5, "src": 3, "src2": 6, "imm": "0xf819b105", "imm2": "0x56d11b71", "rot": 29, "bit": 3, "mask": 4}, + {"i": 113, "op": "mul", "dst": 2, "src": 7, "src2": 6, "imm": "0x0a1e2492", "imm2": "0xd5511fab", "rot": 30, "bit": 14, "mask": 8}, + {"i": 114, "op": "rotl", "dst": 5, "src": 6, "src2": 7, "imm": "0xbe8aeb22", "imm2": "0x11cd6907", "rot": 16, "bit": 3, "mask": 16}, + {"i": 115, "op": "mulhi", "dst": 6, "src": 2, "src2": 1, "imm": "0x6913ea7d", "imm2": "0x38b2763d", "rot": 27, "bit": 24, "mask": 4}, + {"i": 116, "op": "rotl", "dst": 0, "src": 4, "src2": 6, "imm": "0xcedc4780", "imm2": "0x1b629526", "rot": 5, "bit": 25, "mask": 16}, + {"i": 117, "op": "mul", "dst": 2, "src": 7, "src2": 2, "imm": "0xc2ace26e", "imm2": "0xc3d8443b", "rot": 2, "bit": 14, "mask": 16}, + {"i": 118, "op": "add", "dst": 4, "src": 2, "src2": 3, "imm": "0xa288a176", "imm2": "0x21e83993", "rot": 7, "bit": 15, "mask": 4}, + {"i": 119, "op": "xor", "dst": 1, "src": 0, "src2": 1, "imm": "0xf6bc9d5e", "imm2": "0x3ea2c82b", "rot": 24, "bit": 12, "mask": 16}, + {"i": 120, "op": "rotl", "dst": 2, "src": 3, "src2": 4, "imm": "0x2b0e5270", "imm2": "0xf3c1a703", "rot": 26, "bit": 18, "mask": 8}, + {"i": 121, "op": "add", "dst": 0, "src": 4, "src2": 2, "imm": "0x9df51761", "imm2": "0x0f2327f2", "rot": 5, "bit": 10, "mask": 2}, + {"i": 122, "op": "shfl", "dst": 1, "src": 7, "src2": 6, "imm": "0xeca5e7f0", "imm2": "0x9866610f", "rot": 12, "bit": 20, "mask": 1}, + {"i": 123, "op": "rotr", "dst": 7, "src": 2, "src2": 5, "imm": "0xdfcdcfa4", "imm2": "0x18f15a1e", "rot": 7, "bit": 27, "mask": 16}, + {"i": 124, "op": "add", "dst": 7, "src": 0, "src2": 6, "imm": "0x19c0a4f8", "imm2": "0x2ebd98a2", "rot": 12, "bit": 7, "mask": 4}, + {"i": 125, "op": "mad", "dst": 0, "src": 5, "src2": 3, "imm": "0x9b0adb1b", "imm2": "0x764965b4", "rot": 13, "bit": 22, "mask": 16}, + {"i": 126, "op": "xor", "dst": 0, "src": 4, "src2": 4, "imm": "0x44fe4207", "imm2": "0x910211ba", "rot": 6, "bit": 18, "mask": 1}, + {"i": 127, "op": "shfl", "dst": 1, "src": 4, "src2": 7, "imm": "0x7c5c719d", "imm2": "0x0836b2e8", "rot": 9, "bit": 1, "mask": 16}, + {"i": 128, "op": "rotl", "dst": 5, "src": 6, "src2": 6, "imm": "0x911c0d67", "imm2": "0xa2ba5a19", "rot": 21, "bit": 18, "mask": 4}, + {"i": 129, "op": "sub", "dst": 4, "src": 0, "src2": 3, "imm": "0x5cab59d0", "imm2": "0xafccab62", "rot": 3, "bit": 26, "mask": 16}, + {"i": 130, "op": "xor", "dst": 5, "src": 0, "src2": 3, "imm": "0xba638107", "imm2": "0x5db38333", "rot": 18, "bit": 9, "mask": 2}, + {"i": 131, "op": "mad", "dst": 7, "src": 6, "src2": 3, "imm": "0x6d0aef48", "imm2": "0x6143bc91", "rot": 14, "bit": 22, "mask": 16}, + {"i": 132, "op": "mad", "dst": 5, "src": 6, "src2": 6, "imm": "0xec82154f", "imm2": "0x876fe9ca", "rot": 16, "bit": 14, "mask": 2}, + {"i": 133, "op": "xor", "dst": 6, "src": 2, "src2": 7, "imm": "0x443c2a5f", "imm2": "0xfdb393d3", "rot": 31, "bit": 21, "mask": 2}, + {"i": 134, "op": "mulhi", "dst": 6, "src": 5, "src2": 3, "imm": "0x89854adb", "imm2": "0x458d5e5e", "rot": 20, "bit": 27, "mask": 8}, + {"i": 135, "op": "add", "dst": 5, "src": 4, "src2": 1, "imm": "0xd49ef2cf", "imm2": "0x70024b77", "rot": 8, "bit": 9, "mask": 16}, + {"i": 136, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x34b22f8f", "imm2": "0x7322da82", "rot": 11, "bit": 16, "mask": 1}, + {"i": 137, "op": "add", "dst": 0, "src": 5, "src2": 5, "imm": "0x96954048", "imm2": "0x4c39b70b", "rot": 10, "bit": 3, "mask": 1}, + {"i": 138, "op": "xor", "dst": 2, "src": 4, "src2": 2, "imm": "0x6fc367fe", "imm2": "0xe100aeac", "rot": 5, "bit": 23, "mask": 2}, + {"i": 139, "op": "add", "dst": 4, "src": 0, "src2": 7, "imm": "0x5b35ff4a", "imm2": "0x3c3cdf42", "rot": 4, "bit": 9, "mask": 4}, + {"i": 140, "op": "rotl", "dst": 5, "src": 3, "src2": 1, "imm": "0x80a1f9b7", "imm2": "0x66467acb", "rot": 10, "bit": 25, "mask": 2}, + {"i": 141, "op": "or", "dst": 5, "src": 1, "src2": 5, "imm": "0xda701fe4", "imm2": "0x6644e492", "rot": 9, "bit": 3, "mask": 2}, + {"i": 142, "op": "mul", "dst": 4, "src": 3, "src2": 3, "imm": "0x6f508967", "imm2": "0x4e04d487", "rot": 16, "bit": 4, "mask": 1}, + {"i": 143, "op": "add", "dst": 6, "src": 4, "src2": 3, "imm": "0xc2137621", "imm2": "0x0b3bd787", "rot": 18, "bit": 31, "mask": 2}, + {"i": 144, "op": "xor", "dst": 5, "src": 1, "src2": 0, "imm": "0x76b0b14e", "imm2": "0xe9730f07", "rot": 30, "bit": 16, "mask": 2}, + {"i": 145, "op": "rotl", "dst": 0, "src": 2, "src2": 4, "imm": "0xbcda17de", "imm2": "0x617d63bb", "rot": 27, "bit": 30, "mask": 4}, + {"i": 146, "op": "sub", "dst": 2, "src": 5, "src2": 0, "imm": "0x0e225ff9", "imm2": "0x3536fd38", "rot": 7, "bit": 8, "mask": 4}, + {"i": 147, "op": "rotl", "dst": 2, "src": 1, "src2": 2, "imm": "0x3ba283bc", "imm2": "0x80b8d896", "rot": 21, "bit": 18, "mask": 2}, + {"i": 148, "op": "add", "dst": 0, "src": 1, "src2": 2, "imm": "0xaf6409ea", "imm2": "0x7f3d99bf", "rot": 7, "bit": 28, "mask": 1}, + {"i": 149, "op": "xor", "dst": 6, "src": 5, "src2": 3, "imm": "0x32f83d1b", "imm2": "0x19f0231e", "rot": 13, "bit": 8, "mask": 2}, + {"i": 150, "op": "mul", "dst": 2, "src": 1, "src2": 0, "imm": "0x5d0e1a76", "imm2": "0x331aa008", "rot": 20, "bit": 17, "mask": 8}, + {"i": 151, "op": "mulhi", "dst": 3, "src": 5, "src2": 1, "imm": "0xaf1b7af3", "imm2": "0xa869eb43", "rot": 7, "bit": 18, "mask": 2}, + {"i": 152, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0xc8f4d8ce", "imm2": "0x2782a4e8", "rot": 18, "bit": 6, "mask": 4}, + {"i": 153, "op": "rotl", "dst": 5, "src": 0, "src2": 1, "imm": "0x7550e18a", "imm2": "0xf1c415e8", "rot": 16, "bit": 24, "mask": 16}, + {"i": 154, "op": "mul", "dst": 7, "src": 5, "src2": 1, "imm": "0x84178f98", "imm2": "0xb27cdd09", "rot": 9, "bit": 31, "mask": 2}, + {"i": 155, "op": "mad", "dst": 7, "src": 0, "src2": 5, "imm": "0x091bdf34", "imm2": "0x81aa23ed", "rot": 10, "bit": 26, "mask": 8}, + {"i": 156, "op": "mad", "dst": 3, "src": 7, "src2": 0, "imm": "0x16801f9f", "imm2": "0x2b0550a0", "rot": 25, "bit": 18, "mask": 4}, + {"i": 157, "op": "sub", "dst": 1, "src": 6, "src2": 5, "imm": "0x649e785b", "imm2": "0x958fb4c2", "rot": 8, "bit": 12, "mask": 16}, + {"i": 158, "op": "add", "dst": 3, "src": 4, "src2": 7, "imm": "0xbf35527c", "imm2": "0x084ad732", "rot": 5, "bit": 4, "mask": 8}, + {"i": 159, "op": "or", "dst": 3, "src": 1, "src2": 2, "imm": "0x4ba957fb", "imm2": "0xd86008b5", "rot": 28, "bit": 7, "mask": 2}, + {"i": 160, "op": "xor", "dst": 4, "src": 7, "src2": 6, "imm": "0x82ed8c99", "imm2": "0xb0053a39", "rot": 6, "bit": 9, "mask": 16}, + {"i": 161, "op": "xor", "dst": 5, "src": 4, "src2": 2, "imm": "0x809c8427", "imm2": "0x0195d892", "rot": 2, "bit": 10, "mask": 8}, + {"i": 162, "op": "rotl", "dst": 0, "src": 6, "src2": 1, "imm": "0x85240167", "imm2": "0xa130e24b", "rot": 2, "bit": 9, "mask": 16}, + {"i": 163, "op": "sub", "dst": 1, "src": 4, "src2": 3, "imm": "0x0365853a", "imm2": "0x56084218", "rot": 16, "bit": 25, "mask": 4}, + {"i": 164, "op": "xor", "dst": 3, "src": 6, "src2": 7, "imm": "0xda958a98", "imm2": "0x8ea609ad", "rot": 15, "bit": 8, "mask": 16}, + {"i": 165, "op": "mulhi", "dst": 3, "src": 0, "src2": 2, "imm": "0xdf258d77", "imm2": "0x24da7892", "rot": 23, "bit": 30, "mask": 16}, + {"i": 166, "op": "xor", "dst": 6, "src": 2, "src2": 5, "imm": "0xee1224bb", "imm2": "0xdd8ecf95", "rot": 23, "bit": 21, "mask": 4}, + {"i": 167, "op": "mul", "dst": 6, "src": 0, "src2": 4, "imm": "0x8d7e2d70", "imm2": "0x349d6e9a", "rot": 31, "bit": 7, "mask": 2}, + {"i": 168, "op": "add", "dst": 1, "src": 0, "src2": 4, "imm": "0x4d9683b5", "imm2": "0x9e1aa79b", "rot": 10, "bit": 11, "mask": 8}, + {"i": 169, "op": "mad", "dst": 3, "src": 5, "src2": 1, "imm": "0xf613d3d2", "imm2": "0x7a51238f", "rot": 24, "bit": 14, "mask": 4}, + {"i": 170, "op": "xor", "dst": 2, "src": 3, "src2": 0, "imm": "0x6384ae47", "imm2": "0xf2e6043d", "rot": 7, "bit": 13, "mask": 8}, + {"i": 171, "op": "add", "dst": 0, "src": 7, "src2": 7, "imm": "0xa33023af", "imm2": "0x47f22138", "rot": 19, "bit": 18, "mask": 2}, + {"i": 172, "op": "add", "dst": 3, "src": 4, "src2": 0, "imm": "0xb4c0dd62", "imm2": "0xb4561a0c", "rot": 7, "bit": 17, "mask": 2}, + {"i": 173, "op": "mul", "dst": 3, "src": 0, "src2": 7, "imm": "0x80206dac", "imm2": "0x1b739e4e", "rot": 17, "bit": 31, "mask": 2}, + {"i": 174, "op": "shfl", "dst": 4, "src": 6, "src2": 4, "imm": "0x2ab7e5c1", "imm2": "0x7d88b7c0", "rot": 4, "bit": 5, "mask": 2}, + {"i": 175, "op": "add", "dst": 4, "src": 2, "src2": 2, "imm": "0xc9a1b546", "imm2": "0x50dcdd8d", "rot": 19, "bit": 18, "mask": 2}, + {"i": 176, "op": "add", "dst": 6, "src": 1, "src2": 1, "imm": "0x6d7dd3a8", "imm2": "0xeb88782d", "rot": 9, "bit": 16, "mask": 8}, + {"i": 177, "op": "sub", "dst": 2, "src": 7, "src2": 7, "imm": "0x79d36099", "imm2": "0x076fef7e", "rot": 18, "bit": 21, "mask": 2}, + {"i": 178, "op": "mad", "dst": 0, "src": 2, "src2": 2, "imm": "0x0f6e037d", "imm2": "0x0cc7519f", "rot": 4, "bit": 21, "mask": 2}, + {"i": 179, "op": "mul", "dst": 0, "src": 2, "src2": 6, "imm": "0xbd7faff5", "imm2": "0x0d172bb9", "rot": 30, "bit": 22, "mask": 8}, + {"i": 180, "op": "mad", "dst": 0, "src": 5, "src2": 0, "imm": "0x183d820a", "imm2": "0x5abfbcaf", "rot": 27, "bit": 31, "mask": 1}, + {"i": 181, "op": "sub", "dst": 1, "src": 7, "src2": 1, "imm": "0x3329d975", "imm2": "0x110b1447", "rot": 3, "bit": 14, "mask": 4}, + {"i": 182, "op": "xor", "dst": 6, "src": 4, "src2": 4, "imm": "0x3b9aa754", "imm2": "0xbf7c26a7", "rot": 2, "bit": 1, "mask": 16}, + {"i": 183, "op": "sub", "dst": 6, "src": 1, "src2": 7, "imm": "0x2432ca1b", "imm2": "0x7ece0a60", "rot": 28, "bit": 19, "mask": 16}, + {"i": 184, "op": "mad", "dst": 0, "src": 4, "src2": 2, "imm": "0x358d681c", "imm2": "0x8a61db17", "rot": 5, "bit": 26, "mask": 8}, + {"i": 185, "op": "mulhi", "dst": 2, "src": 7, "src2": 1, "imm": "0xf519acf0", "imm2": "0xce9fb9a5", "rot": 8, "bit": 7, "mask": 2}, + {"i": 186, "op": "xor", "dst": 0, "src": 1, "src2": 6, "imm": "0x91962182", "imm2": "0xd7aab2fd", "rot": 29, "bit": 26, "mask": 1}, + {"i": 187, "op": "add", "dst": 4, "src": 0, "src2": 3, "imm": "0xf5421b9a", "imm2": "0x15f552ef", "rot": 22, "bit": 2, "mask": 16}, + {"i": 188, "op": "mad", "dst": 4, "src": 2, "src2": 5, "imm": "0x3aec1c9f", "imm2": "0x9bc6ab71", "rot": 20, "bit": 13, "mask": 8}, + {"i": 189, "op": "rotr", "dst": 7, "src": 0, "src2": 2, "imm": "0x6f01dad9", "imm2": "0xe10d5b1b", "rot": 30, "bit": 8, "mask": 2}, + {"i": 190, "op": "mul", "dst": 0, "src": 2, "src2": 5, "imm": "0x7ed5bd96", "imm2": "0xee09fd34", "rot": 4, "bit": 23, "mask": 1}, + {"i": 191, "op": "xor", "dst": 0, "src": 2, "src2": 5, "imm": "0xd41b2121", "imm2": "0x92ba8072", "rot": 2, "bit": 31, "mask": 2}, + {"i": 192, "op": "rotr", "dst": 4, "src": 5, "src2": 7, "imm": "0x3885bcc5", "imm2": "0x2e273135", "rot": 30, "bit": 19, "mask": 2}, + {"i": 193, "op": "xor", "dst": 3, "src": 6, "src2": 5, "imm": "0x61790244", "imm2": "0x042ea62c", "rot": 20, "bit": 11, "mask": 4}, + {"i": 194, "op": "or", "dst": 1, "src": 5, "src2": 5, "imm": "0x30c01d95", "imm2": "0x7422c939", "rot": 18, "bit": 0, "mask": 4}, + {"i": 195, "op": "rotr", "dst": 2, "src": 3, "src2": 4, "imm": "0xebf72b21", "imm2": "0x0381141e", "rot": 19, "bit": 26, "mask": 8}, + {"i": 196, "op": "rotl", "dst": 6, "src": 5, "src2": 6, "imm": "0x563e9b37", "imm2": "0x14216046", "rot": 1, "bit": 5, "mask": 8}, + {"i": 197, "op": "rotr", "dst": 3, "src": 6, "src2": 2, "imm": "0x744271a6", "imm2": "0xa69d67c3", "rot": 2, "bit": 27, "mask": 2}, + {"i": 198, "op": "mad", "dst": 7, "src": 3, "src2": 2, "imm": "0xd0d949b1", "imm2": "0x9e319e1f", "rot": 7, "bit": 16, "mask": 4}, + {"i": 199, "op": "sub", "dst": 0, "src": 3, "src2": 2, "imm": "0x4ebd2a38", "imm2": "0x14035142", "rot": 21, "bit": 13, "mask": 4}, + {"i": 200, "op": "xor", "dst": 6, "src": 7, "src2": 5, "imm": "0x578ba981", "imm2": "0xd6a03003", "rot": 18, "bit": 3, "mask": 16}, + {"i": 201, "op": "add", "dst": 1, "src": 3, "src2": 0, "imm": "0x1c29c85b", "imm2": "0xda481a5d", "rot": 1, "bit": 15, "mask": 2}, + {"i": 202, "op": "mul", "dst": 5, "src": 3, "src2": 3, "imm": "0x45a84508", "imm2": "0xaa83380d", "rot": 7, "bit": 16, "mask": 16}, + {"i": 203, "op": "mulhi", "dst": 5, "src": 0, "src2": 0, "imm": "0x16bf1c9b", "imm2": "0x952ac588", "rot": 18, "bit": 13, "mask": 16}, + {"i": 204, "op": "xor", "dst": 5, "src": 3, "src2": 3, "imm": "0xeb5e0608", "imm2": "0x94cd4c1c", "rot": 3, "bit": 31, "mask": 4}, + {"i": 205, "op": "add", "dst": 6, "src": 0, "src2": 5, "imm": "0x7975e016", "imm2": "0xbff40052", "rot": 22, "bit": 15, "mask": 4}, + {"i": 206, "op": "xor", "dst": 7, "src": 1, "src2": 3, "imm": "0xf82a930b", "imm2": "0x2300022d", "rot": 4, "bit": 28, "mask": 8}, + {"i": 207, "op": "xor", "dst": 2, "src": 5, "src2": 2, "imm": "0x8e57d71e", "imm2": "0x5a9652a3", "rot": 30, "bit": 14, "mask": 2}, + {"i": 208, "op": "or", "dst": 4, "src": 2, "src2": 4, "imm": "0xe3548333", "imm2": "0x7a8d6113", "rot": 28, "bit": 22, "mask": 8}, + {"i": 209, "op": "mulhi", "dst": 4, "src": 0, "src2": 0, "imm": "0x902d34f1", "imm2": "0xc651677b", "rot": 17, "bit": 9, "mask": 16}, + {"i": 210, "op": "sub", "dst": 7, "src": 5, "src2": 4, "imm": "0x00293597", "imm2": "0x7fdd9002", "rot": 4, "bit": 2, "mask": 16}, + {"i": 211, "op": "mad", "dst": 7, "src": 4, "src2": 4, "imm": "0xfc26dc73", "imm2": "0x11960e13", "rot": 31, "bit": 30, "mask": 16}, + {"i": 212, "op": "xor", "dst": 0, "src": 3, "src2": 0, "imm": "0x5dbef2f0", "imm2": "0x78801172", "rot": 18, "bit": 16, "mask": 16}, + {"i": 213, "op": "add", "dst": 3, "src": 4, "src2": 5, "imm": "0x57f3f8ac", "imm2": "0xb1f05c54", "rot": 30, "bit": 24, "mask": 2}, + {"i": 214, "op": "rotl", "dst": 2, "src": 3, "src2": 6, "imm": "0x7477d17c", "imm2": "0xe223067d", "rot": 12, "bit": 28, "mask": 1}, + {"i": 215, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x251245fb", "imm2": "0x649b79b3", "rot": 1, "bit": 28, "mask": 8}, + {"i": 216, "op": "rotr", "dst": 1, "src": 4, "src2": 7, "imm": "0xbba7ad37", "imm2": "0x4a7fcefa", "rot": 28, "bit": 12, "mask": 16}, + {"i": 217, "op": "shfl", "dst": 5, "src": 0, "src2": 2, "imm": "0xaca47dfc", "imm2": "0x74c1ac11", "rot": 13, "bit": 7, "mask": 8}, + {"i": 218, "op": "or", "dst": 3, "src": 6, "src2": 6, "imm": "0x9c59393e", "imm2": "0x193e979d", "rot": 26, "bit": 26, "mask": 1}, + {"i": 219, "op": "shfl", "dst": 0, "src": 2, "src2": 6, "imm": "0x551c4394", "imm2": "0x8d686c70", "rot": 16, "bit": 22, "mask": 4}, + {"i": 220, "op": "shfl", "dst": 0, "src": 3, "src2": 2, "imm": "0x6cc31e81", "imm2": "0x67e006db", "rot": 15, "bit": 12, "mask": 1}, + {"i": 221, "op": "or", "dst": 4, "src": 7, "src2": 3, "imm": "0x6d970617", "imm2": "0xd58487b4", "rot": 4, "bit": 22, "mask": 4}, + {"i": 222, "op": "mul", "dst": 6, "src": 5, "src2": 5, "imm": "0x00191e10", "imm2": "0x61f09d5f", "rot": 1, "bit": 3, "mask": 1}, + {"i": 223, "op": "shfl", "dst": 4, "src": 3, "src2": 2, "imm": "0x4e0d090f", "imm2": "0xf3b64877", "rot": 13, "bit": 5, "mask": 8}, + {"i": 224, "op": "add", "dst": 4, "src": 2, "src2": 5, "imm": "0xa0235028", "imm2": "0x1023c67e", "rot": 14, "bit": 3, "mask": 8}, + {"i": 225, "op": "rotl", "dst": 6, "src": 7, "src2": 4, "imm": "0x47b8c775", "imm2": "0xe1d76134", "rot": 10, "bit": 6, "mask": 8}, + {"i": 226, "op": "xor", "dst": 2, "src": 0, "src2": 7, "imm": "0xd73c8bff", "imm2": "0x9f2c531a", "rot": 30, "bit": 29, "mask": 4}, + {"i": 227, "op": "mad", "dst": 1, "src": 0, "src2": 6, "imm": "0x2a892064", "imm2": "0x837a120c", "rot": 26, "bit": 26, "mask": 2}, + {"i": 228, "op": "add", "dst": 2, "src": 0, "src2": 7, "imm": "0xf2e2fbba", "imm2": "0x410d0f7a", "rot": 27, "bit": 17, "mask": 4}, + {"i": 229, "op": "rotr", "dst": 2, "src": 6, "src2": 2, "imm": "0x1abf791e", "imm2": "0x82b7cc9b", "rot": 1, "bit": 11, "mask": 16}, + {"i": 230, "op": "rotr", "dst": 5, "src": 6, "src2": 7, "imm": "0x0ad90e2c", "imm2": "0x5ba71a40", "rot": 21, "bit": 31, "mask": 2}, + {"i": 231, "op": "sub", "dst": 6, "src": 0, "src2": 6, "imm": "0x28ce8553", "imm2": "0x24e7d3e8", "rot": 7, "bit": 8, "mask": 2}, + {"i": 232, "op": "mad", "dst": 5, "src": 7, "src2": 7, "imm": "0x1b029ac3", "imm2": "0xcf50db02", "rot": 7, "bit": 17, "mask": 8}, + {"i": 233, "op": "xor", "dst": 3, "src": 2, "src2": 3, "imm": "0x0aeb3207", "imm2": "0x45b88abf", "rot": 11, "bit": 16, "mask": 1}, + {"i": 234, "op": "xor", "dst": 2, "src": 4, "src2": 4, "imm": "0x800373aa", "imm2": "0xdee8df17", "rot": 22, "bit": 0, "mask": 16}, + {"i": 235, "op": "rotl", "dst": 1, "src": 0, "src2": 2, "imm": "0x4b30059c", "imm2": "0x82bc4b9e", "rot": 4, "bit": 2, "mask": 16}, + {"i": 236, "op": "shfl", "dst": 3, "src": 4, "src2": 5, "imm": "0x86313a60", "imm2": "0xfd859dcd", "rot": 2, "bit": 30, "mask": 4}, + {"i": 237, "op": "xor", "dst": 7, "src": 6, "src2": 4, "imm": "0xad9a2efc", "imm2": "0xfe9f7249", "rot": 27, "bit": 23, "mask": 8}, + {"i": 238, "op": "mul", "dst": 4, "src": 3, "src2": 6, "imm": "0x14391a18", "imm2": "0x12bdc201", "rot": 26, "bit": 16, "mask": 1}, + {"i": 239, "op": "mulhi", "dst": 0, "src": 7, "src2": 0, "imm": "0x6bfc6a9c", "imm2": "0xcfb4e2f8", "rot": 25, "bit": 24, "mask": 1}, + {"i": 240, "op": "xor", "dst": 4, "src": 7, "src2": 3, "imm": "0x91f0a1cf", "imm2": "0xdf1179f9", "rot": 11, "bit": 11, "mask": 2}, + {"i": 241, "op": "add", "dst": 0, "src": 7, "src2": 6, "imm": "0xf495035b", "imm2": "0x90b2f1c9", "rot": 18, "bit": 1, "mask": 1}, + {"i": 242, "op": "add", "dst": 5, "src": 1, "src2": 1, "imm": "0xad76bafb", "imm2": "0x43fe7580", "rot": 13, "bit": 19, "mask": 1}, + {"i": 243, "op": "rotr", "dst": 1, "src": 0, "src2": 1, "imm": "0xa818b272", "imm2": "0x38345c95", "rot": 1, "bit": 26, "mask": 2}, + {"i": 244, "op": "shfl", "dst": 7, "src": 5, "src2": 5, "imm": "0xe6ae11d6", "imm2": "0xf89f284b", "rot": 4, "bit": 28, "mask": 2}, + {"i": 245, "op": "mul", "dst": 4, "src": 5, "src2": 3, "imm": "0xa922f9d8", "imm2": "0x1904fea1", "rot": 8, "bit": 18, "mask": 4}, + {"i": 246, "op": "add", "dst": 6, "src": 5, "src2": 4, "imm": "0x7b0d685d", "imm2": "0xa1eaac90", "rot": 5, "bit": 23, "mask": 1}, + {"i": 247, "op": "mul", "dst": 7, "src": 6, "src2": 3, "imm": "0xbfa01ae5", "imm2": "0x8b3fc07f", "rot": 30, "bit": 3, "mask": 16}, + {"i": 248, "op": "rotl", "dst": 6, "src": 2, "src2": 1, "imm": "0x16ddd145", "imm2": "0x6401a397", "rot": 2, "bit": 23, "mask": 16}, + {"i": 249, "op": "sub", "dst": 2, "src": 6, "src2": 0, "imm": "0x48bbedc8", "imm2": "0xa7eff201", "rot": 22, "bit": 17, "mask": 1}, + {"i": 250, "op": "or", "dst": 4, "src": 2, "src2": 1, "imm": "0x4d28417a", "imm2": "0x597ca0e1", "rot": 20, "bit": 22, "mask": 2}, + {"i": 251, "op": "add", "dst": 2, "src": 1, "src2": 3, "imm": "0x14c6d26a", "imm2": "0xca0faca7", "rot": 3, "bit": 26, "mask": 1}, + {"i": 252, "op": "xor", "dst": 5, "src": 6, "src2": 1, "imm": "0x031babc3", "imm2": "0x24f72c20", "rot": 20, "bit": 3, "mask": 1}, + {"i": 253, "op": "or", "dst": 4, "src": 6, "src2": 3, "imm": "0x8cc4ae2b", "imm2": "0x0d1b6d4b", "rot": 27, "bit": 8, "mask": 8}, + {"i": 254, "op": "add", "dst": 2, "src": 6, "src2": 6, "imm": "0x5c6e41f5", "imm2": "0xf887f9ea", "rot": 7, "bit": 14, "mask": 16}, + {"i": 255, "op": "add", "dst": 7, "src": 6, "src2": 5, "imm": "0x9389bb50", "imm2": "0x1eeb32d4", "rot": 6, "bit": 19, "mask": 2} ]}, "instructions": [ - {"i": 0, "op": "add", "dst": 4, "src": 5, "src2": 7, "imm": "0xea86e152", "imm2": "0x5810667a", "rot": 27, "bit": 13, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 1, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xbaab6229", "imm2": "0xed861989", "rot": 26, "bit": 22, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 2, "op": "shfl", "dst": 3, "src": 6, "src2": 2, "imm": "0x5b623116", "imm2": "0xff12e5b2", "rot": 12, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 3, "op": "sub", "dst": 4, "src": 1, "src2": 1, "imm": "0xe99741c7", "imm2": "0xf5fa5009", "rot": 1, "bit": 21, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 4, "op": "mad", "dst": 2, "src": 0, "src2": 4, "imm": "0x673c2157", "imm2": "0xee02465f", "rot": 20, "bit": 22, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 5, "op": "rotl", "dst": 4, "src": 7, "src2": 7, "imm": "0x946f7818", "imm2": "0x45d3399e", "rot": 9, "bit": 2, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 6, "op": "rotr", "dst": 0, "src": 2, "src2": 4, "imm": "0x5f6a0ed2", "imm2": "0x7043a636", "rot": 19, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 7, "op": "load", "dst": 6, "src": 7, "src2": 1, "imm": "0x5c61dcf7", "imm2": "0x7466aa40", "rot": 19, "bit": 9, "mask": 2, "width": 1, "win": 2, "off": 1}, - {"i": 8, "op": "load", "dst": 1, "src": 4, "src2": 5, "imm": "0x85668475", "imm2": "0xdb8cc483", "rot": 29, "bit": 7, "mask": 4, "width": 1, "win": 1, "off": 1}, - {"i": 9, "op": "load", "dst": 1, "src": 2, "src2": 4, "imm": "0x4454980f", "imm2": "0xebd31581", "rot": 10, "bit": 28, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 10, "op": "load", "dst": 7, "src": 0, "src2": 2, "imm": "0xe075297c", "imm2": "0x5779c44c", "rot": 10, "bit": 22, "mask": 2, "width": 1, "win": 1, "off": 1}, - {"i": 11, "op": "load", "dst": 7, "src": 1, "src2": 6, "imm": "0x65aa4311", "imm2": "0x4fe48ea9", "rot": 15, "bit": 9, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 12, "op": "mul", "dst": 5, "src": 4, "src2": 2, "imm": "0x1383d3ad", "imm2": "0xf3094b29", "rot": 8, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 13, "op": "load", "dst": 7, "src": 6, "src2": 2, "imm": "0xed8a496f", "imm2": "0x3072c3c6", "rot": 28, "bit": 19, "mask": 8, "width": 1, "win": 1, "off": 1}, - {"i": 14, "op": "shfl", "dst": 6, "src": 5, "src2": 0, "imm": "0x8b965b57", "imm2": "0xcfeca6c1", "rot": 12, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 15, "op": "shfl", "dst": 3, "src": 5, "src2": 3, "imm": "0x877c7586", "imm2": "0xa9cb2a03", "rot": 2, "bit": 29, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 16, "op": "or", "dst": 2, "src": 7, "src2": 3, "imm": "0xb740221a", "imm2": "0x89d38d6d", "rot": 6, "bit": 31, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 17, "op": "rotr", "dst": 0, "src": 6, "src2": 1, "imm": "0x26f3ad8a", "imm2": "0x27256f15", "rot": 18, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 18, "op": "add", "dst": 7, "src": 5, "src2": 7, "imm": "0xf66e7017", "imm2": "0xb9e3577e", "rot": 9, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 19, "op": "rotl", "dst": 7, "src": 0, "src2": 5, "imm": "0x849ae6ee", "imm2": "0x02b358f9", "rot": 24, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 20, "op": "add", "dst": 6, "src": 7, "src2": 6, "imm": "0x52334d12", "imm2": "0x8c9f0ef8", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 21, "op": "or", "dst": 2, "src": 6, "src2": 5, "imm": "0xb1871e63", "imm2": "0xb2e40191", "rot": 5, "bit": 13, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 22, "op": "mad", "dst": 6, "src": 5, "src2": 4, "imm": "0x97df29e4", "imm2": "0xe60fea84", "rot": 11, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 23, "op": "or", "dst": 1, "src": 0, "src2": 3, "imm": "0x8f30d21d", "imm2": "0x2df685a0", "rot": 31, "bit": 0, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 24, "op": "xor", "dst": 6, "src": 1, "src2": 2, "imm": "0xd2c4025f", "imm2": "0x5269eb4d", "rot": 31, "bit": 21, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 25, "op": "add", "dst": 2, "src": 6, "src2": 5, "imm": "0x659fc3d3", "imm2": "0x9cec0e12", "rot": 6, "bit": 17, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 26, "op": "rotr", "dst": 7, "src": 0, "src2": 1, "imm": "0xd89ef484", "imm2": "0x20be3846", "rot": 12, "bit": 9, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 27, "op": "mad", "dst": 4, "src": 5, "src2": 7, "imm": "0xb48420ae", "imm2": "0x3d1f2485", "rot": 14, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 28, "op": "mad", "dst": 3, "src": 2, "src2": 4, "imm": "0xc5c46d76", "imm2": "0x700044b5", "rot": 22, "bit": 10, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 29, "op": "load", "dst": 1, "src": 4, "src2": 3, "imm": "0x0fbaf177", "imm2": "0xfff4f2ed", "rot": 20, "bit": 31, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 30, "op": "load", "dst": 2, "src": 3, "src2": 0, "imm": "0xe90eb2e5", "imm2": "0xb0f9eb79", "rot": 27, "bit": 14, "mask": 4, "width": 1, "win": 2, "off": 2}, - {"i": 31, "op": "load", "dst": 1, "src": 5, "src2": 2, "imm": "0x97ba3fc3", "imm2": "0x7894e657", "rot": 3, "bit": 30, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 32, "op": "add", "dst": 7, "src": 2, "src2": 7, "imm": "0x070888a8", "imm2": "0xe403240e", "rot": 2, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 33, "op": "add", "dst": 2, "src": 0, "src2": 5, "imm": "0xf2e46d55", "imm2": "0x29701828", "rot": 31, "bit": 28, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 34, "op": "add", "dst": 2, "src": 3, "src2": 0, "imm": "0x58f75b87", "imm2": "0x343b7aee", "rot": 12, "bit": 14, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 35, "op": "mulhi", "dst": 2, "src": 5, "src2": 6, "imm": "0x5892a9e6", "imm2": "0xc9824c94", "rot": 19, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 36, "op": "xor", "dst": 4, "src": 2, "src2": 3, "imm": "0x7b5b5474", "imm2": "0x45cfc5dd", "rot": 17, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 37, "op": "mul", "dst": 6, "src": 5, "src2": 7, "imm": "0xccf564a5", "imm2": "0x873ad101", "rot": 7, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 38, "op": "xor", "dst": 7, "src": 0, "src2": 6, "imm": "0xcac8f06d", "imm2": "0x6b97c683", "rot": 18, "bit": 28, "mask": 2, "width": 1, "win": 0, "off": 0}, - {"i": 39, "op": "add", "dst": 7, "src": 2, "src2": 4, "imm": "0xb8180e9d", "imm2": "0x32bbd117", "rot": 23, "bit": 19, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 40, "op": "rotr", "dst": 2, "src": 3, "src2": 0, "imm": "0x2d6070bc", "imm2": "0x68ff101e", "rot": 13, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 41, "op": "sub", "dst": 7, "src": 0, "src2": 2, "imm": "0x0daf96ea", "imm2": "0x36f37be1", "rot": 5, "bit": 0, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 42, "op": "add", "dst": 4, "src": 3, "src2": 6, "imm": "0x6ced15b7", "imm2": "0x6df7aed4", "rot": 19, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 43, "op": "shfl", "dst": 7, "src": 3, "src2": 5, "imm": "0x8ace05f3", "imm2": "0xd378ec12", "rot": 23, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 44, "op": "load", "dst": 0, "src": 7, "src2": 4, "imm": "0xb0607786", "imm2": "0xc4acabbc", "rot": 13, "bit": 7, "mask": 16, "width": 1, "win": 1, "off": 1}, - {"i": 45, "op": "add", "dst": 1, "src": 6, "src2": 5, "imm": "0xe09f54e9", "imm2": "0x83e825bf", "rot": 23, "bit": 14, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 46, "op": "load", "dst": 3, "src": 1, "src2": 0, "imm": "0x63cc1e4e", "imm2": "0xa1be8118", "rot": 12, "bit": 6, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 47, "op": "load", "dst": 6, "src": 3, "src2": 7, "imm": "0x353f1d79", "imm2": "0x3b2e7456", "rot": 18, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 48, "op": "mulhi", "dst": 4, "src": 2, "src2": 7, "imm": "0x00d8a3cd", "imm2": "0x231866d2", "rot": 21, "bit": 20, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 49, "op": "add", "dst": 5, "src": 0, "src2": 2, "imm": "0xa8bae6df", "imm2": "0xf572bdb9", "rot": 14, "bit": 7, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 50, "op": "shfl", "dst": 0, "src": 7, "src2": 7, "imm": "0x81ef22e1", "imm2": "0x74438fc5", "rot": 28, "bit": 18, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 51, "op": "add", "dst": 6, "src": 0, "src2": 6, "imm": "0x383b9260", "imm2": "0x11e17c61", "rot": 12, "bit": 19, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 52, "op": "load", "dst": 5, "src": 2, "src2": 2, "imm": "0xfb84f451", "imm2": "0x11cd863e", "rot": 21, "bit": 20, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 53, "op": "rotl", "dst": 6, "src": 5, "src2": 4, "imm": "0xb1a7db6b", "imm2": "0x76686b9b", "rot": 12, "bit": 4, "mask": 16, "width": 1, "win": 0, "off": 0}, - {"i": 54, "op": "rotl", "dst": 3, "src": 6, "src2": 3, "imm": "0x6f981f52", "imm2": "0xd99aeba2", "rot": 12, "bit": 27, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 55, "op": "add", "dst": 2, "src": 1, "src2": 2, "imm": "0xac6be8e3", "imm2": "0x18d67dbb", "rot": 26, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 56, "op": "load", "dst": 1, "src": 4, "src2": 0, "imm": "0x7e7f6a00", "imm2": "0x6f0747da", "rot": 25, "bit": 28, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 57, "op": "add", "dst": 5, "src": 0, "src2": 4, "imm": "0xf03673fe", "imm2": "0xa75cd60d", "rot": 16, "bit": 12, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 58, "op": "load", "dst": 5, "src": 0, "src2": 2, "imm": "0x227f94a6", "imm2": "0x0e8344f9", "rot": 20, "bit": 10, "mask": 2, "width": 1, "win": 2, "off": 0}, - {"i": 59, "op": "add", "dst": 1, "src": 4, "src2": 3, "imm": "0xdecd4794", "imm2": "0x8dfb96bb", "rot": 21, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, - {"i": 60, "op": "mulhi", "dst": 3, "src": 2, "src2": 2, "imm": "0x0dd268e0", "imm2": "0x53034ca9", "rot": 1, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 61, "op": "or", "dst": 6, "src": 4, "src2": 7, "imm": "0x3a45a321", "imm2": "0x9bc59a5f", "rot": 25, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, - {"i": 62, "op": "shfl", "dst": 5, "src": 4, "src2": 2, "imm": "0x8f229cc1", "imm2": "0xcaac64a2", "rot": 17, "bit": 13, "mask": 8, "width": 1, "win": 0, "off": 0}, - {"i": 63, "op": "load", "dst": 3, "src": 6, "src2": 6, "imm": "0xb2574178", "imm2": "0xcbcc798d", "rot": 28, "bit": 0, "mask": 16, "width": 1, "win": 1, "off": 1} + {"i": 0, "op": "rotl", "dst": 7, "src": 2, "src2": 3, "imm": "0xb74ea98c", "imm2": "0x8b3d47ad", "rot": 4, "bit": 26, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 1, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xfe289106", "imm2": "0x3b97ce9c", "rot": 20, "bit": 2, "mask": 8, "width": 1, "win": 2, "off": 3}, + {"i": 2, "op": "mad", "dst": 7, "src": 1, "src2": 2, "imm": "0x489003a1", "imm2": "0xbd2e8079", "rot": 22, "bit": 5, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 3, "op": "mulhi", "dst": 3, "src": 0, "src2": 3, "imm": "0x0da6b978", "imm2": "0x7179d04b", "rot": 14, "bit": 18, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 4, "op": "load", "dst": 0, "src": 4, "src2": 3, "imm": "0x81ea96d2", "imm2": "0x4bec214d", "rot": 8, "bit": 24, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 5, "op": "mad", "dst": 1, "src": 7, "src2": 5, "imm": "0x4e1e08da", "imm2": "0x50f04290", "rot": 24, "bit": 18, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 6, "op": "load", "dst": 6, "src": 0, "src2": 4, "imm": "0xfc5a8e96", "imm2": "0x1593265a", "rot": 4, "bit": 13, "mask": 1, "width": 1, "win": 2, "off": 1}, + {"i": 7, "op": "mul", "dst": 1, "src": 0, "src2": 2, "imm": "0xfd4c1c2d", "imm2": "0x64c58a5a", "rot": 8, "bit": 30, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 8, "op": "mulhi", "dst": 3, "src": 6, "src2": 5, "imm": "0x544a6b11", "imm2": "0x7031aec6", "rot": 11, "bit": 27, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 9, "op": "mul", "dst": 1, "src": 5, "src2": 6, "imm": "0xbc0e991a", "imm2": "0x24951f6f", "rot": 9, "bit": 20, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 10, "op": "load", "dst": 6, "src": 7, "src2": 6, "imm": "0xd1d3b4dc", "imm2": "0x8abc511a", "rot": 24, "bit": 10, "mask": 2, "width": 1, "win": 1, "off": 1}, + {"i": 11, "op": "rotl", "dst": 2, "src": 7, "src2": 4, "imm": "0xefd8d9fe", "imm2": "0xf313ac11", "rot": 29, "bit": 26, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 12, "op": "load", "dst": 1, "src": 2, "src2": 6, "imm": "0x1ff2abc5", "imm2": "0x29973085", "rot": 12, "bit": 11, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 13, "op": "add", "dst": 6, "src": 2, "src2": 3, "imm": "0x2adfcf68", "imm2": "0x3dfa4fd3", "rot": 24, "bit": 16, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 14, "op": "mad", "dst": 7, "src": 6, "src2": 7, "imm": "0xc74e15bb", "imm2": "0x1998b9e9", "rot": 29, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 15, "op": "xor", "dst": 3, "src": 1, "src2": 4, "imm": "0xc1fa1c2b", "imm2": "0x19cd611e", "rot": 28, "bit": 24, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 16, "op": "rotr", "dst": 4, "src": 1, "src2": 1, "imm": "0x3d51348b", "imm2": "0xca99cc47", "rot": 25, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 17, "op": "add", "dst": 0, "src": 6, "src2": 7, "imm": "0x80dfe651", "imm2": "0x07ec281f", "rot": 19, "bit": 27, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 18, "op": "shfl", "dst": 1, "src": 6, "src2": 6, "imm": "0x57e8ff73", "imm2": "0xf30de8b1", "rot": 8, "bit": 15, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 19, "op": "sub", "dst": 2, "src": 5, "src2": 1, "imm": "0x226c75ff", "imm2": "0x2b5113d6", "rot": 10, "bit": 8, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 20, "op": "load", "dst": 6, "src": 1, "src2": 0, "imm": "0xeb29619b", "imm2": "0x77e96401", "rot": 6, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 21, "op": "mad", "dst": 0, "src": 2, "src2": 1, "imm": "0x0a7cd83e", "imm2": "0xd621a06a", "rot": 14, "bit": 18, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 22, "op": "sub", "dst": 3, "src": 1, "src2": 3, "imm": "0x918d7d68", "imm2": "0x4b274765", "rot": 13, "bit": 8, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 23, "op": "mad", "dst": 4, "src": 6, "src2": 6, "imm": "0x09f6ad80", "imm2": "0x8ee100af", "rot": 19, "bit": 13, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 24, "op": "rotr", "dst": 1, "src": 0, "src2": 6, "imm": "0x7e2a526e", "imm2": "0xeee2ff2b", "rot": 9, "bit": 29, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 25, "op": "or", "dst": 6, "src": 2, "src2": 6, "imm": "0x422b8abe", "imm2": "0xd0fb548e", "rot": 9, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 26, "op": "mulhi", "dst": 6, "src": 3, "src2": 1, "imm": "0x6fa482a1", "imm2": "0x51d399ff", "rot": 19, "bit": 24, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 27, "op": "load", "dst": 4, "src": 7, "src2": 4, "imm": "0xd995cc5a", "imm2": "0xd83339c3", "rot": 11, "bit": 7, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 28, "op": "mad", "dst": 4, "src": 3, "src2": 5, "imm": "0xebaeffff", "imm2": "0xf1b43544", "rot": 9, "bit": 19, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 29, "op": "sub", "dst": 6, "src": 5, "src2": 3, "imm": "0xdbb84507", "imm2": "0xefef3aa1", "rot": 2, "bit": 17, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 30, "op": "load", "dst": 6, "src": 2, "src2": 2, "imm": "0x8410ad34", "imm2": "0x97753c2a", "rot": 2, "bit": 11, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 31, "op": "shfl", "dst": 2, "src": 3, "src2": 7, "imm": "0xb565fe25", "imm2": "0xc3cf133b", "rot": 27, "bit": 9, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 32, "op": "sub", "dst": 2, "src": 1, "src2": 4, "imm": "0xa3972163", "imm2": "0x7601161c", "rot": 31, "bit": 16, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 33, "op": "xor", "dst": 4, "src": 1, "src2": 3, "imm": "0xb0e6bf16", "imm2": "0x47bab3e2", "rot": 5, "bit": 4, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 34, "op": "shfl", "dst": 6, "src": 3, "src2": 7, "imm": "0xc5d311aa", "imm2": "0xc3d65f5f", "rot": 10, "bit": 11, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 35, "op": "load", "dst": 7, "src": 4, "src2": 5, "imm": "0x78d74049", "imm2": "0x21718728", "rot": 22, "bit": 20, "mask": 2, "width": 1, "win": 2, "off": 3}, + {"i": 36, "op": "add", "dst": 5, "src": 6, "src2": 6, "imm": "0x165f4767", "imm2": "0x8a978b3c", "rot": 25, "bit": 11, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 37, "op": "mul", "dst": 5, "src": 2, "src2": 1, "imm": "0xeca4eb38", "imm2": "0x44f1ccf1", "rot": 2, "bit": 14, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 38, "op": "mad", "dst": 7, "src": 1, "src2": 4, "imm": "0x21766790", "imm2": "0xdfdd8f07", "rot": 4, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 39, "op": "xor", "dst": 5, "src": 7, "src2": 4, "imm": "0x636c35f9", "imm2": "0x08b26d02", "rot": 24, "bit": 21, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 40, "op": "load", "dst": 1, "src": 7, "src2": 4, "imm": "0xdaf67234", "imm2": "0x943f63f1", "rot": 7, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 41, "op": "load", "dst": 2, "src": 0, "src2": 5, "imm": "0xb269db8f", "imm2": "0x6d74e05c", "rot": 31, "bit": 13, "mask": 2, "width": 1, "win": 2, "off": 1}, + {"i": 42, "op": "xor", "dst": 5, "src": 2, "src2": 5, "imm": "0x21eb091a", "imm2": "0x668a424f", "rot": 27, "bit": 27, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 43, "op": "load", "dst": 1, "src": 3, "src2": 4, "imm": "0x367d0c30", "imm2": "0x9362cac7", "rot": 8, "bit": 16, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 44, "op": "add", "dst": 6, "src": 4, "src2": 7, "imm": "0x7950576c", "imm2": "0xd11e2feb", "rot": 11, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 45, "op": "load", "dst": 6, "src": 1, "src2": 1, "imm": "0x736a8282", "imm2": "0xe6d0e698", "rot": 30, "bit": 8, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 46, "op": "rotr", "dst": 1, "src": 3, "src2": 5, "imm": "0x2768820e", "imm2": "0x8b122f17", "rot": 6, "bit": 7, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 47, "op": "mulhi", "dst": 6, "src": 1, "src2": 2, "imm": "0x82d0601d", "imm2": "0xeb7084f0", "rot": 8, "bit": 29, "mask": 8, "width": 1, "win": 0, "off": 0}, + {"i": 48, "op": "shfl", "dst": 3, "src": 7, "src2": 7, "imm": "0xfc429de4", "imm2": "0x6dab6aa6", "rot": 25, "bit": 10, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 49, "op": "rotr", "dst": 4, "src": 5, "src2": 6, "imm": "0x060459f7", "imm2": "0x1bc3b285", "rot": 14, "bit": 3, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 50, "op": "mul", "dst": 0, "src": 7, "src2": 0, "imm": "0xd646866a", "imm2": "0xea39a9a7", "rot": 25, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 51, "op": "mad", "dst": 5, "src": 6, "src2": 5, "imm": "0xa9534e41", "imm2": "0x91716ae6", "rot": 11, "bit": 23, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 52, "op": "load", "dst": 3, "src": 1, "src2": 5, "imm": "0xacc543ad", "imm2": "0xceca4a40", "rot": 25, "bit": 26, "mask": 8, "width": 1, "win": 1, "off": 1}, + {"i": 53, "op": "load", "dst": 5, "src": 3, "src2": 5, "imm": "0xe4f778df", "imm2": "0xf2fd326e", "rot": 1, "bit": 12, "mask": 16, "width": 1, "win": 0, "off": 0}, + {"i": 54, "op": "load", "dst": 6, "src": 5, "src2": 7, "imm": "0x2e6979f2", "imm2": "0x9074a681", "rot": 28, "bit": 21, "mask": 16, "width": 1, "win": 2, "off": 1}, + {"i": 55, "op": "rotl", "dst": 5, "src": 7, "src2": 2, "imm": "0xa03d9a31", "imm2": "0x1edad893", "rot": 18, "bit": 16, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 56, "op": "shfl", "dst": 4, "src": 3, "src2": 4, "imm": "0xf576d4f5", "imm2": "0xc49f73a7", "rot": 10, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 57, "op": "xor", "dst": 5, "src": 0, "src2": 6, "imm": "0x3bb49aa0", "imm2": "0xa4d97985", "rot": 17, "bit": 14, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 58, "op": "rotl", "dst": 1, "src": 6, "src2": 2, "imm": "0xa7cd939b", "imm2": "0x5e1de7ae", "rot": 28, "bit": 24, "mask": 2, "width": 1, "win": 0, "off": 0}, + {"i": 59, "op": "sub", "dst": 0, "src": 7, "src2": 7, "imm": "0xf4b46978", "imm2": "0x8858145f", "rot": 10, "bit": 18, "mask": 1, "width": 1, "win": 0, "off": 0}, + {"i": 60, "op": "rotr", "dst": 1, "src": 0, "src2": 7, "imm": "0xcdbd8508", "imm2": "0xe8da863a", "rot": 14, "bit": 2, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 61, "op": "mul", "dst": 1, "src": 0, "src2": 4, "imm": "0xbfc97de8", "imm2": "0xef9005bd", "rot": 14, "bit": 7, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 62, "op": "xor", "dst": 6, "src": 0, "src2": 7, "imm": "0xb2f442e8", "imm2": "0x4054a66a", "rot": 20, "bit": 28, "mask": 4, "width": 1, "win": 0, "off": 0}, + {"i": 63, "op": "mul", "dst": 5, "src": 4, "src2": 4, "imm": "0x8e93815d", "imm2": "0xbaa794a5", "rot": 24, "bit": 8, "mask": 16, "width": 1, "win": 0, "off": 0} ] } diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/program.metal b/proto-cuda/packs-ca3-v4/v4-era-5/program.metal index 84ec07eeb..c652f8fb3 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/program.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-5/program.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -38,328 +38,328 @@ kernel void igneum_hash(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/program_bound.metal b/proto-cuda/packs-ca3-v4/v4-era-5/program_bound.metal index 56ff04a65..f5818d7e9 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/program_bound.metal +++ b/proto-cuda/packs-ca3-v4/v4-era-5/program_bound.metal @@ -2,7 +2,7 @@ using namespace metal; #define MASK 0x0fffffffu -constant uint SEEDW[8] = { 0x667d0fbdu, 0x7b8e5963u, 0x31c67e5eu, 0x4529ddc6u, 0xef19d6d8u, 0xaccf6211u, 0xda0aed32u, 0xabc6df31u }; +constant uint SEEDW[8] = { 0x29e76ddbu, 0xdb25cf2au, 0x596c281eu, 0xb8284534u, 0x50556ce6u, 0x336eb6d5u, 0x01933285u, 0x39690d9fu }; inline uint splitmix32(uint x) { x ^= x >> 16; x *= 0x7feb352du; @@ -40,328 +40,328 @@ kernel void igneum_hash_bound(device const uint* dataset [[buffer(0)]], for (uint it = 0u; it < 8u; ++it) { uint sel = r0; - r4 = r4 + r5 + select(0xea86e152u, 0x5810667au, ((sel >> 13u) & 1u) != 0u); // 0 - r7 = r7 ^ r0; // 1 - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)1); // 2 - r4 = r4 - r1; // 3 - r2 = r0 * r4 + r2; // 4 - r4 = rotl_imm(r4, 9u); // 5 - r0 = rotr_var(r0, r2); // 6 - r6 = r6 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 7 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 8 - r1 = r1 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 9 - r7 = r7 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 - r7 = r7 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 11 - r5 = r5 * r4; // 12 - r7 = r7 ^ dataset[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 13 - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // 14 - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)1); // 15 - r2 = r2 | r7; // 16 - r0 = rotr_var(r0, r6); // 17 - r7 = r7 + r5 + select(0xf66e7017u, 0xb9e3577eu, ((sel >> 12u) & 1u) != 0u); // 18 - r7 = rotl_imm(r7, 24u); // 19 - r6 = r6 + r7 + select(0x52334d12u, 0x8c9f0ef8u, ((sel >> 23u) & 1u) != 0u); // 20 - r2 = r2 | r6; // 21 - r6 = r5 * r4 + r6; // 22 - r1 = r1 | r0; // 23 - r6 = r6 ^ r1; // 24 - r2 = r2 + r6 + select(0x659fc3d3u, 0x9cec0e12u, ((sel >> 17u) & 1u) != 0u); // 25 - r7 = rotr_var(r7, r0); // 26 - r4 = r5 * r7 + r4; // 27 - r3 = r2 * r4 + r3; // 28 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 29 - r2 = r2 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x08000000u) & MASK]; // 30 - r1 = r1 ^ dataset[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 31 - r7 = r7 + r2 + select(0x070888a8u, 0xe403240eu, ((sel >> 16u) & 1u) != 0u); // 32 - r2 = r2 + r0 + select(0xf2e46d55u, 0x29701828u, ((sel >> 28u) & 1u) != 0u); // 33 - r2 = r2 + r3 + select(0x58f75b87u, 0x343b7aeeu, ((sel >> 14u) & 1u) != 0u); // 34 - r2 = mulhi(r2, r5); // 35 - r4 = r4 ^ r2; // 36 - r6 = r6 * r5; // 37 - r7 = r7 ^ r0; // 38 - r7 = r7 + r2 + select(0xb8180e9du, 0x32bbd117u, ((sel >> 19u) & 1u) != 0u); // 39 - r2 = rotr_var(r2, r3); // 40 - r7 = r7 - r0; // 41 - r4 = r4 + r3 + select(0x6ced15b7u, 0x6df7aed4u, ((sel >> 4u) & 1u) != 0u); // 42 - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // 43 - r0 = r0 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 44 - r1 = r1 + r6 + select(0xe09f54e9u, 0x83e825bfu, ((sel >> 14u) & 1u) != 0u); // 45 - r3 = r3 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 46 - r6 = r6 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 47 - r4 = mulhi(r4, r2); // 48 - r5 = r5 + r0 + select(0xa8bae6dfu, 0xf572bdb9u, ((sel >> 7u) & 1u) != 0u); // 49 - r0 = r0 ^ simd_shuffle_xor(r7, (ushort)4); // 50 - r6 = r6 + r0 + select(0x383b9260u, 0x11e17c61u, ((sel >> 19u) & 1u) != 0u); // 51 - r5 = r5 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 52 - r6 = rotl_imm(r6, 12u); // 53 - r3 = rotl_imm(r3, 12u); // 54 - r2 = r2 + r1 + select(0xac6be8e3u, 0x18d67dbbu, ((sel >> 10u) & 1u) != 0u); // 55 - r1 = r1 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 56 - r5 = r5 + r0 + select(0xf03673feu, 0xa75cd60du, ((sel >> 12u) & 1u) != 0u); // 57 - r5 = r5 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x00000000u) & MASK]; // 58 - r1 = r1 + r4 + select(0xdecd4794u, 0x8dfb96bbu, ((sel >> 7u) & 1u) != 0u); // 59 - r3 = mulhi(r3, r2); // 60 - r6 = r6 | r4; // 61 - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)8); // 62 - r3 = r3 ^ dataset[((rotl_imm(r6 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 63 + r7 = rotl_imm(r7, 4u); // 0 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 1 + r7 = r1 * r2 + r7; // 2 + r3 = mulhi(r3, r0); // 3 + r0 = r0 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 4 + r1 = r7 * r5 + r1; // 5 + r6 = r6 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 6 + r1 = r1 * r0; // 7 + r3 = mulhi(r3, r6); // 8 + r1 = r1 * r5; // 9 + r6 = r6 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 10 + r2 = rotl_imm(r2, 29u); // 11 + r1 = r1 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 12 + r6 = r6 + r2 + select(0x2adfcf68u, 0x3dfa4fd3u, ((sel >> 16u) & 1u) != 0u); // 13 + r7 = r6 * r7 + r7; // 14 + r3 = r3 ^ r1; // 15 + r4 = rotr_var(r4, r1); // 16 + r0 = r0 + r6 + select(0x80dfe651u, 0x07ec281fu, ((sel >> 27u) & 1u) != 0u); // 17 + r1 = r1 ^ simd_shuffle_xor(r6, (ushort)1); // 18 + r2 = r2 - r5; // 19 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 20 + r0 = r2 * r1 + r0; // 21 + r3 = r3 - r1; // 22 + r4 = r6 * r6 + r4; // 23 + r1 = rotr_var(r1, r0); // 24 + r6 = r6 | r2; // 25 + r6 = mulhi(r6, r3); // 26 + r4 = r4 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 27 + r4 = r3 * r5 + r4; // 28 + r6 = r6 - r5; // 29 + r6 = r6 ^ dataset[((rotl_imm(r2 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 30 + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)2); // 31 + r2 = r2 - r1; // 32 + r4 = r4 ^ r1; // 33 + r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // 34 + r7 = r7 ^ dataset[((rotl_imm(r4 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x0c000000u) & MASK]; // 35 + r5 = r5 + r6 + select(0x165f4767u, 0x8a978b3cu, ((sel >> 11u) & 1u) != 0u); // 36 + r5 = r5 * r2; // 37 + r7 = r1 * r4 + r7; // 38 + r5 = r5 ^ r7; // 39 + r1 = r1 ^ dataset[((rotl_imm(r7 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 40 + r2 = r2 ^ dataset[((rotl_imm(r0 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 41 + r5 = r5 ^ r2; // 42 + r1 = r1 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 43 + r6 = r6 + r4 + select(0x7950576cu, 0xd11e2febu, ((sel >> 18u) & 1u) != 0u); // 44 + r6 = r6 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 45 + r1 = rotr_var(r1, r3); // 46 + r6 = mulhi(r6, r1); // 47 + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)4); // 48 + r4 = rotr_var(r4, r5); // 49 + r0 = r0 * r7; // 50 + r5 = r6 * r5 + r5; // 51 + r3 = r3 ^ dataset[((rotl_imm(r1 * 0x03ac37adu, 22u) & 0x07ffffffu) | 0x08000000u) & MASK]; // 52 + r5 = r5 ^ dataset[((rotl_imm(r3 * 0x03ac37adu, 22u) & 0x0fffffffu) | 0x00000000u) & MASK]; // 53 + r6 = r6 ^ dataset[((rotl_imm(r5 * 0x03ac37adu, 22u) & 0x03ffffffu) | 0x04000000u) & MASK]; // 54 + r5 = rotl_imm(r5, 18u); // 55 + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)2); // 56 + r5 = r5 ^ r0; // 57 + r1 = rotl_imm(r1, 28u); // 58 + r0 = r0 - r7; // 59 + r1 = rotr_var(r1, r0); // 60 + r1 = r1 * r0; // 61 + r6 = r6 ^ r0; // 62 + r5 = r5 * r4; // 63 // latency-shadow block (Counter ASIC 3.0 item 8): 256 ALU instructions x 27 passes after instruction 63, no load for (uint sh = 0u; sh < 27u; ++sh) { - r7 = r7 * r3; // s0 mul - r7 = r7 + r4 + select(0xecb44e9cu, 0x06575fd2u, ((sel >> 16u) & 1u) != 0u); // s1 add - r5 = mulhi(r5, r0); // s2 mulhi - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)2); // s3 shfl - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)1); // s4 shfl - r4 = r4 ^ simd_shuffle_xor(r5, (ushort)8); // s5 shfl - r6 = r6 - r1; // s6 sub - r3 = r3 | r4; // s7 or - r0 = r4 * r7 + r0; // s8 mad - r3 = r3 - r4; // s9 sub - r6 = r6 * r3; // s10 mul - r5 = mulhi(r5, r0); // s11 mulhi - r0 = r4 * r5 + r0; // s12 mad - r3 = r3 + r7 + select(0x78295146u, 0x41da8352u, ((sel >> 29u) & 1u) != 0u); // s13 add - r7 = r7 ^ r2; // s14 xor - r1 = r1 + r4 + select(0x1126a483u, 0x491bea93u, ((sel >> 12u) & 1u) != 0u); // s15 add - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)8); // s16 shfl - r5 = rotr_var(r5, r0); // s17 rotr - r2 = r2 - r1; // s18 sub - r3 = mulhi(r3, r2); // s19 mulhi - r0 = r0 ^ r4; // s20 xor - r2 = r2 + r3 + select(0x7289ac7cu, 0xd0df3d0au, ((sel >> 31u) & 1u) != 0u); // s21 add - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s22 shfl - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)8); // s23 shfl - r1 = r1 - r2; // s24 sub - r7 = r3 * r1 + r7; // s25 mad - r2 = r2 ^ r6; // s26 xor - r4 = mulhi(r4, r2); // s27 mulhi - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)2); // s28 shfl - r2 = r2 - r5; // s29 sub - r7 = mulhi(r7, r6); // s30 mulhi - r2 = rotr_var(r2, r7); // s31 rotr - r6 = rotl_imm(r6, 26u); // s32 rotl - r0 = r0 * r7; // s33 mul - r7 = r7 * r4; // s34 mul - r6 = r0 * r1 + r6; // s35 mad - r4 = r4 + r2 + select(0xfe2b1c7du, 0xb3e87396u, ((sel >> 4u) & 1u) != 0u); // s36 add - r7 = rotr_var(r7, r4); // s37 rotr - r5 = r2 * r7 + r5; // s38 mad - r6 = r6 + r2 + select(0xe036a560u, 0x31a906adu, ((sel >> 16u) & 1u) != 0u); // s39 add - r3 = r3 ^ simd_shuffle_xor(r6, (ushort)4); // s40 shfl - r5 = r5 ^ r0; // s41 xor - r5 = r5 ^ r3; // s42 xor - r6 = rotl_imm(r6, 31u); // s43 rotl - r0 = rotl_imm(r0, 6u); // s44 rotl - r2 = r0 * r6 + r2; // s45 mad - r0 = r6 * r0 + r0; // s46 mad - r5 = r5 ^ r2; // s47 xor - r1 = r1 + r5 + select(0xd802a3efu, 0xc839ad2eu, ((sel >> 27u) & 1u) != 0u); // s48 add - r0 = r0 ^ simd_shuffle_xor(r1, (ushort)2); // s49 shfl - r6 = r6 + r0 + select(0x8e71c4c0u, 0xe9d06965u, ((sel >> 18u) & 1u) != 0u); // s50 add - r1 = rotl_imm(r1, 3u); // s51 rotl - r6 = r6 ^ r2; // s52 xor - r5 = r5 ^ r6; // s53 xor - r2 = r2 * r6; // s54 mul - r0 = mulhi(r0, r2); // s55 mulhi - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)1); // s56 shfl - r1 = r1 + r2 + select(0xb0eb7d4eu, 0x5b84a832u, ((sel >> 21u) & 1u) != 0u); // s57 add - r0 = rotr_var(r0, r1); // s58 rotr - r6 = r6 + r4 + select(0xd35e37c1u, 0x4e1a16c6u, ((sel >> 8u) & 1u) != 0u); // s59 add - r0 = r0 | r2; // s60 or - r5 = rotr_var(r5, r3); // s61 rotr - r4 = r4 - r2; // s62 sub - r0 = r0 + r1 + select(0x16221227u, 0xec29413au, ((sel >> 27u) & 1u) != 0u); // s63 add - r6 = rotl_imm(r6, 20u); // s64 rotl - r1 = r1 ^ r2; // s65 xor - r6 = rotl_imm(r6, 23u); // s66 rotl - r1 = r1 | r4; // s67 or - r7 = r4 * r0 + r7; // s68 mad - r1 = r1 | r5; // s69 or - r7 = r7 ^ r4; // s70 xor - r2 = r2 * r3; // s71 mul - r0 = r0 * r2; // s72 mul - r7 = r7 + r6 + select(0x5708524au, 0x85c0f694u, ((sel >> 4u) & 1u) != 0u); // s73 add - r3 = r7 * r0 + r3; // s74 mad - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)8); // s75 shfl - r5 = r5 - r7; // s76 sub - r5 = r5 ^ simd_shuffle_xor(r1, (ushort)2); // s77 shfl - r5 = r5 + r0 + select(0xc4195db9u, 0xad4f292bu, ((sel >> 26u) & 1u) != 0u); // s78 add - r5 = r5 * r6; // s79 mul - r6 = r6 ^ simd_shuffle_xor(r7, (ushort)2); // s80 shfl - r5 = r5 * r6; // s81 mul - r7 = r7 | r3; // s82 or - r0 = r4 * r2 + r0; // s83 mad - r4 = rotl_imm(r4, 12u); // s84 rotl - r3 = r3 * r4; // s85 mul - r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s86 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)4); // s87 shfl - r1 = r1 ^ r3; // s88 xor - r5 = r5 ^ r1; // s89 xor - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s90 shfl - r5 = r5 + r0 + select(0x5570a07eu, 0xb41704ddu, ((sel >> 7u) & 1u) != 0u); // s91 add - r0 = mulhi(r0, r1); // s92 mulhi - r6 = r6 ^ simd_shuffle_xor(r0, (ushort)8); // s93 shfl - r3 = r3 + r6 + select(0xcd1be982u, 0x4674baa3u, ((sel >> 18u) & 1u) != 0u); // s94 add - r4 = rotl_imm(r4, 24u); // s95 rotl - r3 = r7 * r4 + r3; // s96 mad - r6 = r6 - r3; // s97 sub - r1 = r5 * r6 + r1; // s98 mad - r6 = rotr_var(r6, r2); // s99 rotr - r5 = r5 ^ r1; // s100 xor - r3 = r3 + r7 + select(0x60f87347u, 0x3d25f873u, ((sel >> 7u) & 1u) != 0u); // s101 add - r3 = r3 - r5; // s102 sub - r3 = r3 - r6; // s103 sub - r1 = r1 ^ simd_shuffle_xor(r6, (ushort)4); // s104 shfl - r3 = r3 | r5; // s105 or - r0 = r0 + r1 + select(0x9a16bcfbu, 0x018722b4u, ((sel >> 22u) & 1u) != 0u); // s106 add - r2 = r2 + r5 + select(0xbc4b5e44u, 0x44cbb3d8u, ((sel >> 6u) & 1u) != 0u); // s107 add - r2 = r6 * r1 + r2; // s108 mad - r0 = r0 ^ r1; // s109 xor - r4 = r4 | r2; // s110 or - r2 = rotl_imm(r2, 13u); // s111 rotl - r5 = mulhi(r5, r2); // s112 mulhi - r5 = r5 ^ r1; // s113 xor - r0 = rotl_imm(r0, 15u); // s114 rotl - r7 = r7 * r0; // s115 mul - r0 = r7 * r0 + r0; // s116 mad - r4 = rotl_imm(r4, 12u); // s117 rotl - r1 = r1 * r6; // s118 mul - r0 = mulhi(r0, r3); // s119 mulhi - r4 = r0 * r0 + r4; // s120 mad - r0 = r0 + r5 + select(0x227a1887u, 0x153e7b81u, ((sel >> 16u) & 1u) != 0u); // s121 add - r6 = r6 + r3 + select(0xfbb1908bu, 0x537e0843u, ((sel >> 31u) & 1u) != 0u); // s122 add - r4 = mulhi(r4, r5); // s123 mulhi - r3 = r3 ^ r1; // s124 xor - r3 = r3 + r7 + select(0xc3e1337du, 0xc2875857u, ((sel >> 15u) & 1u) != 0u); // s125 add - r4 = rotr_var(r4, r7); // s126 rotr - r1 = r1 ^ simd_shuffle_xor(r0, (ushort)2); // s127 shfl - r3 = rotr_var(r3, r6); // s128 rotr - r1 = r1 * r0; // s129 mul - r4 = r4 ^ simd_shuffle_xor(r1, (ushort)16); // s130 shfl - r4 = r4 + r0 + select(0x87bd1ad9u, 0x39900c5eu, ((sel >> 5u) & 1u) != 0u); // s131 add - r3 = r0 * r3 + r3; // s132 mad - r4 = r4 * r2; // s133 mul - r5 = r6 * r0 + r5; // s134 mad - r4 = r5 * r4 + r4; // s135 mad - r6 = r6 + r3 + select(0xc59dd71du, 0xcb7e81cau, ((sel >> 28u) & 1u) != 0u); // s136 add - r7 = r7 * r5; // s137 mul - r6 = r6 * r3; // s138 mul - r0 = rotr_var(r0, r4); // s139 rotr - r3 = r3 ^ simd_shuffle_xor(r5, (ushort)16); // s140 shfl - r6 = rotr_var(r6, r7); // s141 rotr - r3 = r3 * r7; // s142 mul - r0 = r0 + r7 + select(0x273f8ee2u, 0x602dc90du, ((sel >> 9u) & 1u) != 0u); // s143 add - r5 = rotl_imm(r5, 26u); // s144 rotl - r2 = r2 ^ r4; // s145 xor - r6 = r6 ^ simd_shuffle_xor(r5, (ushort)16); // s146 shfl - r1 = r1 * r4; // s147 mul - r2 = r1 * r7 + r2; // s148 mad - r7 = rotr_var(r7, r2); // s149 rotr - r7 = rotr_var(r7, r3); // s150 rotr - r5 = r5 + r2 + select(0x6f435830u, 0xb3e8ca69u, ((sel >> 17u) & 1u) != 0u); // s151 add - r6 = r6 ^ r2; // s152 xor - r1 = r1 ^ simd_shuffle_xor(r2, (ushort)16); // s153 shfl - r2 = r2 ^ r6; // s154 xor - r5 = rotr_var(r5, r7); // s155 rotr - r1 = r1 ^ simd_shuffle_xor(r3, (ushort)4); // s156 shfl - r6 = r6 ^ r5; // s157 xor - r0 = r0 ^ r7; // s158 xor - r0 = r0 ^ r7; // s159 xor - r0 = mulhi(r0, r3); // s160 mulhi - r1 = r1 * r5; // s161 mul - r4 = rotr_var(r4, r0); // s162 rotr - r4 = r1 * r2 + r4; // s163 mad - r3 = r3 + r6 + select(0x7b5c68f7u, 0xe88bec07u, ((sel >> 18u) & 1u) != 0u); // s164 add - r0 = rotl_imm(r0, 13u); // s165 rotl - r2 = r2 ^ r6; // s166 xor - r5 = r5 ^ simd_shuffle_xor(r4, (ushort)16); // s167 shfl - r2 = r2 ^ simd_shuffle_xor(r7, (ushort)2); // s168 shfl - r7 = r7 ^ r6; // s169 xor - r0 = r7 * r2 + r0; // s170 mad - r3 = rotl_imm(r3, 3u); // s171 rotl - r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s172 shfl - r0 = r0 + r1 + select(0xc53a1209u, 0xadc930fcu, ((sel >> 28u) & 1u) != 0u); // s173 add - r0 = r0 * r6; // s174 mul - r7 = mulhi(r7, r0); // s175 mulhi - r3 = r3 | r2; // s176 or - r4 = r4 + r3 + select(0x2def94b8u, 0x36cdb68eu, ((sel >> 16u) & 1u) != 0u); // s177 add - r6 = r6 ^ r2; // s178 xor - r0 = rotl_imm(r0, 16u); // s179 rotl - r4 = r4 + r3 + select(0x774065efu, 0x230f4372u, ((sel >> 5u) & 1u) != 0u); // s180 add - r6 = r2 * r2 + r6; // s181 mad - r4 = r4 + r5 + select(0x8c37e75bu, 0xbc379c7cu, ((sel >> 18u) & 1u) != 0u); // s182 add - r0 = rotl_imm(r0, 26u); // s183 rotl - r4 = r4 | r2; // s184 or - r0 = r0 * r2; // s185 mul - r3 = r3 | r5; // s186 or - r1 = mulhi(r1, r0); // s187 mulhi - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)16); // s188 shfl - r5 = rotr_var(r5, r4); // s189 rotr - r3 = r0 * r3 + r3; // s190 mad - r1 = r1 | r7; // s191 or - r7 = r7 | r1; // s192 or - r1 = r5 * r4 + r1; // s193 mad - r0 = r0 - r7; // s194 sub - r6 = r6 + r0 + select(0x2f8a59eeu, 0x8751e547u, ((sel >> 9u) & 1u) != 0u); // s195 add - r0 = rotl_imm(r0, 8u); // s196 rotl - r3 = r3 + r4 + select(0x0f369a86u, 0x02b9bb4cu, ((sel >> 2u) & 1u) != 0u); // s197 add - r4 = r4 + r2 + select(0xe7922061u, 0x74240d4cu, ((sel >> 11u) & 1u) != 0u); // s198 add - r2 = r2 * r5; // s199 mul - r6 = r6 + r7 + select(0xee0e3356u, 0x7649c3c3u, ((sel >> 16u) & 1u) != 0u); // s200 add - r6 = r6 ^ simd_shuffle_xor(r1, (ushort)16); // s201 shfl - r4 = r4 * r2; // s202 mul - r3 = r3 ^ simd_shuffle_xor(r2, (ushort)1); // s203 shfl - r7 = r2 * r1 + r7; // s204 mad - r2 = rotl_imm(r2, 5u); // s205 rotl - r7 = r7 ^ simd_shuffle_xor(r1, (ushort)8); // s206 shfl - r7 = r7 * r2; // s207 mul - r0 = r0 * r3; // s208 mul - r1 = rotl_imm(r1, 7u); // s209 rotl - r5 = r5 + r3 + select(0xc8db10a0u, 0x3d8f8187u, ((sel >> 23u) & 1u) != 0u); // s210 add - r5 = r5 - r0; // s211 sub - r0 = rotr_var(r0, r7); // s212 rotr - r4 = r4 ^ simd_shuffle_xor(r2, (ushort)8); // s213 shfl - r1 = r1 ^ r3; // s214 xor - r1 = rotl_imm(r1, 19u); // s215 rotl - r6 = r6 ^ simd_shuffle_xor(r3, (ushort)2); // s216 shfl - r2 = mulhi(r2, r5); // s217 mulhi - r5 = rotl_imm(r5, 14u); // s218 rotl - r2 = r2 ^ simd_shuffle_xor(r1, (ushort)8); // s219 shfl - r7 = r7 - r5; // s220 sub - r3 = mulhi(r3, r6); // s221 mulhi - r7 = r7 | r1; // s222 or - r1 = mulhi(r1, r5); // s223 mulhi - r7 = r7 + r5 + select(0x689cdcf5u, 0xd5a3fb54u, ((sel >> 24u) & 1u) != 0u); // s224 add - r5 = r5 ^ simd_shuffle_xor(r7, (ushort)16); // s225 shfl - r3 = mulhi(r3, r2); // s226 mulhi - r0 = r0 ^ r2; // s227 xor - r7 = r7 + r4 + select(0x267f928du, 0xba3b9728u, ((sel >> 8u) & 1u) != 0u); // s228 add - r1 = r1 ^ simd_shuffle_xor(r7, (ushort)2); // s229 shfl - r4 = r4 - r6; // s230 sub - r0 = r0 | r1; // s231 or - r2 = rotl_imm(r2, 10u); // s232 rotl - r4 = r4 * r7; // s233 mul - r6 = r0 * r0 + r6; // s234 mad - r4 = rotl_imm(r4, 29u); // s235 rotl - r7 = r7 + r2 + select(0xed6dd62au, 0xa437db0eu, ((sel >> 13u) & 1u) != 0u); // s236 add - r4 = rotr_var(r4, r7); // s237 rotr - r2 = r2 + r0 + select(0x9f612006u, 0x1c000e82u, ((sel >> 17u) & 1u) != 0u); // s238 add - r7 = mulhi(r7, r5); // s239 mulhi - r3 = mulhi(r3, r6); // s240 mulhi - r0 = r0 ^ r7; // s241 xor - r4 = rotl_imm(r4, 11u); // s242 rotl - r3 = rotl_imm(r3, 21u); // s243 rotl - r4 = r4 + r2 + select(0x83ba196cu, 0x12705678u, ((sel >> 13u) & 1u) != 0u); // s244 add - r7 = r7 + r5 + select(0xa5d39c13u, 0xea712528u, ((sel >> 2u) & 1u) != 0u); // s245 add - r0 = r0 * r5; // s246 mul - r4 = r4 ^ simd_shuffle_xor(r0, (ushort)2); // s247 shfl - r3 = r3 ^ r2; // s248 xor - r7 = r7 ^ simd_shuffle_xor(r3, (ushort)4); // s249 shfl - r5 = r5 ^ simd_shuffle_xor(r3, (ushort)16); // s250 shfl - r5 = r5 + r3 + select(0x3006c6ebu, 0x26ce965fu, ((sel >> 21u) & 1u) != 0u); // s251 add - r3 = rotl_imm(r3, 1u); // s252 rotl - r7 = mulhi(r7, r1); // s253 mulhi - r1 = r1 + r5 + select(0xc2f46c6du, 0x9e34c13fu, ((sel >> 1u) & 1u) != 0u); // s254 add - r4 = rotr_var(r4, r7); // s255 rotr + r4 = r4 | r1; // s0 or + r0 = r2 * r0 + r0; // s1 mad + r0 = r0 - r6; // s2 sub + r2 = r2 | r1; // s3 or + r2 = r2 + r1 + select(0x7281530eu, 0x12eb25c3u, ((sel >> 16u) & 1u) != 0u); // s4 add + r1 = r1 ^ simd_shuffle_xor(r5, (ushort)1); // s5 shfl + r5 = rotl_imm(r5, 19u); // s6 rotl + r6 = rotl_imm(r6, 1u); // s7 rotl + r5 = r3 * r4 + r5; // s8 mad + r1 = r7 * r3 + r1; // s9 mad + r5 = r5 + r0 + select(0xd4a7ed9eu, 0x47f0ce9fu, ((sel >> 2u) & 1u) != 0u); // s10 add + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)8); // s11 shfl + r5 = r3 * r2 + r5; // s12 mad + r3 = r3 + r0 + select(0x80b09095u, 0x39d16785u, ((sel >> 17u) & 1u) != 0u); // s13 add + r5 = r5 | r1; // s14 or + r0 = r0 + r1 + select(0xdea5ac3fu, 0xdca22ff9u, ((sel >> 29u) & 1u) != 0u); // s15 add + r5 = r5 * r7; // s16 mul + r3 = r3 - r1; // s17 sub + r1 = r1 ^ simd_shuffle_xor(r0, (ushort)4); // s18 shfl + r0 = rotl_imm(r0, 26u); // s19 rotl + r7 = mulhi(r7, r1); // s20 mulhi + r7 = r7 * r1; // s21 mul + r0 = r0 ^ r4; // s22 xor + r5 = mulhi(r5, r7); // s23 mulhi + r0 = rotl_imm(r0, 5u); // s24 rotl + r1 = rotr_var(r1, r3); // s25 rotr + r0 = r0 * r3; // s26 mul + r2 = rotr_var(r2, r3); // s27 rotr + r6 = r6 + r2 + select(0xd4145381u, 0xf7b2ae68u, ((sel >> 8u) & 1u) != 0u); // s28 add + r1 = r1 | r0; // s29 or + r1 = r1 - r5; // s30 sub + r5 = rotr_var(r5, r4); // s31 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s32 shfl + r1 = r1 | r3; // s33 or + r0 = rotl_imm(r0, 7u); // s34 rotl + r5 = rotl_imm(r5, 29u); // s35 rotl + r7 = r7 ^ r6; // s36 xor + r3 = rotr_var(r3, r2); // s37 rotr + r5 = r5 ^ r7; // s38 xor + r0 = rotr_var(r0, r4); // s39 rotr + r0 = r0 ^ r6; // s40 xor + r4 = r4 * r2; // s41 mul + r1 = r1 - r7; // s42 sub + r1 = r1 + r4 + select(0x3c843ffeu, 0x08943973u, ((sel >> 23u) & 1u) != 0u); // s43 add + r3 = r3 | r1; // s44 or + r4 = r4 * r0; // s45 mul + r0 = r0 ^ r4; // s46 xor + r2 = mulhi(r2, r0); // s47 mulhi + r1 = r1 - r0; // s48 sub + r1 = r1 ^ r4; // s49 xor + r6 = mulhi(r6, r4); // s50 mulhi + r4 = r4 + r2 + select(0x3725676au, 0xaeef7b36u, ((sel >> 25u) & 1u) != 0u); // s51 add + r0 = r0 ^ r2; // s52 xor + r7 = r7 ^ simd_shuffle_xor(r6, (ushort)2); // s53 shfl + r1 = r5 * r1 + r1; // s54 mad + r5 = r5 + r3 + select(0x41cd8f60u, 0xd4d858e5u, ((sel >> 13u) & 1u) != 0u); // s55 add + r2 = r2 - r1; // s56 sub + r7 = r7 + r3 + select(0x8f5932f9u, 0xfa91d5a6u, ((sel >> 6u) & 1u) != 0u); // s57 add + r3 = r3 + r7 + select(0xe7f14444u, 0x970ece18u, ((sel >> 8u) & 1u) != 0u); // s58 add + r2 = r4 * r7 + r2; // s59 mad + r5 = r1 * r7 + r5; // s60 mad + r3 = r3 + r6 + select(0x7c44e743u, 0xd55319ebu, ((sel >> 27u) & 1u) != 0u); // s61 add + r0 = r6 * r5 + r0; // s62 mad + r6 = r6 | r0; // s63 or + r5 = r5 + r7 + select(0x811bed22u, 0x542db8e4u, ((sel >> 16u) & 1u) != 0u); // s64 add + r4 = r4 * r2; // s65 mul + r4 = r4 + r1 + select(0x6a3a9047u, 0x33eeb746u, ((sel >> 24u) & 1u) != 0u); // s66 add + r7 = r7 + r4 + select(0x4e0c939du, 0x27aae05fu, ((sel >> 22u) & 1u) != 0u); // s67 add + r1 = r1 ^ r2; // s68 xor + r5 = r5 | r1; // s69 or + r4 = r4 - r2; // s70 sub + r7 = r7 + r5 + select(0x44e0e964u, 0x9e39c430u, ((sel >> 2u) & 1u) != 0u); // s71 add + r4 = mulhi(r4, r6); // s72 mulhi + r7 = r7 - r6; // s73 sub + r7 = r7 * r3; // s74 mul + r5 = r1 * r5 + r5; // s75 mad + r0 = r0 - r6; // s76 sub + r1 = mulhi(r1, r0); // s77 mulhi + r2 = mulhi(r2, r6); // s78 mulhi + r7 = r6 * r4 + r7; // s79 mad + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)2); // s80 shfl + r2 = r0 * r4 + r2; // s81 mad + r0 = r0 + r5 + select(0x61f3d247u, 0xc3a9acb8u, ((sel >> 21u) & 1u) != 0u); // s82 add + r3 = r3 - r5; // s83 sub + r2 = r2 ^ simd_shuffle_xor(r3, (ushort)16); // s84 shfl + r3 = r3 ^ simd_shuffle_xor(r7, (ushort)8); // s85 shfl + r1 = r1 + r5 + select(0x693f4b88u, 0x8aac6339u, ((sel >> 29u) & 1u) != 0u); // s86 add + r1 = r1 - r2; // s87 sub + r7 = rotr_var(r7, r4); // s88 rotr + r4 = r4 ^ simd_shuffle_xor(r7, (ushort)8); // s89 shfl + r4 = r4 ^ r1; // s90 xor + r1 = r1 ^ simd_shuffle_xor(r3, (ushort)1); // s91 shfl + r0 = r0 * r5; // s92 mul + r5 = rotr_var(r5, r4); // s93 rotr + r0 = mulhi(r0, r3); // s94 mulhi + r2 = rotl_imm(r2, 5u); // s95 rotl + r5 = r5 ^ simd_shuffle_xor(r4, (ushort)4); // s96 shfl + r6 = r6 ^ simd_shuffle_xor(r5, (ushort)1); // s97 shfl + r6 = rotl_imm(r6, 14u); // s98 rotl + r7 = r7 - r2; // s99 sub + r2 = r1 * r7 + r2; // s100 mad + r3 = r3 * r0; // s101 mul + r0 = r3 * r5 + r0; // s102 mad + r0 = r0 + r6 + select(0x7c3da932u, 0x227996ecu, ((sel >> 23u) & 1u) != 0u); // s103 add + r1 = r1 + r0 + select(0x7f163b1bu, 0x924ae879u, ((sel >> 31u) & 1u) != 0u); // s104 add + r3 = rotl_imm(r3, 8u); // s105 rotl + r0 = rotr_var(r0, r4); // s106 rotr + r4 = r4 * r0; // s107 mul + r0 = r6 * r6 + r0; // s108 mad + r0 = r3 * r1 + r0; // s109 mad + r7 = rotr_var(r7, r4); // s110 rotr + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)4); // s111 shfl + r5 = r5 * r3; // s112 mul + r2 = r2 * r7; // s113 mul + r5 = rotl_imm(r5, 16u); // s114 rotl + r6 = mulhi(r6, r2); // s115 mulhi + r0 = rotl_imm(r0, 5u); // s116 rotl + r2 = r2 * r7; // s117 mul + r4 = r4 + r2 + select(0xa288a176u, 0x21e83993u, ((sel >> 15u) & 1u) != 0u); // s118 add + r1 = r1 ^ r0; // s119 xor + r2 = rotl_imm(r2, 26u); // s120 rotl + r0 = r0 + r4 + select(0x9df51761u, 0x0f2327f2u, ((sel >> 10u) & 1u) != 0u); // s121 add + r1 = r1 ^ simd_shuffle_xor(r7, (ushort)1); // s122 shfl + r7 = rotr_var(r7, r2); // s123 rotr + r7 = r7 + r0 + select(0x19c0a4f8u, 0x2ebd98a2u, ((sel >> 7u) & 1u) != 0u); // s124 add + r0 = r5 * r3 + r0; // s125 mad + r0 = r0 ^ r4; // s126 xor + r1 = r1 ^ simd_shuffle_xor(r4, (ushort)16); // s127 shfl + r5 = rotl_imm(r5, 21u); // s128 rotl + r4 = r4 - r0; // s129 sub + r5 = r5 ^ r0; // s130 xor + r7 = r6 * r3 + r7; // s131 mad + r5 = r6 * r6 + r5; // s132 mad + r6 = r6 ^ r2; // s133 xor + r6 = mulhi(r6, r5); // s134 mulhi + r5 = r5 + r4 + select(0xd49ef2cfu, 0x70024b77u, ((sel >> 9u) & 1u) != 0u); // s135 add + r4 = r4 ^ r2; // s136 xor + r0 = r0 + r5 + select(0x96954048u, 0x4c39b70bu, ((sel >> 3u) & 1u) != 0u); // s137 add + r2 = r2 ^ r4; // s138 xor + r4 = r4 + r0 + select(0x5b35ff4au, 0x3c3cdf42u, ((sel >> 9u) & 1u) != 0u); // s139 add + r5 = rotl_imm(r5, 10u); // s140 rotl + r5 = r5 | r1; // s141 or + r4 = r4 * r3; // s142 mul + r6 = r6 + r4 + select(0xc2137621u, 0x0b3bd787u, ((sel >> 31u) & 1u) != 0u); // s143 add + r5 = r5 ^ r1; // s144 xor + r0 = rotl_imm(r0, 27u); // s145 rotl + r2 = r2 - r5; // s146 sub + r2 = rotl_imm(r2, 21u); // s147 rotl + r0 = r0 + r1 + select(0xaf6409eau, 0x7f3d99bfu, ((sel >> 28u) & 1u) != 0u); // s148 add + r6 = r6 ^ r5; // s149 xor + r2 = r2 * r1; // s150 mul + r3 = mulhi(r3, r5); // s151 mulhi + r4 = r4 ^ r2; // s152 xor + r5 = rotl_imm(r5, 16u); // s153 rotl + r7 = r7 * r5; // s154 mul + r7 = r0 * r5 + r7; // s155 mad + r3 = r7 * r0 + r3; // s156 mad + r1 = r1 - r6; // s157 sub + r3 = r3 + r4 + select(0xbf35527cu, 0x084ad732u, ((sel >> 4u) & 1u) != 0u); // s158 add + r3 = r3 | r1; // s159 or + r4 = r4 ^ r7; // s160 xor + r5 = r5 ^ r4; // s161 xor + r0 = rotl_imm(r0, 2u); // s162 rotl + r1 = r1 - r4; // s163 sub + r3 = r3 ^ r6; // s164 xor + r3 = mulhi(r3, r0); // s165 mulhi + r6 = r6 ^ r2; // s166 xor + r6 = r6 * r0; // s167 mul + r1 = r1 + r0 + select(0x4d9683b5u, 0x9e1aa79bu, ((sel >> 11u) & 1u) != 0u); // s168 add + r3 = r5 * r1 + r3; // s169 mad + r2 = r2 ^ r3; // s170 xor + r0 = r0 + r7 + select(0xa33023afu, 0x47f22138u, ((sel >> 18u) & 1u) != 0u); // s171 add + r3 = r3 + r4 + select(0xb4c0dd62u, 0xb4561a0cu, ((sel >> 17u) & 1u) != 0u); // s172 add + r3 = r3 * r0; // s173 mul + r4 = r4 ^ simd_shuffle_xor(r6, (ushort)2); // s174 shfl + r4 = r4 + r2 + select(0xc9a1b546u, 0x50dcdd8du, ((sel >> 18u) & 1u) != 0u); // s175 add + r6 = r6 + r1 + select(0x6d7dd3a8u, 0xeb88782du, ((sel >> 16u) & 1u) != 0u); // s176 add + r2 = r2 - r7; // s177 sub + r0 = r2 * r2 + r0; // s178 mad + r0 = r0 * r2; // s179 mul + r0 = r5 * r0 + r0; // s180 mad + r1 = r1 - r7; // s181 sub + r6 = r6 ^ r4; // s182 xor + r6 = r6 - r1; // s183 sub + r0 = r4 * r2 + r0; // s184 mad + r2 = mulhi(r2, r7); // s185 mulhi + r0 = r0 ^ r1; // s186 xor + r4 = r4 + r0 + select(0xf5421b9au, 0x15f552efu, ((sel >> 2u) & 1u) != 0u); // s187 add + r4 = r2 * r5 + r4; // s188 mad + r7 = rotr_var(r7, r0); // s189 rotr + r0 = r0 * r2; // s190 mul + r0 = r0 ^ r2; // s191 xor + r4 = rotr_var(r4, r5); // s192 rotr + r3 = r3 ^ r6; // s193 xor + r1 = r1 | r5; // s194 or + r2 = rotr_var(r2, r3); // s195 rotr + r6 = rotl_imm(r6, 1u); // s196 rotl + r3 = rotr_var(r3, r6); // s197 rotr + r7 = r3 * r2 + r7; // s198 mad + r0 = r0 - r3; // s199 sub + r6 = r6 ^ r7; // s200 xor + r1 = r1 + r3 + select(0x1c29c85bu, 0xda481a5du, ((sel >> 15u) & 1u) != 0u); // s201 add + r5 = r5 * r3; // s202 mul + r5 = mulhi(r5, r0); // s203 mulhi + r5 = r5 ^ r3; // s204 xor + r6 = r6 + r0 + select(0x7975e016u, 0xbff40052u, ((sel >> 15u) & 1u) != 0u); // s205 add + r7 = r7 ^ r1; // s206 xor + r2 = r2 ^ r5; // s207 xor + r4 = r4 | r2; // s208 or + r4 = mulhi(r4, r0); // s209 mulhi + r7 = r7 - r5; // s210 sub + r7 = r4 * r4 + r7; // s211 mad + r0 = r0 ^ r3; // s212 xor + r3 = r3 + r4 + select(0x57f3f8acu, 0xb1f05c54u, ((sel >> 24u) & 1u) != 0u); // s213 add + r2 = rotl_imm(r2, 12u); // s214 rotl + r5 = r5 ^ r2; // s215 xor + r1 = rotr_var(r1, r4); // s216 rotr + r5 = r5 ^ simd_shuffle_xor(r0, (ushort)8); // s217 shfl + r3 = r3 | r6; // s218 or + r0 = r0 ^ simd_shuffle_xor(r2, (ushort)4); // s219 shfl + r0 = r0 ^ simd_shuffle_xor(r3, (ushort)1); // s220 shfl + r4 = r4 | r7; // s221 or + r6 = r6 * r5; // s222 mul + r4 = r4 ^ simd_shuffle_xor(r3, (ushort)8); // s223 shfl + r4 = r4 + r2 + select(0xa0235028u, 0x1023c67eu, ((sel >> 3u) & 1u) != 0u); // s224 add + r6 = rotl_imm(r6, 10u); // s225 rotl + r2 = r2 ^ r0; // s226 xor + r1 = r0 * r6 + r1; // s227 mad + r2 = r2 + r0 + select(0xf2e2fbbau, 0x410d0f7au, ((sel >> 17u) & 1u) != 0u); // s228 add + r2 = rotr_var(r2, r6); // s229 rotr + r5 = rotr_var(r5, r6); // s230 rotr + r6 = r6 - r0; // s231 sub + r5 = r7 * r7 + r5; // s232 mad + r3 = r3 ^ r2; // s233 xor + r2 = r2 ^ r4; // s234 xor + r1 = rotl_imm(r1, 4u); // s235 rotl + r3 = r3 ^ simd_shuffle_xor(r4, (ushort)4); // s236 shfl + r7 = r7 ^ r6; // s237 xor + r4 = r4 * r3; // s238 mul + r0 = mulhi(r0, r7); // s239 mulhi + r4 = r4 ^ r7; // s240 xor + r0 = r0 + r7 + select(0xf495035bu, 0x90b2f1c9u, ((sel >> 1u) & 1u) != 0u); // s241 add + r5 = r5 + r1 + select(0xad76bafbu, 0x43fe7580u, ((sel >> 19u) & 1u) != 0u); // s242 add + r1 = rotr_var(r1, r0); // s243 rotr + r7 = r7 ^ simd_shuffle_xor(r5, (ushort)2); // s244 shfl + r4 = r4 * r5; // s245 mul + r6 = r6 + r5 + select(0x7b0d685du, 0xa1eaac90u, ((sel >> 23u) & 1u) != 0u); // s246 add + r7 = r7 * r6; // s247 mul + r6 = rotl_imm(r6, 2u); // s248 rotl + r2 = r2 - r6; // s249 sub + r4 = r4 | r2; // s250 or + r2 = r2 + r1 + select(0x14c6d26au, 0xca0faca7u, ((sel >> 26u) & 1u) != 0u); // s251 add + r5 = r5 ^ r6; // s252 xor + r4 = r4 | r6; // s253 or + r2 = r2 + r6 + select(0x5c6e41f5u, 0xf887f9eau, ((sel >> 14u) & 1u) != 0u); // s254 add + r7 = r7 + r6 + select(0x9389bb50u, 0x1eeb32d4u, ((sel >> 19u) & 1u) != 0u); // s255 add } } uint lo = r0 ^ rotl_imm(r1, 7u) ^ rotl_imm(r2, 14u) ^ rotl_imm(r3, 21u); diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/vectors.h b/proto-cuda/packs-ca3-v4/v4-era-5/vectors.h index 58dfa5e27..5a350aa80 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/vectors.h +++ b/proto-cuda/packs-ca3-v4/v4-era-5/vectors.h @@ -11,22 +11,22 @@ static const uint32_t IGNEUM_VEC_BASE[IGNEUM_VEC_WARPS] = { 0u, 4096u, 1000000u }; static const uint64_t IGNEUM_VEC_OUT[IGNEUM_VEC_WARPS][32] = { { // base nonce 0 - 0xbf945be0cc8d3f41ull, 0x34be8a9b058957efull, 0xa790f250cb3f84c2ull, 0xf348a3adcb120feeull, 0x84ffe7a18320fce6ull, 0xc3ca0cd342a7b5a0ull, 0xc661be2913cc0a16ull, 0x42a2613074355476ull, - 0x652f7593de7c1c6bull, 0x8b82eec6d8a4cdb5ull, 0x64a052482e4aa45aull, 0x945d11e95d050e91ull, 0x9922b0bf0a9b65afull, 0xa6a46d687a41eea8ull, 0x1cd22c7c5a116cadull, 0x3bb0fe59f1d68bb0ull, - 0x392c2e38402ce2ceull, 0xce206717bf858f7bull, 0x725267c1b0a569c1ull, 0xb1a10c27e394a06cull, 0x8694ba08f13dadcaull, 0x9f6e2f304e7f8410ull, 0xfca54880fe409efbull, 0x8ddf5d9f26f6651aull, - 0x7744b0375f6a5356ull, 0x2ec062f98cea9669ull, 0x1fc1df8a93493c01ull, 0xe58efdbe3b0fded0ull, 0xbc80f43278e4a3aeull, 0xc576991cd263499bull, 0x6a964020bdafa9caull, 0x23d6a9f3a43b088bull + 0x09b672f51efc0de3ull, 0xf2dccfa4f0c48205ull, 0xff2e372fc9e428c7ull, 0x4f418be1eebc6edcull, 0xf849f2d2026d36f4ull, 0xd729cf8343a3591eull, 0xeec06910859dd6abull, 0xfb8b914da3779d31ull, + 0x2b5304d0be44433cull, 0xdcca0269e2b059d3ull, 0x4f1e5ce8d1507341ull, 0x3682600cec1f1766ull, 0xbfc1066c9dd82bc0ull, 0x0351c44e542e1dd7ull, 0x3781ab53ea2c921dull, 0x71c128dc463c82aaull, + 0x868fad6f922dee40ull, 0xb1cfac97f6caa4c8ull, 0xdf643330b77c6a41ull, 0xa558c8b2882aeae6ull, 0x7e230132b2641114ull, 0xaa4e270fa835e5aeull, 0x046954e5c42edd61ull, 0x7830c56c8783a76eull, + 0x559e1b4a7657067eull, 0x348f31d5c06af0b6ull, 0xf485c0b354cf7c02ull, 0x1e1812064c56d4adull, 0x38e167a0619086b2ull, 0x76dfbdc488dadeabull, 0x3c1deadede40f091ull, 0x0394095a4407e1a7ull }, { // base nonce 4096 - 0x39a9f8aba6a9c7abull, 0xf1daab939a9c3217ull, 0x5831fcce18c03b2full, 0xb8ff659519b96eedull, 0x88d08144f09ffb22ull, 0xa373485c22133291ull, 0xfc82bfd2743de9dbull, 0x19dffd993bf1a1a3ull, - 0xec61385b02ed1eecull, 0xe3a705fedd476c62ull, 0x012af0af0abd2f1bull, 0xacbfc40c16d1c409ull, 0x64e16756a429ee6aull, 0x9a8b8c542b85d64bull, 0x95b962ec795480c1ull, 0x11a35a7657f86c66ull, - 0x4ae11f4a8b22a8edull, 0x649bd0de4210bbb2ull, 0xd9e81d1e0c794619ull, 0x865a6073aeaad870ull, 0xcc691a4eb315ed94ull, 0x7bdf6b0662f171e6ull, 0xde979c126cd8b9a8ull, 0x801a11f95defd5baull, - 0xe0b160c42c39df59ull, 0x2319e68444cacb1bull, 0xd8beee32eb63a71eull, 0x272e524e202c58dbull, 0xeefad04ef941e833ull, 0x98b08bb5658177b1ull, 0xeb6833af292f958eull, 0xb6b358ffd3b2de03ull + 0xd9d5853a2725f19dull, 0x21c81049ecbd4d29ull, 0xf653e706783ae115ull, 0x603d659acca394e6ull, 0xb745e16d6c892d1cull, 0x27fa4d447e00e11aull, 0x6dd506e5ae5db762ull, 0xac81179a42900fbcull, + 0xb195ff53ff98ef62ull, 0x352788b01afe6ce4ull, 0xdf03be2ea64bdf46ull, 0x0ce8624292198824ull, 0x4bb97c06c80a223dull, 0xafe3281cc1b73d36ull, 0xffd481485e92f966ull, 0xc765d569c51a05fbull, + 0x53a196baa4ffea59ull, 0x716beca58384cca9ull, 0xb7a316314e9fd227ull, 0xd01e7f8388fcf7a6ull, 0x935487bb0b0571e8ull, 0x11d0ff59e26a7a8full, 0x1aa067d06337b21eull, 0x26c12160dd40a1e9ull, + 0x645acfa37986187eull, 0xab7a9ff989cfb2c7ull, 0x70b6fe65e7e401e7ull, 0xb25f11139009a81bull, 0xf75be58f6dd7a15dull, 0x3584f9e3564a5543ull, 0x164f8896c4e05878ull, 0xe4f16a4f44241ba8ull }, { // base nonce 1000000 - 0xb4835ddebdbfbaebull, 0x05ececfd8ef508ccull, 0x4bc1315c1b1ce4c8ull, 0xe13eca621f2ff598ull, 0x6fffb12762010b6cull, 0x78139a212e0870eeull, 0xe9e197bebebbce63ull, 0xb485f4c5f50377bdull, - 0x1284446e016546c1ull, 0xa2e4a3aefd217a73ull, 0xa484b974f813abb7ull, 0xf9959eac63a1401cull, 0x77b081fd93294af8ull, 0x1fc7fc1eb3d9eaabull, 0x71c51d4214cb47f0ull, 0x52171833d8d341f0ull, - 0x5699e6eae25c5854ull, 0x34752dd16c6ce88full, 0x353dd3b0890ba109ull, 0x696b0afc8f6fe70eull, 0x2b30eaa48b77cd0cull, 0x6c600c3b87409c38ull, 0x26ead9ba20d15168ull, 0xc93e5f5a261bc786ull, - 0x8606f09c2c74c81cull, 0x1b3f9792e5247d66ull, 0xf8bb901d0dd87bfaull, 0xbc939e016a57b734ull, 0x7bbbffc2dbcbc12aull, 0x51beb5108f2ae2a4ull, 0x37b252067e6cc262ull, 0xf038a9ff99426f88ull + 0xafcf44b9ddaf8a15ull, 0x46b501d8f9f431b1ull, 0x2ec68d35b7cb4f0dull, 0x930277e6f96503f8ull, 0x04012d08740f5375ull, 0x4a85d90295660fc6ull, 0x0454298d466b3e4bull, 0xf3a12e9c69494a50ull, + 0x4a8e4403615aa782ull, 0x371e05fc40aec842ull, 0x4407fb731b817a1eull, 0x09bf85431cb945b4ull, 0x98dff2c22d85fca4ull, 0x8bc87a1270192ff2ull, 0xc932770bddffbbdbull, 0xc3d77a3970b22ad8ull, + 0xab49bef1f1cfb902ull, 0x9a8510f1cf68d61eull, 0xeaed05116410b7f9ull, 0x7c2b51cd65104673ull, 0x119a5eb9c83a77b2ull, 0x5f5beff134efc338ull, 0x0237683bc1e164d6ull, 0x78190827639863a6ull, + 0x61ed474c83daf076ull, 0x1b3a63821bb12c47ull, 0x06afe302e22adad3ull, 0xcabee617ba70eeedull, 0x8a03503b613450ceull, 0x5c32f39e46586c19ull, 0x1b358dd2b58de723ull, 0x9226092b153a990aull } }; diff --git a/proto-cuda/packs-ca3-v4/v4-era-5/vectors.json b/proto-cuda/packs-ca3-v4/v4-era-5/vectors.json index 197245d50..b3dfa3d47 100644 --- a/proto-cuda/packs-ca3-v4/v4-era-5/vectors.json +++ b/proto-cuda/packs-ca3-v4/v4-era-5/vectors.json @@ -8,22 +8,22 @@ "source": "igneum-pow (Rust) CPU interpreter, generator v4, memory-hard dataset", "warps": [ {"base_nonce": 0, "expected": [ - "0xbf945be0cc8d3f41", "0x34be8a9b058957ef", "0xa790f250cb3f84c2", "0xf348a3adcb120fee", "0x84ffe7a18320fce6", "0xc3ca0cd342a7b5a0", "0xc661be2913cc0a16", "0x42a2613074355476", - "0x652f7593de7c1c6b", "0x8b82eec6d8a4cdb5", "0x64a052482e4aa45a", "0x945d11e95d050e91", "0x9922b0bf0a9b65af", "0xa6a46d687a41eea8", "0x1cd22c7c5a116cad", "0x3bb0fe59f1d68bb0", - "0x392c2e38402ce2ce", "0xce206717bf858f7b", "0x725267c1b0a569c1", "0xb1a10c27e394a06c", "0x8694ba08f13dadca", "0x9f6e2f304e7f8410", "0xfca54880fe409efb", "0x8ddf5d9f26f6651a", - "0x7744b0375f6a5356", "0x2ec062f98cea9669", "0x1fc1df8a93493c01", "0xe58efdbe3b0fded0", "0xbc80f43278e4a3ae", "0xc576991cd263499b", "0x6a964020bdafa9ca", "0x23d6a9f3a43b088b" + "0x09b672f51efc0de3", "0xf2dccfa4f0c48205", "0xff2e372fc9e428c7", "0x4f418be1eebc6edc", "0xf849f2d2026d36f4", "0xd729cf8343a3591e", "0xeec06910859dd6ab", "0xfb8b914da3779d31", + "0x2b5304d0be44433c", "0xdcca0269e2b059d3", "0x4f1e5ce8d1507341", "0x3682600cec1f1766", "0xbfc1066c9dd82bc0", "0x0351c44e542e1dd7", "0x3781ab53ea2c921d", "0x71c128dc463c82aa", + "0x868fad6f922dee40", "0xb1cfac97f6caa4c8", "0xdf643330b77c6a41", "0xa558c8b2882aeae6", "0x7e230132b2641114", "0xaa4e270fa835e5ae", "0x046954e5c42edd61", "0x7830c56c8783a76e", + "0x559e1b4a7657067e", "0x348f31d5c06af0b6", "0xf485c0b354cf7c02", "0x1e1812064c56d4ad", "0x38e167a0619086b2", "0x76dfbdc488dadeab", "0x3c1deadede40f091", "0x0394095a4407e1a7" ]}, {"base_nonce": 4096, "expected": [ - "0x39a9f8aba6a9c7ab", "0xf1daab939a9c3217", "0x5831fcce18c03b2f", "0xb8ff659519b96eed", "0x88d08144f09ffb22", "0xa373485c22133291", "0xfc82bfd2743de9db", "0x19dffd993bf1a1a3", - "0xec61385b02ed1eec", "0xe3a705fedd476c62", "0x012af0af0abd2f1b", "0xacbfc40c16d1c409", "0x64e16756a429ee6a", "0x9a8b8c542b85d64b", "0x95b962ec795480c1", "0x11a35a7657f86c66", - "0x4ae11f4a8b22a8ed", "0x649bd0de4210bbb2", "0xd9e81d1e0c794619", "0x865a6073aeaad870", "0xcc691a4eb315ed94", "0x7bdf6b0662f171e6", "0xde979c126cd8b9a8", "0x801a11f95defd5ba", - "0xe0b160c42c39df59", "0x2319e68444cacb1b", "0xd8beee32eb63a71e", "0x272e524e202c58db", "0xeefad04ef941e833", "0x98b08bb5658177b1", "0xeb6833af292f958e", "0xb6b358ffd3b2de03" + "0xd9d5853a2725f19d", "0x21c81049ecbd4d29", "0xf653e706783ae115", "0x603d659acca394e6", "0xb745e16d6c892d1c", "0x27fa4d447e00e11a", "0x6dd506e5ae5db762", "0xac81179a42900fbc", + "0xb195ff53ff98ef62", "0x352788b01afe6ce4", "0xdf03be2ea64bdf46", "0x0ce8624292198824", "0x4bb97c06c80a223d", "0xafe3281cc1b73d36", "0xffd481485e92f966", "0xc765d569c51a05fb", + "0x53a196baa4ffea59", "0x716beca58384cca9", "0xb7a316314e9fd227", "0xd01e7f8388fcf7a6", "0x935487bb0b0571e8", "0x11d0ff59e26a7a8f", "0x1aa067d06337b21e", "0x26c12160dd40a1e9", + "0x645acfa37986187e", "0xab7a9ff989cfb2c7", "0x70b6fe65e7e401e7", "0xb25f11139009a81b", "0xf75be58f6dd7a15d", "0x3584f9e3564a5543", "0x164f8896c4e05878", "0xe4f16a4f44241ba8" ]}, {"base_nonce": 1000000, "expected": [ - "0xb4835ddebdbfbaeb", "0x05ececfd8ef508cc", "0x4bc1315c1b1ce4c8", "0xe13eca621f2ff598", "0x6fffb12762010b6c", "0x78139a212e0870ee", "0xe9e197bebebbce63", "0xb485f4c5f50377bd", - "0x1284446e016546c1", "0xa2e4a3aefd217a73", "0xa484b974f813abb7", "0xf9959eac63a1401c", "0x77b081fd93294af8", "0x1fc7fc1eb3d9eaab", "0x71c51d4214cb47f0", "0x52171833d8d341f0", - "0x5699e6eae25c5854", "0x34752dd16c6ce88f", "0x353dd3b0890ba109", "0x696b0afc8f6fe70e", "0x2b30eaa48b77cd0c", "0x6c600c3b87409c38", "0x26ead9ba20d15168", "0xc93e5f5a261bc786", - "0x8606f09c2c74c81c", "0x1b3f9792e5247d66", "0xf8bb901d0dd87bfa", "0xbc939e016a57b734", "0x7bbbffc2dbcbc12a", "0x51beb5108f2ae2a4", "0x37b252067e6cc262", "0xf038a9ff99426f88" + "0xafcf44b9ddaf8a15", "0x46b501d8f9f431b1", "0x2ec68d35b7cb4f0d", "0x930277e6f96503f8", "0x04012d08740f5375", "0x4a85d90295660fc6", "0x0454298d466b3e4b", "0xf3a12e9c69494a50", + "0x4a8e4403615aa782", "0x371e05fc40aec842", "0x4407fb731b817a1e", "0x09bf85431cb945b4", "0x98dff2c22d85fca4", "0x8bc87a1270192ff2", "0xc932770bddffbbdb", "0xc3d77a3970b22ad8", + "0xab49bef1f1cfb902", "0x9a8510f1cf68d61e", "0xeaed05116410b7f9", "0x7c2b51cd65104673", "0x119a5eb9c83a77b2", "0x5f5beff134efc338", "0x0237683bc1e164d6", "0x78190827639863a6", + "0x61ed474c83daf076", "0x1b3a63821bb12c47", "0x06afe302e22adad3", "0xcabee617ba70eeed", "0x8a03503b613450ce", "0x5c32f39e46586c19", "0x1b358dd2b58de723", "0x9226092b153a990a" ]} ], "dataset_head": ["0x19c6837f", "0xdf3adfb8", "0xbd3f6aed", "0xb8bede0d", "0xc5f0629f", "0x03e38ae8", "0xc435a60e", "0xfadee916", "0x827e59af", "0x8cf592f5", "0x60286061", "0x5d9abc1c", "0xa85d0c39", "0x4247a100", "0xd41a5b0d", "0x3f33dc64"], diff --git a/site/bench.html b/site/bench.html index a8ee089c2..cf81529f7 100644 --- a/site/bench.html +++ b/site/bench.html @@ -209,7 +209,7 @@ table{min-width:560px}
-
93 entries, newest at the bottom
+
94 entries, newest at the bottom

Engineering log

Every measurement the project has made, newest at the bottom, written by the people and agents who ran it, with the commands and hardware. Prototype numbers are not mining numbers and say so.

@@ -217,7 +217,7 @@ table{min-width:560px}
- +

Igneum bench log

Append-only. Every number here was measured on the machine named, on the date given.

@@ -942,7 +942,17 @@ table{min-width:560px}

The rented fleet is the devnet's finality, 6 October 2026 (branch gpu-fleet)

Measured at 21:57Z from the hub's last 2,000 blocks: the 38 wave pods held 77.8 percent of the voter weight (mean 2.05 percent a pod), the 14 standing boxes most of the rest, the hands and the hub the remainder; the last lock signed 93.5 percent of the active voters and 89.9 percent of the frozen table (53 of 84 voters on the first certificate). Earlier the same evening the fleet removed 13 miners' GPUs inside three minutes and finality paused for two hours five minutes (18:39:36Z to 20:44:44Z, 42.7 percent of the table gone with earlier leavers; rule v3 holds a full window). From that came the 10 percent rule (never remove more than 10 percent of the live devnet's weight in an hour, tools/fleet/lib/standing.py weight_check) and the wave's wind-down by hourly slices (tools/fleet/winddown.py: slice 1 at 21:58Z took 12 pods and the 8x rig at 8.6 percent of weight).

When the wave is gone the 14 standing boxes hold about 95 percent of the weight, so from then until public hash arrives the fleet alone is the devnet's finality: a home miner's lock lands only while the fleet is up. What holds it up: every standing box runs under box-standing.sh, which restarts a dead node within one of its 60-second passes (the hub's three deaths tonight: 63 s, 41 s and 56 s to the restart line), restarts the miner with the node, prunes the prover's exports and trims the node log, and runs the exec recovery recipe when the state layer reads zero; lib/standing.py loop re-rents a dead host in the same shape and reports a box behind its wanted binary.

-
TierWhat it means
Home mineryour lock depends on 14 rented cards staying up and mining; a finality pause is not your node's fault and nothing you can fix; the rule above is what keeps it from recurring on the fleet's side
Rigthe same, and a rig that leaves is itself a weight removal: at 459 MH/s on tonight's devnet it is about 20 percent of the weight, over the hour's budget by itself
Poola pool node is one voter carrying its members' whole weight; a pool restart is the largest single removal on the network and must be sliced like the fleet's
The networkfinality by miner weight is only as steady as the miners' uptime; until public hash dwarfs the fleet, the fleet's supervisor is a consensus component
+
TierWhat it means
Home mineryour lock depends on 14 rented cards staying up and mining; a finality pause is not your node's fault and nothing you can fix; the rule above is what keeps it from recurring on the fleet's side
Rigthe same, and a rig that leaves is itself a weight removal: at 459 MH/s on tonight's devnet it is about 20 percent of the weight, over the hour's budget by itself
Poola pool node is one voter carrying its members' whole weight; a pool restart is the largest single removal on the network and must be sliced like the fleet's
The networkfinality by miner weight is only as steady as the miners' uptime; until public hash dwarfs the fleet, the fleet's supervisor is a consensus component
+
+

7 October 2026, the first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure on the RTX 5090 Windows rig (branch bench-5060ti)

+

Machine: the RTX 5090 Windows rig (1ccfe586, Windows 11), an ASUS Dual GeForce RTX 5060 Ti (16 GB GDDR7, Blackwell sm_120, PnP PCI\VEN_10DE&DEV_2D04&SUBSYS_8A111043) in a Razer Core X V2 Thunderbolt enclosure ("USB4 Router (2.0), Razer - Core X V2", bus 0B:00.0), beside the RTX 5090 on its own supply; NVIDIA driver 610.47 (WDDM 32.0.16.1047, the 5090's driver, nothing installed for the new card); the installed app 0.3.19 and its own igneum-worker-cuda.exe (NVRTC 12.8). Jobs fetch-5060ti-packs-20261007 (the kit: tools/bench-5060ti/make-kit.sh, the class v4 pack at sub-version 1 and the v3 control, sha256 fd8393ed..., 105,892 bytes) and run-5060ti-bench-20261007-b (tools/bench-5060ti/pc2-5060ti-bench.ps1, 14:44:19Z, ran 14:45:05 to 14:58:11Z, exit 0; the 5060 Ti alone through the runner's --cards-off, the 5090 mining throughout; run -a died in 1 s on an argument-binding fault in the nvidia-smi query and is void). the RTX 5090 Windows rig lost power twice that day, so the job WRITES NO POWER LIMIT: it reads power.limit against power.default_limit (180 W = 180 W, range 150 to 198 W) and the row says limit_is_stock=yes. Read back with node tools/jobs.mjs run-5060ti-bench-20261007-b.

+

Detection (the app's first poll after the restart, run win-1ccfe586-20261007-143611, 14:36:16Z): GPUs: NVIDIA GeForce RTX 5090 (CUDA); NVIDIA GeForce RTX 5060 Ti (CUDA); AMD Radeon(TM) Graphics (OpenCL, gfx1036) and cards: NVIDIA GeForce RTX 5090 [discrete, off] | NVIDIA GeForce RTX 5060 Ti [discrete, off] | ...; the app started a miner on it by itself (nvidia-1ccfe586-2, --device 1, 8 identities, the default). The kind reads discrete, not external: the app does not know it is an eGPU. nvidia-smi in the job: index 1, 16,311 MiB, PCIe link gen 4 x4 current against gen 4 x16 maximum (the Thunderbolt link: a quarter of the slot's lanes), 43 C idle. The freeze lane's cause class for the 15:10 UK hang on the first boot with the card: not the card (no TDR, no Thunderbolt or PCIe link event; Kernel-Power 41 + 6008, no bugcheck, the power shape again).

+

G1 and the window (the installed CUDA worker, --bench --batch-log2 24 --block-warps 1, the card alone, CUDA_VISIBLE_DEVICES on its UUID so every row names the device; nvidia-smi every 2 s on the card, the loaded samples at utilisation 90 percent and over):

+
PackDispatches of 2^24Self-testFingerprint 2^24 at base 0MH/s
mx8-devnet-epoch0 (the class v3 control)5PASS90f794dd556f7a3b (= the control everywhere)30.895
v4-devnet-epoch0 (class v4, sub-version 1, program id 1a4230699a6b9c60)5PASS867dbc45cfb36b4d (= Metal, Apple OpenCL, the RTX 5090)30.879
v4-devnet-epoch0, the 10-minute window at the stock limit1,105 (602 s)PASS867dbc45cfb36b4d30.882
+
RowValue
NVIDIA RTX 5060 Ti 16 GB, class v4, CUDA (NVRTC), driver 610.47, PCIe 4.0 x4 through the enclosure30.9 MH/s over 10 minutes on the card alone
Watts at the stock limit (180 W default, unchanged)114.8 W mean, 115 W p50 over the window; 0.269 MH/W; SM 2,753 MHz, memory 13,801 MHz, 60 C maximum
The class v4 shadow against the control0.1 percent (the 5090 paid 0.2, the 9070 XT 3, the B580 0.1)
The efficient pointOWED to the app's Ember Tune: nothing set by the job; the RTX 5090 Windows rig's Power Helper refused every request since the restart ("the helper did not run sequence 0 within 15 s", 14:39Z), so no ladder ran on either card
Prove beside the miner (16 GB tier)BLOCKED, not measured: the shipped WSL2 host (sha 71bc2438...) carries no IGNEUM_CUDA_DEVICE selector, so aimed at anything it proves on CUDA device 0 (the 5090) through the app's own socket /tmp/sp1-cuda-0.sock; the selector lives in the prover-floor host (proof_system.rs, branch prover-floor) and is the owed cut. The job's inventory: the floor server IS on the RTX 5090 Windows rig (<server path>, 6.8.1 build e911facb..., 166,665,880 bytes) beside the stock one (~/.sp1/bin, c2642ad1...), WSL sees the card as CUDA device 1
Card-picker entry (site/yourcard.js)['NVIDIA RTX 5060 Ti', 30.9], added; the public table row in site/miner-bench.json
+

Against the 5090 on the same PC (122 MH/s at 308 W, 0.396 MH/W): 25.3 percent of its hash at 37 percent of its draw, 68 percent of its hash per watt. The dependent-read ceiling was not probed (the memprobe step is not in this job); at 128 loads a hash 30.9 MH/s is 3.95 G dependent reads a second, between the 9070 XT (2.4 to 2.7 G) and the 5090 (16 to 18 G).

+

Consequences per tier (the rule of 5 October 2026): a 5060 Ti owner (16 GB, Windows) mines at 30.9 MH/s and 115 W from the box with nothing to set: about 5,100 blocks a day at the 522 MH/s the devnet showed at 14:44Z (one every 17 s, approximate: the network rate moves), about a quarter of a 5090 owner's 20,200, for 2.76 kWh a day (£0.79 at 28.5 p against the 5090's £2.11); through a Thunderbolt enclosure the x4 link costs nothing measurable (the hash is bound by the card's own memory latency, not the link; the 5090's PCIe-slot rows are the comparison), so a laptop with a Thunderbolt 4 port and this enclosure is a 31 MH/s miner. The 8 GB 5060 Ti: the same hash is the expectation (the 1 GiB dataset fits), a line owed. Proving on the 16 GB tier: the fleet's 4060 Ti 16 GB row (9.0 GB peak beside the miner on the patched server) says this card would mine and prove with about 7 GB spare, approximate until the host with the device selector ships; today the app's prover default leaves it off ("a full shard needs a 24 GB card") and the measured read is owed to the prover-floor host cut. Linux and HiveOS take the same CUDA worker (owed a line). What the lane does next: the prover-floor host's selector into the shipped WSL2 bundle, then the prove-beside read on this card; the Power Helper fault on the RTX 5090 Windows rig to the Ember lane (no efficient point on any the RTX 5090 Windows rig card until it answers).

+

Found on the way: inside a PowerShell @( ... ) the comma binds before +, so '--query-gpu=' + $f, '--format=csv' is one argument (run a, void in 1 s; the query string is built first now); a bare string inside a function that also returns a value is swallowed into the caller's variable (the sampler line; [Console]::Out.WriteLine now); the app's kind for a Thunderbolt card reads discrete (a word for the Cards page to earn: external, which the state already names).

Generated from the repository at build time. Times are UTC. Machine names are model names.

diff --git a/site/evidence.html b/site/evidence.html index 3185156fc..2d4f2b8b7 100644 --- a/site/evidence.html +++ b/site/evidence.html @@ -250,7 +250,7 @@ td.mono{font-family:var(--f-mono);font-size:12.5px;min-width:180px}td.iv{color:v 14Ethereum bytecode runs unchanged, with the documented differences of spec 7.1
Homepage Build card; litepaper Building
tested by the teamas row 13; fixes F-exec-A, F-exec-B (spec 7.5)tools/evm-smoke/smoke.mjs: deploy via viem, increment, hashLoop, eth_estimateGas, eth_getLogs; tools/exec-attacks scenarios 1 and 3; bench-log "execution layer attack fixes"Deployment, calls, reverts, logs and gas estimates behave as viem expects; chain id 4463; the prototype pgas table gives 0.0095 to 0.028 pgas per gas, below the design's band before calibration, 3 October 2026. 4 October 2026: a transaction that would cross the block's proving budget is refused by the mempool and, if forced in, aborted and charged with its nonce advanced (25 of 25 checks; 30 of 30 malformed cases). Apple M5 Max. The Prover precompile, proof records and the shard planner are not in the nodenone yet 15Every block is proven, with the proof landing within about a minute at launch
Homepage stats ("~60 s to a proof"); litepaper Proving; roadmap phase 3 gate
implementedrepo d7e1f89 (GPU proof), e01a3cc, 292e800, eedd136 (proving/igneum-prove: shard cutter, MPT witnesses, shard and aggregator guests); SP1 6.8.1; spec 7.2, 7.6proving/windows-wsl2 (SETUP-PROVER, PROVE-BLOCK) on the RTX 5090; igneum-prove-host --mode block on proving/fixtures/; bench-log "proving v0 on the RTX 5090" and "proving: devnet v4 shards"First GPU proof of an Igneum block, 4 October 2026, RTX 5090 (WSL2, SP1 cuda, mining paused): fixture block-78-increment (2 transactions), core proof 1.4 s (7.3 MB, verify 0.221 s), compressed proof 2.7 s (1.27 MB, verify 0.038 s), post-state and receipts roots identical to the node's; 15.7x and 20.6x faster than a loaded M5 Max CPU. The same day on that CPU (load 38 to 47): a three-shard block proved shard by shard and aggregated by recursion, 19 min (1,139 s) end to end, 245 to 337 s per compressed shard proof, every proof verified. What is not there: no proof is produced, carried or checked on the chain (the devnet prover is a stub that signs claims), the proving pool pays nobody (row 21), the block proven is far below one shard, and the 60-second figure remains a design target; the pass mark is the standard in docs/benchmarks/proving-e2e.md. Second RTX 5090 run, 4 October 2026 evening (job run-20261004-173115): a full shard at the provisional S_p (6.75 M pgas, 60.8 M cycles) executed in 1.63 s, core proof 8.3 s (18.1 MB), compressed proof 10.9 s (1.27 MB, verify 0.040 s); a two-shard block (13.5 M pgas) proved shard by shard (11.7 s and 10.0 s) and aggregated in 2.2 s, 24 s of GPU stages end to end, every proof verified, six tampered witnesses rejected. The two host defects (an abort after the upload, an idle wait that turned out to be an unbuffered 18 MB proof save through the WSL2 file bridge, 24 minutes) are fixed (ledger P20) 5 October 2026, live devnet with real transactions (bench-log "real transactions, the first non-empty shard proven and paid"): block 72704 shard 0, 29 transfers, 5,800 pgas, proven on the RTX 5090 Windows rig in 34 s, verified on the Apple M5 Max in 0.297 s and paid 1.7623 IGN, 53 s after the chain block executed; of about 1,400 blocks in the 20-minute window 36 were proven (the one prover takes the newest shard assigned to it), so "every block" is not yet true; a second content shard (72803, all copies skipped) failed the native-execution veto on the exporter's block structure, fixed with fixtures the same day, the node side pending the 0.3.9 rollout 5 October 2026, evening (bench-log "proving v1"): the aggregated segment record, the chain rule and the unproven rule are implemented behind proving_v1_activation_daa (branch proving-v1, not on the devnet before 0.3.11); on the RTX 5090 a chain of 8 consecutive live blocks proved and aggregated by recursion in 135.6 s with the miner on the card (17 s a block, one proof of 1,272,909 bytes attesting all 8, verified in 0.04 s); the 3-node fast-time harness paid a segment record 1.0 s after submission and refused a late one after its deadline (21 checks); the devnet itself, with one prover, carried proofs for 2.4% of blocks over 30 minutes at a block-to-record latency p50 44 s, p99 52 s. The "within about a minute" holds per proven block; "every block" needs 18 mining 5090s or 6 proving-only cards at empty blocks on the measured rates, and the mandatory rule stays off until the share is onenone yet 16A 12 GB card proves one shard in about 20 s (WITHDRAWN 5 October 2026: a 24 GB card proves a full shard at the adopted size in 4.3 s; 32 GB mines and proves)
Litepaper Proving ("The proving budget"); roadmap gate 2
designedspec 5.1 (Target), 7.6 (S_p provisional, 7,500,000 pgas = B_p / 4)PROVE-SHARD.bat on the RTX 5090 (pending); the end-to-end standard in docs/benchmarks/proving-e2e.md; bench-log "proving: devnet v4 shards"Measured on a 32 GB card, not yet on a 12 GB card. A shard at the provisional S_p is 60.8 M SP1 cycles on the prototype pgas table (9 cycles per pgas, 44 per EVM gas; the modexp entry about 100x its SP1 cost); on an RTX 5090 (4 October 2026 evening, job run-20261004-173115) it executed in 1.63 s and its compressed proof took 10.9 s, verified in 0.040 s, so the 32 GB card is inside the 20 s target with margin. Whether a 12 GB card proves it at all, and in what time, is the next measurement (an RTX 3060 and an RTX 5060 Ti 16 GB are on order). A per-shard time can be met by shrinking the shard, so the project does not use it as a pass mark 5 October 2026, evening (bench-log "proving v1", the S_p curve): measured on the RTX 5090 with SP1 6.8.1's GPU prover, the card to itself, 1-s nvidia-smi samples: an empty shard 13,874 MiB and 2.2 s; a full shard at the ADOPTED v1 budget (30,000 pgas, 4.7 M cycles) 20,434 MiB and 4.3 s; the full prototype shard (6.75 M pgas, 60 M cycles) 28,307 MiB and 10.8 s; beside the miner 15,670 and 30,039 MiB. No environment knob of SP1 moves the 13.9 GB floor and the GPU server has no options of its own, so on this build a 12 GB card proves nothing, a 16 GB card only empty shards, a 24 GB card the adopted full shard alone and beside the miner (22,210 MiB and 13.2 s, measured on the 32 GB card: the 5090's allocation pattern, not yet a run on a 24 GB card) and a 32 GB card the prototype shard beside the miner with 2.5 GB spare. The litepaper line now says so; the 12 GB gate returns when a prover build with a smaller floor is measured on a 12 GB cardnone yet -17The chip resistance claim: the strongest chip in the public model reaches 5x to 9x per joule against an RTX 5090 today (modelled); class v4 brings it to 2.1x (k = 1) to 3.9x (k about 0.33, claimed by a withdrawn product) and its second rung to about 2.8x (modelled on measured watts); class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item (designed, +0.2 ms verifier); the hot-set cache bounded at 1.067x at the ceiling (measured census of 1,024 programs) and the weak-day FPGA at most 12 percent on 12 days a century (measured census) are bounded and routed to the next class; datacentre silicon (H100 SXM, measured 7 October) does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years (modelled)
The home page's chip line, the litepaper's chip model section, the miner page's line (the texts of docs/plans/counter-asic-3-public-text-2026-10-07.md)
tested by the team (every card, the verifier, the two attack-pass censuses, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measureddocs/analysis/chip-model-v3.md 5 and 6; docs/analysis/latency-shadow-2026-10-06.md; docs/plans/counter-asic-3-status.md; docs/analysis/attack-pass/f8-uniform.md, f4-weakday.md; docs/design/class-v5-stored-state.md; the H100 and market-cap rows of 7 October; docs/plans/funding.md (the three lots)The chip model re-run on the measured class v3 and v4 rates, watts and verifier times; the hot-set census of 1,024 programs and the weak-day census of 2^24 days on the attack-pass branch; the H100 SXM bench row136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 5.1x to 9.2x; 2.1x, 3.9x, 2.8x; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 6 and 7 October 2026none yet; the three cryptanalysis lots are the next test +17The chip resistance claim: at launch the strongest chip in the public model reaches 2.1x (k = 1) to 3.9x (k about 0.33) per joule against an RTX 5090 under class v4, live from genesis on the testnet and the mainnet; the ladder's second rung brings it to about 2.8x; class v5 makes the dataset the chain's state so a stateless or stale chip is wrong on every item; the hot-set cache is bounded at 1.067x at the ceiling and the weak-day FPGA at 12 percent on 12 days a century, both routed to the next class; datacentre silicon does not change the question; a stored-dataset chip pays for itself only at about USD 100 M of market cap in two years; without class v4 the same chip would reach 5x to 9x (the class v3 baseline, the devnet's starting state, never the launch state)
the home page's chip line, the litepaper's chip section (/litepaper#chip-model), the miner page's line
tested by the team (every card, the verifier, the two attack-pass bounds, the H100), the chip itself modelled, class v5 and the ladder designed, the X9 core claimed and never measureddocs/analysis/chip-model-v3.md 5 and 6; docs/analysis/latency-shadow-2026-10-06.md; docs/plans/counter-asic-3-status.md; docs/analysis/attack-pass/f8-uniform.md, f4-weakday.md, docs/analysis/ca3-v4-uniform.md; docs/design/class-v5-stored-state.md; the H100 and market-cap rows of 7 October; docs/plans/funding.md (the three lots)the chip model's arithmetic in its file; the card rows by the benchmark package; the attack-pass harnesses tools/attack/f8-uniform and the F4 census; the verifier by igneum-pow bench136 MH/s at 350 W (5090, bench) and 290 W (app); 27 MH/s at 21 W (M5 Max); 249 MH/s (H100 SXM) at 98 percent of its read ceiling, 1.78x hash, 1.15x MH/W, a third per rented dollar; 2.33 ms per warp; 2.1x, 3.9x, 2.8x at launch; 1.067x at the ceiling; 12 percent on 12 days a century; 10.85 ms at rung 3; USD 100 M; 5.1x to 9.2x the class v3 baseline; 6 and 7 October 2026, the M5 Max, the RTX 5090 Windows rig's RTX 5090, the three-card Windows rig's RX 9070 XT and RTX 4070, a rented H100 SXM, igneum-build-1none yet; the three cryptanalysis lots are the next test 18The chip resistance measurements: the program is latency-bound (random reads), not bandwidth-bound, on every card we own, and sits beyond a card's on-chip cache
Litepaper Mining ("waits on memory latency, not on maths or bandwidth"), vs RandomX; the numbers page
tested by the teamreadwidth e752fc7 (docs/plans/read-width.md), ca2-era 78c0ee4, ca2-cache 2de19e5 (docs/plans/hot-table.md)The dependent-read probes at 32 to 1,024 MiB and the hash rate per class on the three cards; the latency-bound share = rate over the probe ceiling per loadLatency-bound share at the 1 GiB dataset: RTX 5090 0.96 (v2) and 1.01 (v3), RX 9070 XT 0.87 and 0.95, M5 Max 1.01 and 1.06; wider reads do not close the AMD gap (the 9070 XT does 2.4 G dependent reads per second at every width; the 5090 goes bandwidth-bound at 64 B, share 0.58); a 32 to 96 MiB hot table is not kept resident by any card while the dataset streams (g 0.80 to 0.87 in the added form). 5 October 2026none yet 19The lottery hash is sound as a hash: uniform output, deterministic, no out-of-bounds read, fuzzed; class v3 bit-exact on the three vendors
Litepaper vs RandomX ("Every number above is measured and logged"), the numbers page
tested by the teamca2-mixer 1ab8b21 (tests/mixer.rs, tests/scratch.rs), ca2-era 78c0ee4, ca2-soundness a465881 (docs/analysis/scratch-soundness.md), igneum-pow/tests/packs.rsThe crate suite (53 + 4 + 19 + 7), the Metal fuzz, edge, stats and determinism runs on the v3 construction, the pack vectors and 2^24 fingerprints on Metal, Apple OpenCL, the RTX 5090 and the RX 9070 XT, the 1,024-hash CPU re-check per cardClass v3 (mixer x8 + era): 200-program fuzz 200 of 200 on Metal, every tenth on Apple OpenCL; the pinned v3 packs 3/3 + 3/3 and 96 of 96 lanes on Metal and Apple OpenCL; the six era packs' fingerprints equal on the three vendors (the three-card Windows rig (RTX 5090, RTX 4070, RX 9070 XT) job run-ca2-era-pc1-20261005, 5 October 2026); the v2 exports byte-identical on the v3 crate; the final-class PC rows and the G2 re-check: job run-ca2-era-pc1b-20261005 (pending at the time of writing)none yet 20No premine, no pre-sale, no allocation: every coin is minted by the schedule and every coin goes to the block producer (80%) and the proving pool (20%)
Homepage stats and Economics tiles; litepaper Supply, Economics
implementedrepo 6ac80a3; fork "igneum-node devnet v0"; consensus/core/src/igneum.rs, coinbase.rscargo test -p kaspa-consensus-core igneum (8 pass: subsidy table, ramp, split, cap) and cargo test -p kaspa-consensus coinbase (8 pass); igneum-miner inspect 40; bench-log "igneum-node devnet v0"Coinbases on the devnet: 80/20 exact on 39 of 39 single-payee blocks, the 20% to the igneum-proving-pool-v0 output; the per-second schedule sums to under the 4,000,000,000 cap by less than 100 coins; 3,168,808,781 units per DAA second in years 0 to 2, halving at 63,115,200 DAA s. 3 October 2026, Apple M5 Max. The devnet genesis carries no allocation; the mainnet genesis does not exist yet, so the claim is about the code and the stated rule, not a launch that has happenednone yet diff --git a/site/index.html b/site/index.html index 097147471..4d75718af 100644 --- a/site/index.html +++ b/site/index.html @@ -219,7 +219,7 @@
01
The same card finds the block and proves it.

Both jobs pay. When you stop, the card still games.

02
A fair start.

Nobody holds a coin before block one. The protocol carries no fee. The one payment to the project is the Ember software’s optional 1% dev fee, like other GPU miners, off with one flag.

-
03
Built for graphics cards.

A new mining program every hour, so no chip is built for it. In our public model the strongest chip reaches 5x to 9x per joule against an RTX 5090 today; class v4, now on the vote, brings that to 2.1x to 3.9x. The model and every measurement are public.

+
03
Built for graphics cards.

At launch the strongest chip in our public model reaches 2.1x to 3.9x per joule against an RTX 5090, under class v4 from the first block. Class v5 then makes the dataset the chain’s own state, so a chip that stores it or recomputes it is wrong on every item. Without class v4 the same chip would reach 5x to 9x. The model and every measurement are public.

diff --git a/site/journey.html b/site/journey.html index 24b824955..9e1a8d4a4 100644 --- a/site/journey.html +++ b/site/journey.html @@ -208,7 +208,7 @@
-
Six phases · updated 6 Oct 2026
+
Six phases · updated 7 Oct 2026

The journey.

Six phases from the specification to a fair launch. Each closes at its gate, a measurement published whether it passes or fails, so there is no date to slip. Below the phases, the latest entries of the engineering log.

@@ -222,7 +222,8 @@
The log, newest first

Lately, in the log.

-
log

Counter ASIC 3.0

Counter ASIC 3.0: the class v4 rehearsal

+
log

The first 16 GB card

The first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure on the RTX 5090 Windows rig

+
log

Counter ASIC 3.0

Counter ASIC 3.0: the class v4 rehearsal

log

16:01Z: Ember run 6 on the three-card Windows rig

log

Counter ASIC 3.0 item 2

Counter ASIC 3.0 item 2: the per-day derivation

log

Counter ASIC 3.0 item 8

Counter ASIC 3.0 item 8: program work in the latency shadow

@@ -255,13 +256,12 @@
log

The program id split

The program id split: why the Apple M5 Max rejected the RTX 5090 Windows rig's proofs, and the verifier at 114 s

log

Live devnet: the first shards proven, verified and paid

log

One-click Windows workers

One-click Windows workers: what the Apple M5 Max could measure

+
log

First live hourly swap: no pause on Mac, NVIDIA or AMD

First hourly program swap on the live devnet: compile-ahead, no pause, two cards

log

Proving: devnet v4 shards on the Apple M5 Max CPU, loaded machine

log

First live finality lock: 77.4% of weight, 17 voters

First finality lock on the live devnet: checkpoint 242 at 77.4% of all weight, two hours after genesis

log

The gfx1036 worker fault and what the Apple M5 Max could and could…

The gfx1036 worker fault and what the Apple M5 Max could and could not reproduce

log

A node 60 s behind the clock is silently dead

-
log

First machine on the one-click app: a 5090 at 118 MH/s

First machine on the Igneum Miner app: the RTX 5090 Windows rig's RTX 5090 at 118 MH/s, via Setup.exe

-
log

Difficulty rule v2

Difficulty rule v2: the live oscillation, its cause, the DAG replay, the fix behind a height switch

-
log

The observer stored nothing for 78 minutes, then 7,022 blocks in two…

The observer stored nothing for 78 minutes, then 7,022 blocks in two minutes

+
log

First machine on the one-click app: a 5090 at 118 MH/s

First machine on the Igneum Miner app: the RTX 5090 Windows rig's RTX 5090 at 118 MH/s, via Setup.exe

Every entry is a dated heading of the engineering log, where the commands and the hardware are. The phases and their gates are the litepaper’s roadmap.

diff --git a/site/journey.json b/site/journey.json index 0b30cc1b7..9f32d2ab0 100644 --- a/site/journey.json +++ b/site/journey.json @@ -1,5 +1,5 @@ { - "updated": "2026-10-06", + "updated": "2026-10-07", "stage": "phase-3", "phases": [ { @@ -50,6 +50,11 @@ } ], "log": [ + { + "date": "2026-10-07", + "text": "The first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure on the RTX 5090 Windows rig", + "short": "The first 16 GB card" + }, { "date": "2026-10-06", "text": "Counter ASIC 3.0: the class v4 rehearsal", @@ -215,6 +220,11 @@ "text": "One-click Windows workers: what the Apple M5 Max could measure", "short": "One-click Windows workers" }, + { + "date": "2026-10-04", + "text": "First hourly program swap on the live devnet: compile-ahead, no pause, two cards", + "short": "First live hourly swap: no pause on Mac, NVIDIA or AMD" + }, { "date": "2026-10-04", "text": "Proving: devnet v4 shards on the Apple M5 Max CPU, loaded machine", @@ -239,16 +249,6 @@ "date": "2026-10-04", "text": "First machine on the Igneum Miner app: the RTX 5090 Windows rig's RTX 5090 at 118 MH/s, via Setup.exe", "short": "First machine on the one-click app: a 5090 at 118 MH/s" - }, - { - "date": "2026-10-04", - "text": "Difficulty rule v2: the live oscillation, its cause, the DAG replay, the fix behind a height switch", - "short": "Difficulty rule v2" - }, - { - "date": "2026-10-04", - "text": "The observer stored nothing for 78 minutes, then 7,022 blocks in two minutes", - "short": "The observer stored nothing for 78 minutes, then 7,022 blocks in two…" } ] } diff --git a/site/lib/money-regen.mjs b/site/lib/money-regen.mjs new file mode 100644 index 000000000..eb12337f5 --- /dev/null +++ b/site/lib/money-regen.mjs @@ -0,0 +1,16 @@ +#!/usr/bin/env node +// Rewrites the four tables in site/money.js from app/igneum-app/ui/app.js (View.REGIONS, ISO_CURRENCY, EU_MEMBERS, +// CURRENCY_CODES). Run after a change to the app's tables, then commit both; site/lib/money.test.mjs fails on drift. +import { readFileSync, writeFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; +const here = dirname(fileURLToPath(import.meta.url)); +const m = { exports: {} }; new Function('module', readFileSync(join(here, '../../app/igneum-app/ui/app.js'), 'utf8'))(m); +const V = m.exports.View, p = join(here, '../money.js'); +const regions = V.REGIONS.map(r => ({ code: r.code, name: r.name, cur: r.cur, price: r.price, source: r.source || '', restricted: !!r.restricted })); +let s = readFileSync(p, 'utf8'); +s = s.replace(/ M\.REGIONS = .*\n/, ' M.REGIONS = ' + JSON.stringify(regions) + ';\n'); +s = s.replace(/ M\.ISO_CURRENCY = .*\n/, ' M.ISO_CURRENCY = ' + JSON.stringify(V.ISO_CURRENCY) + ';\n'); +s = s.replace(/ M\.EU_MEMBERS = .*\n/, ' M.EU_MEMBERS = ' + JSON.stringify(V.EU_MEMBERS) + ';\n'); +s = s.replace(/ M\.CURRENCY_CODES = .*\n/, ' M.CURRENCY_CODES = ' + JSON.stringify(V.CURRENCY_CODES) + ';\n'); +writeFileSync(p, s); console.log('site/money.js tables regenerated'); diff --git a/site/lib/money.test.mjs b/site/lib/money.test.mjs new file mode 100644 index 000000000..6a42e2b8a --- /dev/null +++ b/site/lib/money.test.mjs @@ -0,0 +1,48 @@ +// node --test site/lib/money.test.mjs (the pre-push gate runs it beside the explorer and emission tests) +// site/money.js is the app's currency rules for the site: its tables must equal the app's, its formatter must place the +// symbol as the locale does, and the picker's choice must follow navigator.language with a saved override winning. +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; +const here = dirname(fileURLToPath(import.meta.url)); +const load = (p) => { const mod = { exports: {} }; new Function('module', 'window', readFileSync(p, 'utf8'))(mod, undefined); return mod.exports; }; +const M = load(join(here, '../money.js')); +const V = load(join(here, '../../app/igneum-app/ui/app.js')).View; + +test('the site tables equal the app tables (regenerate with node site/lib/money-regen.mjs)', (t) => { + // the app side rides release-0.3.21 first; on a tree whose app has no ISO_CURRENCY yet the drift check waits for it + if (!V.ISO_CURRENCY) { t.skip('the app on this tree carries no currency tables yet (currency-21 app side not merged here)'); return; } + assert.deepEqual(M.REGIONS, V.REGIONS.map(r => ({ code: r.code, name: r.name, cur: r.cur, price: r.price, source: r.source || '', restricted: !!r.restricted }))); + assert.deepEqual(M.ISO_CURRENCY, V.ISO_CURRENCY); assert.deepEqual(M.EU_MEMBERS, V.EU_MEMBERS); assert.deepEqual(M.CURRENCY_CODES, V.CURRENCY_CODES); + for (const c of ['GBP', 'EUR', 'JPY', 'CHF']) assert.deepEqual(M.minorOf(c), V.minorOf(c), c); +}); + +test('the picker follows navigator.language, a saved choice wins, no row falls back to USD and asks', () => { + assert.equal(M.currencyChoice('', 'de-DE').code, 'EUR'); assert.equal(M.currencyChoice('', 'en-GB').code, 'GBP'); assert.equal(M.currencyChoice('', 'fr-CA').code, 'CAD'); assert.equal(M.currencyChoice('', 'en-AU').code, 'AUD'); + assert.equal(M.currencyChoice('USD', 'de-DE').code, 'USD'); assert.equal(M.currencyChoice('USD', 'de-DE').source, 'override'); + const eo = M.currencyChoice('', 'eo'); assert.equal(eo.code, 'USD'); assert.equal(eo.prompt, true); + assert.equal(M.currencyChoice('zzz', 'eo').prompt, true, 'an unknown saved code is ignored'); +}); + +test('the default tariff is the region row, else the first table row in the currency, and the cost line uses one formatter', () => { + const de = M.tariffFor(M.currencyChoice('', 'de-DE')); assert.equal(de.price, 38.69); assert.match(de.source, /Eurostat/); assert.equal(de.region, 'Germany'); + const gbp = M.tariffFor(M.currencyChoice('GBP', 'de-DE')); assert.equal(gbp.price, 26.32); assert.equal(gbp.region, 'United Kingdom'); + const fr = M.tariffFor(M.currencyChoice('', 'fr-FR')); assert.equal(fr.price, 28.96, 'an EU member on the euro takes the EU average'); + assert.equal(M.tariffFor(M.currencyChoice('', 'sv-SE')), null, 'no table tariff in kronor: the picker says so'); + assert.equal(M.fmtMoney(M.costPerDay(227, 38.69), 'EUR', 'de-DE'), '2,11 €'); + assert.equal(M.fmtMoney(M.costPerDay(227, 26.32), 'GBP', 'en-GB'), '£1.43'); + assert.equal(M.fmtMoney(M.costPerDay(227, 17.7), 'USD', 'en-US'), '$0.96'); + assert.equal(M.costPerDay(null, 26.32), null, 'no watts, no cost'); + assert.equal(M.fmtMoney(1234.5, 'USD', 'en-US'), '$1,235'); assert.equal(M.fmtMoney(1.5, 'JPY', 'en-US'), '¥2'); +}); + +test('yourcard.js loads money.js and shows the electricity line with the currency switch; no hand-built money string', () => { + const yc = readFileSync(join(here, '../yourcard.js'), 'utf8'); + assert.ok(yc.includes("'/money.js'"), 'loads the module when the page did not'); + assert.ok(yc.includes('window.IgneumMoney') && yc.includes('.fmtMoney(') && yc.includes('.currencyChoice(') && yc.includes('.tariffFor('), 'the module is the only money path'); + assert.ok(yc.includes('igneum-currency'), 'the saved choice'); + assert.ok(yc.includes('class="cur"'), 'the switch'); + assert.equal(/'£'|"£"/.test(yc), false); +}); diff --git a/site/litepaper.html b/site/litepaper.html index c44f1b3ff..4b69a6e46 100644 --- a/site/litepaper.html +++ b/site/litepaper.html @@ -310,7 +310,7 @@ body.all .pager{display:none}

Abstract

-

Igneum is a proof-of-work blockchain built for graphics cards, where NVIDIA cards also prove every block with zero-knowledge proofs and sell proving to other chains. The strongest chip in our public model reaches 5x to 9x per joule against an RTX 5090 today; class v4, now on the vote, brings that to 2.1x to 3.9x, and class v5 makes the dataset the chain’s own state, so a chip that stores it or recomputes it is wrong on every item: the chip model, every number labelled measured, modelled, claimed or designed.

+

Igneum is a proof-of-work blockchain built for graphics cards, where NVIDIA cards also prove every block with zero-knowledge proofs and sell proving to other chains. At launch the strongest chip in our public model reaches 2.1x to 3.9x per joule against an RTX 5090, under class v4 from the first block; class v5 makes the dataset the chain’s own state, so a chip that stores it or recomputes it is wrong on every item; without class v4 the same chip would reach 5x to 9x: the chip model, every number labelled measured, modelled, claimed or designed.

It runs the Ethereum virtual machine, so anything built for Ethereum runs on Igneum unchanged. Transactions are included in about one second, proven within about a minute at launch, and locked by miners within about two. There is no premine, no pre-sale, no treasury taken from emission, no stake anywhere in consensus, and no dependence on any other chain. Mining stays open to anyone with a GPU because the mining program changes every hour, so a chip built for one program is useless for the next, and a chip for the whole program space is a GPU without the graphics parts. No scheduled human release is needed to keep it that way. Writing new code, including an emergency fix to the proof system, is the one thing that takes a person, and it activates only on miner signalling.

1 / s
blocks, rising to 10
@@ -435,17 +435,17 @@ body.all .pager{display:none}

Three ideas carry the chip resistance. The hash rewrites itself. A new program every hour, drawn from the chain. Its memory pattern changes with it. The rules change on a schedule fixed at launch. No release, no vote. These are automatic schedule changes: they defeat a chip wired for one datapath and they need no human fork. Against a chip that stores the dataset every drawn parameter is firmware, and what meets that chip is the latency-shadow work (class v4) and the price per joule (the Horizon lane analysis, 6 October 2026, section 5.4; ledger M32). It waits on memory, not maths. Every hash is a chain of random reads into a table too big for a chip to carry. The wait is the same physics for everyone. Miners hold the switch. Spare defences are written into the rules, switched off. A miner signal turns one on, at the class-change threshold: miners signal three things at three thresholds, 60 percent of blue blocks over two weeks for a parameter genesis leaves open, 90 percent for an upgrade (new code), and 95 percent with a floor height for a class change. No fork.

The work that waits can grow. Class v4 adds a block of latency-shadow arithmetic to every hash, about 100,000 integer operations that run while the memory reads are in flight, so a chip that stores the whole dataset still has to pay for a core. That size sits on a ladder fixed at genesis, six rungs from about 100,000 to about 1,000,000 operations, and it moves one rung at a time only when 90 percent of blue blocks in each of seven consecutive days ask for it; it can never move two rungs inside a week and never past a rung the reference verifier cannot check under 10 ms with its sibling thread busy (measured on the build server, 6 October 2026: the first three rungs pass at 8.8, 8.9 and 9.2 ms, the fourth misses by 0.08 ms on a loaded box and stays out until a quiet re-measurement, the two doublings are out at 12.4 and 15.0 ms). What it buys, on the measured cards: against a dataset-storing chip whose core costs what an RTX 5090's does per operation, the chip's per-joule edge falls from 2.1x at the first rung to 1.3x at the third; against a core as good as the one Bitmain claimed for its withdrawn Antminer X9 (about 3x per joule over a desktop CPU, never measured), from 3.9x to 2.8x. What it costs, per rung, is measured too: the Apple tier gives up 3 points of rate at the first step and 6 more at the second, the RTX 5090 nothing until the second; so the miners who pay for a step are the ones who take it (ledger M34).

The chip model

-

We price the strongest chip we can design against an RTX 5090 and publish the arithmetic. The honest card: an RTX 5090 mines class v3 at 136 MH/s on 350 W in the bench and 290 W in the app (measured, 6 October 2026); an Apple M5 Max at 27 MH/s on 21 W (measured, 6 October 2026); an H100 SXM at 249 MH/s, 98 percent of its random-read ceiling like the 5090, 1.78x the 5090’s hash at 1.15x the tuned 5090’s hash per watt and a third of the hash per rented dollar (measured, 7 October 2026), so datacentre silicon does not change the chip question. The CPU verifier takes 2.33 ms per warp of 32 hashes on one M5 Max core under class v4 (measured, 6 October 2026), against a gate of 10 ms.

+

We price the strongest chip we can design against an RTX 5090 and publish the arithmetic. Class v4 is live from the first block on the testnet and the mainnet (the ladder’s rung 0 at genesis), so the launch number is the class v4 row. The honest card: an RTX 5090 mines class v3 at 136 MH/s on 350 W in the bench and 290 W in the app (measured, 6 October 2026); an Apple M5 Max at 27 MH/s on 21 W (measured, 6 October 2026); an H100 SXM at 249 MH/s, 98 percent of its random-read ceiling like the 5090, 1.78x the 5090’s hash at 1.15x the tuned 5090’s hash per watt and a third of the hash per rented dollar (measured, 7 October 2026), so datacentre silicon does not change the chip question. The CPU verifier takes 2.33 ms per warp of 32 hashes on one M5 Max core under class v4 (measured, 6 October 2026), against a gate of 10 ms.

- - - + + +
The chip and the classEdge over an RTX 5090 per jouleLabel and date
A memory-controller chip that stores the whole dataset (the Ethash class), class v35x to 9x (5.1x on GDDR7, 9.2x on eight HBM3 stacks; the Ethash chips of this class reached 2.1x to 4.8x)modelled, 6 October 2026; the precedent measured by others, 2020 to 2022
The same chip under class v4 (about 100,000 integer ops per hash in the latency shadow, so the chip carries a GPU-class datapath beside its memory)2.1x with a core as costly per op as the GPU’s (k = 1); 3.9x with the core Bitmain claimed for its Antminer X9 (k about 0.33), a product withdrawn before any unit shippedmodelled on measured card watts, 6 October 2026; the X9 figure claimed, never measured
The same chip at the ladder’s second rung (about 200,000 ops per hash)about 2.8xmodelled, 7 October 2026
At launch: a memory-controller chip that stores the whole dataset, under class v4 (about 100,000 integer ops per hash in the latency shadow, so the chip carries a GPU-class datapath beside its memory)2.1x with a core as costly per op as the GPU’s (k = 1); 3.9x with the core Bitmain claimed for its Antminer X9 (k about 0.33), a product withdrawn before any unit shippedmodelled on measured card watts, 6 October 2026; the X9 figure claimed, never measured
The same chip at the ladder’s second rung (about 200,000 ops per hash), reached by miner signalabout 2.8xmodelled, 7 October 2026
Any chip under class v5, where the dataset is the chain’s own statea stateless or stale chip is wrong on every item, so the stored-dataset chip and the recompute chip are removed as categories; the verifier pays 0.2 ms more per warpdesigned, 7 October 2026
A chip caching the hottest 0.1 percent of items (about 1 MB of SRAM)bounded at 1.067x at the ceiling, 1.005x on about half the hours and 1.048x on 5 percentmeasured census of 1,024 programs, 7 October 2026; the source rule in the next class
A per-day FPGA that recomputes the dataset with cheap multipliers on a weak dayat most 12 percent more hash rate on 12 days a century, nothing on the other days and nothing for any chipmeasured census of 2^24 days, 7 October 2026; the rule in the next class
When a stored-dataset chip pays for itselfat about USD 100 M of market cap in the first two years, not beforemodelled, 7 October 2026
The baseline the work started from: the same chip under class v3, without the shadow (the Ethash class)5x to 9x (5.1x on GDDR7, 9.2x on eight HBM3 stacks; the Ethash chips of this class reached 2.1x to 4.8x)modelled, 6 October 2026; the precedent measured by others, 2020 to 2022; never the launch state
-

What a miner sees from this. Class v4 costs a 5090 about 80 W more for 0.2 percent of rate, an M5 Max 16 W more for 1.5 percent, an RX 9070 XT and an RTX 4070 nothing (all measured, 6 October 2026). The ladder that sets how much work rides in the shadow starts at rung 0 at the testnet genesis and climbs by miner signal; its third rung is inadmissible today because a server core verifies it in 10.85 ms, over the gate (measured, 7 October 2026). The next test of the model is not ours: the cryptanalysis plan buys three external lots against the mixer, the chained cache and the acceptance rule.

+

What a miner sees from this. Class v4 costs a 5090 about 80 W more for 0.2 percent of rate, an M5 Max 16 W more for 1.5 percent, an RX 9070 XT and an RTX 4070 nothing (all measured, 6 October 2026). The ladder that sets how much work rides in the shadow starts at rung 0 at genesis and climbs by miner signal; its third rung is inadmissible today because a server core verifies it in 10.85 ms, over the gate (measured, 7 October 2026). On the devnet, which started on class v3, class v4 arrives by miner signal at a published height (a devnet fact, not a launch one). The next test of the model is not ours: the cryptanalysis plan buys three external lots against the mixer, the chained cache and the acceptance rule.

No hash has stayed free of chips forever. Igneum does not claim to. It states the gain its own model finds, the response takes a week, and both are measured. The model is public: the numbers; the claim is tested by paid independent cryptanalysis and the public benchmark. Monero has run on RandomX since 2019 (approximate) with no chip shipped. Bitmain opened Antminer X9 pre-orders on 26 December 2025 for July 2026 delivery, then withdrew the product in mid-May 2026 and refunded buyers before any unit shipped; none has been independently benchmarked. A box with about a 2x per joule edge over the best CPUs, and about 3x over a desktop, was withdrawn rather than face a RandomX re-tune of 1.5x or more. That is the band Igneum’s class v4 model sits in (2.1x to 3.9x over an RTX 5090), and the defence that held was a maintained algorithm with a credible upgrade path, which is what the ladder is.

One thing takes a person, here and on every chain that exists: writing new code. A chain cannot safely write its own generator, and it cannot safely tell a chip from a wave of honest new cards by hashrate alone. If the design above ever failed, anyone could publish a new generator and miners would switch it on by signalling, as Monero's community can fork. Igneum is built to make that day unlikely, and does not depend on avoiding it.

diff --git a/site/miner.html b/site/miner.html index 567f5c0cb..9c2470043 100644 --- a/site/miner.html +++ b/site/miner.html @@ -302,7 +302,7 @@ pre b{color:var(--molten-text);font-weight:500}

Graphics cards only. A new mining program every hour, so no chip is built for it. 80% of every block to the card that finds it, 20% to the cards that prove it. No premine, no stake, no fee to any team. Every number above has a row in the bench table.

-

Your card against the strongest chip we can price: an RTX 5090 at 136 MH/s on 350 W (measured 6 October 2026), the chip 5x to 9x per joule in the public model today, 2.1x to 3.9x under class v4 (modelled on measured watts), and under class v5 wrong on every item because the dataset is the chain’s own state (designed); the model and the measurements are public.

+

Your card against the strongest chip we can price: an RTX 5090 at 136 MH/s on 350 W (measured 6 October 2026); at launch the chip reaches 2.1x to 3.9x per joule under class v4 (modelled on measured watts), and under class v5 it is wrong on every item because the dataset is the chain’s own state (designed). Without class v4 it would be 5x to 9x. The model and the measurements are public.

diff --git a/site/miners.html b/site/miners.html index 58bc33551..3f9c74794 100644 --- a/site/miners.html +++ b/site/miners.html @@ -209,7 +209,7 @@ table{min-width:560px}
-
6 measured rows, 0 fleet tuning models
+
7 measured rows, 0 fleet tuning models

GPU bench table

Measured hash rates per card on the Igneum lottery hash, with the generator version, the miner version, the date and the log entry behind each number.

@@ -220,13 +220,13 @@ table{min-width:560px}

The table

One row per card, generator version and miner version. The rate is the best one measured. Integrated GPUs are not listed. Prototype rows are bench numbers from before the devnet and say so in the miner column.

-
CardGeneratorBest MH/sMH per wattMinerDateSourceWho measured it
Apple M5 Max (40 GPU cores, Metal)
v145.2not measuredproto-metal bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090 first run (the Apple row of the same table)measured by the team. genesis program, 1 GiB dataset
Apple M5 Max (40 GPU cores, Metal)
v226.7not measuredigneum-miner devnet v4, Metal worker with prepare2026-10-04bench log: 4 October 2026, first hourly program swap on the live devnet: compile-ahead, no pause, two cardsmeasured by the team. live devnet v4, unbroken through the hour boundary
Apple silicon laptop (model not reported)
v224.3not measuredIgneum Miner 0.3.1 (DMG)2026-10-04bench log: 4 October 2026, first outside machine on the devnet: an Apple silicon laptop through the Igneum Miner appreported by the fleet. 21.0 MH/s average over 7 minutes, 24.3 MH/s at the moment of the report, 33 accepted blocks
NVIDIA RTX 5090 (32 GB)
v1229not measuredproto-cuda bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090, memory-hard dataset (pack igneum-genesis-mh)measured by the team. genesis program, 104 loads per hash, 1 GiB dataset
NVIDIA RTX 5090 (32 GB)
v1185.3not measuredproto-cuda bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090 first run, dataset sweep and second programmeasured by the team. hourly program, 128 loads per hash, 1 GiB dataset
NVIDIA RTX 5090 (32 GB)
v2124.2not measuredIgneum Miner 0.3.0 package, prebuilt NVRTC worker2026-10-04bench log: 4 October 2026, the gfx1036 worker fault and what the Apple M5 Max could and could not reproducemeasured by the team. live devnet v4, 128 loads per hash, CPU re-check clean, 0 rejected
+
CardGeneratorBest MH/sMH per wattMinerDateSourceWho measured it
Apple M5 Max (40 GPU cores, Metal)
v145.2not measuredproto-metal bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090 first run (the Apple row of the same table)measured by the team. genesis program, 1 GiB dataset
Apple M5 Max (40 GPU cores, Metal)
v226.7not measuredigneum-miner devnet v4, Metal worker with prepare2026-10-04bench log: 4 October 2026, first hourly program swap on the live devnet: compile-ahead, no pause, two cardsmeasured by the team. live devnet v4, unbroken through the hour boundary
Apple silicon laptop (model not reported)
v224.3not measuredIgneum Miner 0.3.1 (DMG)2026-10-04bench log: 4 October 2026, first outside machine on the devnet: an Apple silicon laptop through the Igneum Miner appreported by the fleet. 21.0 MH/s average over 7 minutes, 24.3 MH/s at the moment of the report, 33 accepted blocks
NVIDIA RTX 5060 Ti (16 GB)
v230.90.3Igneum Miner 0.3.19 package, prebuilt NVRTC worker (bench mode, class v4 program)2026-10-07bench log: 7 October 2026, the first 16 GB card: an RTX 5060 Ti in a Thunderbolt enclosure (run b)measured by the team. class v4 program, 128 loads per hash, 1 GiB dataset, 10-minute window on the card alone at the stock 180 W limit: 114.8 W mean; PCIe 4.0 x4 through the enclosure
NVIDIA RTX 5090 (32 GB)
v1229not measuredproto-cuda bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090, memory-hard dataset (pack igneum-genesis-mh)measured by the team. genesis program, 104 loads per hash, 1 GiB dataset
NVIDIA RTX 5090 (32 GB)
v1185.3not measuredproto-cuda bench (prototype, not mining)2026-10-03bench log: 3 October 2026, RTX 5090 first run, dataset sweep and second programmeasured by the team. hourly program, 128 loads per hash, 1 GiB dataset
NVIDIA RTX 5090 (32 GB)
v2124.2not measuredIgneum Miner 0.3.0 package, prebuilt NVRTC worker2026-10-04bench log: 4 October 2026, the gfx1036 worker fault and what the Apple M5 Max could and could not reproducemeasured by the team. live devnet v4, 128 loads per hash, CPU re-check clean, 0 rejected

How a row gets here

Every row names the engineering log entry or the job it came from. "Measured by the team" means our own hardware and our own log. "Reported by the fleet" means a machine we do not own, read from the status lines its miner uploads.

MH per watt needs the card's power draw during the run. The app reads it on NVIDIA cards through the driver. Rows get the figure when a run records it.

There is no other Igneum miner to compare with yet, so this table compares cards, not miners. The app that produces these rows: the miner page.

-

Rows: 6. Each row names the engineering log entry it came from.

+

Rows: 7. Each row names the engineering log entry it came from.

Fleet tuning priors

Ember Tune runs on every card the app mines with: the power limit and the core clock are stepped on the live program and the card keeps the point with the best MH per watt within 1% of its top rate. Every finished tune is reported back without anything that identifies the owner, and the fleet's median point per card model, driver major and program class comes back down inside the signed update manifest as the starting point for the next card of that model. A model needs 5 reports before its prior is used.

diff --git a/site/money.js b/site/money.js new file mode 100644 index 000000000..82bdf4f90 --- /dev/null +++ b/site/money.js @@ -0,0 +1,61 @@ +/* Igneum money (currency-21, 7 October 2026): the site's copy of the miner app's currency rules, for the card picker + (yourcard.js) and any page that shows a money figure. No IP lookup: navigator.language's region picks the currency and + the default tariff; a saved choice (localStorage igneum-currency) wins; every figure goes through one Intl.NumberFormat + call with the currency code and the narrow symbol, placed as the locale places it; the user's own tariff is the + number, so no exchange rate exists anywhere. The tables below are generated from app/igneum-app/ui/app.js (View.REGIONS, + View.ISO_CURRENCY, View.EU_MEMBERS, View.CURRENCY_CODES); site/lib/money.test.mjs fails when they drift, and + `node site/lib/money-regen.mjs` rewrites them. A classic script (window.IgneumMoney) so yourcard.js can load it on + pages that carry no module tag; under node it also exports through module.exports for the test. */ +(function (root) { + var M = {}; + M.REGIONS = [{"code":"gb","name":"United Kingdom","cur":"GBP","price":26.32,"source":"Ofgem cap, 1 October to 31 December 2026","restricted":false},{"code":"ie","name":"Ireland","cur":"EUR","price":40.42,"source":"Eurostat, second half of 2025","restricted":false},{"code":"de","name":"Germany","cur":"EUR","price":38.69,"source":"Eurostat, second half of 2025","restricted":false},{"code":"be","name":"Belgium","cur":"EUR","price":34.99,"source":"Eurostat, second half of 2025","restricted":false},{"code":"eu","name":"European Union, other","cur":"EUR","price":28.96,"source":"Eurostat, second half of 2025, the EU average","restricted":false},{"code":"hu","name":"Hungary","cur":"EUR","price":10.82,"source":"Eurostat, second half of 2025, in euro cents","restricted":false},{"code":"mt","name":"Malta","cur":"EUR","price":12.82,"source":"Eurostat, second half of 2025","restricted":false},{"code":"bg","name":"Bulgaria","cur":"EUR","price":13.55,"source":"Eurostat, second half of 2025, in euro cents","restricted":false},{"code":"us","name":"United States","cur":"USD","price":17.7,"source":"EIA average, second half of 2025","restricted":false},{"code":"kz","name":"Kazakhstan","cur":"USD","price":4,"source":"about 4 c, a secondary source, approximate","restricted":false},{"code":"py","name":"Paraguay","cur":"USD","price":4.4,"source":"ANDE crypto tariff, 4.4 to 6 c; every crypto contract ends 31 December 2027","restricted":false},{"code":"ir","name":"Iran","cur":"USD","price":1,"source":"licensed mining tariff, about 1 c, a secondary source, approximate","restricted":false},{"code":"et","name":"Ethiopia","cur":"USD","price":2,"source":"2 to 5.3 c, a secondary source","restricted":false},{"code":"ng","name":"Nigeria","cur":"USD","price":4.8,"source":"hosted, 4.8 c, a secondary source","restricted":false},{"code":"ru-mow","name":"Russia, Moscow region","cur":"USD","price":0,"source":"","restricted":true},{"code":"ru-irk","name":"Russia, Irkutsk","cur":"USD","price":0,"source":"","restricted":true},{"code":"ru-bur","name":"Russia, Buryatia","cur":"USD","price":0,"source":"","restricted":true},{"code":"ru-zab","name":"Russia, Zabaikalsky","cur":"USD","price":0,"source":"","restricted":true},{"code":"ru","name":"Russia, other region","cur":"USD","price":0,"source":"","restricted":true},{"code":"cn","name":"China","cur":"USD","price":0,"source":"","restricted":true},{"code":"other","name":"Somewhere else","cur":"USD","price":0,"source":"","restricted":false}]; + M.ISO_CURRENCY = {"at":"EUR","be":"EUR","cy":"EUR","de":"EUR","ee":"EUR","es":"EUR","fi":"EUR","fr":"EUR","gr":"EUR","hr":"EUR","ie":"EUR","it":"EUR","lt":"EUR","lu":"EUR","lv":"EUR","mt":"EUR","nl":"EUR","pt":"EUR","si":"EUR","sk":"EUR","gb":"GBP","us":"USD","ca":"CAD","au":"AUD","nz":"NZD","ch":"CHF","li":"CHF","se":"SEK","no":"NOK","dk":"DKK","is":"ISK","pl":"PLN","cz":"CZK","hu":"HUF","ro":"RON","bg":"BGN","rs":"RSD","tr":"TRY","ua":"UAH","ge":"GEL","kz":"KZT","ru":"RUB","jp":"JPY","kr":"KRW","cn":"CNY","hk":"HKD","tw":"TWD","sg":"SGD","my":"MYR","th":"THB","vn":"VND","ph":"PHP","id":"IDR","in":"INR","pk":"PKR","bd":"BDT","ae":"AED","sa":"SAR","il":"ILS","ir":"IRR","za":"ZAR","ng":"NGN","ke":"KES","eg":"EGP","ma":"MAD","et":"ETB","br":"BRL","mx":"MXN","ar":"ARS","cl":"CLP","co":"COP","pe":"PEN","py":"PYG"}; + M.EU_MEMBERS = ["at","be","bg","hr","cy","cz","dk","ee","fi","fr","de","gr","hu","ie","it","lv","lt","lu","mt","nl","pl","pt","ro","sk","si","es","se"]; + M.CURRENCY_CODES = ["GBP","EUR","USD","CAD","AUD","AED","ARS","BDT","BGN","BRL","CHF","CLP","CNY","COP","CZK","DKK","EGP","ETB","GEL","HKD","HUF","IDR","ILS","INR","IRR","ISK","JPY","KES","KRW","KZT","MAD","MXN","MYR","NGN","NOK","NZD","PEN","PHP","PKR","PLN","PYG","RON","RSD","RUB","SAR","SEK","SGD","THB","TRY","TWD","UAH","VND","ZAR"]; + var MINOR = { GBP: ['pence', 'p'], EUR: ['euro cents', 'c'], USD: ['cents', 'c'], CAD: ['cents', 'c'], AUD: ['cents', 'c'], NZD: ['cents', 'c'], CHF: ['rappen', 'rp'], SEK: ['öre', 'öre'], NOK: ['øre', 'øre'], DKK: ['øre', 'øre'], PLN: ['grosze', 'gr'], CZK: ['haléře', 'h'], INR: ['paise', 'p'], BRL: ['centavos', 'c'], MXN: ['centavos', 'c'], ZAR: ['cents', 'c'], JPY: ['yen', '¥'], KRW: ['won', '₩'] }; + M.minorOf = function (cur) { + cur = String(cur || '').toUpperCase(); var digits = 2; + try { digits = new Intl.NumberFormat('en', { style: 'currency', currency: cur }).resolvedOptions().maximumFractionDigits; } catch (e) { } + var mm = MINOR[cur] || (digits === 0 ? [cur.toLowerCase(), cur] : ['cents', 'c']); + return { word: mm[0], abbr: mm[1], digits: digits }; + }; + M.fmtMoney = function (v, cur, loc) { + if (v === null || v === undefined || isNaN(v)) return ''; + var d = v >= 100 ? 0 : M.minorOf(cur).digits; + try { return new Intl.NumberFormat(loc || 'en-GB', { style: 'currency', currency: cur, currencyDisplay: 'narrowSymbol', minimumFractionDigits: d, maximumFractionDigits: d }).format(v).replace(/[\u00a0\u202f]/g, ' '); } + catch (e) { return cur + ' ' + (d ? v.toFixed(d) : String(Math.round(v))); } + }; + M.regionFromLocale = function (lang) { + lang = String(lang || '').trim(); if (!lang) return ''; var reg = ''; + try { var l = new Intl.Locale(lang); reg = l.region || (l.maximize ? l.maximize().region : '') || ''; } catch (e) { var mm = /^[A-Za-z]{2,3}[-_]([A-Za-z]{2})\b/.exec(lang); reg = mm ? mm[1] : ''; } + return /^[A-Za-z]{2}$/.test(reg) ? reg.toLowerCase() : ''; + }; + var synth = {}; + function regionName(code) { try { var n = new Intl.DisplayNames(['en'], { type: 'region' }).of(code.toUpperCase()); if (n && n !== code.toUpperCase()) return n; } catch (e) { } return code.toUpperCase(); } + M.regionOf = function (code) { + for (var i = 0; i < M.REGIONS.length; i++) if (M.REGIONS[i].code === code) return M.REGIONS[i]; + if (!/^[a-z]{2}$/.test(code || '')) return null; + if (synth[code]) return synth[code]; + var cur = M.ISO_CURRENCY[code] || '', eu = M.EU_MEMBERS.indexOf(code) >= 0 && cur === 'EUR', avg = M.regionOf('eu'); + return (synth[code] = { code: code, name: regionName(code), cur: cur || 'USD', unknown: !cur, price: eu && avg ? avg.price : 0, source: eu && avg ? avg.source : '' }); + }; + // the currency in force: a saved choice, else the locale's region, else USD with the prompt + M.currencyChoice = function (saved, lang) { + var ov = String(saved || '').toUpperCase(), loc = M.regionFromLocale(lang); + if (ov && M.CURRENCY_CODES.indexOf(ov) >= 0) return { code: ov, source: 'override', region: loc, prompt: false }; + var r = loc ? M.regionOf(loc) : null; + if (r && !r.unknown) return { code: r.cur, source: 'locale', region: loc, prompt: false }; + return { code: 'USD', source: 'fallback', region: loc, prompt: true }; + }; + // the default tariff for a choice: the locale's region row when it carries the currency, else the first table row in that currency + M.tariffFor = function (choice) { + var r = choice.region ? M.regionOf(choice.region) : null; + if (r && r.cur === choice.code && r.price > 0) return { price: r.price, source: r.source, region: r.name, cur: choice.code }; + for (var i = 0; i < M.REGIONS.length; i++) if (M.REGIONS[i].cur === choice.code && M.REGIONS[i].price > 0 && !M.REGIONS[i].restricted) return { price: M.REGIONS[i].price, source: M.REGIONS[i].source, region: M.REGIONS[i].name, cur: choice.code }; + return null; + }; + // watts over a day at a tariff in hundredths of the unit per kWh: the unit amount + M.costPerDay = function (watts, pricePerKwh) { return watts > 0 && pricePerKwh > 0 ? watts * 24 / 1000 * pricePerKwh / 100 : null; }; + root.IgneumMoney = M; + if (typeof module === 'object' && module && module.exports) module.exports = M; +})(typeof window !== 'undefined' ? window : globalThis); diff --git a/site/site.css b/site/site.css index fa8413f38..e39897a96 100644 --- a/site/site.css +++ b/site/site.css @@ -213,7 +213,8 @@ p.notice{display:block;margin:14px 0 0;font-size:13px;line-height:1.7} .dl-bar{display:none} @media (max-width:720px){.dl-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;justify-content:space-between;align-items:center;gap:var(--s-3);padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom));background:var(--top-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}.dl-bar span{font:400 var(--t-sm)/1.4 var(--f-mono);color:var(--ash);min-width:0}body.has-dl-bar{padding-bottom:72px}} .band{background:var(--ember);color:var(--ember-ink)} -.band .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-5);padding-top:56px;padding-bottom:56px} +.band .wrap,.band .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-5);padding-top:56px;padding-bottom:56px} +@media (max-width:560px){.band .wrap,.band .container{padding-top:40px;padding-bottom:40px}} .band h2{color:var(--ember-ink);font-weight:900;margin-bottom:var(--s-2)} .band p{margin:0;max-width:56ch} .btn.dark{background:var(--obsidian);color:var(--bone);border-color:var(--obsidian)} @@ -497,9 +498,62 @@ article .status{white-space:normal;flex-wrap:wrap;overflow:visible} article .status .badge:not([data-mark]){white-space:normal;overflow-wrap:anywhere;line-height:1.5;max-width:100%} /* data tables size to their content and scroll inside their frame, never squeeze a column to a sliver (site-ui-5) */ .tbl table,.table-wrap table{width:100%;min-width:720px;table-layout:auto} -.tbl td,.table-wrap td{white-space:normal;overflow-wrap:anywhere;vertical-align:top;min-width:9ch} +.tbl td,.table-wrap td{white-space:normal;overflow-wrap:break-word;vertical-align:top;min-width:9ch} .tbl td .cardname,.table-wrap td .cardname{white-space:nowrap} .phero .os span{display:inline-flex;align-items:center} .download-platform{display:flex;align-items:center;gap:14px} /* the evidence table's status pills wrap inside their cell (overlap sweep, 7 Oct 2026) */ table#claims .st{white-space:normal;display:inline-block;line-height:1.4;max-width:100%} +/* the padding sweep (tools/ci/padding-check.mjs, 7 Oct 2026): every section's vertical padding on the scale (a multiple of 4 + from 24), every card's inner padding 24, so no text or control sits under 24 px from a filled edge */ +.page-hero,main .obs-head,.lost{padding-top:64px;padding-bottom:48px} +@media (max-width:560px){.page-hero{padding:24px 0}} +.site-footer{padding-bottom:24px} +.footer-bottom{padding-top:24px} +.doc-section,article section{padding-bottom:40px;margin-bottom:40px} +@media (max-width:860px){.sec{padding:72px 0}} +.lost{padding-bottom:96px} +.grid>section.card{padding-top:36px;padding-bottom:36px} +.motion{padding:24px} +.lab{padding-top:48px} +.dl-card,.home-tile,.tiles6>div,.mstats>div,.label,.card,.feature,.tool-card,.stat{padding:24px} +.dl-card{gap:14px 16px} +.dl-card .body{grid-column:1/-1} +.footer-bottom{padding-bottom:0} +@media (max-width:560px){.footer-bottom{padding-bottom:0}} +/* the ledger's count table keeps each status badge whole: the table scrolls, the word never breaks */ +.counts .badge:not([data-mark]){white-space:nowrap;overflow-wrap:normal} +/* the same scale and 24 px rule where a page's own style block sits later in the cascade (the sweep's second round) */ +main .layout article section{padding-bottom:40px;margin-bottom:40px} +main .lost{padding-top:64px;padding-bottom:96px} +main .motion{padding:24px} +main .lab{padding-top:48px} +main .tiles6>div,main .mstats>div{padding:24px 25px} +main .labels .label{padding:24px} +main .state-card,main .milestone{padding:24px} +main .strip{padding-top:24px;padding-bottom:24px} +/* the sweep's third round: the live inspector and toolbar at 24, the band and the download card 24 from their edges on phones */ +main .icol{padding:24px} +main .toolbar{padding:24px 25px} +@media (max-width:560px){.band .wrap,.band .container{padding-left:24px;padding-right:24px}.download-card{padding:24px}} +/* the journey's phases are cards in this system: the old timeline rail and marker (drawn for an unboxed list) go, the badge says the state; the when column keeps clear of the body */ +main .milestone:before,main .milestone:after{display:none} +main .milestone .when{padding-right:12px;padding-top:2px} +@media (max-width:560px){main .milestone{padding:24px}} +/* the litepaper's body paragraphs share one measure (the eye pass: the first paragraph sat narrower than the second) */ +main .layout article section>p{max-width:76ch} +/* the ledger's count table: a filter chip stays on one line, the table scrolls before a pill wraps */ +main table .chip{white-space:nowrap} +/* no orphan word on its own line (copy law 18): the browser's pretty wrapping on body text; headings already balance */ +p,li,dd,figcaption,.lead,.d,.sub{text-wrap:pretty} +/* a comparison table's label column holds a short phrase on one or two lines, never one word per line */ +main .tbl td:first-child,main .table-wrap td:first-child{min-width:14ch} +/* a section lifted into a derived page keeps its own .container: the inner one adds no second gutter; a card's table clears the text above it */ +main .container .container,main .wrap .wrap{padding-left:0;padding-right:0} +.feecard .tbl,.feecard .table-wrap{margin-top:16px} +/* the eye pass on /faucet and /metamask: the headline keeps a gap above its lead, two cards in a grid line up at the top, the page ends 72 px above the footer */ +main.wrap h1+p,main.wrap h1+.lead,.page-hero h1+.lead{margin-top:16px} +main.wrap>.grid{align-items:start} +main.wrap{padding-bottom:72px} +@media (max-width:560px){main.wrap{padding-bottom:48px}} +main.wrap>.grid{margin-bottom:40px} diff --git a/site/yourcard.js b/site/yourcard.js index 4ad14adb7..5fb676d12 100644 --- a/site/yourcard.js +++ b/site/yourcard.js @@ -1,21 +1,42 @@ -/* The "your card" line: a measured card, and how often it finds a block at the network's hash rate right now. One block a - second is the target, so the wait is network hashes per second over the card's rate. The rates are the bench table's - measured numbers (site/miners.html); nothing here is a promise. Reads /api/live every 15 s. */ +/* The "your card" line: a measured card, how often it finds a block at the network's hash rate right now, and what its + electricity costs a day in your currency. One block a second is the target, so the wait is network hashes per second + over the card's rate. The rates are the bench table's measured numbers (site/miners.html); the watts are the tuned + draws from the same runs (app.html's Ember table: 5090 226.8 W, 4070 75.6 W; the 9070 XT 202 W from docs/bench-log.md, + 6 October 2026; Apple silicon reports no draw). The currency follows navigator.language (no IP lookup); the switch saves + a choice in localStorage igneum-currency; the tariff is the public table's default for that region or currency, so the + cost is arithmetic from a typical price, never a promise (currency-21, 7 October 2026). Reads /api/live every 15 s. */ (function () { - var CARDS = [['NVIDIA RTX 5090', 127.7], ['NVIDIA RTX 5060 Ti', 30.9], ['NVIDIA RTX 4070', 28.8], ['Apple M5 Max', 26.7], ['AMD RX 9070 XT', 17.8]]; + var CARDS = [['NVIDIA RTX 5090', 127.7, 226.8], ['NVIDIA RTX 4070', 28.8, 75.6], ['Apple M5 Max', 26.7, null], ['AMD RX 9070 XT', 17.8, 202]]; var els = document.querySelectorAll('[data-yourcard]'); if (!els.length) return; var net = null, chosen = (function () { try { return localStorage.getItem('igneum-card'); } catch (e) { return null; } })(); + var savedCur = (function () { try { return localStorage.getItem('igneum-currency') || ''; } catch (e) { return ''; } })(); function dur(sec) { if (!(sec > 0)) return 'pending'; if (sec < 90) return Math.round(sec) + ' s'; if (sec < 5400) return Math.round(sec / 60) + ' min'; if (sec < 172800) { var h = Math.floor(sec / 3600), m = Math.round((sec % 3600) / 60); return h + ' h' + (m ? ' ' + m + ' min' : ''); } return Math.round(sec / 86400) + ' days'; } - function render() { els.forEach(function (el) { var r = parseFloat(el.querySelector('select').value) * 1e6, eta = el.querySelector('.eta'); eta.textContent = net && r ? 'every ' + dur(net / r) : 'pending'; }); } - // the vendor badge beside the picker: the five mini marks the build stamped as JSON (site/lib/marks.mjs), chosen by the card's name - var marks = {}; try { var mj = document.getElementById('gpu-marks'); if (mj) marks = JSON.parse(mj.textContent); } catch (e) { marks = {}; } - function vendorOf(n) { return /nvidia|geforce|\bRTX\b|\bGTX\b/i.test(n) ? 'nvidia' : /\bamd\b|radeon/i.test(n) ? 'amd' : /intel|\barc\b/i.test(n) ? 'intel' : /apple|\bM\d (max|pro|ultra)\b/i.test(n) ? 'apple' : 'gpu'; } - function badge(el) { var sel = el.querySelector('select'), b = el.querySelector('.badge-slot'); if (!sel || !b) return; var name = sel.options[sel.selectedIndex].text.split(' \u00b7 ')[0]; b.innerHTML = marks[vendorOf(name)] || ''; } - els.forEach(function (el) { - el.innerHTML = 'Your cardfinds a block about pending at the network\u2019s hash rate right now.'; - el.querySelector('select').addEventListener('change', function (e) { var name = e.target.options[e.target.selectedIndex].text.split(' \u00b7 ')[0]; try { localStorage.setItem('igneum-card', name); } catch (x) {} document.querySelectorAll('[data-yourcard] select').forEach(function (s) { s.value = e.target.value; }); els.forEach(badge); render(); }); - badge(el); - }); + function costWords(watts) { + var M = window.IgneumMoney; if (!M) return ''; + var ch = M.currencyChoice(savedCur, navigator.language), t = M.tariffFor(ch); + if (watts === null) return 'no power reading on this card'; + if (!t) return 'no typical ' + ch.code + ' tariff in the table; the app uses the price you type'; + var c = M.costPerDay(watts, t.price); + return 'about ' + M.fmtMoney(c, ch.code, navigator.language) + ' a day in electricity at ' + t.price + ' ' + M.minorOf(ch.code).abbr + '/kWh (' + t.region + ', typical)'; + } + function render() { + els.forEach(function (el) { + var sel = el.querySelector('select.card'), r = parseFloat(sel.value) * 1e6, eta = el.querySelector('.eta'), cost = el.querySelector('.cost'); + eta.textContent = net && r ? 'every ' + dur(net / r) : 'pending'; + var row = CARDS[sel.selectedIndex]; if (cost) cost.textContent = costWords(row ? row[2] : null); + }); + } + function init() { + var M = window.IgneumMoney, ch = M ? M.currencyChoice(savedCur, navigator.language) : null; + els.forEach(function (el) { + el.innerHTML = 'Your cardfinds a block about pending at the network\u2019s hash rate right now.' + + (M ? '' : ''); + el.querySelector('select.card').addEventListener('change', function (e) { var name = e.target.options[e.target.selectedIndex].text.split(' \u00b7 ')[0]; try { localStorage.setItem('igneum-card', name); } catch (x) {} document.querySelectorAll('[data-yourcard] select.card').forEach(function (s) { s.value = e.target.value; }); render(); }); + var cur = el.querySelector('select.cur'); if (cur) cur.addEventListener('change', function (e) { savedCur = e.target.value; try { localStorage.setItem('igneum-currency', savedCur); } catch (x) {} document.querySelectorAll('[data-yourcard] select.cur').forEach(function (s) { s.value = savedCur; }); render(); }); + }); + render(); + } + if (window.IgneumMoney) init(); else { var sc = document.createElement('script'); sc.src = '/money.js'; sc.onload = init; sc.onerror = init; document.head.appendChild(sc); } function poll() { fetch('/api/live?window=30', { cache: 'no-store' }).then(function (r) { return r.json(); }).then(function (d) { if (d && d.ok && d.state && d.state.hashes_per_second_estimate > 0) { net = d.state.hashes_per_second_estimate; render(); } }).catch(function () {}); } poll(); setInterval(function () { if (!document.hidden) poll(); }, 15000); window.IgneumYourCard = { update: function (h) { if (h > 0) { net = h; render(); } } }; diff --git a/tools/ca3-v4-amend/pc1-v4-sub2-g1.ps1 b/tools/ca3-v4-amend/pc1-v4-sub2-g1.ps1 new file mode 100644 index 000000000..19f39a27f --- /dev/null +++ b/tools/ca3-v4-amend/pc1-v4-sub2-g1.ps1 @@ -0,0 +1,88 @@ +# Counter ASIC 3.0, the class v4 amendment, sub-version 2 (7 October 2026, AP-F8-1, main: B2, object byte 7): gate G1 only, on PC 1 +# (machine ae432dc7, the project lead's desk, released by main's "go PC 1" for this one job after the 0.3.20 sweep step). The RTX 5090 is +# switched off by the RUNNER (`--cards-off nvidia:NVIDIA GeForce RTX 5090` at publish: the runner matches the live card by its +# key with or without the device index and restores it after), never by this script; the script confirms the card quiet by +# the process list (no igneum-worker-cuda with --device 0) and nvidia-smi's compute-apps list, as the 6 October PC 1 jobs did, +# then runs the installed worker's --bench on the eight packs. The app, the prover, the AMD and Intel cards and settings.json +# are untouched; nothing else runs on PC 1 in this job. of docs/plans/counter-asic-2-rollout.md +# section 7 on PC 2's RTX 5090 (machine 1ccfe586) for the class v4 candidate mx8+sh256x27 composed with the era +# (docs/plans/counter-asic-3-gate/hash-gates.md). ONE signed `run` job carries both gates, as the PC 2 rule of the +# ca3 brief asks. It never quits, restarts or updates the installed app, never touches the prover (left ON), /opt or +# settings.json (read only, for the card keys), and does not switch the card off: bit-exactness and the verifier +# re-hash are not load sensitive, so the app keeps mining beside the runs and every row says what ran on the card. +# The kit is the fetch job fetch-ca3-v4-sub2-pc1-20261007 (packs-ca3-v4: the class v3 control mx8-devnet-epoch0 and the seven +# class v4 packs v4-devnet-epoch0, v4-era-0 .. v4-era-5, each with seeds.txt), every file sha256-listed. +# G1: the INSTALLED igneum-worker-cuda.exe (NVRTC, the pack's own kernel text) --bench on every pack: the self-test +# (cache FNV, dataset head, word MASK, 64 samples, 96 vector lanes) and the 2^24 fingerprint at base nonce 0, which +# must equal the Mac's (Metal and Apple OpenCL). G2: the worker's serve mode, one job of 1,024 nonces at target +# ffffffffffffffff per pack (every nonce a "found g2 " line). The found lines never go to stdout: the +# intake's closing report keeps the last 200 KB of job.log and a file upload its last 256 KB, and the first run of this +# job (15:52Z) lost its G1 lines under 8 x 1,024 found lines. Each pack's found lines go to g2-.found in this job's +# folder (LF, nonce order), and stdout carries one line per pack: the count and the file's sha256. The Mac re-check +# (tools/ca3-v4/g2-recheck.sh) derives the same file from `igneum-pow hash-bound --prehash 00..01 --count 1024` on the +# same pack and compares digests: equal digests are 1,024 of 1,024; on a mismatch the file is fetched with +# `publish-jobs.sh add --kind collect --glob "app/jobs//g2-*.found"` and diffed line by line. Every result line +# starts with RESULT, there are about 60 of them, and the report carries them all whatever the log length; the full +# job.log stays at app/jobs//job.log on the PC (the RESULT log line names it; collect it with the same glob form). +$ErrorActionPreference = 'Continue' +function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') } +function Smi($q) { try { (& nvidia-smi --query-gpu=$q --format=csv,noheader,nounits 2>$null) -join ' | ' } catch { 'nvidia-smi failed' } } +function CudaApps { @(& nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader 2>$null | ForEach-Object { "$_" }) } +"RESULT start $(Stamp) machine $env:COMPUTERNAME" +"RESULT log $(Join-Path $env:IGNEUM_JOB_DIR 'job.log') (the full output; the found lines of G2 are g2-.found beside it: collect --glob app/jobs//g2-*.found)" +"RESULT gpus $(Stamp) $(Smi 'index,name,driver_version,memory.used,clocks.sm,clocks.mem,power.draw,power.limit,temperature.gpu')" + +# the kit: the fetch job's folder under the app's jobs folder (nothing of another job's is reached) +$jobs = Split-Path $env:IGNEUM_JOB_DIR +$kit = Join-Path $jobs 'fetch-ca3-v4-sub2-pc1-20261007' +$packs = Join-Path $kit 'packs-ca3-v4-sub2' +if (-not (Test-Path $packs)) { "RESULT error packs missing at $packs (the fetch job fetch-ca3-v4-sub2-pc1-20261007 runs first)"; exit 2 } +$inst = @("$env:LOCALAPPDATA\Programs\Igneum Miner", "$env:ProgramFiles\Igneum Miner") | Where-Object { Test-Path (Join-Path $_ 'igneum-worker-cuda.exe') } | Select-Object -First 1 +if (-not $inst) { "RESULT error no installed igneum-worker-cuda.exe"; exit 2 } +$exe = Join-Path $inst 'igneum-worker-cuda.exe' +"RESULT worker $exe sha256 $((Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower()) bytes $((Get-Item $exe).Length)" +$appExe = Join-Path $inst 'igneum-app.exe' +if (Test-Path $appExe) { try { "RESULT app-version $((& $appExe --version 2>&1 | Out-String).Trim())" } catch { } } +foreach ($f in (Get-ChildItem $packs -Recurse -File | Sort-Object FullName)) { "RESULT kitfile $($f.FullName.Substring($packs.Length + 1).Replace('\', '/')) sha256 $((Get-FileHash -Algorithm SHA256 $f.FullName).Hash.ToLower()) bytes $($f.Length)" } + +# the card keys, both forms, from settings.json (read only; nothing is posted: the card stays as it is) +$appDir = $env:IGNEUM_APP_DIR +if (-not $appDir) { $appDir = Join-Path $env:LOCALAPPDATA 'igneum\app' } +$sj = Join-Path $appDir 'settings.json' +if (Test-Path $sj) { + try { + $settings = Get-Content -LiteralPath $sj -Raw | ConvertFrom-Json + if ($settings.cards) { + foreach ($p in $settings.cards.PSObject.Properties) { + $short = ($p.Name -split ':')[0] + ':' + (($p.Name -split ':') | Select-Object -Last 1) + "RESULT card-key settings.json `"$($p.Name)`" short-form `"$short`" enabled=$($p.Value.enabled) identities=$($p.Value.identities) power_pct=$($p.Value.power_pct)" + } + } else { 'RESULT card-key none in settings.json' } + } catch { "RESULT card-key settings.json unreadable: $_" } +} else { 'RESULT card-key no settings.json' } +# ---- the card quiet (the RUNNER's --cards-off took): no cuda worker carrying --device 0, no igneum compute app on the 5090 ---- +function CudaWorkers { @(Get-CimInstance Win32_Process -Filter "Name = 'igneum-worker-cuda.exe'" -ErrorAction SilentlyContinue | Where-Object { $_.CommandLine -match '--device 0\b' -or $_.CommandLine -notmatch '--device' } | ForEach-Object { $_.ProcessId }) } +$t = 0; $left = @(CudaWorkers) +while ($t -lt 90 -and $left.Count -gt 0) { Start-Sleep -Seconds 5; $t += 5; $left = @(CudaWorkers) } +$apps = @(CudaApps | Where-Object { $_ -match 'igneum|sp1|prove' }) +if ($left.Count -eq 0 -and $apps.Count -eq 0) { "RESULT card $(Stamp) quiet after $t s: no cuda worker on device 0 and no igneum compute app (the runner's --cards-off took)" } +else { "RESULT card $(Stamp) UNCONFIRMED after $t s: cuda worker pids [$($left -join ' ')], compute apps: $($apps -join '; ') (was the job published with --cards-off?); the fingerprints below are still bit-exactness, only the rates are beside a miner" } +"RESULT gpus $(Stamp) $(Smi 'index,name,memory.used,power.draw,clocks.sm')" + +$order = @('mx8-devnet-epoch0', 'v4-devnet-epoch0', 'v4-era-0', 'v4-era-1', 'v4-era-2', 'v4-era-3', 'v4-era-4', 'v4-era-5') +# ---- G1: --bench on every pack (self-test + 2^24 fingerprint at base 0; 5 timed dispatches, the rate a reference beside the miner) ---- +foreach ($pk in $order) { + $d = Join-Path $packs $pk + if (-not (Test-Path $d)) { "RESULT g1 $pk missing"; continue } + $t0 = Get-Date + "RESULT g1 $pk start $(Stamp)" + & $exe --bench --pack $d --batches 5 --batch-log2 24 --block-warps 1 2>&1 | ForEach-Object { "RESULT g1 $pk $_" } + "RESULT g1 $pk end $(Stamp) exit=$LASTEXITCODE wall_s=$([int]((Get-Date) - $t0).TotalSeconds)" +} + +# G2 is OWED by the project lead's word (limited testing: the vectors, the pairing and this G1 prevent a split and prove the fix). +$w = @(Get-Process -Name 'igneum-worker-cuda' -ErrorAction SilentlyContinue) +"RESULT processes $(Stamp) igneum-worker-cuda running: $($w.Count); compute apps: $((CudaApps) -join '; ')" +"RESULT gpus_after $(Stamp) $(Smi 'power.draw,power.limit,clocks.sm,clocks.mem,temperature.gpu,memory.used')" +"RESULT end $(Stamp)" +exit 0 diff --git a/tools/ca3-v4-amend/pc2-v4-amend-g1.ps1 b/tools/ca3-v4-amend/pc2-v4-amend-g1.ps1 new file mode 100644 index 000000000..34ccb7084 --- /dev/null +++ b/tools/ca3-v4-amend/pc2-v4-amend-g1.ps1 @@ -0,0 +1,76 @@ +# Counter ASIC 3.0, the class v4 amendment (7 October 2026, AP-F8-1, the project lead: option A, limited testing): gate G1 only of docs/plans/counter-asic-2-rollout.md +# section 7 on PC 2's RTX 5090 (machine 1ccfe586) for the class v4 candidate mx8+sh256x27 composed with the era +# (docs/plans/counter-asic-3-gate/hash-gates.md). ONE signed `run` job carries both gates, as the PC 2 rule of the +# ca3 brief asks. It never quits, restarts or updates the installed app, never touches the prover (left ON), /opt or +# settings.json (read only, for the card keys), and does not switch the card off: bit-exactness and the verifier +# re-hash are not load sensitive, so the app keeps mining beside the runs and every row says what ran on the card. +# The kit is the fetch job fetch-ca3-v4-amend-20261007 (packs-ca3-v4: the class v3 control mx8-devnet-epoch0 and the seven +# class v4 packs v4-devnet-epoch0, v4-era-0 .. v4-era-5, each with seeds.txt), every file sha256-listed. +# G1: the INSTALLED igneum-worker-cuda.exe (NVRTC, the pack's own kernel text) --bench on every pack: the self-test +# (cache FNV, dataset head, word MASK, 64 samples, 96 vector lanes) and the 2^24 fingerprint at base nonce 0, which +# must equal the Mac's (Metal and Apple OpenCL). G2: the worker's serve mode, one job of 1,024 nonces at target +# ffffffffffffffff per pack (every nonce a "found g2 " line). The found lines never go to stdout: the +# intake's closing report keeps the last 200 KB of job.log and a file upload its last 256 KB, and the first run of this +# job (15:52Z) lost its G1 lines under 8 x 1,024 found lines. Each pack's found lines go to g2-.found in this job's +# folder (LF, nonce order), and stdout carries one line per pack: the count and the file's sha256. The Mac re-check +# (tools/ca3-v4/g2-recheck.sh) derives the same file from `igneum-pow hash-bound --prehash 00..01 --count 1024` on the +# same pack and compares digests: equal digests are 1,024 of 1,024; on a mismatch the file is fetched with +# `publish-jobs.sh add --kind collect --glob "app/jobs//g2-*.found"` and diffed line by line. Every result line +# starts with RESULT, there are about 60 of them, and the report carries them all whatever the log length; the full +# job.log stays at app/jobs//job.log on the PC (the RESULT log line names it; collect it with the same glob form). +$ErrorActionPreference = 'Continue' +function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') } +function Smi($q) { try { (& nvidia-smi --query-gpu=$q --format=csv,noheader,nounits 2>$null) -join ' | ' } catch { 'nvidia-smi failed' } } +function CudaApps { @(& nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader 2>$null | ForEach-Object { "$_" }) } +"RESULT start $(Stamp) machine $env:COMPUTERNAME" +"RESULT log $(Join-Path $env:IGNEUM_JOB_DIR 'job.log') (the full output; the found lines of G2 are g2-.found beside it: collect --glob app/jobs//g2-*.found)" +"RESULT gpus $(Stamp) $(Smi 'index,name,driver_version,memory.used,clocks.sm,clocks.mem,power.draw,power.limit,temperature.gpu')" + +# the kit: the fetch job's folder under the app's jobs folder (nothing of another job's is reached) +$jobs = Split-Path $env:IGNEUM_JOB_DIR +$kit = Join-Path $jobs 'fetch-ca3-v4-amend-20261007' +$packs = Join-Path $kit 'packs-ca3-v4-amend' +if (-not (Test-Path $packs)) { "RESULT error packs missing at $packs (the fetch job fetch-ca3-v4-amend-20261007 runs first)"; exit 2 } +$inst = @("$env:LOCALAPPDATA\Programs\Igneum Miner", "$env:ProgramFiles\Igneum Miner") | Where-Object { Test-Path (Join-Path $_ 'igneum-worker-cuda.exe') } | Select-Object -First 1 +if (-not $inst) { "RESULT error no installed igneum-worker-cuda.exe"; exit 2 } +$exe = Join-Path $inst 'igneum-worker-cuda.exe' +"RESULT worker $exe sha256 $((Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower()) bytes $((Get-Item $exe).Length)" +$appExe = Join-Path $inst 'igneum-app.exe' +if (Test-Path $appExe) { try { "RESULT app-version $((& $appExe --version 2>&1 | Out-String).Trim())" } catch { } } +foreach ($f in (Get-ChildItem $packs -Recurse -File | Sort-Object FullName)) { "RESULT kitfile $($f.FullName.Substring($packs.Length + 1).Replace('\', '/')) sha256 $((Get-FileHash -Algorithm SHA256 $f.FullName).Hash.ToLower()) bytes $($f.Length)" } + +# the card keys, both forms, from settings.json (read only; nothing is posted: the card stays as it is) +$appDir = $env:IGNEUM_APP_DIR +if (-not $appDir) { $appDir = Join-Path $env:LOCALAPPDATA 'igneum\app' } +$sj = Join-Path $appDir 'settings.json' +if (Test-Path $sj) { + try { + $settings = Get-Content -LiteralPath $sj -Raw | ConvertFrom-Json + if ($settings.cards) { + foreach ($p in $settings.cards.PSObject.Properties) { + $short = ($p.Name -split ':')[0] + ':' + (($p.Name -split ':') | Select-Object -Last 1) + "RESULT card-key settings.json `"$($p.Name)`" short-form `"$short`" enabled=$($p.Value.enabled) identities=$($p.Value.identities) power_pct=$($p.Value.power_pct)" + } + } else { 'RESULT card-key none in settings.json' } + } catch { "RESULT card-key settings.json unreadable: $_" } +} else { 'RESULT card-key no settings.json' } +$w = @(Get-Process -Name 'igneum-worker-cuda' -ErrorAction SilentlyContinue) +"RESULT processes $(Stamp) igneum-worker-cuda running: $($w.Count) (the app's miners, left as they are); compute apps: $((CudaApps) -join '; ')" + +$order = @('mx8-devnet-epoch0', 'v4-devnet-epoch0', 'v4-era-0', 'v4-era-1', 'v4-era-2', 'v4-era-3', 'v4-era-4', 'v4-era-5') +# ---- G1: --bench on every pack (self-test + 2^24 fingerprint at base 0; 5 timed dispatches, the rate a reference beside the miner) ---- +foreach ($pk in $order) { + $d = Join-Path $packs $pk + if (-not (Test-Path $d)) { "RESULT g1 $pk missing"; continue } + $t0 = Get-Date + "RESULT g1 $pk start $(Stamp)" + & $exe --bench --pack $d --batches 5 --batch-log2 24 --block-warps 1 2>&1 | ForEach-Object { "RESULT g1 $pk $_" } + "RESULT g1 $pk end $(Stamp) exit=$LASTEXITCODE wall_s=$([int]((Get-Date) - $t0).TotalSeconds)" +} + +# G2 is OWED by the project lead's word (limited testing: the vectors, the pairing and this G1 prevent a split and prove the fix). +$w = @(Get-Process -Name 'igneum-worker-cuda' -ErrorAction SilentlyContinue) +"RESULT processes $(Stamp) igneum-worker-cuda running: $($w.Count); compute apps: $((CudaApps) -join '; ')" +"RESULT gpus_after $(Stamp) $(Smi 'power.draw,power.limit,clocks.sm,clocks.mem,temperature.gpu,memory.used')" +"RESULT end $(Stamp)" +exit 0 diff --git a/tools/ca3-v4-amend/pc2-v4-sub2-g1.ps1 b/tools/ca3-v4-amend/pc2-v4-sub2-g1.ps1 new file mode 100644 index 000000000..347a386c6 --- /dev/null +++ b/tools/ca3-v4-amend/pc2-v4-sub2-g1.ps1 @@ -0,0 +1,76 @@ +# Counter ASIC 3.0, the class v4 amendment, sub-version 2 (7 October 2026, AP-F8-1, main: B2, object byte 7): gate G1 only, the card switched off by the runner (--cards-off), the app and prover untouched of docs/plans/counter-asic-2-rollout.md +# section 7 on PC 2's RTX 5090 (machine 1ccfe586) for the class v4 candidate mx8+sh256x27 composed with the era +# (docs/plans/counter-asic-3-gate/hash-gates.md). ONE signed `run` job carries both gates, as the PC 2 rule of the +# ca3 brief asks. It never quits, restarts or updates the installed app, never touches the prover (left ON), /opt or +# settings.json (read only, for the card keys), and does not switch the card off: bit-exactness and the verifier +# re-hash are not load sensitive, so the app keeps mining beside the runs and every row says what ran on the card. +# The kit is the fetch job fetch-ca3-v4-sub2-20261007 (packs-ca3-v4: the class v3 control mx8-devnet-epoch0 and the seven +# class v4 packs v4-devnet-epoch0, v4-era-0 .. v4-era-5, each with seeds.txt), every file sha256-listed. +# G1: the INSTALLED igneum-worker-cuda.exe (NVRTC, the pack's own kernel text) --bench on every pack: the self-test +# (cache FNV, dataset head, word MASK, 64 samples, 96 vector lanes) and the 2^24 fingerprint at base nonce 0, which +# must equal the Mac's (Metal and Apple OpenCL). G2: the worker's serve mode, one job of 1,024 nonces at target +# ffffffffffffffff per pack (every nonce a "found g2 " line). The found lines never go to stdout: the +# intake's closing report keeps the last 200 KB of job.log and a file upload its last 256 KB, and the first run of this +# job (15:52Z) lost its G1 lines under 8 x 1,024 found lines. Each pack's found lines go to g2-.found in this job's +# folder (LF, nonce order), and stdout carries one line per pack: the count and the file's sha256. The Mac re-check +# (tools/ca3-v4/g2-recheck.sh) derives the same file from `igneum-pow hash-bound --prehash 00..01 --count 1024` on the +# same pack and compares digests: equal digests are 1,024 of 1,024; on a mismatch the file is fetched with +# `publish-jobs.sh add --kind collect --glob "app/jobs//g2-*.found"` and diffed line by line. Every result line +# starts with RESULT, there are about 60 of them, and the report carries them all whatever the log length; the full +# job.log stays at app/jobs//job.log on the PC (the RESULT log line names it; collect it with the same glob form). +$ErrorActionPreference = 'Continue' +function Stamp { (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ') } +function Smi($q) { try { (& nvidia-smi --query-gpu=$q --format=csv,noheader,nounits 2>$null) -join ' | ' } catch { 'nvidia-smi failed' } } +function CudaApps { @(& nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader 2>$null | ForEach-Object { "$_" }) } +"RESULT start $(Stamp) machine $env:COMPUTERNAME" +"RESULT log $(Join-Path $env:IGNEUM_JOB_DIR 'job.log') (the full output; the found lines of G2 are g2-.found beside it: collect --glob app/jobs//g2-*.found)" +"RESULT gpus $(Stamp) $(Smi 'index,name,driver_version,memory.used,clocks.sm,clocks.mem,power.draw,power.limit,temperature.gpu')" + +# the kit: the fetch job's folder under the app's jobs folder (nothing of another job's is reached) +$jobs = Split-Path $env:IGNEUM_JOB_DIR +$kit = Join-Path $jobs 'fetch-ca3-v4-sub2-20261007' +$packs = Join-Path $kit 'packs-ca3-v4-sub2' +if (-not (Test-Path $packs)) { "RESULT error packs missing at $packs (the fetch job fetch-ca3-v4-sub2-20261007 runs first)"; exit 2 } +$inst = @("$env:LOCALAPPDATA\Programs\Igneum Miner", "$env:ProgramFiles\Igneum Miner") | Where-Object { Test-Path (Join-Path $_ 'igneum-worker-cuda.exe') } | Select-Object -First 1 +if (-not $inst) { "RESULT error no installed igneum-worker-cuda.exe"; exit 2 } +$exe = Join-Path $inst 'igneum-worker-cuda.exe' +"RESULT worker $exe sha256 $((Get-FileHash -Algorithm SHA256 $exe).Hash.ToLower()) bytes $((Get-Item $exe).Length)" +$appExe = Join-Path $inst 'igneum-app.exe' +if (Test-Path $appExe) { try { "RESULT app-version $((& $appExe --version 2>&1 | Out-String).Trim())" } catch { } } +foreach ($f in (Get-ChildItem $packs -Recurse -File | Sort-Object FullName)) { "RESULT kitfile $($f.FullName.Substring($packs.Length + 1).Replace('\', '/')) sha256 $((Get-FileHash -Algorithm SHA256 $f.FullName).Hash.ToLower()) bytes $($f.Length)" } + +# the card keys, both forms, from settings.json (read only; nothing is posted: the card stays as it is) +$appDir = $env:IGNEUM_APP_DIR +if (-not $appDir) { $appDir = Join-Path $env:LOCALAPPDATA 'igneum\app' } +$sj = Join-Path $appDir 'settings.json' +if (Test-Path $sj) { + try { + $settings = Get-Content -LiteralPath $sj -Raw | ConvertFrom-Json + if ($settings.cards) { + foreach ($p in $settings.cards.PSObject.Properties) { + $short = ($p.Name -split ':')[0] + ':' + (($p.Name -split ':') | Select-Object -Last 1) + "RESULT card-key settings.json `"$($p.Name)`" short-form `"$short`" enabled=$($p.Value.enabled) identities=$($p.Value.identities) power_pct=$($p.Value.power_pct)" + } + } else { 'RESULT card-key none in settings.json' } + } catch { "RESULT card-key settings.json unreadable: $_" } +} else { 'RESULT card-key no settings.json' } +$w = @(Get-Process -Name 'igneum-worker-cuda' -ErrorAction SilentlyContinue) +"RESULT processes $(Stamp) igneum-worker-cuda running: $($w.Count) (the app's miners, left as they are); compute apps: $((CudaApps) -join '; ')" + +$order = @('mx8-devnet-epoch0', 'v4-devnet-epoch0', 'v4-era-0', 'v4-era-1', 'v4-era-2', 'v4-era-3', 'v4-era-4', 'v4-era-5') +# ---- G1: --bench on every pack (self-test + 2^24 fingerprint at base 0; 5 timed dispatches, the rate a reference beside the miner) ---- +foreach ($pk in $order) { + $d = Join-Path $packs $pk + if (-not (Test-Path $d)) { "RESULT g1 $pk missing"; continue } + $t0 = Get-Date + "RESULT g1 $pk start $(Stamp)" + & $exe --bench --pack $d --batches 5 --batch-log2 24 --block-warps 1 2>&1 | ForEach-Object { "RESULT g1 $pk $_" } + "RESULT g1 $pk end $(Stamp) exit=$LASTEXITCODE wall_s=$([int]((Get-Date) - $t0).TotalSeconds)" +} + +# G2 is OWED by the project lead's word (limited testing: the vectors, the pairing and this G1 prevent a split and prove the fix). +$w = @(Get-Process -Name 'igneum-worker-cuda' -ErrorAction SilentlyContinue) +"RESULT processes $(Stamp) igneum-worker-cuda running: $($w.Count); compute apps: $((CudaApps) -join '; ')" +"RESULT gpus_after $(Stamp) $(Smi 'power.draw,power.limit,clocks.sm,clocks.mem,temperature.gpu,memory.used')" +"RESULT end $(Stamp)" +exit 0 diff --git a/tools/ca3-v4-uniform/Cargo.lock b/tools/ca3-v4-uniform/Cargo.lock new file mode 100644 index 000000000..96921bbe4 --- /dev/null +++ b/tools/ca3-v4-uniform/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ca3-v4-uniform" +version = "0.1.0" +dependencies = [ + "igneum-pow", +] + +[[package]] +name = "igneum-pow" +version = "0.2.0" diff --git a/tools/ca3-v4-uniform/Cargo.toml b/tools/ca3-v4-uniform/Cargo.toml new file mode 100644 index 000000000..ae40339e5 --- /dev/null +++ b/tools/ca3-v4-uniform/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "ca3-v4-uniform" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] +igneum-pow = { path = "../../igneum-pow" } + +[profile.release] +opt-level = 3 diff --git a/tools/ca3-v4-uniform/src/main.rs b/tools/ca3-v4-uniform/src/main.rs new file mode 100644 index 000000000..27b81c75c --- /dev/null +++ b/tools/ca3-v4-uniform/src/main.rs @@ -0,0 +1,146 @@ +//! ca3-v4-uniform: the static census behind the AP-F8-1 analysis (`docs/analysis/ca3-v4-uniform.md`, 7 October 2026). +//! For chain-shaped class v4 programs (generator 4, the era drawn inside the class, the shadow block), one line per +//! program: the 16 load sites' window draws (the windows-union model's input) and, per site, the op that last wrote +//! the load's source register before the load in execution order (the base instructions before it in the iteration, +//! else the shadow block of the previous iteration, else the base instructions after it in the previous iteration), +//! classified as injecting (add, sub, xor, mad, shfl, load: the source is fresh), bijective (rotl, rotr: entropy kept) +//! or lossy (or: bits pinned to 1 with probability 3/4; mul: low bits zeroed by the multiplier's trailing zeros; +//! mulhi: the high word of a product, dense near 0). A lossy last writer is what AP-F8-1 found at p1's site 15 +//! (`or` at 61, the load at 63) and p3's site 15 (`or` at 30, the load at 62); it passes the acceptance rule's +//! part (a), which takes any write as fresh. Nothing in `igneum-pow` is touched. +//! +//! ca3-v4-uniform [--n 1024] [--prefix igneum-ca3-v4-uniform] [--f8] (--f8 adds F8's p1, p2, p3) +use igneum_pow::generator::{generate_era, EraParams, Instr, LoadClass, Op, Program, V3_ALLOWED, V4_CLASS}; +use igneum_pow::seed::seed_words_from_bytes; + +const GENESIS_HEX: &str = "edc4fa844da9dc98d37e965176f6558a31560e40502ab3ae5491b21aaaabfb07"; + +#[derive(Clone, Copy, PartialEq, Eq, Debug)] +enum Kind { Inject, Bijective, Lossy, Init } + +fn kind(op: Op) -> Kind { + if op.injects() { Kind::Inject } else { + match op { + Op::Rotl | Op::Rotr => Kind::Bijective, + Op::Or | Op::Mul | Op::MulHi => Kind::Lossy, + _ => Kind::Inject, + } + } +} + +/// The last writer of `reg` before base instruction `k` in execution order: base 0..k of this iteration, then the +/// shadow block (run at the end of the previous iteration), then base k+1..63 of the previous iteration. +fn last_writer(p: &Program, k: usize, reg: u8) -> (Op, String) { + for j in (0..k).rev() { + if p.instrs[j].dst == reg { return (p.instrs[j].op, format!("base {j}")); } + } + for (j, s) in p.shadow.iter().enumerate().rev() { + if s.dst == reg { return (s.op, format!("shadow {j}")); } + } + for j in (k + 1..p.instrs.len()).rev() { + if p.instrs[j].dst == reg { return (p.instrs[j].op, format!("base {j} (previous iteration)")); } + } + (Op::Add, "init".into()) +} + +/// For an `or` writer at base `j`: how many of its two operands were themselves last written by `or` (an OR of an OR +/// compounds the bias: 3/4 of the bits set becomes 7/8, then 15/16; p3's site 15 is such a chain, p1's `or` has a +/// `mul`-written operand and is not). +fn or_chain(p: &Program, j: usize, ins: &Instr) -> u32 { + let mut n = 0; + for r in [ins.dst, ins.src] { + let (op, _) = last_writer(p, j, r); + if op == Op::Or { n += 1; } + } + n +} + +fn seed32(s: &str) -> Vec { + seed_words_from_bytes(s.as_bytes()).iter().flat_map(|x| x.to_le_bytes()).collect() +} + +fn unhex(s: &str) -> Vec { (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).unwrap()).collect() } + +fn main() { + let args: Vec = std::env::args().collect(); + let get = |k: &str, d: &str| -> String { args.windows(2).find(|w| w[0] == k).map(|w| w[1].clone()).unwrap_or(d.into()) }; + let n: usize = get("--n", "1024").parse().unwrap(); + let prefix = get("--prefix", "igneum-ca3-v4-uniform"); + let f8 = args.iter().any(|a| a == "--f8"); + let base = LoadClass { era: None, ..V4_CLASS }; + let mut specs: Vec<(String, Vec, Vec)> = Vec::new(); + if f8 { + let g = unhex(GENESIS_HEX); + specs.push(("p1-devnet-epoch0".into(), g.clone(), g)); + for k in 2..=3 { specs.push((format!("p{k}-attack-f8"), seed32(&format!("igneum-attack-f8/program/{k}")), seed32(&format!("igneum-attack-f8/era/{k}")))); } + } + for i in 0..n { specs.push((format!("{prefix}/{i}"), seed32(&format!("{prefix}/program/{i}")), seed32(&format!("{prefix}/era/{i}")))); } + let _ = EraParams::test_era_bytes("igneum-era-test/0"); + let (mut programs, mut with_lossy, mut with_or, mut with_chain, mut with_mulhi, mut with_mul) = (0usize, 0usize, 0usize, 0usize, 0usize, 0usize); + let mut sites_by = [0usize; 4]; + let mut lossy_sites_total = 0usize; + let mut attempts_total = 0u64; + println!("# label\tid\tattempt\twindows(site:k:off)\tlossy_sites\tor_sites\tor_chain_sites\tmul_sites\tmulhi_sites\tper-site last writer (site:instr:src:op@where:kind)"); + // the draws in parallel (sub-version 3's ratio pass costs about 2 s per chosen candidate on one core; 4,099 seeds + // would take over four hours in series), the analysis in series and in order + let threads = std::thread::available_parallelism().map(|n| n.get()).unwrap_or(1).clamp(1, specs.len().max(1)); + let chunk = (specs.len() + threads - 1) / threads; + let drawn: Vec<_> = std::thread::scope(|sc| { + let handles: Vec<_> = specs + .chunks(chunk.max(1)) + .map(|c| sc.spawn(move || c.iter().map(|(label, epoch, era)| generate_era(&format!("igneum-epoch/{}", label), epoch, base, era, &V3_ALLOWED)).collect::>())) + .collect(); + handles.into_iter().flat_map(|h| h.join().unwrap()).collect() + }); + for ((label, _epoch, _era), p) in specs.iter().zip(drawn) { + programs += 1; + attempts_total += p.attempt as u64; + let mut wins = Vec::new(); + let mut rows = Vec::new(); + let (mut lossy, mut ors, mut chains, mut muls, mut mulhis) = (0, 0, 0, 0, 0); + let mut site = 0; + for (k, ins) in p.instrs.iter().enumerate() { + if !ins.op.is_load() { continue; } + wins.push(format!("{site}:{}:{}", ins.win, ins.off)); + let (op, wh) = last_writer(&p, k, ins.src); + let kd = if wh == "init" { Kind::Init } else { kind(op) }; + sites_by[kd as usize] += 1; + let mut tag = format!("{:?}", kd).to_lowercase(); + if kd == Kind::Lossy { + lossy += 1; + match op { + Op::Or => { + ors += 1; + if let Some(j) = wh.strip_prefix("base ").and_then(|s| s.split(' ').next()).and_then(|s| s.parse::().ok()) { + let c = or_chain(&p, j, &p.instrs[j]); + if c > 0 { chains += 1; tag = format!("lossy-or-chain{c}"); } + } + } + Op::Mul => muls += 1, + Op::MulHi => mulhis += 1, + _ => {} + } + } + rows.push(format!("{site}:{k}:r{}:{}@{}:{}", ins.src, op.name(), wh.replace(' ', "_"), tag)); + site += 1; + } + lossy_sites_total += lossy; + if lossy > 0 { with_lossy += 1; } + if ors > 0 { with_or += 1; } + if chains > 0 { with_chain += 1; } + if muls > 0 { with_mul += 1; } + if mulhis > 0 { with_mulhi += 1; } + println!("{label}\t{:016x}\t{}\t{}\t{lossy}\t{ors}\t{chains}\t{muls}\t{mulhis}\t{}", p.program_id(), p.attempt, wins.join(" "), rows.join(" ")); + } + println!( + "CENSUS: {programs} chain-shaped class v4 programs; sites by last-writer kind inject {} bijective {} lossy {} init {}; lossy sites per program {:.3}; programs with >=1 lossy-sourced load {} ({:.1}%), >=1 or-sourced {} ({:.1}%), >=1 or-chain-sourced {} ({:.1}%), >=1 mul-sourced {} ({:.1}%), >=1 mulhi-sourced {} ({:.1}%); mean attempt {:.3}", + sites_by[0], sites_by[1], sites_by[2], sites_by[3], + lossy_sites_total as f64 / programs as f64, + with_lossy, 100.0 * with_lossy as f64 / programs as f64, + with_or, 100.0 * with_or as f64 / programs as f64, + with_chain, 100.0 * with_chain as f64 / programs as f64, + with_mul, 100.0 * with_mul as f64 / programs as f64, + with_mulhi, 100.0 * with_mulhi as f64 / programs as f64, + attempts_total as f64 / programs as f64 + ); +} diff --git a/tools/ca3-v4-uniform/uniform-census.txt b/tools/ca3-v4-uniform/uniform-census.txt new file mode 100644 index 000000000..c80970fad --- /dev/null +++ b/tools/ca3-v4-uniform/uniform-census.txt @@ -0,0 +1,1030 @@ +binary sha256 cf2dc1504583f096 09:24:50Z +# label id attempt windows(site:k:off) lossy_sites or_sites or_chain_sites mul_sites mulhi_sites per-site last writer (site:instr:src:op@where:kind) +p1-devnet-epoch0 c120d7963abdcd96 0 0:2:1 1:1:1 2:1:1 3:1:1 4:0:0 5:1:1 6:0:0 7:2:2 8:1:1 9:1:1 10:2:0 11:0:0 12:0:0 13:0:0 14:2:0 15:1:1 3 1 0 1 1 0:7:r7:xor@base_1:inject 1:8:r4:rotl@base_5:bijective 2:9:r2:mad@base_4:inject 3:10:r0:rotr@base_6:bijective 4:11:r1:load@base_9:inject 5:13:r6:load@base_7:inject 6:29:r4:mad@base_27:inject 7:30:r3:mad@base_28:inject 8:31:r5:mul@base_12:lossy 9:44:r7:shfl@base_43:inject 10:46:r1:add@base_45:inject 11:47:r3:load@base_46:inject 12:52:r2:rotr@base_40:bijective 13:56:r4:mulhi@base_48:lossy 14:58:r0:shfl@base_50:inject 15:63:r6:or@base_61:lossy +p2-attack-f8 82f0696f823e9c65 1 0:2:0 1:1:0 2:0:0 3:0:0 4:2:3 5:2:2 6:1:0 7:0:0 8:2:3 9:0:0 10:0:0 11:0:0 12:0:0 13:1:1 14:2:0 15:0:0 3 0 0 2 1 0:8:r4:xor@base_1:inject 1:14:r5:xor@base_9:inject 2:21:r6:mad@base_20:inject 3:24:r6:add@base_22:inject 4:32:r7:shfl@base_25:inject 5:34:r4:add@base_30:inject 6:37:r4:sub@base_36:inject 7:38:r3:load@base_37:inject 8:39:r0:load@base_14:inject 9:42:r5:load@base_38:inject 10:48:r0:mul@base_40:lossy 11:49:r6:load@base_42:inject 12:51:r3:load@base_48:inject 13:55:r2:mul@base_54:lossy 14:59:r6:load@base_51:inject 15:60:r4:mulhi@base_58:lossy +p3-attack-f8 e282eed7d47e425e 0 0:1:0 1:0:0 2:0:0 3:2:2 4:0:0 5:0:0 6:1:0 7:1:0 8:1:0 9:2:2 10:2:2 11:1:1 12:0:0 13:0:0 14:0:0 15:0:0 2 1 1 1 0 0:2:r3:shfl@base_1:inject 1:17:r6:mul@base_15:lossy 2:18:r4:add@base_4:inject 3:20:r0:load@base_18:inject 4:21:r1:load@base_20:inject 5:28:r1:xor@base_25:inject 6:29:r4:mad@base_26:inject 7:40:r0:shfl@base_24:inject 8:41:r6:add@base_33:inject 9:49:r1:shfl@base_45:inject 10:55:r6:mad@base_54:inject 11:56:r3:shfl@base_48:inject 12:57:r1:sub@base_51:inject 13:59:r4:add@base_39:inject 14:61:r0:sub@base_58:inject 15:62:r5:or@base_30:lossy-or-chain1 +igneum-ca3-v4-uniform/0 0c23c159dd3341b8 0 0:2:0 1:1:0 2:1:0 3:0:0 4:0:0 5:2:0 6:0:0 7:1:0 8:1:1 9:2:0 10:1:0 11:2:3 12:2:1 13:2:3 14:1:1 15:2:0 2 1 0 1 0 0:1:r4:add@base_0:inject 1:9:r2:load@base_1:inject 2:14:r6:rotr@base_10:bijective 3:20:r4:shfl@base_15:inject 4:25:r5:rotr@base_19:bijective 5:29:r2:mad@base_16:inject 6:31:r0:rotr@base_26:bijective 7:33:r3:add@base_27:inject 8:34:r7:rotr@base_30:bijective 9:39:r5:or@base_28:lossy 10:44:r0:load@base_39:inject 11:45:r2:mul@base_43:lossy 12:46:r4:mad@base_42:inject 13:47:r3:load@base_46:inject 14:56:r4:sub@base_52:inject 15:59:r7:xor@base_53:inject +igneum-ca3-v4-uniform/1 b630de1406de711d 0 0:2:1 1:2:3 2:1:1 3:2:0 4:2:3 5:1:1 6:0:0 7:0:0 8:0:0 9:2:0 10:2:1 11:0:0 12:1:0 13:2:0 14:0:0 15:0:0 2 1 0 1 0 0:3:r4:xor@base_2:inject 1:8:r3:rotl@base_5:bijective 2:14:r0:mad@base_10:inject 3:18:r5:xor@base_12:inject 4:22:r6:load@base_14:inject 5:29:r0:rotr@base_27:bijective 6:33:r4:rotr@base_32:bijective 7:34:r7:xor@base_31:inject 8:36:r6:rotl@base_35:bijective 9:38:r4:load@base_34:inject 10:39:r3:load@base_38:inject 11:43:r2:mul@base_37:lossy 12:44:r7:rotr@base_41:bijective 13:48:r2:sub@base_46:inject 14:52:r0:rotr@base_50:bijective 15:63:r5:or@base_61:lossy +igneum-ca3-v4-uniform/2 6246cd40e11fb5e4 0 0:0:0 1:2:0 2:0:0 3:1:1 4:0:0 5:0:0 6:1:1 7:2:0 8:0:0 9:0:0 10:1:1 11:1:0 12:0:0 13:0:0 14:2:2 15:1:1 3 1 0 1 1 0:1:r7:shfl@base_0:inject 1:4:r4:rotl@base_2:bijective 2:14:r1:shfl@base_9:inject 3:15:r7:mad@base_11:inject 4:19:r5:add@base_13:inject 5:21:r6:mul@base_18:lossy 6:23:r0:add@base_20:inject 7:26:r7:add@base_22:inject 8:28:r3:or@base_27:lossy 9:38:r4:rotl@base_37:bijective 10:42:r6:add@base_33:inject 11:45:r2:load@base_42:inject 12:48:r7:xor@base_44:inject 13:49:r0:rotr@base_41:bijective 14:56:r0:mulhi@base_55:lossy 15:57:r1:load@base_48:inject +igneum-ca3-v4-uniform/3 3dd039a9367415f7 0 0:0:0 1:0:0 2:1:0 3:1:1 4:1:1 5:0:0 6:2:3 7:0:0 8:2:0 9:2:3 10:1:1 11:2:2 12:2:2 13:2:3 14:0:0 15:2:3 0 0 0 0 0 0:3:r7:xor@base_1:inject 1:6:r7:add@base_5:inject 2:7:r5:add@base_4:inject 3:9:r3:load@base_6:inject 4:14:r2:xor@base_12:inject 5:15:r6:load@base_14:inject 6:16:r0:mad@base_13:inject 7:17:r2:load@base_15:inject 8:22:r3:load@base_16:inject 9:25:r3:xor@base_24:inject 10:30:r3:shfl@base_26:inject 11:32:r4:add@base_31:inject 12:40:r5:xor@base_36:inject 13:42:r7:load@base_32:inject 14:46:r0:sub@base_35:inject 15:47:r3:add@base_41:inject +igneum-ca3-v4-uniform/4 2593969c066a255a 0 0:2:2 1:0:0 2:2:2 3:0:0 4:1:0 5:2:0 6:2:2 7:0:0 8:1:1 9:1:1 10:1:0 11:1:1 12:0:0 13:1:0 14:2:1 15:1:1 3 0 0 1 2 0:1:r4:rotr@base_0:bijective 1:4:r7:mul@base_3:lossy 2:5:r0:sub@base_2:inject 3:9:r3:load@base_5:inject 4:14:r4:shfl@base_10:inject 5:17:r0:load@base_14:inject 6:18:r2:mulhi@base_8:lossy 7:24:r4:xor@base_22:inject 8:28:r6:rotl@base_27:bijective 9:32:r2:mad@base_23:inject 10:35:r4:load@base_32:inject 11:46:r4:add@base_39:inject 12:48:r1:load@base_9:inject 13:54:r3:load@base_48:inject 14:59:r1:xor@base_55:inject 15:63:r0:mulhi@base_62:lossy +igneum-ca3-v4-uniform/5 f0d6544c0198b8ef 0 0:2:0 1:0:0 2:1:1 3:0:0 4:2:3 5:0:0 6:1:0 7:1:0 8:2:1 9:0:0 10:1:1 11:2:3 12:1:0 13:1:1 14:0:0 15:1:1 2 0 0 2 0 0:3:r1:mad@base_0:inject 1:7:r2:mul@base_2:lossy 2:8:r4:load@base_7:inject 3:16:r4:mul@base_11:lossy 4:18:r1:rotr@base_14:bijective 5:19:r3:xor@base_15:inject 6:20:r7:load@base_16:inject 7:31:r4:add@base_27:inject 8:33:r5:add@base_24:inject 9:34:r7:load@base_33:inject 10:45:r5:add@base_44:inject 11:47:r1:load@base_45:inject 12:51:r6:xor@base_30:inject 13:53:r5:xor@base_49:inject 14:58:r0:rotr@base_54:bijective 15:59:r7:add@base_57:inject +igneum-ca3-v4-uniform/6 2496d3a7daf3b17b 0 0:0:0 1:0:0 2:2:2 3:2:2 4:2:0 5:2:2 6:0:0 7:0:0 8:0:0 9:2:2 10:2:1 11:2:1 12:2:2 13:0:0 14:1:1 15:2:1 1 0 0 0 1 0:3:r0:add@base_1:inject 1:5:r2:shfl@base_2:inject 2:8:r5:shfl@base_6:inject 3:9:r7:load@base_8:inject 4:10:r3:load@base_3:inject 5:12:r0:load@base_10:inject 6:27:r6:mulhi@base_13:lossy 7:32:r4:shfl@base_28:inject 8:36:r7:add@base_21:inject 9:38:r6:add@base_35:inject 10:40:r0:load@base_32:inject 11:47:r5:rotr@base_44:bijective 12:48:r7:load@base_47:inject 13:49:r3:rotl@base_45:bijective 14:52:r4:load@base_48:inject 15:56:r7:mad@base_50:inject +igneum-ca3-v4-uniform/7 e8bc3c6f8d641355 0 0:1:0 1:2:1 2:2:1 3:1:1 4:1:0 5:0:0 6:0:0 7:0:0 8:2:3 9:1:0 10:2:2 11:1:1 12:0:0 13:2:3 14:2:1 15:1:0 1 0 0 1 0 0:4:r1:mad@base_3:inject 1:6:r3:add@base_1:inject 2:8:r2:rotr@base_5:bijective 3:11:r4:shfl@base_9:inject 4:12:r6:load@base_6:inject 5:16:r1:load@base_12:inject 6:21:r4:mul@base_19:lossy 7:24:r7:add@base_22:inject 8:27:r5:xor@base_25:inject 9:32:r5:rotr@base_28:bijective 10:33:r3:rotl@base_29:bijective 11:34:r6:rotl@base_30:bijective 12:40:r4:xor@base_35:inject 13:47:r6:shfl@base_42:inject 14:53:r1:rotl@base_46:bijective 15:55:r7:shfl@base_54:inject +igneum-ca3-v4-uniform/8 ec0787219d4bddf9 0 0:0:0 1:2:3 2:1:0 3:2:3 4:0:0 5:2:0 6:1:0 7:2:0 8:2:2 9:0:0 10:0:0 11:0:0 12:0:0 13:1:1 14:1:1 15:2:0 1 0 0 0 1 0:1:r6:shfl@base_0:inject 1:2:r0:load@base_1:inject 2:3:r4:load@base_2:inject 3:8:r0:mulhi@base_6:lossy 4:23:r6:mad@base_4:inject 5:25:r7:load@base_8:inject 6:26:r3:load@base_25:inject 7:34:r2:load@base_26:inject 8:37:r6:add@base_27:inject 9:42:r5:xor@base_40:inject 10:44:r3:add@base_41:inject 11:51:r3:sub@base_47:inject 12:54:r2:add@base_49:inject 13:55:r7:xor@base_52:inject 14:56:r6:load@base_55:inject 15:63:r1:xor@base_60:inject +igneum-ca3-v4-uniform/9 1080449544f2e016 0 0:2:0 1:0:0 2:1:0 3:2:2 4:0:0 5:2:3 6:0:0 7:1:0 8:1:0 9:1:1 10:0:0 11:2:2 12:0:0 13:0:0 14:0:0 15:2:2 2 0 0 0 2 0:12:r3:rotr@base_5:bijective 1:14:r0:load@base_12:inject 2:16:r6:rotl@base_10:bijective 3:20:r1:add@base_18:inject 4:21:r4:load@base_20:inject 5:24:r3:mulhi@base_23:lossy 6:29:r6:load@base_24:inject 7:39:r3:xor@base_37:inject 8:41:r5:xor@base_30:inject 9:46:r4:add@base_43:inject 10:53:r1:mulhi@base_52:lossy 11:54:r4:load@base_53:inject 12:55:r7:load@base_54:inject 13:60:r3:mad@base_58:inject 14:62:r2:rotr@base_57:bijective 15:63:r6:load@base_41:inject +igneum-ca3-v4-uniform/10 ee71bb47a39c6531 0 0:2:2 1:2:0 2:1:1 3:2:3 4:0:0 5:0:0 6:0:0 7:0:0 8:2:2 9:0:0 10:2:0 11:2:2 12:2:3 13:2:0 14:2:0 15:1:1 3 1 0 2 0 0:3:r0:mul@base_1:lossy 1:5:r2:shfl@base_4:inject 2:7:r4:or@base_6:lossy 3:17:r4:shfl@base_15:inject 4:20:r3:mad@base_2:inject 5:23:r5:load@base_17:inject 6:24:r6:load@base_20:inject 7:25:r0:add@base_9:inject 8:28:r0:add@base_27:inject 9:31:r7:load@base_28:inject 10:38:r2:mul@base_32:lossy 11:49:r6:xor@base_45:inject 12:51:r7:sub@base_41:inject 13:53:r6:load@base_51:inject 14:54:r5:xor@base_47:inject 15:63:r1:load@base_49:inject +igneum-ca3-v4-uniform/11 3ffd9684296666b6 0 0:1:0 1:1:1 2:0:0 3:2:1 4:2:2 5:2:3 6:2:2 7:0:0 8:0:0 9:1:1 10:1:0 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 1 0 0 1 0 0:4:r3:add@base_2:inject 1:6:r5:load@base_4:inject 2:7:r3:load@base_6:inject 3:9:r7:sub@base_8:inject 4:10:r0:rotr@base_5:bijective 5:12:r2:xor@base_0:inject 6:22:r3:load@base_10:inject 7:26:r1:xor@base_15:inject 8:30:r0:mad@base_21:inject 9:32:r4:sub@base_24:inject 10:42:r7:shfl@base_41:inject 11:45:r2:mul@base_31:lossy 12:52:r0:mad@base_44:inject 13:57:r4:xor@base_47:inject 14:62:r1:rotl@base_61:bijective 15:63:r2:shfl@base_58:inject +igneum-ca3-v4-uniform/12 b0e3f3b9d423270f 0 0:0:0 1:0:0 2:1:0 3:1:1 4:0:0 5:0:0 6:1:0 7:0:0 8:1:0 9:2:2 10:1:0 11:2:0 12:2:2 13:0:0 14:0:0 15:0:0 2 2 0 0 0 0:5:r5:add@base_1:inject 1:6:r3:xor@base_4:inject 2:7:r2:load@base_6:inject 3:8:r1:rotl@base_2:bijective 4:10:r0:mad@base_9:inject 5:11:r4:load@base_7:inject 6:18:r4:or@base_15:lossy 7:19:r0:load@base_11:inject 8:20:r6:shfl@base_17:inject 9:26:r2:xor@base_14:inject 10:27:r5:load@base_26:inject 11:39:r4:or@base_36:lossy 12:40:r0:shfl@base_32:inject 13:48:r1:rotl@base_47:bijective 14:62:r2:sub@base_52:inject 15:63:r4:shfl@base_61:inject +igneum-ca3-v4-uniform/13 e6566b53de2e5c1c 0 0:0:0 1:1:0 2:2:1 3:0:0 4:1:1 5:0:0 6:2:1 7:1:1 8:0:0 9:0:0 10:1:0 11:2:3 12:2:1 13:2:2 14:0:0 15:2:2 5 1 0 3 1 0:1:r1:mul@base_0:lossy 1:3:r7:mulhi@base_2:lossy 2:7:r4:load@base_3:inject 3:12:r3:xor@base_8:inject 4:14:r1:sub@base_11:inject 5:21:r4:add@base_17:inject 6:34:r5:mad@base_26:inject 7:39:r6:xor@base_31:inject 8:42:r7:xor@base_41:inject 9:43:r1:load@base_42:inject 10:48:r3:or@base_44:lossy 11:49:r4:rotr@base_47:bijective 12:53:r5:mul@base_52:lossy 13:57:r6:mad@base_54:inject 14:60:r3:mul@base_56:lossy 15:61:r6:load@base_60:inject +igneum-ca3-v4-uniform/14 9a6c4e59ae1a4953 0 0:0:0 1:0:0 2:0:0 3:0:0 4:0:0 5:2:0 6:2:3 7:2:2 8:0:0 9:2:2 10:1:1 11:2:1 12:2:0 13:0:0 14:0:0 15:0:0 2 1 0 0 1 0:3:r5:shfl@base_1:inject 1:5:r0:load@base_3:inject 2:7:r3:load@base_5:inject 3:9:r1:rotl@base_4:bijective 4:11:r1:rotr@base_10:bijective 5:17:r3:add@base_14:inject 6:23:r6:mulhi@base_19:lossy 7:34:r2:xor@base_22:inject 8:37:r1:mad@base_32:inject 9:39:r7:or@base_36:lossy 10:46:r6:sub@base_44:inject 11:47:r0:load@base_39:inject 12:56:r7:sub@base_52:inject 13:57:r4:load@base_37:inject 14:59:r2:rotl@base_58:bijective 15:61:r5:load@base_59:inject +igneum-ca3-v4-uniform/15 8b5d3baac00d73d0 0 0:1:0 1:0:0 2:0:0 3:1:1 4:0:0 5:2:3 6:0:0 7:1:1 8:2:0 9:0:0 10:2:1 11:0:0 12:0:0 13:1:1 14:0:0 15:0:0 4 0 0 2 2 0:7:r6:rotr@base_3:bijective 1:13:r4:add@base_10:inject 2:16:r0:mul@base_15:lossy 3:18:r3:load@base_7:inject 4:19:r7:load@base_13:inject 5:21:r1:mul@base_12:lossy 6:23:r2:load@base_18:inject 7:26:r5:shfl@base_24:inject 8:31:r7:mad@base_30:inject 9:41:r5:rotr@base_39:bijective 10:47:r5:add@base_43:inject 11:51:r3:rotr@base_49:bijective 12:52:r6:mulhi@base_50:lossy 13:55:r2:rotr@base_44:bijective 14:57:r6:xor@base_56:inject 15:63:r1:mulhi@base_27:lossy +igneum-ca3-v4-uniform/16 2cbd61f46cbaa83d 0 0:1:0 1:2:2 2:2:0 3:1:0 4:1:1 5:1:1 6:2:1 7:0:0 8:1:0 9:2:1 10:0:0 11:1:1 12:2:3 13:1:0 14:2:2 15:2:0 4 2 0 1 1 0:1:r1:mad@shadow_248:inject 1:3:r2:mul@base_2:lossy 2:4:r4:load@base_1:inject 3:7:r0:load@base_4:inject 4:12:r2:rotl@base_5:bijective 5:13:r0:load@base_12:inject 6:18:r0:or@base_16:lossy 7:19:r4:rotl@base_14:bijective 8:26:r6:rotl@base_22:bijective 9:30:r0:rotl@base_28:bijective 10:33:r4:sub@base_23:inject 11:47:r0:or@base_41:lossy 12:52:r7:rotl@base_51:bijective 13:54:r3:add@base_36:inject 14:57:r1:xor@base_50:inject 15:60:r7:mulhi@base_56:lossy +igneum-ca3-v4-uniform/17 e5629f81bc65f668 0 0:0:0 1:1:1 2:1:0 3:1:0 4:1:0 5:0:0 6:2:0 7:1:0 8:2:2 9:2:1 10:0:0 11:0:0 12:0:0 13:0:0 14:2:1 15:2:3 4 1 0 1 2 0:2:r3:mul@base_0:lossy 1:5:r7:mad@base_4:inject 2:9:r3:mad@base_6:inject 3:10:r7:add@base_8:inject 4:14:r6:or@base_1:lossy 5:17:r4:sub@base_13:inject 6:21:r7:mulhi@base_20:lossy 7:27:r5:load@base_21:inject 8:30:r4:mad@base_29:inject 9:34:r0:load@base_17:inject 10:35:r7:mulhi@base_33:lossy 11:36:r5:add@base_28:inject 12:43:r2:load@base_36:inject 13:54:r7:add@base_44:inject 14:57:r0:xor@base_53:inject 15:60:r4:add@base_52:inject +igneum-ca3-v4-uniform/18 2a5e2ee2b48f9ee3 0 0:1:0 1:0:0 2:1:1 3:2:2 4:1:1 5:0:0 6:0:0 7:2:1 8:0:0 9:0:0 10:1:1 11:1:0 12:1:0 13:1:0 14:2:0 15:0:0 3 1 0 0 2 0:5:r4:add@base_1:inject 1:10:r3:shfl@base_7:inject 2:11:r0:mulhi@base_8:lossy 3:15:r6:or@base_3:lossy 4:17:r3:rotr@base_16:bijective 5:20:r2:load@base_15:inject 6:22:r7:load@base_17:inject 7:23:r1:load@base_20:inject 8:24:r7:load@base_23:inject 9:26:r0:shfl@base_21:inject 10:29:r4:load@base_24:inject 11:34:r1:load@base_29:inject 12:40:r0:add@base_37:inject 13:46:r2:xor@base_42:inject 14:53:r1:mulhi@base_36:lossy 15:57:r5:rotr@base_41:bijective +igneum-ca3-v4-uniform/19 8b0ed278a641e543 0 0:0:0 1:0:0 2:1:1 3:2:1 4:2:2 5:1:0 6:1:1 7:2:2 8:1:0 9:2:0 10:1:0 11:2:1 12:2:1 13:1:1 14:1:1 15:1:0 1 0 0 0 1 0:1:r2:rotr@base_0:bijective 1:2:r0:load@base_1:inject 2:13:r7:mad@base_7:inject 3:15:r2:load@base_2:inject 4:18:r4:load@base_15:inject 5:19:r3:load@base_18:inject 6:27:r1:sub@base_24:inject 7:29:r5:load@base_27:inject 8:32:r2:rotr@base_28:bijective 9:34:r0:load@base_19:inject 10:42:r3:load@base_32:inject 11:45:r6:add@base_26:inject 12:46:r7:rotr@base_38:bijective 13:48:r5:mulhi@base_43:lossy 14:50:r3:sub@base_49:inject 15:58:r7:mad@base_57:inject +igneum-ca3-v4-uniform/20 d83e1cf76ae037d1 0 0:2:2 1:2:0 2:2:3 3:0:0 4:2:1 5:1:1 6:0:0 7:2:0 8:2:1 9:1:0 10:0:0 11:1:0 12:0:0 13:0:0 14:1:0 15:1:0 5 2 0 2 1 0:4:r0:or@base_3:lossy 1:5:r6:load@base_4:inject 2:9:r4:shfl@base_7:inject 3:12:r0:sub@base_6:inject 4:16:r1:mulhi@base_8:lossy 5:24:r7:mad@base_18:inject 6:26:r3:or@base_15:lossy 7:34:r5:sub@base_31:inject 8:35:r4:xor@base_32:inject 9:39:r7:load@base_34:inject 10:44:r3:shfl@base_43:inject 11:45:r7:mul@base_40:lossy 12:48:r2:shfl@base_38:inject 13:59:r6:load@base_45:inject 14:62:r3:mul@base_60:lossy 15:63:r4:rotr@base_52:bijective +igneum-ca3-v4-uniform/21 5642d06f5dc3ae43 0 0:0:0 1:2:1 2:1:0 3:2:2 4:1:1 5:0:0 6:1:1 7:0:0 8:1:1 9:1:0 10:2:1 11:2:1 12:2:2 13:2:1 14:2:1 15:0:0 3 0 0 2 1 0:3:r5:mulhi@base_0:lossy 1:4:r2:mul@base_2:lossy 2:15:r2:xor@base_7:inject 3:18:r5:shfl@base_11:inject 4:20:r3:xor@base_19:inject 5:25:r4:sub@base_22:inject 6:27:r6:shfl@base_13:inject 7:31:r7:shfl@base_26:inject 8:35:r5:rotl@base_21:bijective 9:38:r4:add@base_36:inject 10:45:r4:mul@base_42:lossy 11:46:r0:mad@base_41:inject 12:48:r1:shfl@base_44:inject 13:54:r7:sub@base_50:inject 14:60:r4:mad@base_59:inject 15:61:r3:rotl@base_56:bijective +igneum-ca3-v4-uniform/22 ba9f85cecba8f9fe 0 0:1:1 1:2:2 2:0:0 3:2:3 4:0:0 5:0:0 6:0:0 7:1:0 8:0:0 9:0:0 10:2:0 11:1:1 12:0:0 13:0:0 14:2:3 15:0:0 4 0 0 1 3 0:3:r6:mulhi@base_2:lossy 1:8:r1:load@base_3:inject 2:13:r3:mul@base_9:lossy 3:14:r0:load@base_13:inject 4:17:r1:xor@base_16:inject 5:18:r2:rotl@base_11:bijective 6:19:r6:load@base_18:inject 7:21:r5:load@base_8:inject 8:28:r3:xor@base_26:inject 9:33:r4:mulhi@base_29:lossy 10:38:r6:sub@base_36:inject 11:39:r1:rotl@base_34:bijective 12:42:r2:rotl@base_41:bijective 13:46:r0:mulhi@base_40:lossy 14:49:r4:add@base_48:inject 15:56:r5:shfl@base_50:inject +igneum-ca3-v4-uniform/23 6239da652f57dba2 0 0:0:0 1:2:0 2:2:2 3:1:0 4:1:0 5:0:0 6:0:0 7:2:3 8:1:0 9:2:2 10:0:0 11:0:0 12:0:0 13:1:1 14:2:2 15:0:0 1 0 0 0 1 0:1:r3:rotl@base_0:bijective 1:3:r7:load@base_1:inject 2:4:r5:add@base_2:inject 3:6:r1:load@base_4:inject 4:8:r7:add@base_5:inject 5:23:r3:add@base_15:inject 6:26:r1:load@base_23:inject 7:41:r1:mad@base_39:inject 8:44:r6:load@base_26:inject 9:45:r3:mad@base_27:inject 10:50:r7:load@base_44:inject 11:54:r0:load@base_45:inject 12:56:r2:rotr@base_43:bijective 13:58:r0:mulhi@base_57:lossy 14:60:r7:load@base_56:inject 15:62:r4:add@base_59:inject +igneum-ca3-v4-uniform/24 9c1c54ea95fdba04 0 0:2:2 1:2:2 2:0:0 3:1:0 4:2:2 5:2:1 6:0:0 7:0:0 8:2:1 9:1:0 10:1:0 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 4 0 0 2 2 0:4:r4:xor@base_1:inject 1:7:r0:mad@base_2:inject 2:13:r3:xor@base_12:inject 3:18:r0:mul@base_10:lossy 4:19:r1:load@base_7:inject 5:20:r4:mul@base_15:lossy 6:23:r2:mulhi@base_22:lossy 7:28:r4:mulhi@base_25:lossy 8:30:r0:add@base_27:inject 9:31:r7:load@base_23:inject 10:37:r1:shfl@base_24:inject 11:38:r0:xor@base_32:inject 12:39:r5:rotr@base_26:bijective 13:51:r7:rotr@base_48:bijective 14:55:r4:load@base_37:inject 15:60:r1:load@base_51:inject +igneum-ca3-v4-uniform/25 e4affd1be2e4fb5c 0 0:0:0 1:2:1 2:2:2 3:2:1 4:2:0 5:2:0 6:2:3 7:0:0 8:0:0 9:1:1 10:2:2 11:2:0 12:2:2 13:0:0 14:0:0 15:2:2 5 1 0 0 4 0:4:r6:mulhi@base_1:lossy 1:5:r3:load@base_4:inject 2:17:r3:shfl@base_12:inject 3:18:r7:xor@base_6:inject 4:19:r0:or@base_14:lossy 5:22:r6:rotr@base_20:bijective 6:23:r2:load@base_22:inject 7:28:r3:mulhi@base_25:lossy 8:32:r5:xor@base_29:inject 9:42:r3:shfl@base_31:inject 10:46:r5:load@base_42:inject 11:50:r0:add@base_34:inject 12:52:r6:mulhi@base_45:lossy 13:53:r1:load@base_46:inject 14:59:r0:mad@base_57:inject 15:62:r7:mulhi@base_55:lossy +igneum-ca3-v4-uniform/26 be04fddd468f90db 0 0:1:1 1:2:1 2:2:3 3:0:0 4:1:0 5:1:1 6:0:0 7:2:3 8:1:0 9:1:0 10:0:0 11:0:0 12:1:0 13:2:1 14:0:0 15:1:0 2 0 0 2 0 0:7:r2:sub@base_6:inject 1:13:r2:shfl@base_12:inject 2:17:r6:xor@base_11:inject 3:23:r2:shfl@base_21:inject 4:24:r7:mul@base_20:lossy 5:27:r2:rotr@base_26:bijective 6:29:r4:xor@base_18:inject 7:30:r1:add@base_4:inject 8:31:r5:load@base_17:inject 9:33:r3:load@base_31:inject 10:44:r4:add@base_37:inject 11:46:r7:mul@base_42:lossy 12:53:r1:xor@base_50:inject 13:55:r0:xor@base_51:inject 14:56:r2:load@base_55:inject 15:57:r4:add@base_54:inject +igneum-ca3-v4-uniform/27 e48919c0a9287bda 0 0:2:1 1:1:1 2:0:0 3:2:1 4:2:0 5:0:0 6:0:0 7:1:1 8:2:0 9:0:0 10:1:1 11:1:1 12:0:0 13:1:0 14:1:1 15:1:1 4 2 0 2 0 0:4:r2:rotl@base_2:bijective 1:8:r1:rotl@base_7:bijective 2:11:r0:load@base_8:inject 3:13:r3:or@base_0:lossy 4:25:r5:mad@base_17:inject 5:29:r7:sub@base_23:inject 6:30:r0:load@base_29:inject 7:31:r2:shfl@base_18:inject 8:33:r7:load@base_30:inject 9:34:r4:sub@base_27:inject 10:35:r2:xor@base_32:inject 11:43:r2:xor@base_38:inject 12:50:r7:or@base_48:lossy 13:52:r1:mul@base_36:lossy 14:53:r6:mul@base_51:lossy 15:56:r6:xor@base_54:inject +igneum-ca3-v4-uniform/28 9350b6d664f979e0 0 0:0:0 1:2:0 2:2:3 3:0:0 4:1:0 5:2:0 6:1:1 7:2:0 8:2:3 9:1:1 10:2:3 11:2:0 12:1:1 13:0:0 14:0:0 15:1:1 3 0 0 2 1 0:1:r6:xor@base_0:inject 1:5:r5:mul@base_4:lossy 2:7:r2:mad@base_3:inject 3:14:r5:add@base_13:inject 4:15:r4:mad@base_9:inject 5:16:r1:load@base_14:inject 6:21:r1:shfl@base_18:inject 7:32:r2:load@base_21:inject 8:38:r5:load@base_15:inject 9:40:r4:load@base_38:inject 10:41:r0:rotr@base_37:bijective 11:43:r1:load@base_40:inject 12:49:r4:xor@base_46:inject 13:56:r7:load@base_49:inject 14:57:r6:mulhi@base_53:lossy 15:58:r3:mul@base_51:lossy +igneum-ca3-v4-uniform/29 7450702193fe8046 1 0:0:0 1:2:2 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:1:0 8:0:0 9:0:0 10:2:0 11:1:0 12:1:0 13:0:0 14:2:3 15:0:0 2 1 0 0 1 0:2:r0:rotr@base_1:bijective 1:5:r6:shfl@base_4:inject 2:9:r5:load@base_2:inject 3:18:r7:mulhi@base_16:lossy 4:19:r6:rotl@base_17:bijective 5:26:r5:add@base_21:inject 6:27:r3:or@base_25:lossy 7:30:r1:load@base_27:inject 8:32:r6:rotr@base_29:bijective 9:34:r3:load@base_32:inject 10:38:r7:load@base_26:inject 11:39:r0:load@base_30:inject 12:40:r6:load@base_38:inject 13:46:r5:add@base_43:inject 14:49:r4:add@base_48:inject 15:58:r5:add@base_56:inject +igneum-ca3-v4-uniform/30 c04784b300566d0d 0 0:1:0 1:0:0 2:2:0 3:0:0 4:1:1 5:0:0 6:1:0 7:1:1 8:2:0 9:0:0 10:1:0 11:2:3 12:2:0 13:0:0 14:2:3 15:0:0 2 0 0 0 2 0:3:r5:sub@base_2:inject 1:6:r3:load@base_3:inject 2:9:r0:load@base_6:inject 3:17:r1:add@base_16:inject 4:18:r5:xor@base_8:inject 5:26:r6:rotr@base_21:bijective 6:30:r5:mulhi@base_27:lossy 7:35:r6:add@base_32:inject 8:39:r3:add@base_36:inject 9:45:r4:mad@base_24:inject 10:46:r6:mulhi@base_44:lossy 11:50:r2:shfl@base_49:inject 12:51:r1:load@base_46:inject 13:59:r5:add@base_58:inject 14:60:r0:load@base_59:inject 15:61:r2:load@base_60:inject +igneum-ca3-v4-uniform/31 99aa2d22bd95516d 0 0:0:0 1:0:0 2:0:0 3:1:0 4:2:1 5:1:1 6:0:0 7:2:2 8:1:1 9:1:0 10:2:3 11:1:1 12:1:0 13:0:0 14:2:3 15:2:2 1 0 0 1 0 0:1:r2:shfl@base_0:inject 1:2:r0:load@base_1:inject 2:8:r4:xor@base_4:inject 3:13:r5:rotl@base_6:bijective 4:16:r1:xor@base_11:inject 5:18:r2:add@base_3:inject 6:19:r6:sub@base_12:inject 7:20:r3:load@base_19:inject 8:21:r5:load@base_18:inject 9:25:r0:load@base_20:inject 10:26:r7:shfl@base_15:inject 11:31:r3:rotl@base_23:bijective 12:42:r1:mul@base_22:lossy 13:45:r5:shfl@base_43:inject 14:47:r2:rotr@base_36:bijective 15:54:r7:shfl@base_53:inject +igneum-ca3-v4-uniform/32 eb471c0266c5d538 0 0:2:1 1:1:1 2:2:1 3:1:1 4:0:0 5:1:1 6:2:2 7:0:0 8:1:1 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:0:0 15:1:1 5 1 0 3 1 0:5:r4:sub@base_2:inject 1:9:r2:add@base_3:inject 2:11:r6:load@base_5:inject 3:12:r0:mulhi@base_10:lossy 4:19:r0:xor@base_18:inject 5:24:r4:mul@base_21:lossy 6:26:r1:shfl@base_20:inject 7:27:r0:mul@base_22:lossy 8:30:r2:shfl@base_29:inject 9:31:r6:load@base_26:inject 10:44:r7:rotl@base_39:bijective 11:46:r2:mul@base_40:lossy 12:51:r1:shfl@base_50:inject 13:54:r6:add@base_47:inject 14:56:r4:or@base_53:lossy 15:61:r2:mad@base_59:inject +igneum-ca3-v4-uniform/33 d57dd316144ecf98 0 0:0:0 1:0:0 2:2:1 3:0:0 4:1:0 5:1:0 6:2:3 7:0:0 8:2:1 9:2:0 10:0:0 11:1:1 12:2:1 13:0:0 14:0:0 15:1:1 2 0 0 1 1 0:2:r6:rotl@base_1:bijective 1:4:r4:mul@base_0:lossy 2:10:r1:load@base_2:inject 3:15:r6:mad@base_5:inject 4:18:r6:add@base_16:inject 5:19:r7:rotl@base_8:bijective 6:23:r7:sub@base_21:inject 7:25:r1:load@base_23:inject 8:31:r3:load@base_10:inject 9:35:r6:mulhi@base_33:lossy 10:47:r4:shfl@base_30:inject 11:48:r3:mad@base_43:inject 12:49:r5:load@base_48:inject 13:54:r3:load@base_49:inject 14:59:r0:sub@base_53:inject 15:60:r1:mad@base_50:inject +igneum-ca3-v4-uniform/34 9a9ce888d064df57 0 0:1:0 1:1:0 2:2:3 3:2:3 4:1:1 5:0:0 6:0:0 7:0:0 8:0:0 9:2:1 10:2:3 11:2:1 12:0:0 13:1:1 14:1:1 15:2:0 2 1 0 1 0 0:3:r5:shfl@base_1:inject 1:7:r0:add@base_6:inject 2:12:r6:rotr@base_11:bijective 3:23:r5:add@base_22:inject 4:26:r7:add@base_14:inject 5:29:r4:sub@base_27:inject 6:30:r0:sub@base_28:inject 7:32:r6:load@base_26:inject 8:33:r2:load@base_29:inject 9:37:r2:shfl@base_36:inject 10:42:r4:or@base_35:lossy 11:45:r0:load@base_42:inject 12:46:r7:load@base_45:inject 13:57:r1:mul@base_44:lossy 14:58:r2:rotr@base_53:bijective 15:63:r0:load@base_58:inject +igneum-ca3-v4-uniform/35 a629aabb1ef3b133 1 0:1:0 1:1:0 2:1:1 3:0:0 4:1:0 5:1:0 6:0:0 7:1:1 8:0:0 9:2:1 10:1:1 11:1:1 12:2:3 13:1:1 14:2:0 15:1:1 3 0 0 2 1 0:2:r1:rotr@base_1:bijective 1:4:r4:load@base_2:inject 2:7:r5:rotr@base_3:bijective 3:9:r7:load@base_7:inject 4:11:r2:xor@base_10:inject 5:20:r6:sub@base_15:inject 6:24:r6:xor@base_21:inject 7:29:r7:add@base_19:inject 8:31:r4:mul@base_27:lossy 9:39:r3:load@base_29:inject 10:41:r0:mulhi@base_36:lossy 11:42:r5:rotr@base_40:bijective 12:45:r4:load@base_42:inject 13:54:r1:mul@base_38:lossy 14:61:r2:xor@base_51:inject 15:62:r5:mad@base_60:inject +igneum-ca3-v4-uniform/36 4fb35eca91e01fbd 0 0:1:0 1:1:0 2:0:0 3:1:0 4:2:1 5:1:1 6:2:3 7:0:0 8:0:0 9:1:0 10:2:1 11:2:1 12:2:1 13:1:1 14:2:0 15:2:1 2 0 0 1 1 0:1:r4:sub@base_0:inject 1:3:r6:load@base_1:inject 2:7:r2:sub@base_6:inject 3:8:r1:mulhi@base_4:lossy 4:10:r6:add@base_9:inject 5:14:r3:mul@base_12:lossy 6:19:r5:add@base_17:inject 7:22:r7:shfl@base_16:inject 8:29:r0:xor@base_26:inject 9:31:r6:mad@base_27:inject 10:33:r2:load@base_22:inject 11:42:r7:xor@base_36:inject 12:44:r4:add@base_38:inject 13:45:r1:load@base_42:inject 14:51:r5:load@base_45:inject 15:56:r0:load@base_51:inject +igneum-ca3-v4-uniform/37 fcefb5fce38cbec8 0 0:1:0 1:2:1 2:0:0 3:2:2 4:2:1 5:1:1 6:2:1 7:0:0 8:2:2 9:1:0 10:2:1 11:1:1 12:1:1 13:2:0 14:1:0 15:2:1 2 2 1 0 0 0:2:r0:mad@base_1:inject 1:3:r3:sub@shadow_252:inject 2:7:r1:load@base_3:inject 3:10:r3:xor@base_9:inject 4:14:r4:load@base_10:inject 5:19:r4:xor@base_17:inject 6:24:r2:add@base_21:inject 7:25:r6:rotr@base_20:bijective 8:44:r4:or@base_35:lossy-or-chain1 9:45:r3:rotr@base_40:bijective 10:48:r5:add@base_42:inject 11:50:r2:or@base_47:lossy 12:51:r7:load@base_48:inject 13:53:r4:load@base_51:inject 14:56:r2:add@base_52:inject 15:61:r1:load@base_50:inject +igneum-ca3-v4-uniform/38 83d4e7af52eefa1a 0 0:1:1 1:2:2 2:1:0 3:0:0 4:1:1 5:0:0 6:2:2 7:1:1 8:1:0 9:1:0 10:2:3 11:2:0 12:1:1 13:1:1 14:1:0 15:1:1 3 0 0 3 0 0:3:r4:add@base_0:inject 1:6:r1:xor@base_1:inject 2:7:r6:load@base_6:inject 3:8:r2:load@base_7:inject 4:9:r0:xor@base_5:inject 5:11:r6:xor@base_10:inject 6:20:r7:add@base_17:inject 7:22:r3:mul@base_15:lossy 8:25:r2:mul@base_24:lossy 9:29:r5:mul@base_26:lossy 10:35:r3:load@base_25:inject 11:38:r2:sub@base_32:inject 12:39:r0:xor@base_23:inject 13:40:r5:mad@base_37:inject 14:44:r4:load@base_39:inject 15:51:r0:rotl@base_50:bijective +igneum-ca3-v4-uniform/39 54f5603382a4711e 0 0:1:0 1:0:0 2:2:2 3:1:0 4:1:1 5:1:1 6:1:0 7:0:0 8:2:1 9:1:1 10:1:1 11:2:0 12:1:1 13:1:0 14:0:0 15:1:0 2 0 0 2 0 0:1:r6:shfl@base_0:inject 1:2:r3:load@base_1:inject 2:3:r2:load@base_2:inject 3:7:r1:sub@base_6:inject 4:17:r6:mul@base_13:lossy 5:20:r1:shfl@base_16:inject 6:35:r0:add@base_28:inject 7:42:r5:rotr@base_39:bijective 8:44:r6:mul@base_43:lossy 9:45:r4:load@base_42:inject 10:46:r3:xor@base_41:inject 11:53:r5:xor@base_48:inject 12:57:r4:add@base_56:inject 13:59:r2:load@base_53:inject 14:62:r1:add@base_61:inject 15:63:r0:mad@base_47:inject +igneum-ca3-v4-uniform/40 0618a7c0b05bf732 0 0:1:0 1:1:0 2:0:0 3:1:0 4:0:0 5:1:0 6:0:0 7:2:1 8:0:0 9:1:1 10:1:1 11:0:0 12:0:0 13:0:0 14:2:3 15:0:0 0 0 0 0 0 0:8:r6:xor@base_7:inject 1:18:r3:shfl@base_4:inject 2:20:r0:load@base_18:inject 3:21:r5:mad@base_17:inject 4:31:r5:add@base_30:inject 5:36:r1:rotr@base_10:bijective 6:40:r6:sub@base_29:inject 7:48:r3:add@base_42:inject 8:50:r5:load@base_36:inject 9:52:r0:load@base_48:inject 10:53:r7:shfl@base_49:inject 11:54:r1:rotl@base_51:bijective 12:55:r2:load@base_50:inject 13:56:r6:load@base_54:inject 14:58:r1:shfl@base_57:inject 15:62:r1:shfl@base_61:inject +igneum-ca3-v4-uniform/41 eca816e400509e8f 0 0:2:1 1:0:0 2:0:0 3:2:3 4:1:1 5:2:1 6:2:0 7:2:1 8:1:1 9:2:2 10:2:1 11:2:2 12:0:0 13:0:0 14:1:1 15:1:1 3 0 0 0 3 0:2:r1:shfl@base_0:inject 1:10:r6:add@base_7:inject 2:12:r4:xor@base_1:inject 3:14:r6:load@base_12:inject 4:15:r0:xor@base_11:inject 5:16:r3:load@base_14:inject 6:17:r2:load@base_16:inject 7:19:r1:mulhi@base_9:lossy 8:21:r5:mad@base_20:inject 9:26:r5:mulhi@base_23:lossy 10:32:r3:add@base_18:inject 11:34:r7:rotr@base_33:bijective 12:37:r0:mulhi@base_35:lossy 13:39:r5:load@base_37:inject 14:49:r1:rotl@base_42:bijective 15:53:r5:add@base_41:inject +igneum-ca3-v4-uniform/42 ace1c4cdfaba8921 0 0:1:0 1:0:0 2:2:2 3:0:0 4:1:0 5:2:3 6:0:0 7:2:0 8:2:2 9:0:0 10:0:0 11:1:0 12:2:1 13:1:0 14:0:0 15:1:0 3 0 0 2 1 0:4:r2:add@base_3:inject 1:9:r6:mul@base_1:lossy 2:11:r3:sub@base_5:inject 3:17:r2:rotl@base_7:bijective 4:24:r4:mad@base_16:inject 5:26:r2:mul@base_22:lossy 6:32:r1:xor@base_14:inject 7:34:r7:load@base_26:inject 8:38:r1:add@base_33:inject 9:39:r0:load@base_34:inject 10:42:r2:shfl@base_40:inject 11:45:r5:add@base_44:inject 12:49:r6:mad@base_43:inject 13:59:r3:rotl@base_35:bijective 14:61:r7:add@base_41:inject 15:63:r2:mulhi@base_60:lossy +igneum-ca3-v4-uniform/43 8a8c0a84e9bfc917 1 0:0:0 1:1:0 2:0:0 3:0:0 4:1:0 5:2:3 6:2:1 7:2:0 8:0:0 9:0:0 10:2:2 11:2:0 12:1:0 13:1:0 14:1:1 15:1:0 4 0 0 4 0 0:1:r2:xor@base_0:inject 1:7:r3:add@base_4:inject 2:16:r5:xor@base_9:inject 3:17:r2:add@base_15:inject 4:20:r7:mul@base_8:lossy 5:28:r2:add@base_18:inject 6:29:r5:load@base_20:inject 7:36:r4:xor@base_3:inject 8:45:r7:mul@base_41:lossy 9:52:r6:mul@base_50:lossy 10:53:r2:load@base_52:inject 11:54:r3:mul@base_47:lossy 12:55:r7:add@base_46:inject 13:59:r7:sub@base_58:inject 14:60:r5:sub@base_57:inject 15:61:r2:load@base_55:inject +igneum-ca3-v4-uniform/44 5844561f18abf7c9 0 0:2:1 1:2:0 2:2:1 3:1:1 4:2:0 5:0:0 6:0:0 7:1:0 8:1:1 9:2:3 10:2:0 11:2:3 12:0:0 13:1:0 14:2:2 15:2:0 4 2 0 1 1 0:6:r5:mulhi@base_2:lossy 1:13:r3:add@base_12:inject 2:14:r0:xor@base_9:inject 3:17:r7:or@base_15:lossy 4:19:r4:load@base_17:inject 5:20:r6:load@base_19:inject 6:21:r1:load@base_13:inject 7:22:r2:load@base_21:inject 8:31:r3:rotr@base_30:bijective 9:39:r0:sub@base_25:inject 10:43:r1:load@base_39:inject 11:47:r4:rotl@base_33:bijective 12:49:r3:mul@base_40:lossy 13:55:r3:shfl@base_53:inject 14:57:r6:or@base_44:lossy 15:58:r2:shfl@base_36:inject +igneum-ca3-v4-uniform/45 1e7c3fd06623cb3e 0 0:2:2 1:0:0 2:1:1 3:0:0 4:2:2 5:2:2 6:1:0 7:1:1 8:1:1 9:0:0 10:0:0 11:0:0 12:2:1 13:1:0 14:1:0 15:2:0 2 1 0 0 1 0:4:r0:shfl@base_2:inject 1:11:r7:rotl@base_7:bijective 2:17:r7:rotl@base_13:bijective 3:20:r0:add@base_14:inject 4:25:r0:xor@base_23:inject 5:26:r4:add@base_15:inject 6:28:r5:sub@base_18:inject 7:33:r1:load@base_28:inject 8:35:r2:or@base_31:lossy 9:38:r7:xor@base_34:inject 10:40:r5:mulhi@base_36:lossy 11:41:r6:load@base_38:inject 12:42:r1:rotl@base_37:bijective 13:49:r5:xor@base_46:inject 14:53:r7:add@base_52:inject 15:56:r1:load@base_53:inject +igneum-ca3-v4-uniform/46 b39c84841d572253 0 0:0:0 1:1:1 2:1:1 3:1:1 4:2:2 5:1:1 6:1:1 7:0:0 8:2:1 9:2:3 10:0:0 11:2:0 12:1:0 13:1:1 14:2:3 15:0:0 3 1 0 2 0 0:3:r7:mul@base_2:lossy 1:11:r6:sub@base_8:inject 2:12:r1:mul@base_9:lossy 3:16:r1:mad@base_13:inject 4:20:r0:shfl@base_19:inject 5:21:r2:load@base_20:inject 6:29:r7:add@base_28:inject 7:30:r2:add@base_27:inject 8:39:r5:mad@base_35:inject 9:43:r4:add@base_38:inject 10:44:r0:mad@base_36:inject 11:47:r1:load@base_43:inject 12:50:r5:or@base_46:lossy 13:52:r2:load@base_47:inject 14:62:r1:xor@base_57:inject 15:63:r0:mad@base_51:inject +igneum-ca3-v4-uniform/47 eb6d9cf3c596f3fc 0 0:0:0 1:1:0 2:2:1 3:1:0 4:0:0 5:2:1 6:1:1 7:2:0 8:2:3 9:2:2 10:0:0 11:1:1 12:0:0 13:2:2 14:1:1 15:0:0 3 0 0 2 1 0:1:r2:mad@base_0:inject 1:2:r1:load@base_1:inject 2:6:r2:shfl@base_4:inject 3:8:r7:mul@base_7:lossy 4:12:r4:load@base_6:inject 5:14:r2:mul@base_13:lossy 6:20:r5:add@base_15:inject 7:21:r3:mulhi@base_19:lossy 8:26:r2:load@base_21:inject 9:30:r5:mad@base_29:inject 10:31:r0:load@base_30:inject 11:37:r3:load@base_31:inject 12:39:r5:rotl@base_34:bijective 13:53:r7:add@base_52:inject 14:55:r0:xor@base_32:inject 15:58:r6:shfl@base_42:inject +igneum-ca3-v4-uniform/48 64892d15e378cdc1 0 0:1:1 1:0:0 2:1:0 3:2:1 4:2:1 5:0:0 6:0:0 7:2:2 8:1:0 9:1:0 10:2:2 11:2:1 12:0:0 13:1:1 14:0:0 15:2:0 2 0 0 1 1 0:3:r2:shfl@base_1:inject 1:4:r7:load@base_3:inject 2:11:r0:xor@base_10:inject 3:21:r0:mad@base_17:inject 4:29:r6:mulhi@base_25:lossy 5:33:r6:mul@base_31:lossy 6:34:r3:load@base_33:inject 7:39:r1:rotl@base_36:bijective 8:42:r5:add@base_40:inject 9:44:r2:load@base_42:inject 10:47:r2:rotr@base_46:bijective 11:51:r7:sub@base_50:inject 12:53:r0:sub@base_52:inject 13:58:r6:load@base_51:inject 14:59:r0:shfl@base_55:inject 15:63:r4:shfl@base_57:inject +igneum-ca3-v4-uniform/49 abd6f81b69cc4019 0 0:0:0 1:2:2 2:2:0 3:1:1 4:1:1 5:2:2 6:2:0 7:1:0 8:0:0 9:0:0 10:2:1 11:2:0 12:2:0 13:2:3 14:2:1 15:0:0 5 1 0 1 3 0:9:r2:add@base_6:inject 1:11:r3:load@base_9:inject 2:16:r4:mulhi@base_4:lossy 3:20:r6:load@base_11:inject 4:21:r7:load@base_16:inject 5:26:r4:add@base_17:inject 6:30:r2:mulhi@base_25:lossy 7:35:r0:xor@base_34:inject 8:40:r1:mul@base_37:lossy 9:41:r0:rotl@base_38:bijective 10:43:r6:or@base_36:lossy 11:46:r7:load@base_41:inject 12:53:r7:sub@base_49:inject 13:54:r4:load@base_43:inject 14:60:r7:load@base_54:inject 15:63:r4:mulhi@base_59:lossy +igneum-ca3-v4-uniform/50 8ffa3c14b19cd065 0 0:1:0 1:2:3 2:2:2 3:2:0 4:1:0 5:1:0 6:2:1 7:1:0 8:2:3 9:2:2 10:0:0 11:0:0 12:1:0 13:1:0 14:2:2 15:2:3 2 0 0 1 1 0:1:r3:xor@shadow_242:inject 1:3:r6:mad@base_2:inject 2:6:r0:mul@base_5:lossy 3:12:r5:rotl@base_8:bijective 4:19:r6:mulhi@base_17:lossy 5:22:r7:load@base_1:inject 6:29:r1:xor@base_23:inject 7:35:r6:rotr@base_33:bijective 8:40:r2:mad@base_39:inject 9:41:r7:shfl@base_38:inject 10:45:r0:rotr@base_43:bijective 11:47:r4:load@base_19:inject 12:48:r5:load@base_45:inject 13:49:r7:shfl@base_44:inject 14:53:r0:load@base_47:inject 15:62:r7:mad@base_61:inject +igneum-ca3-v4-uniform/51 5c4eaf280e3c481d 0 0:2:2 1:2:3 2:1:1 3:0:0 4:0:0 5:1:0 6:1:0 7:2:0 8:0:0 9:1:1 10:2:3 11:0:0 12:1:1 13:1:0 14:0:0 15:0:0 2 0 0 1 1 0:1:r5:xor@base_0:inject 1:6:r7:shfl@base_5:inject 2:9:r7:mulhi@base_8:lossy 3:11:r2:sub@base_10:inject 4:15:r1:load@base_6:inject 5:16:r6:load@base_11:inject 6:21:r1:mad@base_17:inject 7:22:r0:load@base_1:inject 8:23:r5:load@base_22:inject 9:31:r4:mul@base_27:lossy 10:34:r0:xor@base_30:inject 11:41:r7:rotr@base_40:bijective 12:44:r5:add@base_43:inject 13:51:r7:add@base_46:inject 14:56:r0:sub@base_38:inject 15:57:r3:shfl@base_53:inject +igneum-ca3-v4-uniform/52 b77bc24103180e19 0 0:2:0 1:0:0 2:2:1 3:1:0 4:2:0 5:0:0 6:0:0 7:1:1 8:1:0 9:2:3 10:2:2 11:1:0 12:2:2 13:1:0 14:0:0 15:0:0 4 2 0 1 1 0:1:r6:xor@base_0:inject 1:4:r4:rotl@base_3:bijective 2:6:r2:or@base_5:lossy 3:13:r1:rotr@base_2:bijective 4:14:r0:mad@base_12:inject 5:17:r6:load@base_14:inject 6:19:r4:mul@base_11:lossy 7:20:r3:add@base_15:inject 8:34:r4:mad@base_28:inject 9:35:r1:rotr@base_21:bijective 10:40:r5:mulhi@base_36:lossy 11:44:r1:or@base_42:lossy 12:45:r7:add@base_38:inject 13:54:r4:load@base_35:inject 14:58:r3:shfl@base_27:inject 15:63:r5:add@base_59:inject +igneum-ca3-v4-uniform/53 5815f95e1b5d318e 0 0:1:1 1:1:1 2:2:2 3:0:0 4:0:0 5:2:1 6:2:2 7:1:0 8:2:1 9:1:0 10:1:0 11:1:0 12:1:1 13:2:2 14:1:1 15:0:0 1 1 0 0 0 0:12:r2:rotl@base_4:bijective 1:14:r1:rotr@base_8:bijective 2:15:r5:add@base_9:inject 3:19:r1:mad@base_17:inject 4:25:r6:load@base_19:inject 5:28:r2:add@base_26:inject 6:44:r5:or@base_41:lossy 7:47:r7:shfl@base_46:inject 8:51:r4:shfl@base_50:inject 9:52:r5:shfl@base_45:inject 10:54:r3:rotl@base_48:bijective 11:55:r2:load@base_54:inject 12:56:r6:load@base_47:inject 13:59:r1:load@base_52:inject 14:60:r2:rotl@base_57:bijective 15:63:r3:load@base_59:inject +igneum-ca3-v4-uniform/54 a85ba472f1c5af32 0 0:0:0 1:0:0 2:2:3 3:0:0 4:0:0 5:0:0 6:1:1 7:0:0 8:1:0 9:2:1 10:0:0 11:0:0 12:2:2 13:0:0 14:0:0 15:2:3 3 0 0 2 1 0:1:r4:xor@base_0:inject 1:5:r5:mad@base_2:inject 2:14:r7:load@base_5:inject 3:19:r6:rotr@base_12:bijective 4:27:r3:rotr@base_24:bijective 5:29:r0:load@base_27:inject 6:32:r6:shfl@base_22:inject 7:35:r3:load@base_32:inject 8:37:r2:shfl@base_25:inject 9:38:r6:mulhi@base_36:lossy 10:41:r2:shfl@base_40:inject 11:45:r6:xor@base_43:inject 12:47:r4:mul@base_44:lossy 13:48:r7:load@base_45:inject 14:54:r5:mul@base_33:lossy 15:58:r3:add@base_56:inject +igneum-ca3-v4-uniform/55 302aef34b467dec4 0 0:1:1 1:0:0 2:0:0 3:2:0 4:2:0 5:0:0 6:1:1 7:1:1 8:0:0 9:0:0 10:2:3 11:1:1 12:1:1 13:2:2 14:2:1 15:1:0 2 1 0 1 0 0:2:r4:rotr@base_1:bijective 1:4:r7:add@base_3:inject 2:5:r3:load@base_4:inject 3:8:r0:rotr@base_7:bijective 4:11:r5:add@base_6:inject 5:15:r4:rotr@base_12:bijective 6:19:r0:rotr@base_14:bijective 7:20:r7:load@base_19:inject 8:21:r0:load@base_20:inject 9:24:r6:add@base_23:inject 10:38:r0:rotl@base_36:bijective 11:39:r4:add@base_34:inject 12:40:r7:load@base_39:inject 13:41:r6:xor@base_31:inject 14:45:r7:or@base_44:lossy 15:55:r0:mul@base_54:lossy +igneum-ca3-v4-uniform/56 c7295490e4521526 0 0:1:1 1:1:0 2:0:0 3:0:0 4:2:2 5:2:1 6:0:0 7:0:0 8:2:3 9:1:0 10:0:0 11:0:0 12:0:0 13:2:1 14:2:2 15:1:1 2 0 0 2 0 0:4:r6:add@base_2:inject 1:5:r5:add@shadow_244:inject 2:14:r2:add@base_13:inject 3:18:r1:add@base_10:inject 4:21:r3:shfl@base_16:inject 5:25:r4:mul@base_19:lossy 6:26:r5:load@base_25:inject 7:27:r7:load@base_26:inject 8:29:r5:load@base_27:inject 9:30:r6:add@base_24:inject 10:31:r2:load@base_30:inject 11:38:r1:mul@base_23:lossy 12:44:r3:add@base_43:inject 13:47:r1:shfl@base_41:inject 14:50:r7:mad@base_37:inject 15:53:r3:sub@base_46:inject +igneum-ca3-v4-uniform/57 756bb8dd481de1be 0 0:1:0 1:0:0 2:0:0 3:0:0 4:1:1 5:1:0 6:1:0 7:2:0 8:1:0 9:0:0 10:0:0 11:1:0 12:0:0 13:0:0 14:2:1 15:1:1 3 1 0 1 1 0:11:r4:add@base_1:inject 1:15:r6:xor@base_13:inject 2:22:r4:add@base_18:inject 3:23:r5:mad@base_20:inject 4:28:r0:load@base_23:inject 5:36:r7:mad@base_31:inject 6:37:r5:shfl@base_24:inject 7:40:r4:mul@base_32:lossy 8:41:r2:or@base_17:lossy 9:44:r0:load@base_41:inject 10:49:r5:xor@base_48:inject 11:52:r3:load@base_44:inject 12:53:r5:add@base_51:inject 13:57:r2:mulhi@base_56:lossy 14:60:r1:mad@base_47:inject 15:62:r7:rotl@base_61:bijective +igneum-ca3-v4-uniform/58 8a918b0fbaed1990 0 0:0:0 1:2:0 2:2:1 3:0:0 4:1:1 5:1:1 6:1:1 7:1:1 8:2:1 9:0:0 10:1:0 11:1:0 12:1:1 13:2:0 14:1:1 15:1:0 2 1 0 0 1 0:1:r3:add@base_0:inject 1:3:r1:load@base_1:inject 2:5:r3:xor@base_4:inject 3:14:r6:shfl@base_10:inject 4:20:r7:load@base_5:inject 5:30:r4:load@base_20:inject 6:31:r3:rotl@base_26:bijective 7:36:r5:sub@base_33:inject 8:38:r1:add@base_28:inject 9:47:r7:load@base_38:inject 10:49:r0:xor@base_46:inject 11:51:r3:rotl@base_48:bijective 12:54:r6:load@base_49:inject 13:55:r5:load@base_54:inject 14:62:r3:or@base_58:lossy 15:63:r0:mulhi@base_57:lossy +igneum-ca3-v4-uniform/59 5ab9b516f1cd2e3e 0 0:2:2 1:1:1 2:1:0 3:1:1 4:2:0 5:1:0 6:1:1 7:1:1 8:1:0 9:0:0 10:2:0 11:2:0 12:1:0 13:1:1 14:0:0 15:0:0 4 2 0 1 1 0:1:r1:shfl@base_0:inject 1:5:r7:sub@base_2:inject 2:9:r4:mul@base_8:lossy 3:19:r0:load@base_9:inject 4:25:r3:mulhi@base_22:lossy 5:28:r2:xor@base_14:inject 6:32:r2:shfl@base_31:inject 7:34:r6:rotr@base_23:bijective 8:35:r4:load@base_28:inject 9:37:r7:load@base_32:inject 10:38:r0:rotr@base_33:bijective 11:44:r1:shfl@base_43:inject 12:48:r0:or@base_47:lossy 13:57:r4:shfl@base_51:inject 14:59:r3:xor@base_30:inject 15:62:r5:or@base_54:lossy +igneum-ca3-v4-uniform/60 c50621dc0e275161 0 0:0:0 1:1:0 2:0:0 3:0:0 4:0:0 5:0:0 6:1:0 7:2:2 8:0:0 9:0:0 10:0:0 11:1:1 12:2:0 13:2:1 14:1:1 15:2:1 1 0 0 0 1 0:3:r7:mulhi@base_1:lossy 1:21:r7:mad@base_11:inject 2:22:r4:rotr@base_19:bijective 3:27:r0:rotr@base_23:bijective 4:31:r4:mad@base_29:inject 5:32:r3:load@base_31:inject 6:37:r1:add@base_30:inject 7:42:r3:load@base_37:inject 8:46:r7:mad@base_41:inject 9:48:r0:load@base_46:inject 10:52:r2:rotl@base_47:bijective 11:53:r7:add@base_51:inject 12:54:r3:load@base_53:inject 13:55:r6:rotr@base_49:bijective 14:59:r4:add@base_58:inject 15:60:r1:load@base_59:inject +igneum-ca3-v4-uniform/61 cab552f6ebd63fd5 0 0:0:0 1:2:3 2:1:1 3:0:0 4:0:0 5:2:3 6:1:0 7:0:0 8:2:1 9:2:1 10:0:0 11:2:1 12:2:2 13:1:0 14:1:0 15:2:3 4 0 0 2 2 0:7:r6:rotr@base_6:bijective 1:12:r7:xor@base_10:inject 2:14:r1:mul@base_11:lossy 3:15:r4:load@base_14:inject 4:17:r5:load@base_12:inject 5:26:r1:mulhi@base_20:lossy 6:31:r6:xor@base_27:inject 7:35:r5:load@base_31:inject 8:40:r1:load@base_35:inject 9:41:r7:load@base_40:inject 10:49:r7:rotl@base_43:bijective 11:58:r3:mul@base_42:lossy 12:59:r7:mulhi@base_53:lossy 13:60:r6:rotr@base_37:bijective 14:61:r5:load@base_59:inject 15:62:r2:rotr@base_52:bijective +igneum-ca3-v4-uniform/62 fdf86f268a474e38 0 0:0:0 1:2:0 2:0:0 3:0:0 4:1:1 5:1:1 6:1:1 7:1:1 8:0:0 9:0:0 10:2:0 11:1:0 12:0:0 13:1:1 14:1:1 15:2:0 1 0 0 0 1 0:2:r2:sub@base_1:inject 1:3:r3:rotl@base_0:bijective 2:12:r2:xor@base_6:inject 3:19:r4:sub@base_4:inject 4:24:r1:load@base_19:inject 5:25:r3:mad@base_23:inject 6:31:r1:mad@base_26:inject 7:32:r4:sub@base_30:inject 8:33:r5:load@base_24:inject 9:38:r3:mulhi@base_37:lossy 10:42:r1:rotl@base_36:bijective 11:43:r3:rotl@base_41:bijective 12:44:r0:load@base_42:inject 13:51:r6:load@base_44:inject 14:54:r7:xor@base_29:inject 15:61:r7:xor@base_60:inject +igneum-ca3-v4-uniform/63 56fd61a746b1cdea 0 0:1:0 1:2:2 2:1:0 3:1:1 4:1:0 5:0:0 6:0:0 7:1:1 8:0:0 9:2:3 10:0:0 11:2:3 12:1:0 13:1:1 14:2:0 15:1:0 3 0 0 1 2 0:2:r3:rotl@base_1:bijective 1:3:r2:load@base_2:inject 2:5:r0:mulhi@base_4:lossy 3:6:r6:load@base_3:inject 4:9:r3:xor@base_7:inject 5:10:r1:load@base_5:inject 6:11:r5:load@base_10:inject 7:14:r3:load@base_11:inject 8:17:r1:xor@base_15:inject 9:21:r2:shfl@base_20:inject 10:25:r3:load@base_21:inject 11:32:r0:add@base_16:inject 12:43:r4:mad@base_42:inject 13:44:r0:load@base_43:inject 14:45:r6:mul@base_39:lossy 15:50:r1:mulhi@base_41:lossy +igneum-ca3-v4-uniform/64 e520217b27bc872e 0 0:2:1 1:0:0 2:2:1 3:2:1 4:1:0 5:0:0 6:2:0 7:1:0 8:0:0 9:1:1 10:0:0 11:0:0 12:2:0 13:0:0 14:0:0 15:2:1 5 1 0 1 3 0:8:r2:add@base_7:inject 1:9:r5:sub@base_6:inject 2:16:r2:add@base_14:inject 3:19:r3:shfl@base_12:inject 4:24:r7:add@base_1:inject 5:30:r5:mulhi@base_20:lossy 6:37:r0:rotr@base_29:bijective 7:39:r1:rotl@base_33:bijective 8:40:r0:sub@base_38:inject 9:45:r3:rotl@base_27:bijective 10:48:r3:mulhi@base_46:lossy 11:50:r6:or@base_44:lossy 12:53:r4:mul@base_49:lossy 13:54:r0:xor@base_43:inject 14:55:r5:load@base_54:inject 15:57:r6:mulhi@base_52:lossy +igneum-ca3-v4-uniform/65 c09e151a4de88da5 0 0:0:0 1:1:1 2:0:0 3:1:0 4:0:0 5:2:3 6:2:3 7:1:0 8:2:3 9:1:0 10:1:0 11:1:0 12:0:0 13:2:2 14:0:0 15:1:1 3 0 0 2 1 0:9:r5:mulhi@base_7:lossy 1:12:r2:sub@base_10:inject 2:17:r2:shfl@base_15:inject 3:18:r1:add@base_8:inject 4:22:r7:sub@base_19:inject 5:23:r5:load@base_22:inject 6:24:r4:load@base_12:inject 7:31:r0:shfl@base_28:inject 8:32:r5:rotr@base_26:bijective 9:33:r7:sub@base_30:inject 10:36:r1:mad@base_35:inject 11:42:r5:load@base_36:inject 12:47:r6:mul@base_34:lossy 13:51:r0:load@base_32:inject 14:52:r3:mul@base_46:lossy 15:57:r5:load@base_52:inject +igneum-ca3-v4-uniform/66 e1fd9883aed416ee 0 0:2:2 1:0:0 2:0:0 3:1:0 4:0:0 5:1:0 6:1:0 7:2:3 8:2:3 9:1:1 10:1:0 11:0:0 12:1:1 13:0:0 14:0:0 15:1:0 3 1 0 1 1 0:1:r0:rotl@base_0:bijective 1:3:r7:load@base_1:inject 2:8:r6:load@base_3:inject 3:10:r5:load@base_8:inject 4:13:r1:add@base_2:inject 5:20:r4:add@base_17:inject 6:25:r5:xor@base_19:inject 7:27:r5:mulhi@base_26:lossy 8:29:r6:mul@base_24:lossy 9:31:r7:or@base_9:lossy 10:36:r3:load@base_29:inject 11:37:r2:shfl@base_35:inject 12:43:r3:rotr@base_39:bijective 13:51:r0:rotl@base_38:bijective 14:60:r4:xor@base_58:inject 15:62:r5:load@base_36:inject +igneum-ca3-v4-uniform/67 a66098911c84a705 0 0:2:0 1:1:1 2:1:1 3:1:0 4:1:1 5:0:0 6:2:0 7:2:0 8:0:0 9:2:0 10:2:1 11:1:1 12:1:0 13:2:3 14:1:0 15:2:2 2 1 0 0 1 0:13:r7:sub@base_11:inject 1:17:r5:add@base_16:inject 2:18:r0:mad@base_8:inject 3:26:r0:rotl@base_25:bijective 4:28:r7:add@base_24:inject 5:31:r4:load@base_26:inject 6:33:r6:add@base_10:inject 7:38:r1:mulhi@base_21:lossy 8:41:r7:xor@base_35:inject 9:45:r6:load@base_41:inject 10:46:r7:rotl@base_44:bijective 11:50:r3:xor@base_40:inject 12:51:r1:add@base_47:inject 13:57:r7:xor@base_54:inject 14:59:r3:or@base_53:lossy 15:61:r7:load@base_59:inject +igneum-ca3-v4-uniform/68 6ca50bbc2448532b 0 0:0:0 1:0:0 2:2:0 3:1:1 4:2:1 5:1:0 6:1:1 7:1:0 8:1:1 9:1:0 10:2:2 11:2:0 12:1:1 13:2:0 14:0:0 15:2:0 3 0 0 3 0 0:3:r0:xor@base_1:inject 1:6:r7:xor@base_4:inject 2:17:r0:add@base_11:inject 3:19:r6:shfl@base_10:inject 4:24:r0:add@base_21:inject 5:25:r1:mad@base_5:inject 6:27:r5:load@base_24:inject 7:30:r0:rotl@base_29:bijective 8:34:r2:mul@base_32:lossy 9:42:r4:xor@base_31:inject 10:46:r2:mul@base_41:lossy 11:51:r7:rotl@base_48:bijective 12:56:r4:shfl@base_52:inject 13:59:r1:load@base_56:inject 14:60:r0:xor@base_53:inject 15:62:r3:mul@base_58:lossy +igneum-ca3-v4-uniform/69 32d61aeac704bb12 0 0:2:3 1:1:1 2:0:0 3:1:1 4:2:1 5:2:0 6:1:0 7:2:1 8:1:1 9:1:0 10:2:2 11:0:0 12:0:0 13:0:0 14:1:1 15:1:0 3 1 1 2 0 0:2:r1:mul@base_1:lossy 1:8:r1:add@base_7:inject 2:12:r2:mul@base_11:lossy 3:21:r1:mad@base_18:inject 4:23:r0:rotl@base_20:bijective 5:26:r2:rotr@base_24:bijective 6:27:r4:load@base_8:inject 7:35:r1:or@base_33:lossy-or-chain1 8:39:r2:rotr@base_36:bijective 9:43:r1:xor@base_40:inject 10:46:r4:sub@base_41:inject 11:52:r2:mad@base_51:inject 12:54:r3:xor@base_45:inject 13:55:r4:load@base_54:inject 14:56:r7:load@base_55:inject 15:58:r2:mad@base_57:inject +igneum-ca3-v4-uniform/70 e0c9f4ac1d3e48d5 0 0:2:0 1:1:1 2:1:1 3:1:1 4:2:0 5:2:2 6:1:1 7:2:0 8:2:1 9:0:0 10:2:2 11:0:0 12:0:0 13:1:0 14:0:0 15:0:0 5 1 0 4 0 0:1:r7:add@base_0:inject 1:2:r4:load@base_1:inject 2:5:r2:or@base_3:lossy 3:7:r7:load@base_5:inject 4:11:r0:load@base_2:inject 5:19:r3:mul@base_18:lossy 6:22:r7:rotl@base_21:bijective 7:27:r7:mad@base_26:inject 8:30:r5:rotl@base_9:bijective 9:34:r1:rotl@base_15:bijective 10:36:r7:load@base_30:inject 11:40:r2:mul@base_24:lossy 12:50:r3:shfl@base_46:inject 13:56:r4:mul@base_45:lossy 14:57:r1:mul@base_54:lossy 15:59:r5:load@base_50:inject +igneum-ca3-v4-uniform/71 89010a54039078e9 0 0:2:1 1:0:0 2:1:1 3:2:1 4:1:1 5:1:0 6:0:0 7:2:3 8:0:0 9:2:0 10:1:0 11:1:0 12:2:2 13:2:3 14:1:1 15:0:0 4 0 0 4 0 0:1:r7:add@base_0:inject 1:5:r1:mul@base_3:lossy 2:6:r0:load@base_5:inject 3:9:r4:rotr@base_4:bijective 4:12:r3:rotr@base_7:bijective 5:13:r1:rotl@base_10:bijective 6:16:r6:mul@base_14:lossy 7:25:r6:mul@base_21:lossy 8:30:r5:add@base_29:inject 9:36:r6:add@base_27:inject 10:37:r5:xor@base_32:inject 11:38:r2:load@base_36:inject 12:41:r5:xor@base_39:inject 13:49:r6:sub@base_46:inject 14:52:r0:mul@base_50:lossy 15:54:r4:load@base_52:inject +igneum-ca3-v4-uniform/72 9b309a0cdca50e08 0 0:2:2 1:2:2 2:0:0 3:1:1 4:1:1 5:2:3 6:1:1 7:0:0 8:0:0 9:0:0 10:1:0 11:1:0 12:1:1 13:2:0 14:0:0 15:1:1 1 1 0 0 0 0:3:r6:sub@base_1:inject 1:4:r1:rotl@base_0:bijective 2:5:r3:load@base_4:inject 3:13:r4:or@base_10:lossy 4:21:r7:shfl@base_11:inject 5:29:r7:add@base_28:inject 6:34:r0:shfl@base_17:inject 7:35:r6:load@base_29:inject 8:36:r4:load@base_34:inject 9:39:r7:load@base_36:inject 10:41:r1:rotl@base_27:bijective 11:42:r7:load@base_41:inject 12:49:r4:mad@base_48:inject 13:50:r5:load@base_39:inject 14:54:r1:xor@base_52:inject 15:55:r0:load@base_54:inject +igneum-ca3-v4-uniform/73 42a2cb8d3366812d 0 0:1:0 1:2:0 2:2:0 3:0:0 4:0:0 5:1:0 6:0:0 7:0:0 8:2:2 9:2:1 10:2:0 11:0:0 12:1:0 13:2:0 14:2:0 15:1:0 3 1 0 1 1 0:10:r4:xor@base_4:inject 1:14:r3:mulhi@base_3:lossy 2:19:r7:or@base_16:lossy 3:22:r0:load@base_10:inject 4:27:r6:xor@base_18:inject 5:31:r0:mul@base_28:lossy 6:36:r7:sub@base_32:inject 7:42:r1:xor@base_33:inject 8:43:r3:add@base_39:inject 9:47:r7:sub@base_44:inject 10:52:r0:mad@base_51:inject 11:54:r3:load@base_52:inject 12:55:r6:mad@base_53:inject 13:56:r1:load@base_55:inject 14:58:r5:load@base_56:inject 15:63:r2:load@base_42:inject +igneum-ca3-v4-uniform/74 2365aff659004971 0 0:0:0 1:2:2 2:1:1 3:2:0 4:1:1 5:0:0 6:1:0 7:0:0 8:1:1 9:1:0 10:1:1 11:0:0 12:1:0 13:1:0 14:2:2 15:2:3 1 1 0 0 0 0:2:r5:rotr@base_0:bijective 1:4:r5:or@base_3:lossy 2:6:r5:xor@base_5:inject 3:10:r0:load@base_2:inject 4:12:r4:add@base_7:inject 5:13:r3:xor@base_8:inject 6:16:r5:shfl@base_14:inject 7:21:r7:rotl@base_17:bijective 8:33:r4:rotr@base_26:bijective 9:38:r6:load@base_33:inject 10:40:r7:shfl@base_39:inject 11:50:r6:shfl@base_47:inject 12:52:r5:sub@base_49:inject 13:59:r2:sub@base_48:inject 14:60:r3:load@base_16:inject 15:63:r6:load@base_60:inject +igneum-ca3-v4-uniform/75 e70e0efac85fd8d3 2 0:0:0 1:2:3 2:2:0 3:0:0 4:1:0 5:1:0 6:1:0 7:2:3 8:0:0 9:2:2 10:1:1 11:1:1 12:0:0 13:1:1 14:0:0 15:2:2 0 0 0 0 0 0:1:r1:add@base_0:inject 1:7:r2:xor@base_6:inject 2:10:r5:add@base_8:inject 3:12:r2:load@base_10:inject 4:13:r0:load@base_12:inject 5:15:r4:add@base_11:inject 6:20:r5:load@base_15:inject 7:36:r4:add@base_28:inject 8:37:r6:add@base_31:inject 9:39:r7:add@base_14:inject 10:40:r0:load@base_39:inject 11:41:r2:shfl@base_29:inject 12:44:r1:rotr@base_38:bijective 13:45:r6:load@base_44:inject 14:48:r7:shfl@base_47:inject 15:54:r5:add@base_51:inject +igneum-ca3-v4-uniform/76 38d2f6b08e5674a4 0 0:1:0 1:1:1 2:0:0 3:0:0 4:1:1 5:2:1 6:1:1 7:0:0 8:0:0 9:0:0 10:1:1 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 1 0 0 0 1 0:5:r3:shfl@base_4:inject 1:6:r4:load@base_5:inject 2:13:r2:sub@base_9:inject 3:21:r6:mad@base_20:inject 4:29:r4:xor@base_23:inject 5:34:r4:rotr@base_33:bijective 6:35:r0:mulhi@base_32:lossy 7:36:r2:add@base_24:inject 8:37:r1:mad@base_28:inject 9:38:r3:load@base_29:inject 10:39:r0:load@base_37:inject 11:42:r4:xor@base_41:inject 12:43:r6:load@base_42:inject 13:52:r3:add@base_50:inject 14:56:r2:shfl@base_51:inject 15:61:r3:load@base_56:inject +igneum-ca3-v4-uniform/77 85f312405286fcae 0 0:0:0 1:1:0 2:0:0 3:0:0 4:1:0 5:2:1 6:1:0 7:0:0 8:1:1 9:2:3 10:1:1 11:0:0 12:2:3 13:2:1 14:2:2 15:2:0 6 1 0 2 3 0:10:r0:mulhi@base_3:lossy 1:11:r3:add@base_7:inject 2:18:r3:mulhi@base_17:lossy 3:20:r4:mul@base_19:lossy 4:21:r7:load@base_20:inject 5:25:r0:shfl@base_22:inject 6:26:r1:add@base_15:inject 7:29:r4:xor@base_28:inject 8:34:r2:shfl@base_27:inject 9:38:r3:or@base_36:lossy 10:43:r7:mulhi@base_24:lossy 11:44:r2:load@base_43:inject 12:55:r5:add@base_47:inject 13:58:r0:shfl@base_54:inject 14:60:r4:load@base_58:inject 15:61:r1:mul@base_51:lossy +igneum-ca3-v4-uniform/78 ab3a6c2a82c8146f 0 0:0:0 1:0:0 2:0:0 3:0:0 4:1:1 5:0:0 6:0:0 7:0:0 8:2:0 9:1:0 10:2:0 11:0:0 12:0:0 13:1:1 14:0:0 15:1:0 3 2 1 1 0 0:2:r7:or@base_1:lossy 1:8:r5:mad@base_3:inject 2:10:r1:shfl@base_5:inject 3:21:r7:add@base_14:inject 4:26:r3:xor@base_9:inject 5:29:r3:mad@base_28:inject 6:30:r1:load@base_29:inject 7:31:r0:add@base_19:inject 8:36:r5:rotl@base_34:bijective 9:37:r2:load@base_36:inject 10:39:r1:load@base_31:inject 11:43:r4:xor@base_42:inject 12:46:r6:or@base_45:lossy-or-chain1 13:49:r2:mul@base_41:lossy 14:57:r1:load@base_49:inject 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/79 d58b9a27c11f2a5a 0 0:1:0 1:0:0 2:0:0 3:2:0 4:1:0 5:1:0 6:2:1 7:2:0 8:0:0 9:2:2 10:0:0 11:0:0 12:0:0 13:1:1 14:0:0 15:0:0 5 1 0 1 3 0:2:r7:mad@base_0:inject 1:7:r3:shfl@base_6:inject 2:8:r6:load@base_2:inject 3:12:r2:load@base_8:inject 4:17:r6:shfl@base_15:inject 5:20:r1:add@base_5:inject 6:24:r3:add@base_21:inject 7:31:r6:load@base_24:inject 8:32:r1:or@base_27:lossy 9:37:r7:mulhi@base_33:lossy 10:38:r0:mulhi@base_1:lossy 11:51:r5:rotl@base_46:bijective 12:52:r2:mul@base_50:lossy 13:55:r1:mulhi@base_49:lossy 14:59:r3:shfl@base_57:inject 15:61:r7:load@base_55:inject +igneum-ca3-v4-uniform/80 a7bd4aa0ff8852a3 0 0:0:0 1:2:2 2:1:1 3:1:1 4:1:1 5:0:0 6:1:1 7:2:0 8:0:0 9:2:0 10:2:3 11:1:0 12:2:0 13:2:2 14:2:3 15:0:0 4 0 0 2 2 0:2:r7:shfl@base_0:inject 1:4:r2:mul@base_3:lossy 2:8:r3:load@base_4:inject 3:9:r4:load@base_2:inject 4:12:r1:load@base_8:inject 5:15:r7:mul@base_10:lossy 6:18:r0:load@base_12:inject 7:23:r7:xor@base_20:inject 8:24:r6:load@base_23:inject 9:32:r2:mulhi@base_29:lossy 10:36:r4:rotr@base_28:bijective 11:42:r1:mulhi@base_25:lossy 12:50:r4:mad@base_49:inject 13:59:r6:load@base_50:inject 14:61:r2:load@base_59:inject 15:63:r7:xor@base_55:inject +igneum-ca3-v4-uniform/81 85dc08da378439da 0 0:2:0 1:1:1 2:1:1 3:2:3 4:0:0 5:1:1 6:1:1 7:0:0 8:1:1 9:1:1 10:2:1 11:2:3 12:2:0 13:1:1 14:2:2 15:2:1 3 0 0 0 3 0:8:r4:add@base_6:inject 1:15:r2:add@base_14:inject 2:20:r4:mulhi@base_19:lossy 3:24:r5:shfl@base_23:inject 4:29:r0:xor@base_17:inject 5:30:r7:load@base_29:inject 6:31:r1:shfl@base_26:inject 7:35:r3:load@base_31:inject 8:36:r4:xor@base_32:inject 9:37:r6:mad@base_34:inject 10:44:r7:rotr@base_33:bijective 11:49:r0:rotl@base_46:bijective 12:52:r5:load@base_49:inject 13:53:r2:rotr@base_48:bijective 14:62:r7:mulhi@base_59:lossy 15:63:r5:mulhi@base_55:lossy +igneum-ca3-v4-uniform/82 f560daef8d41137a 0 0:2:2 1:2:3 2:1:0 3:1:1 4:0:0 5:0:0 6:0:0 7:1:0 8:2:0 9:2:3 10:2:3 11:1:1 12:2:1 13:1:1 14:1:0 15:1:1 2 0 0 2 0 0:6:r5:mad@base_0:inject 1:12:r4:mad@base_7:inject 2:13:r2:mul@base_8:lossy 3:16:r7:mad@base_11:inject 4:19:r0:add@base_9:inject 5:22:r3:load@base_13:inject 6:24:r2:load@base_22:inject 7:25:r4:rotl@base_18:bijective 8:27:r5:load@base_25:inject 9:37:r6:mul@base_29:lossy 10:39:r4:mad@base_34:inject 11:42:r0:rotl@base_23:bijective 12:48:r3:rotr@base_43:bijective 13:52:r6:shfl@base_51:inject 14:57:r1:sub@base_49:inject 15:62:r7:add@base_45:inject +igneum-ca3-v4-uniform/83 f027c19dbb124e0f 0 0:1:0 1:2:0 2:0:0 3:2:2 4:2:0 5:0:0 6:1:1 7:2:0 8:1:0 9:1:0 10:0:0 11:2:2 12:1:0 13:0:0 14:0:0 15:2:2 1 0 0 1 0 0:1:r2:add@base_0:inject 1:5:r4:load@base_1:inject 2:6:r5:mul@base_4:lossy 3:9:r3:xor@base_8:inject 4:11:r1:load@base_5:inject 5:22:r0:load@base_9:inject 6:26:r2:add@base_19:inject 7:27:r1:rotr@base_20:bijective 8:30:r4:load@base_27:inject 9:38:r3:load@base_30:inject 10:43:r7:rotr@base_34:bijective 11:44:r3:rotr@base_39:bijective 12:45:r0:load@base_43:inject 13:47:r1:xor@base_31:inject 14:50:r2:shfl@base_49:inject 15:52:r4:add@base_48:inject +igneum-ca3-v4-uniform/84 875dffc6d691c0c5 0 0:1:0 1:2:2 2:1:0 3:2:3 4:2:3 5:0:0 6:2:2 7:1:0 8:0:0 9:1:0 10:0:0 11:1:0 12:0:0 13:0:0 14:1:1 15:1:1 3 2 1 1 0 0:11:r0:add@base_10:inject 1:15:r1:xor@base_2:inject 2:17:r4:load@base_15:inject 3:19:r3:mul@base_16:lossy 4:26:r1:xor@base_25:inject 5:29:r2:or@base_13:lossy 6:31:r6:or@base_30:lossy-or-chain1 7:35:r5:load@base_31:inject 8:40:r3:add@base_39:inject 9:46:r0:load@base_40:inject 10:47:r7:xor@base_45:inject 11:49:r1:shfl@base_41:inject 12:50:r5:load@base_49:inject 13:54:r5:shfl@base_53:inject 14:55:r0:shfl@base_51:inject 15:59:r2:add@base_57:inject +igneum-ca3-v4-uniform/85 6e007708fd13c221 0 0:1:0 1:0:0 2:1:0 3:1:1 4:0:0 5:0:0 6:0:0 7:0:0 8:0:0 9:2:2 10:1:1 11:1:0 12:2:3 13:1:0 14:2:0 15:1:1 3 1 0 0 2 0:6:r4:mad@base_3:inject 1:9:r7:load@base_6:inject 2:10:r5:mad@base_2:inject 3:14:r0:rotr@base_12:bijective 4:23:r5:mad@base_21:inject 5:25:r6:mulhi@base_7:lossy 6:29:r2:or@base_27:lossy 7:31:r3:rotl@base_30:bijective 8:34:r5:load@base_31:inject 9:41:r0:add@base_35:inject 10:47:r6:load@base_34:inject 11:49:r3:add@base_48:inject 12:52:r1:mulhi@base_42:lossy 13:56:r5:mad@base_44:inject 14:59:r2:load@base_56:inject 15:63:r4:load@base_52:inject +igneum-ca3-v4-uniform/86 de1800e5d62b3caf 0 0:2:1 1:2:1 2:2:1 3:2:0 4:0:0 5:2:0 6:1:0 7:1:1 8:1:1 9:0:0 10:2:1 11:0:0 12:1:1 13:2:1 14:1:1 15:0:0 3 1 0 0 2 0:6:r4:sub@base_2:inject 1:12:r2:sub@base_0:inject 2:17:r6:mulhi@base_13:lossy 3:24:r0:add@base_20:inject 4:25:r4:mulhi@base_21:lossy 5:27:r2:add@base_26:inject 6:32:r3:load@base_24:inject 7:35:r3:mad@base_33:inject 8:36:r5:rotl@base_22:bijective 9:40:r7:shfl@base_28:inject 10:41:r4:mad@base_39:inject 11:51:r6:mad@base_47:inject 12:53:r0:or@base_49:lossy 13:55:r2:sub@base_44:inject 14:57:r6:add@base_56:inject 15:58:r7:rotl@base_54:bijective +igneum-ca3-v4-uniform/87 dce3d2dd6d01ee7f 1 0:1:1 1:2:0 2:1:1 3:1:1 4:0:0 5:0:0 6:1:1 7:0:0 8:2:2 9:0:0 10:2:0 11:0:0 12:0:0 13:1:1 14:0:0 15:1:0 4 1 0 1 2 0:6:r3:mad@base_2:inject 1:7:r5:add@base_4:inject 2:14:r0:add@base_12:inject 3:16:r5:load@base_14:inject 4:23:r1:sub@base_21:inject 5:24:r6:add@base_11:inject 6:27:r4:mul@base_19:lossy 7:29:r7:load@base_23:inject 8:30:r6:shfl@base_28:inject 9:34:r6:mulhi@base_33:lossy 10:36:r5:load@base_34:inject 11:42:r3:mulhi@base_40:lossy 12:48:r2:add@base_32:inject 13:57:r3:or@base_52:lossy 14:60:r5:add@base_56:inject 15:61:r0:mad@base_58:inject +igneum-ca3-v4-uniform/88 ec88ad5a5c810474 0 0:1:0 1:1:0 2:0:0 3:2:2 4:0:0 5:2:3 6:0:0 7:1:0 8:2:3 9:0:0 10:2:3 11:0:0 12:1:0 13:1:1 14:1:1 15:1:0 6 3 1 2 1 0:3:r2:mad@base_1:inject 1:7:r5:mad@base_2:inject 2:9:r4:load@base_7:inject 3:10:r1:mulhi@base_8:lossy 4:11:r0:xor@base_6:inject 5:23:r2:or@base_21:lossy 6:29:r0:or@base_27:lossy 7:33:r1:add@base_32:inject 8:35:r1:or@base_34:lossy-or-chain1 9:36:r6:mul@base_25:lossy 10:45:r4:rotr@base_42:bijective 11:49:r0:rotr@base_46:bijective 12:50:r6:mul@base_38:lossy 13:51:r3:add@base_43:inject 14:57:r2:add@base_52:inject 15:61:r4:load@base_57:inject +igneum-ca3-v4-uniform/89 2fb7aacebf5ed6be 0 0:0:0 1:0:0 2:0:0 3:0:0 4:2:0 5:0:0 6:2:1 7:2:2 8:1:1 9:1:0 10:0:0 11:2:2 12:2:2 13:2:0 14:1:1 15:1:0 2 0 0 2 0 0:5:r0:sub@base_0:inject 1:18:r0:mul@base_15:lossy 2:19:r1:shfl@base_14:inject 3:20:r2:mul@base_13:lossy 4:24:r0:sub@base_22:inject 5:28:r6:mad@base_10:inject 6:34:r3:xor@base_31:inject 7:37:r5:shfl@base_27:inject 8:39:r4:load@base_24:inject 9:43:r3:rotl@base_41:bijective 10:46:r5:rotr@base_40:bijective 11:47:r7:load@base_39:inject 12:49:r3:load@base_47:inject 13:55:r0:load@base_49:inject 14:61:r1:xor@base_58:inject 15:62:r7:load@base_61:inject +igneum-ca3-v4-uniform/90 3d8af24aac52e081 0 0:0:0 1:0:0 2:0:0 3:0:0 4:1:1 5:1:1 6:1:1 7:2:0 8:1:1 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:0 15:0:0 1 1 0 0 0 0:1:r6:mad@base_0:inject 1:3:r4:load@base_1:inject 2:5:r0:load@base_3:inject 3:8:r1:xor@base_7:inject 4:14:r5:rotl@base_13:bijective 5:17:r7:add@base_12:inject 6:21:r6:or@base_19:lossy 7:27:r5:xor@base_23:inject 8:30:r1:mad@base_25:inject 9:54:r3:rotr@base_50:bijective 10:55:r4:add@base_53:inject 11:58:r1:add@base_49:inject 12:59:r5:load@base_54:inject 13:60:r2:load@base_59:inject 14:61:r6:load@base_58:inject 15:62:r0:load@base_55:inject +igneum-ca3-v4-uniform/91 0b98f10c70327bcf 0 0:2:1 1:2:2 2:1:0 3:1:1 4:0:0 5:0:0 6:2:0 7:0:0 8:1:0 9:1:0 10:2:0 11:2:0 12:2:2 13:2:0 14:0:0 15:2:0 2 0 0 1 1 0:2:r2:rotr@base_1:bijective 1:4:r0:load@base_2:inject 2:7:r4:add@base_6:inject 3:8:r0:load@base_7:inject 4:11:r2:mulhi@base_9:lossy 5:25:r6:mul@base_15:lossy 6:26:r0:xor@base_14:inject 7:28:r6:load@base_26:inject 8:29:r3:load@base_28:inject 9:34:r6:sub@base_31:inject 10:35:r4:load@base_29:inject 11:37:r6:load@base_35:inject 12:45:r5:mad@base_42:inject 13:46:r4:load@base_45:inject 14:50:r5:xor@base_49:inject 15:61:r6:sub@base_56:inject +igneum-ca3-v4-uniform/92 6d82dd59d74736e3 0 0:2:1 1:1:1 2:0:0 3:0:0 4:2:3 5:2:1 6:0:0 7:0:0 8:2:3 9:0:0 10:2:0 11:2:0 12:0:0 13:0:0 14:2:3 15:2:1 4 0 0 1 3 0:1:r0:rotl@base_0:bijective 1:3:r0:mad@base_2:inject 2:5:r4:load@base_3:inject 3:8:r7:mulhi@base_7:lossy 4:9:r5:load@base_8:inject 5:14:r0:rotr@base_13:bijective 6:21:r1:add@base_15:inject 7:26:r6:load@base_21:inject 8:34:r1:rotr@base_28:bijective 9:35:r7:load@base_34:inject 10:41:r4:rotl@base_31:bijective 11:42:r6:mul@base_36:lossy 12:44:r3:rotl@base_33:bijective 13:56:r0:mulhi@base_48:lossy 14:59:r1:mulhi@base_55:lossy 15:60:r6:shfl@base_58:inject +igneum-ca3-v4-uniform/93 d35690902dcd37da 0 0:0:0 1:0:0 2:2:2 3:0:0 4:2:0 5:2:0 6:1:0 7:2:1 8:0:0 9:0:0 10:2:1 11:0:0 12:0:0 13:0:0 14:2:3 15:2:0 3 0 0 3 0 0:5:r7:mad@base_4:inject 1:8:r1:xor@base_6:inject 2:9:r3:shfl@base_7:inject 3:14:r6:rotl@base_13:bijective 4:17:r0:load@base_5:inject 5:21:r4:load@base_17:inject 6:22:r5:mul@base_12:lossy 7:23:r2:add@base_19:inject 8:24:r3:load@base_21:inject 9:25:r4:load@base_22:inject 10:30:r7:load@base_24:inject 11:47:r6:mul@base_43:lossy 12:53:r1:add@base_40:inject 13:54:r7:mul@base_52:lossy 14:56:r5:load@base_54:inject 15:61:r1:mad@base_58:inject +igneum-ca3-v4-uniform/94 c1f078d2f356d403 0 0:1:0 1:2:0 2:2:3 3:1:0 4:2:2 5:2:1 6:1:0 7:2:1 8:2:3 9:0:0 10:0:0 11:0:0 12:2:0 13:1:1 14:0:0 15:1:0 3 0 0 1 2 0:6:r5:mulhi@base_5:lossy 1:9:r0:mulhi@base_1:lossy 2:18:r0:add@base_12:inject 3:30:r6:mad@base_21:inject 4:31:r0:shfl@base_26:inject 5:32:r5:sub@base_25:inject 6:34:r7:load@base_30:inject 7:41:r1:add@base_33:inject 8:42:r5:add@base_35:inject 9:49:r4:sub@base_44:inject 10:52:r1:add@base_45:inject 11:54:r3:xor@base_39:inject 12:57:r6:load@base_52:inject 13:58:r7:load@base_49:inject 14:59:r2:add@base_48:inject 15:62:r7:mul@base_61:lossy +igneum-ca3-v4-uniform/95 1667690bc4709a91 0 0:1:1 1:0:0 2:0:0 3:2:1 4:1:0 5:1:0 6:1:1 7:1:1 8:1:1 9:1:1 10:1:1 11:0:0 12:2:2 13:2:0 14:0:0 15:1:0 1 0 0 1 0 0:1:r0:mad@base_0:inject 1:3:r3:xor@base_2:inject 2:4:r1:load@base_1:inject 3:8:r7:load@base_4:inject 4:12:r4:rotl@base_9:bijective 5:28:r2:rotl@base_18:bijective 6:30:r4:rotl@base_16:bijective 7:35:r7:rotl@base_24:bijective 8:37:r6:xor@base_36:inject 9:38:r0:mul@base_34:lossy 10:39:r2:xor@base_29:inject 11:49:r5:rotr@base_47:bijective 12:51:r0:xor@base_44:inject 13:52:r2:load@base_49:inject 14:54:r3:load@base_51:inject 15:61:r0:add@base_60:inject +igneum-ca3-v4-uniform/96 3f7df15486064d87 0 0:0:0 1:2:0 2:2:1 3:0:0 4:1:0 5:2:2 6:0:0 7:2:1 8:2:0 9:0:0 10:0:0 11:0:0 12:0:0 13:0:0 14:2:2 15:2:2 1 0 0 1 0 0:1:r3:shfl@base_0:inject 1:13:r7:add@base_8:inject 2:14:r1:rotr@base_5:bijective 3:16:r2:mad@base_15:inject 4:18:r3:mul@base_12:lossy 5:25:r5:load@base_16:inject 6:29:r2:shfl@base_22:inject 7:31:r4:mad@base_30:inject 8:37:r0:sub@base_34:inject 9:38:r3:load@base_37:inject 10:42:r0:rotl@base_40:bijective 11:44:r1:load@base_38:inject 12:47:r7:mad@base_39:inject 13:51:r1:mad@base_45:inject 14:61:r7:add@base_59:inject 15:63:r0:shfl@base_48:inject +igneum-ca3-v4-uniform/97 684a221166b37bbc 0 0:1:1 1:2:0 2:1:0 3:1:1 4:0:0 5:2:0 6:1:0 7:1:1 8:1:0 9:2:0 10:1:0 11:2:1 12:2:1 13:1:1 14:1:0 15:0:0 3 2 0 1 0 0:2:r0:mul@base_1:lossy 1:4:r6:load@base_2:inject 2:6:r2:shfl@base_5:inject 3:9:r1:sub@base_0:inject 4:11:r0:sub@base_8:inject 5:12:r1:mad@base_10:inject 6:17:r4:shfl@base_13:inject 7:18:r2:load@base_17:inject 8:28:r5:sub@base_26:inject 9:31:r0:xor@base_16:inject 10:36:r6:or@base_29:lossy 11:37:r3:xor@base_34:inject 12:40:r0:rotr@base_39:bijective 13:48:r0:or@base_41:lossy 14:51:r2:add@base_45:inject 15:58:r4:load@base_51:inject +igneum-ca3-v4-uniform/98 a760af8368f8c173 0 0:2:2 1:1:0 2:0:0 3:2:2 4:2:2 5:2:0 6:1:0 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:0 15:0:0 2 1 0 1 0 0:5:r7:mul@base_4:lossy 1:11:r7:sub@base_10:inject 2:16:r5:sub@base_14:inject 3:17:r3:load@base_11:inject 4:19:r1:add@base_18:inject 5:20:r6:mad@base_13:inject 6:22:r4:add@base_21:inject 7:24:r5:load@base_20:inject 8:25:r2:load@base_22:inject 9:29:r0:shfl@base_15:inject 10:46:r0:xor@base_38:inject 11:47:r3:mad@base_39:inject 12:49:r2:xor@base_40:inject 13:52:r5:load@base_46:inject 14:56:r2:sub@base_50:inject 15:62:r4:or@base_55:lossy +igneum-ca3-v4-uniform/99 5a4d837e96337d68 0 0:2:3 1:0:0 2:2:2 3:2:3 4:0:0 5:2:0 6:1:0 7:1:0 8:2:1 9:1:0 10:1:1 11:1:1 12:1:0 13:0:0 14:0:0 15:2:1 2 1 0 1 0 0:6:r6:mad@base_3:inject 1:7:r5:rotl@base_2:bijective 2:11:r7:or@base_8:lossy 3:16:r6:mul@base_14:lossy 4:24:r1:rotl@base_19:bijective 5:26:r0:load@base_24:inject 6:29:r5:rotr@base_28:bijective 7:31:r4:load@base_29:inject 8:32:r2:mad@base_10:inject 9:37:r1:load@base_31:inject 10:42:r7:rotl@base_38:bijective 11:51:r3:rotr@base_47:bijective 12:52:r0:load@base_51:inject 13:56:r0:add@base_53:inject 14:59:r3:load@base_52:inject 15:61:r4:add@base_48:inject +igneum-ca3-v4-uniform/100 294382be2cd8ea24 0 0:2:2 1:1:0 2:1:0 3:0:0 4:2:1 5:0:0 6:0:0 7:2:3 8:1:1 9:2:3 10:0:0 11:0:0 12:0:0 13:1:1 14:2:2 15:2:2 1 0 0 1 0 0:1:r7:mad@base_0:inject 1:3:r3:load@base_1:inject 2:5:r1:mad@base_2:inject 3:9:r4:mul@base_6:lossy 4:10:r6:load@base_9:inject 5:12:r6:mad@base_11:inject 6:15:r0:load@base_3:inject 7:21:r1:shfl@base_19:inject 8:23:r4:load@base_12:inject 9:30:r5:xor@base_29:inject 10:40:r1:rotl@base_25:bijective 11:45:r7:shfl@base_42:inject 12:47:r4:mad@base_46:inject 13:49:r0:load@base_47:inject 14:56:r0:add@base_54:inject 15:61:r3:xor@base_55:inject +igneum-ca3-v4-uniform/101 3c872d313e2afc50 0 0:1:1 1:1:0 2:0:0 3:0:0 4:0:0 5:2:2 6:1:1 7:2:2 8:1:0 9:0:0 10:0:0 11:0:0 12:0:0 13:1:0 14:1:1 15:0:0 2 1 0 1 0 0:1:r2:mad@base_0:inject 1:9:r6:mul@base_7:lossy 2:13:r6:sub@base_12:inject 3:18:r0:load@base_9:inject 4:22:r2:rotl@base_20:bijective 5:24:r6:load@base_22:inject 6:26:r3:load@base_24:inject 7:28:r6:mad@base_25:inject 8:29:r1:load@base_28:inject 9:33:r6:or@base_32:lossy 10:34:r7:add@base_30:inject 11:35:r4:shfl@base_15:inject 12:37:r3:load@base_29:inject 13:38:r2:load@base_37:inject 14:44:r3:sub@base_40:inject 15:48:r1:mad@base_47:inject +igneum-ca3-v4-uniform/102 04ff1249a13b0eb1 0 0:1:1 1:1:0 2:1:1 3:2:1 4:2:1 5:1:1 6:1:0 7:0:0 8:2:2 9:2:0 10:2:3 11:0:0 12:1:0 13:1:0 14:1:1 15:0:0 2 0 0 1 1 0:3:r5:xor@base_1:inject 1:15:r0:mulhi@base_13:lossy 2:16:r4:xor@base_9:inject 3:17:r1:xor@base_11:inject 4:25:r1:sub@base_22:inject 5:31:r6:rotr@base_30:bijective 6:40:r0:add@base_33:inject 7:41:r2:mad@base_35:inject 8:45:r7:add@base_43:inject 9:46:r0:mul@base_44:lossy 10:48:r1:load@base_41:inject 11:53:r5:load@base_46:inject 12:55:r3:mad@base_42:inject 13:58:r2:add@base_49:inject 14:59:r4:rotl@base_50:bijective 15:61:r0:load@base_58:inject +igneum-ca3-v4-uniform/103 84c4bda0207fc874 0 0:0:0 1:0:0 2:0:0 3:0:0 4:2:3 5:2:2 6:2:1 7:0:0 8:1:0 9:2:0 10:2:0 11:0:0 12:1:1 13:0:0 14:0:0 15:0:0 1 0 0 0 1 0:3:r2:sub@base_2:inject 1:10:r5:shfl@base_5:inject 2:11:r0:rotr@base_7:bijective 3:14:r1:rotr@base_6:bijective 4:17:r7:load@base_14:inject 5:20:r0:mulhi@base_16:lossy 6:24:r2:add@base_18:inject 7:28:r3:mad@base_27:inject 8:35:r4:sub@base_33:inject 9:36:r1:load@base_35:inject 10:49:r6:add@base_43:inject 11:50:r1:shfl@base_41:inject 12:52:r4:load@base_49:inject 13:55:r5:add@base_53:inject 14:59:r0:sub@base_48:inject 15:63:r2:rotr@base_61:bijective +igneum-ca3-v4-uniform/104 f5b65dbcf3ada0b4 0 0:0:0 1:0:0 2:0:0 3:1:0 4:2:3 5:0:0 6:0:0 7:2:2 8:2:1 9:0:0 10:0:0 11:0:0 12:0:0 13:1:1 14:2:1 15:2:2 5 2 0 1 2 0:1:r5:xor@shadow_248:inject 1:13:r7:mulhi@base_12:lossy 2:17:r0:mulhi@base_11:lossy 3:19:r4:add@base_18:inject 4:26:r1:mad@base_15:inject 5:29:r0:mul@base_25:lossy 6:32:r3:load@base_26:inject 7:33:r1:add@base_28:inject 8:38:r4:xor@base_24:inject 9:40:r3:add@base_35:inject 10:42:r0:sub@base_41:inject 11:46:r1:or@base_36:lossy 12:48:r5:load@base_32:inject 13:55:r7:or@base_50:lossy 14:56:r4:load@base_55:inject 15:60:r0:sub@base_51:inject +igneum-ca3-v4-uniform/105 702ebd68206e5c3e 0 0:2:2 1:1:1 2:2:0 3:2:2 4:2:1 5:1:0 6:2:1 7:0:0 8:2:2 9:0:0 10:1:0 11:0:0 12:0:0 13:1:1 14:0:0 15:1:0 3 1 0 1 1 0:9:r4:rotl@base_2:bijective 1:11:r1:sub@base_7:inject 2:14:r5:mulhi@base_5:lossy 3:16:r3:mul@base_1:lossy 4:18:r7:mad@base_10:inject 5:22:r6:rotr@base_20:bijective 6:28:r7:load@base_22:inject 7:32:r1:rotl@base_30:bijective 8:40:r4:add@base_33:inject 9:41:r6:load@base_32:inject 10:48:r7:or@base_45:lossy 11:49:r1:shfl@base_46:inject 12:51:r0:load@base_48:inject 13:56:r6:rotl@base_55:bijective 14:57:r2:load@base_51:inject 15:63:r3:rotr@base_60:bijective +igneum-ca3-v4-uniform/106 b93d81794f2fda2b 0 0:1:0 1:0:0 2:2:0 3:1:0 4:0:0 5:2:2 6:1:1 7:0:0 8:2:1 9:2:2 10:1:0 11:2:2 12:2:0 13:0:0 14:2:1 15:2:3 1 0 0 0 1 0:6:r0:xor@base_3:inject 1:15:r5:rotr@base_11:bijective 2:18:r2:load@base_6:inject 3:23:r7:xor@base_19:inject 4:24:r2:xor@base_22:inject 5:27:r3:xor@base_25:inject 6:28:r1:mulhi@base_17:lossy 7:31:r2:sub@base_29:inject 8:33:r0:shfl@base_32:inject 9:45:r5:add@base_39:inject 10:47:r7:add@base_35:inject 11:53:r2:load@base_47:inject 12:55:r3:load@base_45:inject 13:56:r1:xor@base_51:inject 14:58:r3:load@base_56:inject 15:59:r7:load@base_55:inject +igneum-ca3-v4-uniform/107 d5f54cd71ef04d64 0 0:2:1 1:1:0 2:1:1 3:2:2 4:1:1 5:2:0 6:1:0 7:2:0 8:1:1 9:1:1 10:0:0 11:0:0 12:2:1 13:1:0 14:0:0 15:1:0 3 1 0 0 2 0:6:r6:xor@base_3:inject 1:7:r7:mulhi@base_1:lossy 2:8:r2:load@base_6:inject 3:10:r2:rotr@base_9:bijective 4:11:r0:mad@base_5:inject 5:15:r1:add@base_13:inject 6:16:r6:load@base_15:inject 7:20:r1:load@base_16:inject 8:26:r1:or@base_24:lossy 9:28:r6:shfl@base_19:inject 10:34:r7:load@base_28:inject 11:39:r5:mulhi@base_38:lossy 12:41:r4:rotl@base_32:bijective 13:46:r0:add@base_44:inject 14:53:r1:mad@base_50:inject 15:58:r2:add@base_37:inject +igneum-ca3-v4-uniform/108 bbb8518b0fb4cf57 0 0:2:1 1:1:1 2:2:2 3:0:0 4:1:1 5:2:1 6:0:0 7:1:1 8:1:1 9:2:0 10:2:2 11:2:2 12:2:2 13:0:0 14:1:0 15:1:0 2 1 0 1 0 0:1:r6:or@base_0:lossy 1:10:r2:add@base_5:inject 2:12:r0:load@base_10:inject 3:17:r3:add@base_3:inject 4:21:r7:load@base_17:inject 5:22:r1:load@base_12:inject 6:25:r7:rotl@base_24:bijective 7:31:r5:load@base_22:inject 8:34:r4:rotr@base_26:bijective 9:43:r0:sub@base_42:inject 10:45:r4:mul@base_38:lossy 11:47:r7:sub@base_46:inject 12:54:r7:sub@base_49:inject 13:55:r2:load@base_45:inject 14:56:r4:sub@base_52:inject 15:63:r0:load@base_56:inject +igneum-ca3-v4-uniform/109 72c613d2f254a75d 0 0:0:0 1:1:1 2:1:1 3:2:3 4:2:0 5:1:0 6:2:0 7:1:0 8:0:0 9:1:1 10:2:2 11:0:0 12:0:0 13:0:0 14:2:0 15:2:1 3 2 0 1 0 0:3:r0:shfl@base_2:inject 1:5:r6:add@base_4:inject 2:7:r5:load@base_5:inject 3:10:r7:load@base_3:inject 4:11:r0:load@base_10:inject 5:12:r1:load@base_7:inject 6:14:r3:xor@base_13:inject 7:18:r6:load@base_12:inject 8:20:r1:or@base_19:lossy 9:22:r7:mad@base_17:inject 10:35:r0:xor@base_33:inject 11:40:r3:or@base_28:lossy 12:41:r1:rotl@base_26:bijective 13:46:r2:xor@base_44:inject 14:47:r6:load@base_46:inject 15:55:r0:mul@base_48:lossy +igneum-ca3-v4-uniform/110 d2f3c04575a1f558 0 0:1:1 1:2:1 2:0:0 3:0:0 4:1:0 5:0:0 6:0:0 7:1:0 8:2:1 9:2:3 10:2:1 11:0:0 12:2:0 13:1:0 14:2:1 15:0:0 6 2 1 3 1 0:5:r4:add@base_0:inject 1:13:r0:mul@base_7:lossy 2:14:r5:mul@base_11:lossy 3:16:r6:sub@base_15:inject 4:18:r4:load@base_13:inject 5:19:r2:rotl@base_17:bijective 6:20:r3:load@base_19:inject 7:26:r7:xor@base_25:inject 8:27:r1:add@base_23:inject 9:30:r4:mulhi@base_29:lossy 10:40:r0:or@base_34:lossy 11:42:r3:mul@base_39:lossy 12:44:r0:or@base_43:lossy-or-chain1 13:45:r6:load@base_44:inject 14:52:r1:rotl@base_47:bijective 15:60:r0:rotr@base_56:bijective +igneum-ca3-v4-uniform/111 7bf112f6589809f6 0 0:0:0 1:1:1 2:0:0 3:0:0 4:2:3 5:1:0 6:1:0 7:0:0 8:1:1 9:0:0 10:1:0 11:2:2 12:2:2 13:1:1 14:1:1 15:1:1 2 2 1 0 0 0:1:r2:shfl@shadow_250:inject 1:3:r3:load@base_1:inject 2:7:r2:add@base_2:inject 3:16:r5:or@base_13:lossy-or-chain1 4:23:r4:rotr@base_19:bijective 5:27:r7:shfl@base_10:inject 6:29:r3:load@base_27:inject 7:30:r1:mad@base_18:inject 8:33:r0:xor@base_21:inject 9:36:r2:shfl@base_35:inject 10:37:r4:sub@base_31:inject 11:45:r1:rotl@base_44:bijective 12:47:r7:shfl@base_38:inject 13:51:r7:mad@base_49:inject 14:57:r5:xor@base_55:inject 15:60:r6:or@base_59:lossy +igneum-ca3-v4-uniform/112 9285a87ec3a0fccc 0 0:2:1 1:1:0 2:2:1 3:1:1 4:2:3 5:0:0 6:0:0 7:2:2 8:2:2 9:0:0 10:2:1 11:1:0 12:2:2 13:1:1 14:0:0 15:1:0 5 0 0 4 1 0:2:r7:rotr@base_1:bijective 1:4:r4:rotr@base_3:bijective 2:5:r6:load@base_4:inject 3:11:r7:rotl@base_7:bijective 4:17:r0:mad@base_14:inject 5:22:r5:rotl@base_13:bijective 6:26:r4:add@base_23:inject 7:27:r1:load@base_26:inject 8:33:r3:mad@base_32:inject 9:34:r2:mul@base_19:lossy 10:38:r0:sub@base_18:inject 11:39:r1:add@base_29:inject 12:40:r7:mulhi@base_24:lossy 13:45:r3:mul@base_37:lossy 14:59:r3:mul@base_49:lossy 15:60:r5:mul@base_48:lossy +igneum-ca3-v4-uniform/113 8fb726ef3ecc9269 0 0:0:0 1:2:3 2:1:0 3:2:3 4:1:1 5:2:2 6:0:0 7:2:3 8:1:0 9:2:0 10:0:0 11:0:0 12:0:0 13:2:0 14:1:0 15:1:0 2 0 0 2 0 0:4:r7:shfl@base_3:inject 1:5:r3:rotr@base_2:bijective 2:7:r5:shfl@base_6:inject 3:8:r1:load@base_4:inject 4:19:r5:rotl@base_17:bijective 5:20:r7:mul@base_16:lossy 6:27:r1:load@base_20:inject 7:32:r7:rotr@base_30:bijective 8:33:r6:mul@base_31:lossy 9:39:r5:sub@base_35:inject 10:40:r2:load@base_39:inject 11:42:r7:load@base_40:inject 12:44:r2:rotl@base_43:bijective 13:55:r0:shfl@base_54:inject 14:58:r4:add@base_53:inject 15:61:r3:load@base_58:inject +igneum-ca3-v4-uniform/114 88334bab015e6d44 0 0:2:2 1:0:0 2:2:1 3:1:1 4:1:1 5:0:0 6:1:1 7:2:1 8:1:0 9:1:1 10:1:0 11:0:0 12:1:0 13:0:0 14:2:0 15:1:0 1 0 0 1 0 0:4:r2:add@base_1:inject 1:9:r5:mul@base_3:lossy 2:10:r0:load@base_9:inject 3:12:r3:add@base_8:inject 4:14:r0:load@base_12:inject 5:15:r7:sub@base_11:inject 6:17:r4:load@base_15:inject 7:26:r2:shfl@base_13:inject 8:30:r0:xor@base_16:inject 9:32:r5:sub@base_28:inject 10:35:r2:xor@base_29:inject 11:40:r2:xor@base_36:inject 12:43:r6:load@base_40:inject 13:44:r3:add@base_41:inject 14:48:r2:load@base_43:inject 15:60:r2:xor@base_59:inject +igneum-ca3-v4-uniform/115 01d6b7c7aecdc600 0 0:1:1 1:2:2 2:1:1 3:0:0 4:1:0 5:0:0 6:1:0 7:2:3 8:2:3 9:0:0 10:0:0 11:0:0 12:2:0 13:0:0 14:2:1 15:0:0 3 2 0 0 1 0:1:r1:add@base_0:inject 1:11:r3:mad@base_9:inject 2:15:r4:add@base_12:inject 3:16:r3:mad@base_13:inject 4:19:r2:load@base_11:inject 5:20:r5:load@base_19:inject 6:21:r1:load@base_20:inject 7:24:r7:load@base_15:inject 8:31:r2:or@base_30:lossy 9:32:r3:shfl@base_29:inject 10:35:r5:or@base_34:lossy 11:39:r6:mulhi@base_38:lossy 12:48:r5:rotl@base_42:bijective 13:53:r2:xor@base_44:inject 14:55:r0:rotl@base_47:bijective 15:60:r1:rotl@base_52:bijective +igneum-ca3-v4-uniform/116 15a540b9423ad9c9 0 0:0:0 1:1:1 2:0:0 3:2:1 4:2:1 5:1:1 6:1:0 7:0:0 8:1:0 9:1:0 10:0:0 11:2:2 12:0:0 13:2:3 14:0:0 15:0:0 3 2 1 1 0 0:5:r2:shfl@base_0:inject 1:9:r1:rotr@base_8:bijective 2:10:r5:load@base_9:inject 3:15:r5:rotl@base_13:bijective 4:18:r2:load@base_10:inject 5:20:r6:or@base_12:lossy 6:26:r3:load@base_20:inject 7:28:r0:or@base_16:lossy-or-chain1 8:36:r5:rotl@base_34:bijective 9:40:r4:rotl@base_29:bijective 10:44:r7:mul@base_21:lossy 11:51:r2:shfl@base_43:inject 12:54:r7:rotl@base_47:bijective 13:57:r1:xor@base_55:inject 14:59:r0:load@base_54:inject 15:60:r3:shfl@base_58:inject +igneum-ca3-v4-uniform/117 aeb3dd57ecdc8876 0 0:1:1 1:0:0 2:0:0 3:0:0 4:1:1 5:1:1 6:1:1 7:1:0 8:2:1 9:2:1 10:2:1 11:0:0 12:2:1 13:0:0 14:1:1 15:1:1 2 0 0 0 2 0:1:r5:mulhi@base_0:lossy 1:4:r3:rotr@base_2:bijective 2:5:r0:add@base_3:inject 3:8:r4:load@base_5:inject 4:10:r2:load@base_8:inject 5:12:r0:sub@base_6:inject 6:13:r1:rotl@base_7:bijective 7:15:r4:load@base_10:inject 8:23:r0:rotl@base_21:bijective 9:42:r4:xor@base_34:inject 10:45:r2:mulhi@base_36:lossy 11:50:r7:add@base_47:inject 12:52:r1:load@base_45:inject 13:53:r0:load@base_52:inject 14:57:r4:load@base_53:inject 15:62:r3:mad@base_61:inject +igneum-ca3-v4-uniform/118 4d736b1c4a2c9eb9 0 0:1:1 1:1:0 2:0:0 3:1:0 4:2:0 5:0:0 6:0:0 7:1:0 8:1:1 9:2:1 10:0:0 11:0:0 12:1:0 13:0:0 14:2:2 15:0:0 3 0 0 0 3 0:3:r2:rotr@base_2:bijective 1:5:r6:load@base_3:inject 2:6:r5:rotl@base_4:bijective 3:8:r7:load@base_5:inject 4:9:r1:load@base_8:inject 5:18:r4:mulhi@base_15:lossy 6:27:r4:add@base_23:inject 7:28:r1:sub@base_25:inject 8:31:r7:mulhi@base_16:lossy 9:32:r1:mulhi@base_30:lossy 10:34:r2:load@base_31:inject 11:41:r6:sub@base_11:inject 12:46:r3:rotr@base_40:bijective 13:47:r4:add@base_45:inject 14:56:r6:rotr@base_51:bijective 15:57:r2:add@base_42:inject +igneum-ca3-v4-uniform/119 d3b19d272fb12986 0 0:1:0 1:0:0 2:1:1 3:0:0 4:2:1 5:2:3 6:2:1 7:1:1 8:0:0 9:0:0 10:2:0 11:2:1 12:1:1 13:2:3 14:0:0 15:1:1 3 2 0 1 0 0:1:r4:or@shadow_255:lossy 1:2:r7:load@base_1:inject 2:8:r5:add@base_7:inject 3:12:r1:add@base_3:inject 4:13:r4:load@base_8:inject 5:17:r7:shfl@base_16:inject 6:22:r0:load@base_12:inject 7:29:r1:add@base_24:inject 8:31:r6:add@base_20:inject 9:32:r2:xor@base_19:inject 10:33:r5:sub@base_30:inject 11:36:r4:add@base_23:inject 12:43:r1:xor@base_40:inject 13:46:r4:add@base_38:inject 14:56:r4:mul@base_49:lossy 15:62:r5:or@base_53:lossy +igneum-ca3-v4-uniform/120 691b974fa5ac2d50 0 0:2:3 1:1:1 2:1:0 3:0:0 4:0:0 5:1:0 6:2:3 7:2:0 8:2:3 9:2:2 10:2:0 11:2:1 12:1:1 13:2:3 14:0:0 15:0:0 3 0 0 3 0 0:4:r4:rotr@base_0:bijective 1:6:r3:mul@base_1:lossy 2:7:r5:load@base_4:inject 3:8:r7:load@base_7:inject 4:9:r4:load@base_8:inject 5:10:r1:rotl@base_3:bijective 6:12:r4:load@base_10:inject 7:13:r2:load@base_12:inject 8:24:r4:sub@base_18:inject 9:26:r5:load@base_9:inject 10:39:r5:rotr@base_34:bijective 11:42:r7:rotr@base_36:bijective 12:44:r6:mad@base_40:inject 13:45:r1:load@base_39:inject 14:48:r4:mul@base_46:lossy 15:53:r4:mul@base_49:lossy +igneum-ca3-v4-uniform/121 6685cd2eff0ebfe0 0 0:0:0 1:2:2 2:2:0 3:0:0 4:2:3 5:2:1 6:2:2 7:0:0 8:0:0 9:0:0 10:2:0 11:1:0 12:0:0 13:0:0 14:1:1 15:0:0 2 0 0 1 1 0:1:r1:mul@base_0:lossy 1:2:r4:load@base_1:inject 2:3:r0:load@base_2:inject 3:5:r5:load@base_3:inject 4:6:r1:sub@base_4:inject 5:12:r7:load@base_6:inject 6:14:r1:load@base_12:inject 7:19:r1:rotl@base_17:bijective 8:29:r4:mad@base_26:inject 9:30:r2:load@base_14:inject 10:36:r6:add@base_20:inject 11:39:r5:load@base_30:inject 12:40:r0:shfl@base_35:inject 13:47:r7:load@base_39:inject 14:54:r2:mulhi@base_44:lossy 15:60:r6:xor@base_58:inject +igneum-ca3-v4-uniform/122 8adc01dfb4294663 0 0:1:0 1:1:0 2:2:3 3:0:0 4:2:1 5:1:0 6:0:0 7:1:0 8:2:2 9:1:1 10:1:1 11:2:1 12:1:0 13:2:1 14:0:0 15:1:0 1 0 0 0 1 0:9:r2:rotr@base_2:bijective 1:10:r4:shfl@base_8:inject 2:16:r0:mulhi@base_11:lossy 3:17:r1:load@base_16:inject 4:19:r4:xor@base_14:inject 5:20:r1:load@base_19:inject 6:22:r6:mad@base_15:inject 7:25:r0:load@base_22:inject 8:26:r4:rotl@base_23:bijective 9:37:r6:shfl@base_35:inject 10:48:r3:mad@base_47:inject 11:49:r6:xor@base_44:inject 12:52:r5:add@base_36:inject 13:54:r1:load@base_26:inject 14:55:r3:load@base_52:inject 15:59:r4:rotr@base_58:bijective +igneum-ca3-v4-uniform/123 bf867ef72c9faf09 0 0:1:0 1:1:1 2:0:0 3:0:0 4:0:0 5:1:1 6:2:0 7:1:0 8:0:0 9:0:0 10:1:1 11:2:1 12:1:0 13:1:0 14:0:0 15:0:0 2 0 0 1 1 0:2:r2:mulhi@base_0:lossy 1:3:r0:load@base_2:inject 2:5:r6:shfl@base_1:inject 3:11:r0:add@base_10:inject 4:13:r0:add@base_12:inject 5:15:r2:add@base_9:inject 6:23:r5:mad@base_14:inject 7:28:r3:load@base_15:inject 8:37:r0:xor@base_34:inject 9:48:r7:xor@base_43:inject 10:51:r5:xor@base_40:inject 11:53:r4:load@base_48:inject 12:56:r1:load@base_53:inject 13:57:r3:sub@base_55:inject 14:59:r6:mul@base_58:lossy 15:63:r5:rotr@base_61:bijective +igneum-ca3-v4-uniform/124 47acaae55fdfbee7 0 0:1:1 1:2:2 2:2:2 3:1:1 4:2:1 5:2:3 6:1:1 7:2:2 8:2:0 9:2:3 10:0:0 11:0:0 12:1:1 13:2:1 14:0:0 15:0:0 1 1 0 0 0 0:2:r0:mad@base_1:inject 1:6:r5:load@base_2:inject 2:8:r2:load@base_6:inject 3:9:r7:rotl@base_0:bijective 4:12:r1:load@base_8:inject 5:15:r4:xor@base_5:inject 6:16:r7:rotl@base_14:bijective 7:17:r3:add@base_10:inject 8:31:r4:mad@base_29:inject 9:41:r7:xor@base_35:inject 10:42:r5:rotl@base_37:bijective 11:48:r2:load@base_42:inject 12:54:r0:mad@base_49:inject 13:55:r3:xor@base_46:inject 14:56:r1:or@base_44:lossy 15:61:r0:xor@base_59:inject +igneum-ca3-v4-uniform/125 2d8995efee563884 0 0:0:0 1:0:0 2:1:1 3:1:0 4:2:2 5:0:0 6:0:0 7:0:0 8:1:1 9:0:0 10:0:0 11:1:0 12:0:0 13:1:0 14:2:1 15:1:1 3 1 0 2 0 0:8:r0:add@base_7:inject 1:12:r6:add@base_4:inject 2:13:r0:load@base_12:inject 3:16:r4:mad@base_15:inject 4:23:r5:load@base_16:inject 5:24:r2:mul@base_22:lossy 6:27:r2:or@base_25:lossy 7:30:r6:mul@base_29:lossy 8:37:r6:sub@base_36:inject 9:43:r7:xor@base_33:inject 10:47:r0:sub@base_44:inject 11:51:r2:mad@base_48:inject 12:57:r1:shfl@base_49:inject 13:60:r5:add@base_50:inject 14:62:r3:load@base_57:inject 15:63:r4:rotl@base_61:bijective +igneum-ca3-v4-uniform/126 278b937d6380bc94 0 0:0:0 1:1:0 2:1:0 3:2:3 4:2:0 5:2:0 6:1:1 7:2:0 8:0:0 9:2:1 10:2:3 11:2:0 12:2:1 13:1:1 14:2:3 15:0:0 4 1 0 1 2 0:2:r5:shfl@base_1:inject 1:11:r6:mulhi@base_8:lossy 2:30:r7:mul@base_19:lossy 3:35:r5:mulhi@base_26:lossy 4:38:r0:add@base_33:inject 5:39:r4:xor@base_34:inject 6:41:r6:add@base_25:inject 7:43:r7:add@base_42:inject 8:47:r6:load@base_43:inject 9:50:r1:rotl@base_44:bijective 10:55:r2:load@base_41:inject 11:56:r5:or@base_52:lossy 12:58:r6:load@base_56:inject 13:60:r0:load@base_55:inject 14:62:r1:load@base_58:inject 15:63:r3:load@base_60:inject +igneum-ca3-v4-uniform/127 6857d633fe5de5a9 0 0:0:0 1:1:0 2:0:0 3:2:2 4:0:0 5:2:0 6:1:1 7:0:0 8:0:0 9:0:0 10:1:0 11:2:2 12:2:2 13:2:0 14:2:1 15:2:2 1 0 0 1 0 0:3:r4:shfl@base_2:inject 1:12:r2:add@base_1:inject 2:18:r3:sub@base_13:inject 3:22:r6:add@base_0:inject 4:28:r7:shfl@base_9:inject 5:31:r0:mul@base_29:lossy 6:32:r2:mad@base_25:inject 7:38:r4:load@base_22:inject 8:42:r6:load@base_28:inject 9:44:r2:xor@base_39:inject 10:45:r1:xor@base_40:inject 11:47:r5:load@base_42:inject 12:51:r3:load@base_45:inject 13:52:r1:load@base_47:inject 14:53:r6:load@base_52:inject 15:62:r5:sub@base_48:inject +igneum-ca3-v4-uniform/128 0a57a4ac7cc594d7 0 0:1:1 1:0:0 2:1:1 3:1:1 4:1:1 5:0:0 6:0:0 7:1:0 8:1:1 9:1:1 10:1:0 11:0:0 12:2:0 13:2:2 14:1:1 15:0:0 2 0 0 1 1 0:4:r0:mul@base_0:lossy 1:15:r6:xor@base_6:inject 2:18:r3:xor@base_12:inject 3:19:r5:load@base_18:inject 4:33:r6:add@base_23:inject 5:35:r2:mad@base_27:inject 6:36:r5:shfl@base_34:inject 7:38:r4:load@base_36:inject 8:41:r6:load@base_38:inject 9:44:r7:sub@base_43:inject 10:46:r4:rotr@base_42:bijective 11:54:r0:xor@base_29:inject 12:56:r6:mad@base_48:inject 13:57:r4:add@base_47:inject 14:59:r5:mulhi@base_58:lossy 15:62:r0:load@base_57:inject +igneum-ca3-v4-uniform/129 9a7e94ef9498a787 0 0:0:0 1:2:1 2:0:0 3:0:0 4:2:3 5:2:0 6:0:0 7:1:0 8:1:1 9:0:0 10:1:1 11:1:0 12:1:1 13:2:2 14:2:2 15:0:0 5 0 0 3 2 0:1:r6:mulhi@base_0:lossy 1:2:r0:load@base_1:inject 2:3:r5:mul@shadow_238:lossy 3:6:r3:load@base_3:inject 4:7:r0:load@base_6:inject 5:9:r4:shfl@base_5:inject 6:11:r6:xor@base_10:inject 7:22:r7:mulhi@base_19:lossy 8:24:r2:xor@base_17:inject 9:26:r7:mul@base_23:lossy 10:36:r7:mul@base_27:lossy 11:40:r0:load@base_36:inject 12:51:r1:shfl@base_50:inject 13:52:r3:load@base_51:inject 14:54:r7:load@base_52:inject 15:61:r0:xor@base_58:inject +igneum-ca3-v4-uniform/130 fc8a9995753e123c 0 0:0:0 1:2:1 2:1:0 3:1:1 4:1:0 5:0:0 6:2:3 7:1:1 8:0:0 9:2:2 10:2:2 11:2:3 12:1:1 13:2:3 14:1:1 15:1:1 0 0 0 0 0 0:4:r2:mad@base_0:inject 1:10:r5:xor@base_1:inject 2:16:r3:load@base_4:inject 3:22:r1:load@base_16:inject 4:23:r5:xor@base_11:inject 5:31:r0:load@base_22:inject 6:35:r2:add@base_34:inject 7:41:r6:xor@base_32:inject 8:47:r4:rotl@base_45:bijective 9:52:r4:add@base_49:inject 10:53:r5:add@base_36:inject 11:54:r3:xor@base_51:inject 12:55:r1:load@base_54:inject 13:59:r0:xor@base_56:inject 14:61:r6:load@base_53:inject 15:62:r2:sub@base_57:inject +igneum-ca3-v4-uniform/131 cc6f3f823752eb5f 0 0:2:2 1:0:0 2:1:0 3:1:0 4:2:1 5:1:1 6:0:0 7:1:0 8:1:1 9:0:0 10:2:0 11:2:3 12:1:0 13:0:0 14:1:1 15:1:1 2 0 0 0 2 0:1:r0:mad@shadow_254:inject 1:3:r1:load@base_1:inject 2:9:r7:rotl@base_4:bijective 3:11:r3:add@base_8:inject 4:28:r2:rotr@base_25:bijective 5:29:r6:load@base_28:inject 6:30:r0:xor@base_19:inject 7:33:r7:sub@base_27:inject 8:37:r0:xor@base_35:inject 9:38:r5:mulhi@base_32:lossy 10:39:r3:add@base_34:inject 11:46:r7:load@base_37:inject 12:47:r5:add@base_44:inject 13:49:r7:rotl@base_48:bijective 14:55:r6:add@base_53:inject 15:62:r7:mulhi@base_51:lossy +igneum-ca3-v4-uniform/132 dbcbf055a54fc55c 0 0:0:0 1:0:0 2:1:1 3:1:0 4:2:1 5:2:2 6:1:1 7:2:1 8:2:3 9:1:0 10:2:3 11:1:1 12:1:1 13:0:0 14:1:1 15:1:1 0 0 0 0 0 0:3:r5:mad@base_0:inject 1:4:r4:add@base_1:inject 2:7:r7:rotr@base_2:bijective 3:12:r0:rotl@base_11:bijective 4:17:r7:add@base_15:inject 5:26:r7:sub@base_19:inject 6:29:r1:rotl@base_28:bijective 7:30:r3:rotr@base_27:bijective 8:32:r4:load@base_29:inject 9:35:r0:xor@base_34:inject 10:47:r7:shfl@base_45:inject 11:52:r2:xor@base_51:inject 12:56:r1:mad@base_54:inject 13:61:r1:sub@base_57:inject 14:62:r7:load@base_56:inject 15:63:r5:load@base_62:inject +igneum-ca3-v4-uniform/133 fef1a6816c9714cf 0 0:2:0 1:2:2 2:1:1 3:0:0 4:1:0 5:0:0 6:1:1 7:0:0 8:1:0 9:2:1 10:0:0 11:1:1 12:1:1 13:1:0 14:2:3 15:1:0 8 0 0 3 5 0:3:r0:mul@base_1:lossy 1:5:r5:shfl@base_2:inject 2:13:r1:add@base_10:inject 3:18:r4:mulhi@base_12:lossy 4:19:r5:mulhi@base_15:lossy 5:22:r6:load@base_18:inject 6:26:r1:mulhi@base_16:lossy 7:31:r7:xor@base_20:inject 8:33:r1:sub@base_28:inject 9:37:r4:rotr@base_30:bijective 10:38:r0:mul@base_35:lossy 11:44:r3:add@base_39:inject 12:50:r6:mulhi@base_49:lossy 13:51:r5:mulhi@base_46:lossy 14:55:r2:mul@base_24:lossy 15:58:r7:shfl@base_48:inject +igneum-ca3-v4-uniform/134 7224d159922f16ec 0 0:2:2 1:1:0 2:2:1 3:0:0 4:0:0 5:1:1 6:2:1 7:2:0 8:0:0 9:0:0 10:0:0 11:2:1 12:2:2 13:1:1 14:0:0 15:2:3 3 0 0 3 0 0:3:r1:xor@base_2:inject 1:9:r7:add@base_8:inject 2:13:r5:load@base_3:inject 3:16:r6:rotl@base_15:bijective 4:17:r2:add@base_10:inject 5:21:r3:mul@base_14:lossy 6:23:r0:load@base_17:inject 7:25:r7:add@base_19:inject 8:30:r5:xor@base_28:inject 9:31:r2:add@base_22:inject 10:35:r7:mul@base_33:lossy 11:39:r3:mul@base_38:lossy 12:40:r1:load@base_39:inject 13:41:r5:xor@base_36:inject 14:49:r2:rotr@base_47:bijective 15:54:r7:add@base_53:inject +igneum-ca3-v4-uniform/135 257c9221d79f1820 0 0:2:3 1:1:1 2:2:1 3:0:0 4:1:0 5:1:0 6:1:1 7:1:1 8:1:0 9:2:0 10:2:0 11:1:1 12:1:0 13:1:0 14:0:0 15:1:0 4 0 0 2 2 0:3:r3:sub@base_0:inject 1:5:r0:mulhi@base_1:lossy 2:6:r7:add@base_2:inject 3:18:r5:rotr@base_16:bijective 4:23:r7:add@base_21:inject 5:26:r3:sub@base_25:inject 6:28:r0:load@base_26:inject 7:30:r6:xor@base_20:inject 8:33:r4:mulhi@base_22:lossy 9:35:r3:load@base_33:inject 10:38:r5:load@base_30:inject 11:39:r0:rotr@base_31:bijective 12:47:r4:mul@base_43:lossy 13:49:r7:rotl@base_46:bijective 14:56:r1:mul@base_51:lossy 15:58:r5:shfl@base_50:inject +igneum-ca3-v4-uniform/136 73c8bae01e52712e 0 0:1:0 1:1:1 2:1:1 3:1:1 4:0:0 5:1:1 6:2:3 7:2:0 8:0:0 9:2:2 10:0:0 11:1:1 12:2:2 13:1:0 14:0:0 15:0:0 4 1 0 2 1 0:2:r1:rotr@base_1:bijective 1:3:r2:load@base_2:inject 2:4:r3:load@base_3:inject 3:24:r7:or@base_20:lossy 4:25:r1:load@base_4:inject 5:28:r2:xor@base_26:inject 6:31:r6:add@base_30:inject 7:39:r4:mulhi@base_32:lossy 8:41:r4:shfl@base_40:inject 9:42:r3:load@base_41:inject 10:44:r2:mul@base_38:lossy 11:47:r0:load@base_44:inject 12:52:r3:mul@base_48:lossy 13:53:r2:load@base_47:inject 14:54:r4:add@base_51:inject 15:58:r6:shfl@base_57:inject +igneum-ca3-v4-uniform/137 5176f7d027c5c124 0 0:0:0 1:2:2 2:2:3 3:1:1 4:1:1 5:0:0 6:2:3 7:2:1 8:2:1 9:0:0 10:2:3 11:0:0 12:1:0 13:1:1 14:2:2 15:0:0 3 0 0 1 2 0:2:r5:mulhi@base_0:lossy 1:3:r4:load@base_2:inject 2:8:r6:xor@base_5:inject 3:9:r1:rotl@base_7:bijective 4:12:r4:rotl@base_11:bijective 5:15:r5:load@base_12:inject 6:17:r1:add@base_13:inject 7:27:r7:add@base_19:inject 8:35:r3:rotl@base_33:bijective 9:36:r5:sub@base_32:inject 10:38:r4:load@base_36:inject 11:41:r0:load@base_27:inject 12:42:r3:mulhi@base_39:lossy 13:44:r7:load@base_42:inject 14:52:r1:mul@base_47:lossy 15:59:r5:add@base_57:inject +igneum-ca3-v4-uniform/138 4db772814ddb3d18 0 0:0:0 1:2:3 2:0:0 3:1:0 4:1:1 5:1:0 6:2:1 7:0:0 8:2:2 9:2:1 10:1:1 11:1:0 12:0:0 13:2:1 14:0:0 15:0:0 5 2 0 1 2 0:6:r6:rotr@base_0:bijective 1:8:r7:rotr@base_7:bijective 2:10:r6:mul@base_9:lossy 3:21:r2:shfl@base_17:inject 4:23:r7:mulhi@base_13:lossy 5:24:r5:or@base_5:lossy 6:25:r0:mulhi@base_14:lossy 7:38:r7:xor@base_32:inject 8:47:r0:mad@base_40:inject 9:49:r7:rotr@base_48:bijective 10:53:r2:sub@base_42:inject 11:55:r1:add@base_51:inject 12:57:r3:or@base_46:lossy 13:58:r0:load@base_55:inject 14:61:r1:add@base_59:inject 15:63:r1:xor@base_62:inject +igneum-ca3-v4-uniform/139 2089f4d890c5d0bf 0 0:2:2 1:0:0 2:1:1 3:2:0 4:0:0 5:2:0 6:1:0 7:2:3 8:0:0 9:1:0 10:2:0 11:2:3 12:0:0 13:2:0 14:0:0 15:1:0 6 1 0 4 1 0:1:r1:sub@base_0:inject 1:5:r6:mad@base_4:inject 2:10:r7:xor@base_2:inject 3:13:r0:load@base_10:inject 4:15:r5:rotr@base_14:bijective 5:18:r5:mul@base_16:lossy 6:24:r3:mul@base_22:lossy 7:27:r0:add@base_17:inject 8:29:r5:rotl@base_23:bijective 9:34:r6:mulhi@base_21:lossy 10:39:r3:or@base_35:lossy 11:41:r2:load@base_27:inject 12:48:r4:add@base_44:inject 13:49:r7:sub@base_45:inject 14:60:r6:mul@base_59:lossy 15:63:r3:mul@base_57:lossy +igneum-ca3-v4-uniform/140 87aa68dd1f595ae7 0 0:2:3 1:0:0 2:1:0 3:2:3 4:2:2 5:1:1 6:0:0 7:1:0 8:2:3 9:2:2 10:2:3 11:0:0 12:0:0 13:0:0 14:1:0 15:1:0 3 0 0 2 1 0:1:r1:mul@base_0:lossy 1:2:r5:shfl@shadow_251:inject 2:7:r3:mad@base_4:inject 3:11:r5:rotr@base_8:bijective 4:20:r5:shfl@base_16:inject 5:22:r7:mul@base_3:lossy 6:23:r4:load@base_20:inject 7:25:r1:add@base_24:inject 8:26:r5:load@base_23:inject 9:29:r6:add@base_28:inject 10:31:r1:load@base_29:inject 11:45:r7:mulhi@base_40:lossy 12:47:r0:mad@base_43:inject 13:48:r1:sub@base_46:inject 14:50:r5:rotr@base_49:bijective 15:57:r7:add@base_54:inject +igneum-ca3-v4-uniform/141 764b89e2e3645183 0 0:0:0 1:2:2 2:0:0 3:1:1 4:1:0 5:1:1 6:1:0 7:1:0 8:2:1 9:1:1 10:0:0 11:0:0 12:1:0 13:0:0 14:2:2 15:2:1 1 0 0 1 0 0:5:r7:rotl@base_1:bijective 1:6:r0:load@base_5:inject 2:23:r5:sub@base_19:inject 3:25:r7:add@base_12:inject 4:31:r4:rotr@base_30:bijective 5:34:r6:load@base_25:inject 6:37:r5:xor@base_24:inject 7:39:r7:rotl@base_36:bijective 8:40:r6:xor@base_38:inject 9:44:r3:rotr@base_42:bijective 10:45:r0:load@base_44:inject 11:49:r5:mul@base_43:lossy 12:50:r7:load@base_49:inject 13:52:r3:rotr@base_48:bijective 14:57:r4:mad@base_55:inject 15:61:r3:shfl@base_53:inject +igneum-ca3-v4-uniform/142 d09b68dd76e273c2 0 0:0:0 1:0:0 2:1:0 3:0:0 4:0:0 5:0:0 6:1:1 7:2:1 8:2:1 9:2:2 10:2:1 11:1:1 12:1:0 13:0:0 14:1:0 15:0:0 5 0 0 3 2 0:1:r6:mul@base_0:lossy 1:6:r7:load@base_1:inject 2:7:r4:load@base_6:inject 3:10:r7:sub@base_8:inject 4:14:r5:add@base_3:inject 5:24:r4:mulhi@base_11:lossy 6:27:r7:mul@base_17:lossy 7:29:r1:mad@base_25:inject 8:34:r4:rotr@base_30:bijective 9:39:r1:mad@base_37:inject 10:40:r6:rotr@base_38:bijective 11:43:r6:xor@base_41:inject 12:52:r7:add@base_47:inject 13:53:r1:mul@base_42:lossy 14:57:r2:load@base_52:inject 15:58:r4:mulhi@base_55:lossy +igneum-ca3-v4-uniform/143 5e790883a7761d89 0 0:0:0 1:1:1 2:2:0 3:0:0 4:1:0 5:1:1 6:1:0 7:1:1 8:0:0 9:2:1 10:2:1 11:1:1 12:0:0 13:1:0 14:1:0 15:1:0 3 0 0 2 1 0:4:r6:mad@base_1:inject 1:5:r2:xor@base_2:inject 2:12:r0:sub@base_6:inject 3:15:r7:add@base_14:inject 4:17:r4:load@base_15:inject 5:18:r0:mul@base_16:lossy 6:20:r2:load@base_18:inject 7:21:r6:rotr@base_11:bijective 8:22:r2:load@base_21:inject 9:24:r5:load@base_22:inject 10:34:r6:mul@base_32:lossy 11:38:r4:rotl@base_28:bijective 12:45:r0:load@base_24:inject 13:53:r3:mulhi@base_46:lossy 14:58:r2:shfl@base_49:inject 15:62:r0:sub@base_55:inject +igneum-ca3-v4-uniform/144 1ef49de187ac2154 0 0:1:1 1:1:0 2:1:0 3:2:3 4:2:3 5:1:1 6:0:0 7:1:1 8:0:0 9:1:1 10:2:3 11:1:1 12:1:1 13:1:1 14:0:0 15:1:0 1 0 0 1 0 0:5:r6:shfl@base_0:inject 1:7:r0:shfl@base_6:inject 2:10:r3:load@base_5:inject 3:12:r1:sub@base_3:inject 4:16:r5:mad@base_8:inject 5:18:r3:shfl@base_17:inject 6:21:r4:mad@base_19:inject 7:25:r7:rotl@base_11:bijective 8:30:r0:add@base_27:inject 9:34:r6:shfl@base_28:inject 10:37:r2:sub@base_31:inject 11:39:r2:add@base_38:inject 12:42:r4:sub@base_41:inject 13:44:r5:mad@base_23:inject 14:47:r0:add@base_46:inject 15:52:r7:mul@base_51:lossy +igneum-ca3-v4-uniform/145 328205d976fdaf9b 0 0:2:1 1:1:1 2:2:2 3:2:1 4:1:1 5:2:2 6:2:0 7:0:0 8:1:1 9:2:3 10:0:0 11:0:0 12:1:0 13:2:1 14:0:0 15:2:3 4 1 0 2 1 0:1:r4:mad@base_0:inject 1:2:r0:or@shadow_245:lossy 2:6:r5:load@base_2:inject 3:11:r3:load@base_6:inject 4:12:r0:mul@base_9:lossy 5:18:r3:load@base_12:inject 6:25:r0:mul@base_14:lossy 7:26:r6:load@base_25:inject 8:29:r7:load@base_26:inject 9:30:r5:load@base_18:inject 10:33:r0:load@base_29:inject 11:37:r1:mulhi@base_31:lossy 12:40:r7:load@base_33:inject 13:42:r3:load@base_40:inject 14:61:r2:rotl@base_56:bijective 15:62:r4:add@base_60:inject +igneum-ca3-v4-uniform/146 535eba712af8ff81 0 0:0:0 1:2:3 2:1:0 3:0:0 4:1:0 5:0:0 6:0:0 7:1:0 8:2:0 9:0:0 10:2:3 11:1:1 12:1:1 13:2:3 14:2:0 15:2:3 2 1 0 1 0 0:3:r3:shfl@base_2:inject 1:7:r4:or@base_6:lossy 2:12:r6:rotr@base_9:bijective 3:19:r2:shfl@base_18:inject 4:22:r0:rotl@base_16:bijective 5:31:r7:rotl@base_28:bijective 6:33:r1:rotl@base_21:bijective 7:34:r2:xor@base_30:inject 8:36:r6:rotl@base_25:bijective 9:42:r4:rotl@base_35:bijective 10:43:r5:rotl@base_40:bijective 11:49:r7:mad@base_44:inject 12:53:r4:add@base_51:inject 13:58:r2:mul@base_56:lossy 14:59:r6:rotl@base_48:bijective 15:63:r3:rotr@base_37:bijective +igneum-ca3-v4-uniform/147 51f4c2cb6d2463fb 0 0:2:0 1:1:0 2:2:1 3:0:0 4:2:0 5:1:0 6:2:0 7:0:0 8:0:0 9:0:0 10:2:3 11:2:1 12:0:0 13:0:0 14:1:0 15:0:0 4 1 0 1 2 0:4:r2:mulhi@base_2:lossy 1:5:r6:load@base_4:inject 2:13:r3:rotr@base_8:bijective 3:14:r0:rotr@base_9:bijective 4:15:r6:load@base_13:inject 5:20:r1:mul@base_18:lossy 6:34:r2:sub@base_32:inject 7:40:r2:add@base_37:inject 8:43:r4:or@base_29:lossy 9:45:r7:load@base_43:inject 10:49:r3:mulhi@base_44:lossy 11:52:r6:shfl@base_51:inject 12:53:r1:shfl@base_50:inject 13:58:r7:load@base_53:inject 14:61:r0:xor@base_56:inject 15:62:r1:rotl@base_55:bijective +igneum-ca3-v4-uniform/148 16707fa34ea24259 0 0:1:1 1:2:3 2:1:0 3:1:0 4:1:0 5:0:0 6:2:2 7:2:2 8:1:1 9:2:2 10:2:2 11:0:0 12:0:0 13:2:0 14:2:1 15:1:1 2 0 0 0 2 0:1:r1:xor@base_0:inject 1:2:r4:rotl@shadow_254:bijective 2:6:r4:shfl@base_5:inject 3:15:r3:shfl@base_12:inject 4:21:r4:xor@base_7:inject 5:23:r1:shfl@base_14:inject 6:25:r5:load@base_23:inject 7:37:r6:xor@base_30:inject 8:41:r0:mad@base_29:inject 9:50:r7:xor@base_39:inject 10:54:r5:mulhi@base_48:lossy 11:55:r0:shfl@base_45:inject 12:56:r1:mulhi@base_53:lossy 13:59:r6:add@base_58:inject 14:61:r5:load@base_59:inject 15:62:r4:load@base_61:inject +igneum-ca3-v4-uniform/149 d04f367931ff9fee 0 0:2:1 1:0:0 2:0:0 3:1:0 4:1:0 5:1:1 6:0:0 7:0:0 8:1:1 9:0:0 10:0:0 11:2:2 12:2:1 13:0:0 14:1:1 15:0:0 3 0 0 1 2 0:2:r4:add@base_0:inject 1:11:r7:rotr@base_1:bijective 2:16:r0:mul@base_15:lossy 3:17:r6:load@base_11:inject 4:18:r5:rotl@base_10:bijective 5:21:r2:load@base_18:inject 6:23:r3:load@base_21:inject 7:24:r4:mulhi@base_12:lossy 8:28:r1:add@base_25:inject 9:30:r0:mad@base_26:inject 10:34:r7:load@base_28:inject 11:35:r6:xor@base_32:inject 12:36:r5:rotr@base_33:bijective 13:54:r2:mulhi@base_53:lossy 14:59:r4:rotr@base_56:bijective 15:62:r5:shfl@base_61:inject +igneum-ca3-v4-uniform/150 f44f4de2e7d52992 0 0:2:3 1:1:0 2:2:0 3:0:0 4:2:1 5:2:3 6:0:0 7:0:0 8:1:1 9:1:1 10:0:0 11:2:3 12:1:1 13:1:1 14:1:1 15:1:0 3 1 0 2 0 0:2:r6:add@base_1:inject 1:3:r5:load@base_2:inject 2:8:r6:add@base_7:inject 3:9:r3:load@base_8:inject 4:12:r7:mad@base_5:inject 5:14:r0:shfl@base_4:inject 6:23:r1:mad@base_15:inject 7:27:r5:add@base_24:inject 8:34:r7:xor@base_19:inject 9:38:r4:rotl@base_35:bijective 10:40:r1:mul@base_30:lossy 11:43:r7:or@base_42:lossy 12:48:r1:sub@base_44:inject 13:53:r6:mul@base_39:lossy 14:54:r5:load@base_53:inject 15:57:r7:mad@base_49:inject +igneum-ca3-v4-uniform/151 4a06e30fb19eed7b 0 0:2:1 1:1:0 2:2:0 3:0:0 4:2:2 5:0:0 6:1:0 7:2:0 8:2:2 9:2:3 10:0:0 11:1:1 12:1:0 13:2:2 14:2:2 15:0:0 1 1 0 0 0 0:4:r0:shfl@base_2:inject 1:7:r1:load@base_4:inject 2:9:r6:shfl@base_5:inject 3:12:r2:load@base_9:inject 4:14:r0:rotl@base_10:bijective 5:15:r5:xor@base_6:inject 6:16:r6:or@base_13:lossy 7:21:r0:load@base_16:inject 8:32:r5:xor@base_30:inject 9:38:r2:load@base_21:inject 10:43:r3:add@base_34:inject 11:44:r7:load@base_38:inject 12:54:r5:xor@base_47:inject 13:58:r1:sub@base_55:inject 14:59:r4:load@base_58:inject 15:61:r0:xor@base_51:inject +igneum-ca3-v4-uniform/152 b3a646111fc31467 0 0:1:1 1:2:1 2:0:0 3:0:0 4:1:0 5:2:1 6:0:0 7:1:0 8:0:0 9:1:1 10:2:3 11:0:0 12:2:3 13:2:2 14:0:0 15:2:2 4 0 0 2 2 0:1:r1:mul@base_0:lossy 1:10:r5:add@base_9:inject 2:17:r6:mulhi@base_4:lossy 3:22:r0:load@base_10:inject 4:26:r4:mulhi@base_12:lossy 5:28:r2:mad@base_27:inject 6:31:r0:load@base_26:inject 7:32:r3:load@base_28:inject 8:36:r2:load@base_32:inject 9:37:r5:mad@base_13:inject 10:40:r0:load@base_37:inject 11:48:r0:mad@base_47:inject 12:50:r6:mul@base_41:lossy 13:51:r5:shfl@base_42:inject 14:53:r1:mad@base_49:inject 15:56:r2:load@base_53:inject +igneum-ca3-v4-uniform/153 9f2c80beb87aea4e 0 0:0:0 1:1:0 2:2:2 3:2:3 4:1:0 5:2:3 6:1:0 7:1:1 8:1:1 9:2:2 10:0:0 11:0:0 12:0:0 13:2:3 14:0:0 15:2:1 6 0 0 4 2 0:8:r3:rotl@base_3:bijective 1:10:r4:mulhi@base_1:lossy 2:17:r5:xor@base_14:inject 3:19:r7:rotr@base_16:bijective 4:27:r3:xor@base_23:inject 5:29:r4:load@base_27:inject 6:36:r2:mulhi@base_31:lossy 7:40:r7:mul@base_32:lossy 8:46:r0:load@base_36:inject 9:47:r1:mul@base_44:lossy 10:50:r4:load@base_40:inject 11:54:r2:load@base_50:inject 12:56:r3:load@base_54:inject 13:58:r6:mul@base_49:lossy 14:61:r0:shfl@base_52:inject 15:62:r7:mul@base_59:lossy +igneum-ca3-v4-uniform/154 87842d70af7cd2f8 0 0:0:0 1:0:0 2:0:0 3:1:1 4:1:1 5:1:1 6:0:0 7:2:0 8:0:0 9:2:0 10:2:3 11:0:0 12:2:0 13:0:0 14:0:0 15:0:0 2 0 0 1 1 0:2:r3:rotr@base_0:bijective 1:4:r0:xor@base_1:inject 2:13:r6:load@base_2:inject 3:17:r5:rotr@base_5:bijective 4:21:r3:add@base_20:inject 5:23:r7:rotr@base_15:bijective 6:25:r1:shfl@base_24:inject 7:29:r6:load@base_21:inject 8:30:r0:mul@base_28:lossy 9:39:r5:shfl@base_38:inject 10:43:r4:load@base_29:inject 11:47:r7:mulhi@base_45:lossy 12:51:r2:rotl@base_50:bijective 13:52:r5:load@base_47:inject 14:54:r4:add@base_48:inject 15:60:r7:add@base_59:inject +igneum-ca3-v4-uniform/155 d73298f239f4b798 0 0:2:2 1:1:0 2:2:2 3:0:0 4:2:2 5:0:0 6:1:0 7:1:1 8:2:3 9:1:0 10:2:1 11:1:1 12:2:0 13:1:0 14:0:0 15:0:0 2 0 0 1 1 0:6:r4:mad@base_0:inject 1:8:r1:add@base_4:inject 2:14:r4:add@base_12:inject 3:17:r6:shfl@base_7:inject 4:18:r7:xor@base_10:inject 5:27:r6:mad@base_24:inject 6:30:r0:mulhi@base_22:lossy 7:31:r4:load@base_27:inject 8:44:r7:add@base_43:inject 9:47:r1:load@base_17:inject 10:48:r3:add@base_42:inject 11:50:r6:load@base_47:inject 12:51:r5:load@base_50:inject 13:53:r2:mul@base_52:lossy 14:55:r6:load@base_53:inject 15:59:r0:shfl@base_36:inject +igneum-ca3-v4-uniform/156 eeaa9cfdfc27fb70 0 0:2:2 1:2:2 2:1:1 3:1:0 4:1:0 5:0:0 6:0:0 7:2:0 8:2:1 9:1:1 10:1:1 11:2:1 12:0:0 13:2:1 14:2:0 15:1:1 3 2 0 0 1 0:6:r2:shfl@base_5:inject 1:13:r4:or@base_3:lossy 2:16:r7:sub@base_10:inject 3:18:r4:rotl@base_17:bijective 4:22:r6:xor@base_14:inject 5:28:r4:add@base_25:inject 6:32:r3:or@base_21:lossy 7:39:r0:load@base_32:inject 8:41:r4:rotr@base_40:bijective 9:44:r7:mulhi@base_43:lossy 10:47:r5:xor@base_45:inject 11:48:r2:load@base_18:inject 12:51:r1:shfl@base_50:inject 13:55:r4:add@base_53:inject 14:61:r7:add@base_60:inject 15:63:r4:sub@base_58:inject +igneum-ca3-v4-uniform/157 98fe29e5c3734c0c 0 0:0:0 1:1:1 2:0:0 3:0:0 4:0:0 5:0:0 6:2:0 7:1:0 8:0:0 9:0:0 10:0:0 11:2:3 12:1:1 13:1:1 14:1:0 15:0:0 1 0 0 1 0 0:3:r3:sub@base_0:inject 1:5:r6:load@base_3:inject 2:12:r7:add@base_11:inject 3:14:r4:xor@base_7:inject 4:19:r2:xor@base_17:inject 5:20:r0:load@base_19:inject 6:33:r2:add@base_27:inject 7:35:r3:mul@base_30:lossy 8:42:r4:rotr@base_32:bijective 9:43:r0:add@base_40:inject 10:46:r1:xor@base_44:inject 11:47:r6:add@base_34:inject 12:48:r5:xor@base_45:inject 13:49:r7:load@base_48:inject 14:50:r2:load@base_47:inject 15:56:r1:add@base_54:inject +igneum-ca3-v4-uniform/158 c6174de064c497bb 0 0:2:3 1:2:3 2:0:0 3:1:0 4:1:0 5:0:0 6:2:3 7:2:2 8:0:0 9:1:1 10:2:3 11:0:0 12:0:0 13:0:0 14:2:0 15:1:0 1 0 0 1 0 0:7:r4:mad@base_6:inject 1:8:r7:xor@base_1:inject 2:11:r0:shfl@base_3:inject 3:16:r2:load@base_8:inject 4:22:r0:load@base_16:inject 5:27:r7:xor@base_24:inject 6:29:r4:shfl@base_21:inject 7:34:r2:xor@base_31:inject 8:36:r3:rotr@base_30:bijective 9:38:r5:add@base_32:inject 10:40:r2:load@base_38:inject 11:42:r5:load@base_40:inject 12:44:r4:load@base_42:inject 13:53:r3:xor@base_46:inject 14:58:r6:mul@base_54:lossy 15:59:r7:load@base_58:inject +igneum-ca3-v4-uniform/159 0238302fd37217fd 1 0:1:1 1:1:1 2:0:0 3:2:2 4:0:0 5:2:0 6:0:0 7:0:0 8:1:0 9:0:0 10:0:0 11:1:0 12:0:0 13:0:0 14:0:0 15:0:0 5 2 0 1 2 0:2:r5:rotr@base_1:bijective 1:5:r1:rotl@base_3:bijective 2:17:r7:mul@base_16:lossy 3:22:r6:xor@base_15:inject 4:24:r3:rotr@base_19:bijective 5:29:r6:mulhi@base_23:lossy 6:30:r2:rotl@base_26:bijective 7:35:r3:load@base_30:inject 8:39:r4:or@base_32:lossy 9:42:r6:mulhi@base_36:lossy 10:47:r4:rotl@base_41:bijective 11:49:r5:or@base_48:lossy 12:55:r2:rotl@base_53:bijective 13:56:r1:add@base_54:inject 14:60:r3:load@base_55:inject 15:61:r1:sub@base_57:inject +igneum-ca3-v4-uniform/160 0abb3dfecd294e78 0 0:2:2 1:0:0 2:2:1 3:1:1 4:1:0 5:1:1 6:0:0 7:2:3 8:1:1 9:2:2 10:2:1 11:1:1 12:1:1 13:2:1 14:0:0 15:1:0 2 1 0 0 1 0:8:r7:rotl@base_5:bijective 1:9:r3:or@base_0:lossy 2:11:r3:mulhi@base_10:lossy 3:12:r4:load@base_9:inject 4:28:r6:rotr@base_15:bijective 5:29:r0:xor@base_21:inject 6:34:r5:xor@base_26:inject 7:37:r6:load@base_34:inject 8:49:r1:load@base_29:inject 9:51:r4:shfl@base_45:inject 10:54:r0:xor@base_52:inject 11:55:r7:load@base_54:inject 12:57:r6:xor@base_43:inject 13:59:r2:shfl@base_32:inject 14:62:r2:add@base_61:inject 15:63:r0:xor@base_58:inject +igneum-ca3-v4-uniform/161 d23a3fe5d92ede55 0 0:0:0 1:1:1 2:1:0 3:0:0 4:1:0 5:2:3 6:1:1 7:0:0 8:0:0 9:0:0 10:1:1 11:2:2 12:2:0 13:1:1 14:2:0 15:2:2 0 0 0 0 0 0:3:r7:add@base_2:inject 1:4:r2:load@base_3:inject 2:7:r0:sub@base_5:inject 3:12:r1:mad@base_11:inject 4:13:r6:load@base_7:inject 5:24:r7:add@base_22:inject 6:26:r5:load@base_12:inject 7:30:r1:load@base_26:inject 8:36:r1:add@base_34:inject 9:43:r7:shfl@base_35:inject 10:51:r1:rotr@base_47:bijective 11:52:r2:sub@base_48:inject 12:53:r5:load@base_52:inject 13:55:r7:load@base_53:inject 14:58:r6:load@base_43:inject 15:62:r4:add@base_49:inject +igneum-ca3-v4-uniform/162 f373465d38dbbe60 1 0:1:0 1:1:1 2:1:1 3:1:0 4:0:0 5:1:1 6:2:3 7:0:0 8:1:1 9:1:1 10:0:0 11:1:0 12:1:1 13:0:0 14:2:3 15:1:0 4 2 0 0 2 0:2:r3:shfl@base_1:inject 1:7:r7:xor@base_3:inject 2:11:r5:or@base_6:lossy 3:12:r3:load@base_11:inject 4:13:r7:load@base_12:inject 5:21:r3:mad@base_20:inject 6:25:r0:shfl@base_22:inject 7:26:r6:xor@base_19:inject 8:34:r3:load@base_26:inject 9:38:r1:mulhi@base_24:lossy 10:46:r5:xor@base_36:inject 11:47:r0:rotr@base_44:bijective 12:49:r3:or@base_42:lossy 13:54:r5:mulhi@base_52:lossy 14:57:r7:xor@base_55:inject 15:62:r4:load@base_54:inject +igneum-ca3-v4-uniform/163 97a89294a15e6142 0 0:2:2 1:2:3 2:2:0 3:0:0 4:1:0 5:1:1 6:1:0 7:2:1 8:1:0 9:1:1 10:1:0 11:0:0 12:2:3 13:2:2 14:0:0 15:1:1 1 0 0 0 1 0:1:r4:sub@shadow_255:inject 1:2:r7:load@base_1:inject 2:15:r3:mad@base_14:inject 3:19:r5:mad@base_13:inject 4:25:r6:rotr@base_18:bijective 5:31:r3:rotl@base_30:bijective 6:33:r1:add@base_32:inject 7:36:r4:load@base_25:inject 8:37:r0:shfl@base_28:inject 9:39:r2:load@base_36:inject 10:40:r6:xor@base_34:inject 11:42:r3:load@base_40:inject 12:53:r6:add@base_41:inject 13:56:r1:mulhi@base_50:lossy 14:61:r5:load@base_56:inject 15:62:r3:xor@base_54:inject +igneum-ca3-v4-uniform/164 faa4edb3bb3af99e 0 0:1:0 1:1:1 2:0:0 3:0:0 4:2:3 5:1:0 6:1:0 7:0:0 8:1:0 9:1:1 10:0:0 11:1:0 12:1:0 13:1:0 14:2:2 15:0:0 5 0 0 2 3 0:1:r3:shfl@base_0:inject 1:4:r1:load@base_1:inject 2:8:r6:load@base_4:inject 3:9:r3:sub@base_5:inject 4:18:r1:mulhi@base_14:lossy 5:24:r7:mul@base_12:lossy 6:27:r4:mul@base_20:lossy 7:30:r7:xor@base_25:inject 8:31:r5:mulhi@base_23:lossy 9:33:r3:load@base_30:inject 10:38:r1:mad@base_21:inject 11:40:r7:load@base_38:inject 12:51:r2:mulhi@base_41:lossy 13:57:r1:rotl@base_56:bijective 14:60:r5:load@base_57:inject 15:62:r4:xor@base_50:inject +igneum-ca3-v4-uniform/165 3a79d493e5fafef9 0 0:1:1 1:0:0 2:0:0 3:2:2 4:1:1 5:0:0 6:2:3 7:2:1 8:0:0 9:1:1 10:2:3 11:2:0 12:1:0 13:0:0 14:0:0 15:2:3 3 0 0 3 0 0:8:r4:xor@base_6:inject 1:10:r3:mul@base_2:lossy 2:27:r0:xor@base_20:inject 3:29:r4:xor@base_24:inject 4:34:r6:rotl@base_33:bijective 5:37:r3:load@base_34:inject 6:38:r1:load@base_37:inject 7:41:r5:mul@base_32:lossy 8:45:r1:load@base_41:inject 9:50:r5:sub@base_49:inject 10:51:r0:load@base_45:inject 11:52:r2:load@base_38:inject 12:54:r3:mul@base_46:lossy 13:57:r6:sub@base_53:inject 14:59:r0:load@base_54:inject 15:61:r4:xor@base_60:inject +igneum-ca3-v4-uniform/166 313a94f6bdf64405 0 0:1:1 1:0:0 2:1:1 3:1:0 4:0:0 5:1:0 6:1:1 7:2:3 8:2:3 9:1:0 10:0:0 11:0:0 12:1:1 13:1:1 14:2:0 15:2:3 4 2 1 1 1 0:2:r3:or@base_1:lossy-or-chain1 1:4:r4:load@base_2:inject 2:5:r2:load@base_4:inject 3:6:r1:load@base_5:inject 4:9:r2:load@base_6:inject 5:10:r5:mul@base_8:lossy 6:15:r0:rotr@base_11:bijective 7:23:r6:xor@base_19:inject 8:26:r2:mad@base_17:inject 9:39:r0:or@base_34:lossy 10:49:r4:mulhi@base_40:lossy 11:51:r2:mad@base_50:inject 12:52:r3:shfl@base_48:inject 13:59:r7:mad@base_53:inject 14:60:r2:mad@base_57:inject 15:62:r6:add@base_45:inject +igneum-ca3-v4-uniform/167 cc108e9c88604add 0 0:2:3 1:2:1 2:1:1 3:2:2 4:0:0 5:2:1 6:0:0 7:2:1 8:1:0 9:2:0 10:2:3 11:0:0 12:0:0 13:0:0 14:2:1 15:0:0 5 1 0 2 2 0:3:r5:shfl@base_1:inject 1:7:r6:load@base_3:inject 2:8:r0:mul@base_0:lossy 3:19:r1:add@base_14:inject 4:27:r3:add@base_26:inject 5:29:r7:shfl@base_24:inject 6:33:r1:mul@base_32:lossy 7:41:r6:add@base_38:inject 8:47:r6:mulhi@base_42:lossy 9:48:r5:shfl@base_46:inject 10:52:r1:load@base_48:inject 11:55:r3:mulhi@base_30:lossy 12:60:r2:mad@base_54:inject 13:61:r5:load@base_60:inject 14:62:r4:shfl@base_56:inject 15:63:r0:or@base_53:lossy +igneum-ca3-v4-uniform/168 d1c3d80f3234928d 0 0:0:0 1:0:0 2:1:0 3:1:0 4:2:3 5:0:0 6:2:1 7:2:0 8:2:3 9:0:0 10:1:1 11:0:0 12:0:0 13:0:0 14:0:0 15:2:3 2 0 0 2 0 0:2:r5:rotr@base_1:bijective 1:14:r6:xor@base_13:inject 2:15:r4:shfl@base_9:inject 3:16:r5:load@base_15:inject 4:18:r1:shfl@base_0:inject 5:20:r4:load@base_16:inject 6:26:r7:sub@base_10:inject 7:27:r4:load@base_26:inject 8:36:r1:add@base_33:inject 9:40:r1:rotl@base_39:bijective 10:42:r2:add@base_38:inject 11:45:r0:load@base_40:inject 12:47:r1:mul@base_44:lossy 13:54:r1:rotr@base_53:bijective 14:57:r0:rotr@base_51:bijective 15:60:r3:mul@base_58:lossy +igneum-ca3-v4-uniform/169 667bb8cb29203823 0 0:1:1 1:2:2 2:1:0 3:2:2 4:1:0 5:0:0 6:0:0 7:1:0 8:0:0 9:2:3 10:2:0 11:0:0 12:0:0 13:0:0 14:2:0 15:2:0 1 0 0 1 0 0:9:r0:add@base_2:inject 1:20:r2:load@base_9:inject 2:21:r7:add@base_19:inject 3:22:r5:rotl@base_18:bijective 4:24:r1:load@base_21:inject 5:25:r3:load@base_22:inject 6:27:r7:xor@base_23:inject 7:29:r6:sub@base_26:inject 8:31:r0:rotl@base_15:bijective 9:33:r4:mad@base_32:inject 10:40:r1:rotr@base_38:bijective 11:46:r3:load@base_40:inject 12:49:r0:load@base_46:inject 13:50:r7:mul@base_45:lossy 14:54:r7:shfl@base_51:inject 15:62:r1:add@base_61:inject +igneum-ca3-v4-uniform/170 d28c2540d4ca8e76 0 0:2:3 1:0:0 2:0:0 3:2:1 4:0:0 5:1:1 6:2:3 7:2:3 8:1:0 9:0:0 10:2:3 11:0:0 12:0:0 13:2:1 14:0:0 15:2:2 1 0 0 1 0 0:16:r3:mad@base_13:inject 1:19:r5:load@base_16:inject 2:20:r1:add@base_18:inject 3:22:r2:mad@base_17:inject 4:25:r4:load@base_19:inject 5:27:r6:xor@base_15:inject 6:29:r2:rotl@base_24:bijective 7:30:r7:load@base_22:inject 8:34:r1:shfl@base_31:inject 9:43:r7:add@base_42:inject 10:48:r0:shfl@base_45:inject 11:51:r1:mul@base_44:lossy 12:52:r7:shfl@base_49:inject 13:54:r4:load@base_34:inject 14:58:r0:load@base_54:inject 15:60:r6:sub@base_56:inject +igneum-ca3-v4-uniform/171 91bf2401159b8a46 0 0:2:2 1:0:0 2:2:0 3:1:1 4:0:0 5:0:0 6:0:0 7:2:1 8:0:0 9:2:3 10:0:0 11:0:0 12:2:1 13:0:0 14:0:0 15:2:0 3 0 0 1 2 0:2:r1:sub@base_1:inject 1:3:r5:load@base_2:inject 2:4:r7:load@base_3:inject 3:9:r6:sub@base_8:inject 4:12:r6:add@base_11:inject 5:15:r5:xor@base_10:inject 6:16:r4:add@base_14:inject 7:18:r1:rotr@base_13:bijective 8:22:r0:xor@base_19:inject 9:36:r1:mulhi@base_29:lossy 10:39:r2:shfl@base_37:inject 11:40:r3:load@base_39:inject 12:49:r2:add@base_47:inject 13:53:r7:mulhi@base_46:lossy 14:57:r6:add@base_54:inject 15:60:r3:mul@base_42:lossy +igneum-ca3-v4-uniform/172 a52a383afd9ae23d 0 0:0:0 1:2:0 2:2:0 3:0:0 4:0:0 5:1:0 6:1:0 7:2:1 8:1:0 9:2:3 10:0:0 11:2:3 12:0:0 13:0:0 14:0:0 15:2:0 1 0 0 1 0 0:2:r2:rotl@base_1:bijective 1:4:r0:add@base_3:inject 2:5:r6:load@base_4:inject 3:13:r0:rotr@base_11:bijective 4:16:r4:xor@base_9:inject 5:28:r1:shfl@base_20:inject 6:29:r2:rotl@base_22:bijective 7:30:r7:rotl@base_21:bijective 8:31:r4:add@base_26:inject 9:32:r5:mul@base_24:lossy 10:41:r4:add@base_38:inject 11:42:r7:add@base_39:inject 12:43:r3:load@base_41:inject 13:44:r0:load@base_43:inject 14:56:r4:shfl@base_55:inject 15:62:r2:load@base_56:inject +igneum-ca3-v4-uniform/173 799bbe59303fda00 0 0:2:3 1:2:2 2:0:0 3:2:3 4:1:0 5:2:1 6:1:0 7:2:3 8:2:1 9:0:0 10:2:1 11:2:0 12:1:1 13:0:0 14:1:1 15:1:0 1 1 0 0 0 0:3:r3:rotr@base_1:bijective 1:4:r2:load@base_3:inject 2:7:r5:shfl@base_5:inject 3:10:r3:xor@base_8:inject 4:14:r5:or@base_11:lossy 5:17:r6:load@base_14:inject 6:23:r7:sub@base_20:inject 7:30:r7:rotl@base_29:bijective 8:33:r5:load@base_23:inject 9:47:r7:sub@base_44:inject 10:49:r4:rotr@base_31:bijective 11:50:r2:load@base_33:inject 12:51:r6:sub@base_41:inject 13:58:r5:mad@base_53:inject 14:59:r0:load@base_58:inject 15:60:r1:add@base_46:inject +igneum-ca3-v4-uniform/174 4354a229f6804f5b 0 0:1:1 1:0:0 2:0:0 3:2:3 4:2:3 5:2:0 6:2:2 7:2:0 8:0:0 9:0:0 10:0:0 11:2:0 12:0:0 13:1:1 14:2:3 15:2:2 5 1 0 3 1 0:3:r2:sub@base_1:inject 1:4:r1:mad@base_2:inject 2:8:r6:load@base_4:inject 3:13:r1:add@base_7:inject 4:14:r4:or@base_12:lossy 5:20:r5:load@base_14:inject 6:24:r3:load@base_8:inject 7:29:r7:rotr@base_27:bijective 8:30:r6:load@base_20:inject 9:33:r3:mulhi@base_28:lossy 10:38:r5:xor@base_35:inject 11:46:r2:mul@base_42:lossy 12:49:r3:shfl@base_43:inject 13:53:r1:mul@base_31:lossy 14:59:r2:mul@base_55:lossy 15:60:r7:xor@base_50:inject +igneum-ca3-v4-uniform/175 db8a26588cc0d97b 0 0:0:0 1:2:2 2:1:0 3:2:0 4:2:3 5:1:0 6:0:0 7:2:2 8:0:0 9:1:0 10:2:3 11:2:1 12:2:2 13:1:1 14:1:1 15:2:1 3 0 0 3 0 0:3:r4:add@base_1:inject 1:6:r1:mul@base_5:lossy 2:19:r3:shfl@base_14:inject 3:25:r0:add@base_22:inject 4:28:r2:mad@base_26:inject 5:31:r1:rotr@base_30:bijective 6:33:r5:shfl@base_4:inject 7:36:r3:load@base_28:inject 8:43:r2:mul@base_34:lossy 9:49:r2:shfl@base_45:inject 10:54:r0:mul@base_52:lossy 11:55:r7:load@base_49:inject 12:57:r0:load@base_55:inject 13:58:r3:xor@base_50:inject 14:62:r5:load@base_58:inject 15:63:r7:rotl@base_59:bijective +igneum-ca3-v4-uniform/176 c3c28be852485806 0 0:1:1 1:1:0 2:2:2 3:0:0 4:1:0 5:2:1 6:2:0 7:1:1 8:1:0 9:2:2 10:2:3 11:2:2 12:2:2 13:0:0 14:0:0 15:1:0 1 1 0 0 0 0:7:r7:mad@base_4:inject 1:12:r1:load@base_7:inject 2:13:r0:shfl@base_3:inject 3:14:r3:rotr@base_10:bijective 4:19:r6:load@base_13:inject 5:25:r2:mad@base_23:inject 6:26:r0:sub@base_22:inject 7:30:r1:load@base_26:inject 8:32:r7:or@base_28:lossy 9:41:r0:add@base_37:inject 10:48:r6:rotl@base_34:bijective 11:50:r3:xor@base_49:inject 12:51:r4:add@base_36:inject 13:58:r6:xor@base_55:inject 14:60:r0:xor@base_59:inject 15:63:r1:shfl@base_61:inject +igneum-ca3-v4-uniform/177 0e8c379ff4c0397a 0 0:0:0 1:0:0 2:1:0 3:2:0 4:2:0 5:2:3 6:1:1 7:0:0 8:2:1 9:0:0 10:1:1 11:1:1 12:2:1 13:2:2 14:2:3 15:2:1 3 1 1 0 2 0:5:r2:or@base_1:lossy-or-chain1 1:10:r7:load@base_5:inject 2:12:r2:rotl@base_8:bijective 3:18:r5:load@base_12:inject 4:22:r4:load@base_18:inject 5:23:r7:load@base_22:inject 6:24:r6:rotl@base_3:bijective 7:33:r1:mulhi@base_26:lossy 8:39:r3:rotr@base_36:bijective 9:40:r5:add@base_25:inject 10:42:r1:load@base_40:inject 11:43:r4:mulhi@base_38:lossy 12:44:r2:rotl@base_31:bijective 13:52:r7:shfl@base_45:inject 14:55:r3:load@base_43:inject 15:59:r7:shfl@base_57:inject +igneum-ca3-v4-uniform/178 b3514a99f22cbf89 0 0:2:3 1:1:0 2:2:3 3:1:0 4:1:1 5:2:3 6:2:1 7:1:1 8:2:2 9:0:0 10:2:2 11:0:0 12:0:0 13:0:0 14:0:0 15:0:0 2 0 0 1 1 0:3:r2:xor@base_1:inject 1:9:r7:mad@base_4:inject 2:16:r3:add@base_13:inject 3:19:r1:rotl@base_14:bijective 4:26:r5:mulhi@base_25:lossy 5:31:r2:rotr@base_30:bijective 6:32:r0:load@base_26:inject 7:34:r2:mul@base_33:lossy 8:39:r2:mad@base_36:inject 9:40:r4:load@base_39:inject 10:41:r7:shfl@base_20:inject 11:43:r3:add@base_22:inject 12:50:r4:load@base_41:inject 13:51:r3:load@base_50:inject 14:53:r0:load@base_51:inject 15:60:r4:xor@base_55:inject +igneum-ca3-v4-uniform/179 139ec65356229ecb 0 0:2:0 1:1:1 2:1:1 3:2:0 4:1:1 5:2:2 6:0:0 7:2:3 8:0:0 9:1:0 10:2:2 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 3 2 0 1 0 0:1:r6:shfl@base_0:inject 1:6:r0:load@base_1:inject 2:10:r0:sub@base_8:inject 3:11:r3:xor@base_4:inject 4:15:r6:load@base_11:inject 5:20:r1:or@base_18:lossy 6:23:r7:load@base_15:inject 7:24:r5:xor@base_19:inject 8:25:r3:load@base_23:inject 9:29:r6:load@base_24:inject 10:39:r2:mul@base_22:lossy 11:50:r0:rotl@base_48:bijective 12:53:r7:load@base_50:inject 13:55:r4:or@base_38:lossy 14:62:r6:load@base_53:inject 15:63:r5:shfl@base_60:inject +igneum-ca3-v4-uniform/180 8533b53673c917ec 0 0:2:0 1:1:0 2:2:0 3:2:0 4:0:0 5:1:1 6:2:2 7:2:3 8:0:0 9:1:1 10:2:0 11:0:0 12:0:0 13:1:0 14:1:1 15:1:0 1 1 0 0 0 0:2:r3:sub@shadow_255:inject 1:11:r0:load@base_2:inject 2:14:r4:add@base_8:inject 3:15:r5:mad@base_7:inject 4:20:r2:load@base_15:inject 5:25:r7:xor@base_24:inject 6:31:r0:load@base_14:inject 7:37:r6:rotl@base_29:bijective 8:42:r5:mad@base_36:inject 9:43:r0:load@base_42:inject 10:46:r3:sub@base_39:inject 11:47:r7:load@base_46:inject 12:52:r5:shfl@base_50:inject 13:54:r7:xor@base_51:inject 14:58:r2:add@base_55:inject 15:61:r2:or@base_60:lossy +igneum-ca3-v4-uniform/181 5137dad5cde1b7da 0 0:0:0 1:2:0 2:0:0 3:0:0 4:1:1 5:2:1 6:0:0 7:0:0 8:0:0 9:0:0 10:2:1 11:1:0 12:2:0 13:0:0 14:2:1 15:1:0 3 0 0 1 2 0:7:r6:mulhi@base_5:lossy 1:9:r5:mulhi@base_8:lossy 2:13:r7:add@base_12:inject 3:15:r1:add@base_10:inject 4:16:r3:load@base_15:inject 5:19:r2:shfl@base_11:inject 6:20:r1:load@base_19:inject 7:21:r6:load@base_20:inject 8:24:r6:mad@base_23:inject 9:25:r7:load@base_21:inject 10:26:r1:rotr@base_22:bijective 11:31:r1:rotl@base_30:bijective 12:32:r2:shfl@base_29:inject 13:56:r1:mul@base_55:lossy 14:59:r3:load@base_56:inject 15:62:r0:load@base_59:inject +igneum-ca3-v4-uniform/182 71244ffb589f5b9b 0 0:1:0 1:2:2 2:1:0 3:1:1 4:1:1 5:0:0 6:2:0 7:1:0 8:2:3 9:2:0 10:2:1 11:0:0 12:1:0 13:2:3 14:1:0 15:2:2 2 0 0 0 2 0:3:r5:rotl@base_1:bijective 1:12:r4:mulhi@base_6:lossy 2:18:r6:add@base_7:inject 3:19:r5:xor@base_9:inject 4:20:r0:load@base_19:inject 5:21:r6:load@base_20:inject 6:29:r2:sub@base_28:inject 7:32:r0:rotr@base_30:bijective 8:43:r3:load@base_32:inject 9:48:r5:rotr@base_37:bijective 10:51:r6:add@base_44:inject 11:53:r5:load@base_51:inject 12:54:r7:mulhi@base_34:lossy 13:56:r6:load@base_54:inject 14:60:r7:load@base_56:inject 15:61:r4:load@base_43:inject +igneum-ca3-v4-uniform/183 c20fe0df63cfe068 0 0:1:1 1:0:0 2:2:2 3:2:1 4:1:0 5:0:0 6:0:0 7:1:1 8:1:0 9:1:1 10:2:0 11:0:0 12:1:0 13:2:3 14:0:0 15:0:0 4 2 0 2 0 0:4:r7:shfl@base_3:inject 1:6:r4:add@base_0:inject 2:7:r1:load@base_4:inject 3:14:r0:shfl@base_9:inject 4:15:r7:load@base_6:inject 5:22:r4:add@base_16:inject 6:23:r3:or@base_11:lossy 7:25:r7:add@base_21:inject 8:26:r0:load@base_23:inject 9:37:r0:sub@base_31:inject 10:44:r4:add@base_42:inject 11:49:r1:or@base_41:lossy 12:52:r6:mul@base_51:lossy 13:56:r2:rotl@base_40:bijective 14:59:r7:mul@base_57:lossy 15:60:r0:mad@base_55:inject +igneum-ca3-v4-uniform/184 7139d04328a6f15b 0 0:2:0 1:0:0 2:1:0 3:1:0 4:2:1 5:2:3 6:2:3 7:0:0 8:2:1 9:0:0 10:0:0 11:2:3 12:1:0 13:2:0 14:0:0 15:0:0 5 0 0 4 1 0:6:r5:xor@base_5:inject 1:7:r3:load@base_6:inject 2:9:r0:load@base_7:inject 3:12:r6:mad@base_2:inject 4:13:r2:mul@base_3:lossy 5:14:r3:add@base_8:inject 6:16:r7:load@base_14:inject 7:24:r6:mulhi@base_21:lossy 8:25:r4:load@base_24:inject 9:35:r2:shfl@base_19:inject 10:37:r3:mul@base_33:lossy 11:39:r4:mul@base_34:lossy 12:40:r1:load@base_39:inject 13:41:r0:load@base_35:inject 14:48:r5:mul@base_44:lossy 15:49:r6:add@base_47:inject +igneum-ca3-v4-uniform/185 e3a0c4ea0ee08db1 0 0:0:0 1:2:0 2:2:2 3:2:0 4:0:0 5:0:0 6:2:2 7:2:3 8:1:1 9:0:0 10:0:0 11:2:3 12:1:1 13:0:0 14:0:0 15:1:0 1 0 0 0 1 0:2:r7:mad@base_1:inject 1:3:r6:load@base_2:inject 2:7:r4:rotr@base_6:bijective 3:16:r7:mad@base_15:inject 4:21:r4:load@base_16:inject 5:27:r5:rotl@base_24:bijective 6:33:r3:load@base_27:inject 7:34:r4:add@base_26:inject 8:42:r5:load@base_33:inject 9:45:r0:xor@base_44:inject 10:47:r2:sub@base_46:inject 11:48:r6:mulhi@base_32:lossy 12:51:r0:load@base_48:inject 13:52:r1:sub@base_36:inject 14:57:r2:xor@base_56:inject 15:62:r3:shfl@base_58:inject +igneum-ca3-v4-uniform/186 4a92b28a4b14f11f 0 0:1:1 1:2:2 2:2:0 3:1:0 4:2:0 5:0:0 6:0:0 7:0:0 8:1:0 9:0:0 10:0:0 11:1:0 12:0:0 13:1:1 14:2:2 15:2:0 3 1 0 1 1 0:2:r7:mad@base_0:inject 1:7:r6:mad@base_1:inject 2:8:r0:shfl@base_3:inject 3:11:r1:mulhi@base_10:lossy 4:13:r3:xor@base_9:inject 5:15:r4:or@base_12:lossy 6:18:r7:load@base_11:inject 7:20:r2:load@base_13:inject 8:21:r6:load@base_20:inject 9:33:r0:rotl@base_23:bijective 10:34:r7:mul@base_32:lossy 11:36:r1:rotl@base_29:bijective 12:46:r0:mad@base_45:inject 13:47:r1:xor@base_37:inject 14:55:r0:xor@base_54:inject 15:57:r5:load@base_46:inject +igneum-ca3-v4-uniform/187 8c71f33aa5f49984 0 0:1:0 1:0:0 2:2:1 3:2:1 4:2:2 5:1:1 6:2:2 7:1:1 8:2:2 9:2:0 10:1:1 11:0:0 12:2:0 13:0:0 14:1:1 15:1:0 3 2 1 0 1 0:2:r7:mulhi@base_1:lossy 1:7:r0:mad@base_3:inject 2:17:r2:add@base_16:inject 3:20:r0:shfl@base_18:inject 4:32:r0:or@base_30:lossy 5:34:r5:shfl@base_27:inject 6:35:r2:load@base_34:inject 7:39:r3:mad@base_28:inject 8:41:r1:mad@base_25:inject 9:42:r0:or@base_40:lossy-or-chain1 10:55:r0:rotl@base_47:bijective 11:58:r3:add@base_57:inject 12:60:r6:sub@base_43:inject 13:61:r4:load@base_60:inject 14:62:r2:shfl@base_54:inject 15:63:r5:load@base_55:inject +igneum-ca3-v4-uniform/188 5e4f30af90eb0890 0 0:0:0 1:0:0 2:1:0 3:1:1 4:1:0 5:2:2 6:2:0 7:1:1 8:1:0 9:2:3 10:2:3 11:1:1 12:1:1 13:2:2 14:1:0 15:1:0 0 0 0 0 0 0:3:r1:shfl@base_1:inject 1:9:r1:sub@base_8:inject 2:16:r2:load@base_3:inject 3:21:r0:shfl@base_15:inject 4:24:r3:rotr@base_14:bijective 5:27:r5:load@base_21:inject 6:28:r6:shfl@base_22:inject 7:29:r7:rotr@base_23:bijective 8:30:r5:load@base_29:inject 9:33:r0:xor@base_32:inject 10:36:r6:load@base_33:inject 11:39:r2:add@base_31:inject 12:43:r3:add@base_37:inject 13:45:r0:add@base_41:inject 14:47:r2:add@base_42:inject 15:49:r4:load@base_47:inject +igneum-ca3-v4-uniform/189 7d527a0391961fc8 0 0:1:1 1:1:0 2:1:0 3:1:1 4:2:2 5:1:0 6:0:0 7:2:1 8:2:1 9:0:0 10:2:3 11:0:0 12:0:0 13:0:0 14:0:0 15:2:1 0 0 0 0 0 0:5:r0:rotr@base_0:bijective 1:6:r7:load@base_5:inject 2:7:r3:load@base_6:inject 3:9:r7:load@base_7:inject 4:13:r3:add@base_8:inject 5:15:r7:mad@base_11:inject 6:17:r0:load@base_13:inject 7:29:r0:add@base_27:inject 8:34:r7:add@base_20:inject 9:36:r2:load@base_34:inject 10:38:r4:load@base_36:inject 11:41:r6:mad@base_30:inject 12:42:r1:rotr@base_16:bijective 13:44:r6:xor@base_43:inject 14:59:r5:mad@base_39:inject 15:60:r2:rotl@base_56:bijective +igneum-ca3-v4-uniform/190 ed7a02a8de1767ec 0 0:1:0 1:0:0 2:1:0 3:2:3 4:0:0 5:0:0 6:2:0 7:0:0 8:1:0 9:2:1 10:0:0 11:1:1 12:2:3 13:2:1 14:1:1 15:0:0 3 1 0 0 2 0:2:r3:mulhi@base_0:lossy 1:7:r1:sub@base_6:inject 2:12:r6:or@base_10:lossy 3:15:r2:load@base_12:inject 4:21:r1:rotr@base_19:bijective 5:25:r6:add@base_24:inject 6:30:r2:mad@base_26:inject 7:31:r7:xor@base_11:inject 8:40:r5:xor@base_37:inject 9:41:r1:rotr@base_39:bijective 10:42:r3:sub@base_38:inject 11:47:r4:mad@base_32:inject 12:51:r0:mulhi@base_44:lossy 13:55:r4:xor@base_49:inject 14:56:r3:add@base_50:inject 15:60:r2:shfl@base_58:inject +igneum-ca3-v4-uniform/191 257e96cfa9c26aec 0 0:0:0 1:0:0 2:1:1 3:2:3 4:1:1 5:0:0 6:2:2 7:0:0 8:1:0 9:1:0 10:2:0 11:0:0 12:1:1 13:1:1 14:2:3 15:1:1 3 0 0 2 1 0:6:r6:rotl@base_2:bijective 1:9:r3:mad@base_8:inject 2:12:r5:sub@base_3:inject 3:13:r7:add@base_10:inject 4:15:r1:load@base_13:inject 5:23:r2:mul@base_18:lossy 6:31:r5:rotl@base_26:bijective 7:33:r4:shfl@base_29:inject 8:37:r6:xor@base_24:inject 9:47:r6:add@base_39:inject 10:48:r3:load@base_47:inject 11:52:r7:mul@base_42:lossy 12:56:r5:add@base_55:inject 13:59:r3:add@base_51:inject 14:61:r7:mulhi@base_58:lossy 15:62:r2:load@base_61:inject +igneum-ca3-v4-uniform/192 341d23a6ea7882ab 0 0:0:0 1:1:1 2:1:1 3:1:1 4:0:0 5:1:1 6:1:1 7:2:3 8:1:1 9:0:0 10:0:0 11:2:2 12:0:0 13:1:0 14:2:2 15:2:1 4 0 0 3 1 0:3:r4:mulhi@base_0:lossy 1:6:r7:load@base_3:inject 2:9:r3:add@base_7:inject 3:15:r1:mul@base_13:lossy 4:17:r2:load@base_15:inject 5:21:r7:xor@base_14:inject 6:35:r6:mul@base_25:lossy 7:37:r5:load@base_21:inject 8:40:r0:mad@base_39:inject 9:44:r6:load@base_40:inject 10:48:r4:load@base_37:inject 11:50:r3:shfl@base_45:inject 12:51:r5:mul@base_49:lossy 13:53:r3:load@base_51:inject 14:55:r2:load@base_50:inject 15:56:r7:load@base_53:inject +igneum-ca3-v4-uniform/193 cc010bc30ed89c56 0 0:0:0 1:1:0 2:0:0 3:2:2 4:0:0 5:1:0 6:0:0 7:2:1 8:2:1 9:2:0 10:0:0 11:0:0 12:2:0 13:2:3 14:2:3 15:1:1 5 1 0 2 2 0:3:r6:mulhi@base_2:lossy 1:4:r5:load@base_3:inject 2:12:r5:mul@base_11:lossy 3:14:r3:or@base_10:lossy 4:17:r6:shfl@base_15:inject 5:22:r1:mulhi@base_19:lossy 6:36:r0:load@base_22:inject 7:37:r5:add@base_23:inject 8:46:r7:xor@base_40:inject 9:48:r3:add@base_43:inject 10:53:r4:mul@base_42:lossy 11:56:r7:rotr@base_52:bijective 12:57:r6:load@base_48:inject 13:58:r3:sub@base_55:inject 14:60:r4:add@base_59:inject 15:62:r2:shfl@base_61:inject +igneum-ca3-v4-uniform/194 61017edcf5fd230b 0 0:0:0 1:1:0 2:0:0 3:1:0 4:0:0 5:1:1 6:1:0 7:0:0 8:1:1 9:1:0 10:2:3 11:1:1 12:0:0 13:0:0 14:1:1 15:1:0 2 1 0 0 1 0:6:r2:sub@base_4:inject 1:11:r5:rotr@base_2:bijective 2:12:r3:load@base_11:inject 3:16:r0:mad@base_13:inject 4:22:r2:sub@base_21:inject 5:28:r6:xor@base_20:inject 6:30:r4:or@base_18:lossy 7:39:r3:mulhi@base_37:lossy 8:43:r0:rotl@base_42:bijective 9:44:r3:shfl@base_41:inject 10:47:r6:xor@base_35:inject 11:48:r1:load@base_44:inject 12:49:r5:load@base_43:inject 13:50:r7:load@base_28:inject 14:55:r4:rotl@base_46:bijective 15:57:r1:load@base_55:inject +igneum-ca3-v4-uniform/195 14bdd946ec46093f 0 0:2:1 1:2:0 2:2:3 3:2:1 4:1:0 5:2:0 6:2:2 7:0:0 8:0:0 9:0:0 10:1:1 11:2:1 12:2:3 13:1:1 14:0:0 15:0:0 2 1 0 1 0 0:1:r6:mad@base_0:inject 1:8:r4:shfl@base_6:inject 2:11:r1:load@base_8:inject 3:13:r7:add@base_5:inject 4:22:r7:mul@base_17:lossy 5:24:r0:load@base_22:inject 6:26:r2:mad@base_10:inject 7:27:r5:load@base_24:inject 8:32:r1:load@base_27:inject 9:35:r6:mad@base_33:inject 10:36:r4:load@base_32:inject 11:43:r7:or@base_37:lossy 12:44:r4:shfl@base_38:inject 13:55:r7:rotr@base_47:bijective 14:56:r1:load@base_55:inject 15:57:r0:sub@base_28:inject +igneum-ca3-v4-uniform/196 d8acfb008bc7e55d 0 0:0:0 1:0:0 2:1:1 3:0:0 4:2:3 5:0:0 6:0:0 7:0:0 8:1:0 9:0:0 10:0:0 11:2:0 12:1:0 13:0:0 14:0:0 15:1:0 3 0 0 2 1 0:4:r0:xor@base_3:inject 1:9:r3:mulhi@base_2:lossy 2:18:r2:xor@base_1:inject 3:20:r7:xor@base_7:inject 4:23:r1:mul@base_14:lossy 5:24:r6:mul@base_17:lossy 6:25:r3:load@base_23:inject 7:27:r7:rotl@base_26:bijective 8:28:r5:mad@base_16:inject 9:31:r4:load@base_27:inject 10:32:r5:load@base_31:inject 11:34:r0:load@base_18:inject 12:35:r4:load@base_32:inject 13:40:r3:rotr@base_37:bijective 14:41:r2:load@base_24:inject 15:58:r0:xor@base_52:inject +igneum-ca3-v4-uniform/197 22e18a738f73a74c 0 0:0:0 1:1:1 2:1:1 3:2:1 4:1:1 5:0:0 6:1:0 7:1:1 8:1:0 9:1:1 10:2:2 11:1:0 12:2:3 13:1:1 14:0:0 15:0:0 1 0 0 0 1 0:7:r5:sub@base_1:inject 1:8:r4:mad@base_6:inject 2:14:r6:rotl@base_13:bijective 3:34:r7:shfl@base_28:inject 4:38:r3:mulhi@base_15:lossy 5:39:r6:add@base_37:inject 6:41:r2:sub@base_36:inject 7:46:r1:load@base_39:inject 8:52:r2:add@base_49:inject 9:53:r0:add@base_51:inject 10:54:r3:load@base_53:inject 11:55:r5:load@base_52:inject 12:56:r7:mad@base_42:inject 13:57:r3:load@base_55:inject 14:60:r6:load@base_57:inject 15:61:r4:load@base_54:inject +igneum-ca3-v4-uniform/198 09d7d9755db6f5e8 0 0:1:1 1:1:1 2:0:0 3:1:0 4:1:0 5:1:0 6:1:1 7:1:1 8:1:1 9:0:0 10:0:0 11:2:3 12:0:0 13:1:1 14:2:0 15:1:0 5 3 0 2 0 0:6:r0:or@base_4:lossy 1:7:r2:or@base_2:lossy 2:11:r7:load@base_6:inject 3:14:r5:mad@base_1:inject 4:19:r1:load@base_11:inject 5:21:r7:shfl@base_20:inject 6:23:r6:xor@base_3:inject 7:24:r2:mad@base_12:inject 8:25:r5:add@base_16:inject 9:32:r7:mul@base_29:lossy 10:36:r1:mad@base_28:inject 11:40:r3:shfl@base_26:inject 12:42:r6:load@base_36:inject 13:47:r5:load@base_42:inject 14:54:r3:mul@base_52:lossy 15:63:r7:or@base_48:lossy +igneum-ca3-v4-uniform/199 e0e6c6dd40b7f220 0 0:0:0 1:1:0 2:1:1 3:2:3 4:1:0 5:1:0 6:0:0 7:2:1 8:0:0 9:1:0 10:1:1 11:0:0 12:2:0 13:1:1 14:1:1 15:0:0 2 0 0 2 0 0:3:r3:rotl@base_2:bijective 1:6:r5:add@base_1:inject 2:7:r2:xor@base_4:inject 3:14:r6:shfl@base_13:inject 4:15:r2:load@base_14:inject 5:16:r7:rotl@base_12:bijective 6:20:r0:mul@base_19:lossy 7:30:r3:xor@base_23:inject 8:31:r1:add@base_25:inject 9:34:r3:add@base_33:inject 10:39:r2:add@base_35:inject 11:42:r0:shfl@base_36:inject 12:51:r7:mul@base_49:lossy 13:56:r6:xor@base_47:inject 14:59:r1:rotl@base_54:bijective 15:61:r4:load@base_59:inject +igneum-ca3-v4-uniform/200 da45364d984b36d9 0 0:2:0 1:2:0 2:0:0 3:2:0 4:0:0 5:0:0 6:2:0 7:2:3 8:1:1 9:1:0 10:0:0 11:1:1 12:1:1 13:0:0 14:0:0 15:1:1 4 1 0 2 1 0:1:r4:mul@base_0:lossy 1:3:r4:xor@base_2:inject 2:4:r7:load@base_1:inject 3:5:r3:load@base_4:inject 4:11:r4:add@base_9:inject 5:13:r2:rotl@base_10:bijective 6:16:r6:or@base_6:lossy 7:17:r5:add@base_12:inject 8:19:r1:load@base_17:inject 9:28:r2:xor@base_26:inject 10:35:r6:xor@base_23:inject 11:46:r5:xor@base_45:inject 12:49:r4:shfl@base_43:inject 13:50:r0:mulhi@base_36:lossy 14:56:r2:mul@base_51:lossy 15:62:r1:shfl@base_60:inject +igneum-ca3-v4-uniform/201 63b42aee8614229d 0 0:2:3 1:2:0 2:1:0 3:0:0 4:2:2 5:1:0 6:2:2 7:0:0 8:1:1 9:0:0 10:0:0 11:0:0 12:1:1 13:2:3 14:0:0 15:2:0 1 0 0 0 1 0:6:r7:add@base_0:inject 1:8:r1:load@base_6:inject 2:17:r7:rotr@base_14:bijective 3:19:r0:xor@base_4:inject 4:31:r2:shfl@base_28:inject 5:37:r5:shfl@base_33:inject 6:38:r1:xor@base_29:inject 7:40:r5:load@base_38:inject 8:42:r4:load@base_31:inject 9:43:r6:shfl@base_27:inject 10:44:r3:mad@base_41:inject 11:49:r5:mulhi@base_48:lossy 12:57:r7:mad@base_54:inject 13:58:r3:rotr@base_56:bijective 14:61:r0:mad@base_55:inject 15:63:r7:xor@base_60:inject +igneum-ca3-v4-uniform/202 1848f091b64bba5c 0 0:1:0 1:1:0 2:0:0 3:2:1 4:2:1 5:0:0 6:2:2 7:1:0 8:0:0 9:2:0 10:2:1 11:1:0 12:0:0 13:0:0 14:1:1 15:2:0 1 0 0 1 0 0:1:r5:add@base_0:inject 1:5:r3:add@base_4:inject 2:9:r5:xor@base_3:inject 3:10:r4:sub@base_7:inject 4:14:r1:rotr@base_12:bijective 5:16:r0:add@base_8:inject 6:23:r7:add@base_2:inject 7:26:r4:mul@base_25:lossy 8:35:r0:load@base_26:inject 9:38:r3:shfl@base_33:inject 10:39:r4:sub@base_37:inject 11:44:r7:rotl@base_40:bijective 12:47:r5:rotl@base_45:bijective 13:48:r1:load@base_47:inject 14:50:r3:load@base_48:inject 15:63:r6:xor@base_51:inject +igneum-ca3-v4-uniform/203 dbace8ac551c1b7c 0 0:2:3 1:2:3 2:2:0 3:0:0 4:1:0 5:1:1 6:1:1 7:2:0 8:0:0 9:0:0 10:1:0 11:1:1 12:1:0 13:1:1 14:2:1 15:0:0 4 1 0 2 1 0:1:r4:mul@base_0:lossy 1:3:r3:shfl@base_2:inject 2:6:r7:or@base_5:lossy 3:12:r3:mul@base_11:lossy 4:15:r6:xor@base_8:inject 5:16:r3:load@base_15:inject 6:17:r0:mulhi@base_4:lossy 7:24:r2:load@base_17:inject 8:25:r5:add@base_22:inject 9:30:r4:mad@base_27:inject 10:45:r0:rotr@base_34:bijective 11:49:r7:mad@base_41:inject 12:51:r6:xor@base_47:inject 13:57:r7:add@base_55:inject 14:60:r0:mad@base_58:inject 15:62:r3:load@base_60:inject +igneum-ca3-v4-uniform/204 8e5134b8e63414d2 0 0:2:1 1:2:2 2:1:0 3:0:0 4:0:0 5:2:0 6:2:2 7:0:0 8:1:0 9:2:0 10:2:0 11:2:0 12:2:3 13:2:0 14:1:0 15:1:0 2 0 0 1 1 0:1:r3:add@base_0:inject 1:8:r1:sub@base_5:inject 2:11:r6:load@base_8:inject 3:13:r4:rotl@base_10:bijective 4:16:r3:load@base_13:inject 5:17:r2:mul@base_9:lossy 6:18:r4:load@base_17:inject 7:19:r0:load@base_11:inject 8:21:r4:rotl@base_20:bijective 9:23:r6:load@base_21:inject 10:27:r7:mulhi@base_26:lossy 11:28:r4:sub@base_22:inject 12:31:r1:rotr@base_30:bijective 13:38:r7:load@base_31:inject 14:54:r7:sub@base_48:inject 15:60:r0:add@base_57:inject +igneum-ca3-v4-uniform/205 c22391b03bed1968 0 0:2:3 1:1:0 2:0:0 3:2:3 4:2:2 5:0:0 6:0:0 7:2:1 8:0:0 9:1:0 10:2:1 11:1:1 12:0:0 13:1:1 14:2:0 15:1:1 0 0 0 0 0 0:1:r4:sub@base_0:inject 1:5:r0:load@base_1:inject 2:13:r7:mad@base_4:inject 3:15:r6:load@base_13:inject 4:20:r1:rotl@base_18:bijective 5:24:r3:load@base_20:inject 6:27:r4:load@base_24:inject 7:31:r2:xor@base_26:inject 8:42:r7:xor@base_34:inject 9:43:r1:rotr@base_33:bijective 10:44:r4:shfl@base_38:inject 11:48:r6:xor@base_39:inject 12:49:r3:rotl@base_41:bijective 13:50:r0:load@base_43:inject 14:54:r3:add@base_53:inject 15:62:r7:load@base_48:inject +igneum-ca3-v4-uniform/206 3270adc4da3dccf7 0 0:2:0 1:2:0 2:0:0 3:0:0 4:2:2 5:2:1 6:0:0 7:2:2 8:0:0 9:1:0 10:2:1 11:2:0 12:0:0 13:2:2 14:1:0 15:2:3 3 0 0 3 0 0:9:r1:mul@base_8:lossy 1:11:r2:rotl@base_10:bijective 2:13:r0:rotl@base_0:bijective 3:21:r5:shfl@base_16:inject 4:22:r7:mul@base_14:lossy 5:23:r6:add@base_15:inject 6:24:r1:mad@base_12:inject 7:25:r4:load@base_23:inject 8:27:r0:load@base_22:inject 9:29:r6:mad@base_26:inject 10:36:r5:load@base_25:inject 11:37:r3:rotr@base_32:bijective 12:55:r6:sub@base_46:inject 13:57:r7:add@base_56:inject 14:59:r2:mul@base_50:lossy 15:60:r0:rotl@base_58:bijective +igneum-ca3-v4-uniform/207 386a4f6c17589b39 0 0:2:0 1:0:0 2:1:1 3:2:1 4:0:0 5:2:1 6:1:0 7:0:0 8:1:1 9:1:0 10:0:0 11:2:3 12:0:0 13:1:0 14:2:0 15:1:1 1 1 0 0 0 0:1:r5:xor@base_0:inject 1:2:r3:load@base_1:inject 2:8:r1:load@base_2:inject 3:10:r0:load@base_8:inject 4:11:r1:add@base_9:inject 5:13:r5:sub@base_3:inject 6:19:r0:or@base_17:lossy 7:27:r4:load@base_19:inject 8:34:r7:rotr@base_22:bijective 9:39:r6:rotl@base_36:bijective 10:46:r6:shfl@base_44:inject 11:49:r4:load@base_46:inject 12:50:r2:load@base_39:inject 13:56:r1:rotl@base_48:bijective 14:62:r6:shfl@base_59:inject 15:63:r1:rotl@base_57:bijective +igneum-ca3-v4-uniform/208 eb07523cdec96b87 0 0:1:0 1:0:0 2:1:1 3:2:0 4:0:0 5:1:1 6:2:1 7:2:3 8:1:1 9:1:0 10:1:1 11:2:1 12:0:0 13:2:1 14:1:1 15:0:0 2 2 0 0 0 0:1:r5:xor@base_0:inject 1:9:r0:rotl@base_2:bijective 2:16:r6:mad@base_8:inject 3:18:r2:load@base_16:inject 4:20:r0:mad@base_17:inject 5:28:r0:sub@base_27:inject 6:32:r0:or@base_31:lossy 7:33:r6:load@base_28:inject 8:40:r7:add@base_26:inject 9:45:r5:load@base_40:inject 10:46:r0:mad@base_37:inject 11:48:r1:shfl@base_44:inject 12:50:r6:sub@base_43:inject 13:54:r7:mad@base_51:inject 14:59:r6:or@base_56:lossy 15:60:r3:shfl@base_53:inject +igneum-ca3-v4-uniform/209 f132ad0b7a62c73e 0 0:0:0 1:0:0 2:1:0 3:0:0 4:2:3 5:1:1 6:0:0 7:1:1 8:1:1 9:2:2 10:2:1 11:1:1 12:2:2 13:2:3 14:0:0 15:0:0 0 0 0 0 0 0:4:r6:mad@base_2:inject 1:7:r1:xor@base_6:inject 2:8:r3:shfl@base_5:inject 3:10:r5:load@base_8:inject 4:11:r6:load@base_10:inject 5:13:r7:add@base_9:inject 6:14:r5:load@base_11:inject 7:20:r1:sub@base_19:inject 8:24:r0:add@base_21:inject 9:29:r6:rotl@base_22:bijective 10:38:r2:load@base_24:inject 11:40:r5:rotl@base_39:bijective 12:42:r6:load@base_40:inject 13:47:r4:load@base_42:inject 14:53:r3:sub@base_51:inject 15:58:r6:load@base_53:inject +igneum-ca3-v4-uniform/210 57174177dbacb4f2 0 0:0:0 1:2:2 2:1:1 3:1:0 4:1:1 5:2:3 6:2:3 7:1:0 8:0:0 9:1:1 10:2:2 11:2:1 12:2:1 13:2:3 14:1:1 15:2:2 2 0 0 1 1 0:3:r2:rotl@base_1:bijective 1:5:r6:sub@base_4:inject 2:15:r2:rotl@base_13:bijective 3:17:r1:mul@base_14:lossy 4:24:r5:rotl@base_12:bijective 5:26:r6:mulhi@base_22:lossy 6:31:r3:xor@base_28:inject 7:33:r1:shfl@base_27:inject 8:37:r0:load@base_33:inject 9:41:r6:load@base_37:inject 10:43:r4:add@base_35:inject 11:45:r3:shfl@base_44:inject 12:51:r2:load@base_45:inject 13:54:r1:rotr@base_50:bijective 14:57:r7:add@base_56:inject 15:60:r4:add@base_53:inject +igneum-ca3-v4-uniform/211 8085dbc7582ef3bc 0 0:0:0 1:1:1 2:0:0 3:1:1 4:2:2 5:0:0 6:0:0 7:1:0 8:2:3 9:0:0 10:2:1 11:2:0 12:2:1 13:1:0 14:1:0 15:0:0 2 0 0 2 0 0:2:r6:add@base_1:inject 1:4:r1:xor@base_3:inject 2:5:r4:load@base_4:inject 3:10:r0:mul@base_9:lossy 4:19:r2:mad@base_15:inject 5:20:r6:load@base_19:inject 6:21:r0:load@base_20:inject 7:29:r5:rotl@base_23:bijective 8:32:r2:shfl@base_31:inject 9:37:r7:shfl@base_24:inject 10:45:r1:mul@base_42:lossy 11:46:r3:load@base_45:inject 12:51:r7:shfl@base_48:inject 13:53:r5:xor@base_49:inject 14:56:r1:add@base_52:inject 15:59:r7:load@base_56:inject +igneum-ca3-v4-uniform/212 fcc40d97005e319b 0 0:0:0 1:2:3 2:1:0 3:2:2 4:2:0 5:0:0 6:1:1 7:1:0 8:1:0 9:1:0 10:1:0 11:0:0 12:1:1 13:1:0 14:0:0 15:2:0 3 1 0 1 1 0:4:r1:shfl@base_0:inject 1:8:r7:rotl@base_1:bijective 2:14:r4:sub@base_9:inject 3:18:r5:mul@base_10:lossy 4:20:r2:shfl@base_13:inject 5:31:r4:load@base_18:inject 6:32:r6:load@base_14:inject 7:33:r3:xor@base_25:inject 8:34:r2:load@base_33:inject 9:41:r2:xor@base_38:inject 10:42:r5:load@base_41:inject 11:49:r7:or@base_48:lossy 12:55:r5:xor@base_43:inject 13:60:r1:mulhi@base_53:lossy 14:61:r2:sub@base_51:inject 15:63:r4:sub@base_59:inject +igneum-ca3-v4-uniform/213 c2a4d757ff0a2831 0 0:0:0 1:2:2 2:1:1 3:2:3 4:1:1 5:0:0 6:2:1 7:2:2 8:2:2 9:1:1 10:2:0 11:0:0 12:2:2 13:2:0 14:0:0 15:2:1 2 0 0 2 0 0:5:r5:mad@base_4:inject 1:13:r5:xor@base_10:inject 2:21:r1:mul@base_14:lossy 3:22:r6:add@base_19:inject 4:23:r3:shfl@base_17:inject 5:29:r5:rotl@base_25:bijective 6:36:r0:load@base_23:inject 7:38:r7:xor@base_31:inject 8:43:r1:add@base_35:inject 9:46:r0:load@base_43:inject 10:48:r4:load@base_21:inject 11:50:r5:mul@base_42:lossy 12:51:r0:load@base_50:inject 13:52:r7:shfl@base_47:inject 14:57:r6:load@base_46:inject 15:58:r3:sub@base_49:inject +igneum-ca3-v4-uniform/214 9097d4cb5f1b482b 1 0:2:2 1:2:1 2:0:0 3:2:0 4:2:1 5:1:1 6:1:1 7:2:1 8:2:1 9:0:0 10:1:1 11:2:2 12:0:0 13:0:0 14:1:0 15:2:2 4 0 0 2 2 0:3:r5:mul@base_2:lossy 1:5:r7:mul@base_4:lossy 2:8:r3:xor@base_7:inject 3:22:r0:rotl@base_16:bijective 4:24:r2:mulhi@base_15:lossy 5:28:r4:mad@base_23:inject 6:32:r1:load@base_24:inject 7:37:r3:mulhi@base_29:lossy 8:40:r4:load@base_37:inject 9:42:r5:load@base_40:inject 10:52:r0:rotl@base_49:bijective 11:55:r6:add@base_46:inject 12:57:r4:shfl@base_51:inject 13:58:r1:mad@base_56:inject 14:59:r7:add@base_48:inject 15:62:r0:rotl@base_61:bijective +igneum-ca3-v4-uniform/215 91c5420ec7000427 0 0:0:0 1:2:0 2:2:1 3:2:0 4:0:0 5:1:0 6:1:1 7:0:0 8:1:0 9:2:1 10:0:0 11:2:0 12:1:0 13:0:0 14:0:0 15:0:0 3 0 0 2 1 0:2:r1:mul@base_0:lossy 1:11:r4:rotl@base_6:bijective 2:17:r7:add@base_5:inject 3:18:r6:load@base_17:inject 4:20:r0:rotr@base_15:bijective 5:21:r5:load@base_20:inject 6:23:r2:load@base_21:inject 7:31:r6:mulhi@base_27:lossy 8:35:r1:rotl@base_29:bijective 9:37:r3:rotr@base_36:bijective 10:38:r4:load@base_35:inject 11:39:r5:load@base_31:inject 12:44:r2:mul@base_33:lossy 13:49:r0:xor@base_32:inject 14:51:r2:load@base_49:inject 15:62:r0:xor@base_61:inject +igneum-ca3-v4-uniform/216 04a402e5eeead8d5 0 0:0:0 1:0:0 2:2:3 3:1:0 4:0:0 5:0:0 6:0:0 7:1:0 8:1:1 9:2:2 10:2:3 11:1:0 12:1:1 13:2:1 14:2:0 15:2:0 4 1 0 2 1 0:1:r1:shfl@base_0:inject 1:7:r0:shfl@base_5:inject 2:8:r3:mul@base_4:lossy 3:10:r5:load@base_7:inject 4:12:r2:load@base_10:inject 5:14:r4:or@base_13:lossy 6:25:r5:sub@base_18:inject 7:30:r4:load@base_25:inject 8:44:r7:mulhi@base_20:lossy 9:47:r4:xor@base_36:inject 10:49:r2:mul@base_43:lossy 11:50:r6:shfl@base_46:inject 12:51:r5:load@base_50:inject 13:52:r6:load@base_51:inject 14:54:r1:shfl@base_39:inject 15:62:r4:rotl@base_60:bijective +igneum-ca3-v4-uniform/217 2564352efb687da0 0 0:0:0 1:1:0 2:2:0 3:2:3 4:2:2 5:2:1 6:1:1 7:1:1 8:0:0 9:2:0 10:0:0 11:2:3 12:0:0 13:2:2 14:0:0 15:1:0 2 1 0 1 0 0:2:r4:shfl@base_1:inject 1:3:r3:load@base_2:inject 2:6:r6:xor@base_4:inject 3:7:r5:load@base_3:inject 4:9:r1:rotl@base_5:bijective 5:15:r6:rotl@base_12:bijective 6:27:r5:mul@base_16:lossy 7:32:r1:or@base_31:lossy 8:35:r2:rotl@base_20:bijective 9:36:r3:add@base_33:inject 10:39:r7:shfl@base_29:inject 11:42:r4:load@base_36:inject 12:44:r1:load@base_39:inject 13:46:r3:sub@base_41:inject 14:49:r6:add@base_34:inject 15:63:r3:xor@base_56:inject +igneum-ca3-v4-uniform/218 cb1d4ecaca513240 0 0:2:1 1:0:0 2:0:0 3:2:1 4:0:0 5:1:0 6:0:0 7:1:1 8:2:2 9:2:2 10:0:0 11:1:1 12:2:1 13:2:1 14:1:0 15:2:3 1 0 0 0 1 0:2:r5:rotl@base_1:bijective 1:3:r7:load@base_2:inject 2:10:r5:rotr@base_9:bijective 3:12:r1:mulhi@base_5:lossy 4:14:r0:load@base_12:inject 5:18:r0:mad@base_17:inject 6:22:r5:load@base_14:inject 7:23:r2:xor@base_19:inject 8:25:r6:xor@base_20:inject 9:27:r0:load@base_25:inject 10:29:r1:mad@base_13:inject 11:30:r7:shfl@base_24:inject 12:31:r5:load@base_30:inject 13:35:r7:mad@base_34:inject 14:53:r3:mad@base_39:inject 15:61:r6:rotr@base_42:bijective +igneum-ca3-v4-uniform/219 7ebd6fb59089b735 0 0:0:0 1:0:0 2:1:1 3:1:0 4:1:0 5:1:1 6:0:0 7:1:0 8:0:0 9:2:2 10:2:3 11:2:0 12:1:0 13:2:2 14:2:3 15:0:0 1 0 0 1 0 0:2:r2:mad@base_0:inject 1:4:r5:load@base_2:inject 2:5:r6:add@base_1:inject 3:7:r1:rotl@base_6:bijective 4:13:r2:load@base_7:inject 5:21:r6:rotl@base_16:bijective 6:22:r3:mul@base_17:lossy 7:35:r7:xor@base_30:inject 8:36:r1:add@base_31:inject 9:37:r0:shfl@base_23:inject 10:38:r6:sub@base_25:inject 11:42:r5:rotl@base_41:bijective 12:48:r2:sub@base_39:inject 13:49:r3:sub@base_40:inject 14:50:r4:load@base_36:inject 15:63:r6:add@base_62:inject +igneum-ca3-v4-uniform/220 e5cea6cb37937f13 0 0:2:0 1:2:0 2:0:0 3:0:0 4:2:1 5:1:0 6:1:0 7:2:3 8:2:0 9:0:0 10:0:0 11:1:0 12:1:0 13:2:3 14:0:0 15:2:1 3 1 0 2 0 0:1:r1:mul@base_0:lossy 1:12:r4:rotl@base_10:bijective 2:15:r0:load@base_12:inject 3:17:r6:rotr@base_6:bijective 4:18:r7:load@base_15:inject 5:20:r3:mad@base_11:inject 6:23:r4:or@base_16:lossy 7:25:r0:shfl@base_22:inject 8:30:r7:shfl@base_29:inject 9:33:r6:shfl@base_27:inject 10:35:r1:load@base_17:inject 11:39:r2:mul@base_31:lossy 12:42:r1:add@base_37:inject 13:48:r4:shfl@base_47:inject 14:51:r3:shfl@base_50:inject 15:58:r2:xor@base_55:inject +igneum-ca3-v4-uniform/221 e073a3564a9e7b12 0 0:1:1 1:1:1 2:0:0 3:0:0 4:1:0 5:0:0 6:0:0 7:1:1 8:0:0 9:0:0 10:1:1 11:2:0 12:0:0 13:0:0 14:0:0 15:2:2 1 0 0 0 1 0:2:r5:mad@base_0:inject 1:9:r1:mulhi@base_7:lossy 2:15:r5:shfl@base_12:inject 3:16:r2:add@base_11:inject 4:17:r0:load@base_9:inject 5:23:r0:sub@base_21:inject 6:26:r4:load@base_23:inject 7:31:r5:shfl@base_25:inject 8:33:r1:xor@base_27:inject 9:36:r4:rotl@base_34:bijective 10:39:r3:sub@base_24:inject 11:40:r0:load@base_39:inject 12:42:r3:add@base_41:inject 13:47:r2:mad@base_38:inject 14:50:r6:rotl@base_29:bijective 15:54:r1:xor@base_53:inject +igneum-ca3-v4-uniform/222 960b7937d34ab0d1 0 0:2:0 1:0:0 2:1:0 3:0:0 4:0:0 5:0:0 6:0:0 7:0:0 8:0:0 9:0:0 10:2:3 11:0:0 12:2:0 13:1:1 14:0:0 15:0:0 2 0 0 0 2 0:2:r5:shfl@base_1:inject 1:4:r6:load@base_2:inject 2:6:r5:load@base_4:inject 3:13:r1:shfl@base_12:inject 4:14:r6:shfl@base_5:inject 5:19:r1:mulhi@base_16:lossy 6:20:r6:add@base_18:inject 7:21:r7:load@base_19:inject 8:30:r5:rotl@base_22:bijective 9:32:r7:rotl@base_31:bijective 10:36:r3:load@base_30:inject 11:40:r7:shfl@base_37:inject 12:48:r6:mulhi@base_46:lossy 13:50:r4:load@base_36:inject 14:51:r0:add@base_49:inject 15:56:r1:xor@base_47:inject +igneum-ca3-v4-uniform/223 60dd5fd0427f28c2 0 0:2:0 1:1:1 2:0:0 3:2:1 4:0:0 5:0:0 6:2:0 7:2:2 8:0:0 9:2:2 10:1:0 11:2:1 12:2:3 13:1:1 14:0:0 15:0:0 5 0 0 5 0 0:16:r3:mul@base_14:lossy 1:17:r1:mad@base_10:inject 2:20:r7:mul@base_18:lossy 3:22:r6:mul@base_21:lossy 4:25:r4:load@base_20:inject 5:26:r3:add@base_24:inject 6:28:r1:load@base_25:inject 7:29:r5:load@base_22:inject 8:36:r4:sub@base_32:inject 9:40:r1:mul@base_39:lossy 10:45:r2:mad@base_44:inject 11:46:r0:load@base_45:inject 12:50:r1:mad@base_47:inject 13:53:r6:mul@base_41:lossy 14:54:r4:load@base_53:inject 15:57:r0:rotl@base_56:bijective +igneum-ca3-v4-uniform/224 f7ba0cfc3af39caf 0 0:1:1 1:2:2 2:0:0 3:2:0 4:2:3 5:1:1 6:2:3 7:2:2 8:1:0 9:0:0 10:0:0 11:2:3 12:0:0 13:1:1 14:1:1 15:2:3 2 1 0 0 1 0:3:r2:sub@base_2:inject 1:7:r6:mad@base_5:inject 2:9:r7:rotr@base_6:bijective 3:16:r7:sub@base_15:inject 4:17:r0:add@base_11:inject 5:18:r6:load@base_17:inject 6:20:r4:shfl@base_14:inject 7:21:r1:mulhi@base_12:lossy 8:25:r2:load@base_21:inject 9:30:r0:xor@base_28:inject 10:34:r5:rotr@base_32:bijective 11:35:r6:or@base_24:lossy 12:48:r0:add@base_45:inject 13:51:r5:xor@base_44:inject 14:54:r2:add@base_50:inject 15:63:r0:rotl@base_58:bijective +igneum-ca3-v4-uniform/225 ebad3ed48d01374f 0 0:0:0 1:1:0 2:0:0 3:2:1 4:2:0 5:0:0 6:0:0 7:0:0 8:1:1 9:0:0 10:2:1 11:2:3 12:2:0 13:2:0 14:2:1 15:0:0 4 0 0 2 2 0:2:r7:mul@base_0:lossy 1:3:r2:load@base_2:inject 2:8:r3:load@base_3:inject 3:11:r4:rotr@base_7:bijective 4:13:r1:xor@base_6:inject 5:18:r0:mulhi@base_17:lossy 6:21:r2:load@base_13:inject 7:25:r1:sub@base_24:inject 8:32:r5:load@base_25:inject 9:39:r2:rotl@base_38:bijective 10:40:r1:mul@base_37:lossy 11:41:r0:load@base_39:inject 12:48:r7:rotr@base_42:bijective 13:52:r6:xor@base_50:inject 14:56:r1:mulhi@base_54:lossy 15:57:r0:load@base_52:inject +igneum-ca3-v4-uniform/226 058decafd2b8aeb3 0 0:2:1 1:2:0 2:0:0 3:1:0 4:0:0 5:0:0 6:0:0 7:1:1 8:2:2 9:1:1 10:0:0 11:2:2 12:2:0 13:1:1 14:1:0 15:0:0 3 0 0 2 1 0:1:r5:xor@base_0:inject 1:2:r0:rotr@shadow_251:bijective 2:11:r5:shfl@base_9:inject 3:14:r2:add@base_6:inject 4:15:r7:add@base_13:inject 5:16:r0:load@base_15:inject 6:22:r0:mulhi@base_21:lossy 7:27:r6:load@base_22:inject 8:28:r3:load@base_27:inject 9:44:r2:mul@base_30:lossy 10:45:r1:mul@base_35:lossy 11:46:r0:sub@base_37:inject 12:54:r7:xor@base_51:inject 13:55:r5:add@base_40:inject 14:57:r3:load@base_55:inject 15:58:r4:load@base_57:inject +igneum-ca3-v4-uniform/227 077167186bbc9aef 0 0:0:0 1:0:0 2:1:1 3:2:3 4:2:3 5:2:3 6:1:1 7:2:0 8:0:0 9:0:0 10:2:2 11:2:2 12:2:2 13:1:1 14:2:1 15:2:0 3 0 0 1 2 0:2:r7:mulhi@base_1:lossy 1:7:r4:mad@base_5:inject 2:13:r2:xor@base_8:inject 3:15:r3:load@base_13:inject 4:17:r4:sub@base_11:inject 5:19:r2:add@base_18:inject 6:20:r5:mul@base_14:lossy 7:27:r4:sub@base_26:inject 8:33:r0:rotl@base_32:bijective 9:38:r3:mulhi@base_25:lossy 10:40:r0:load@base_38:inject 11:43:r2:rotl@base_36:bijective 12:45:r6:load@base_43:inject 13:46:r7:add@base_44:inject 14:47:r5:mad@base_39:inject 15:50:r0:load@base_46:inject +igneum-ca3-v4-uniform/228 ae177b3b1d46b7ca 0 0:1:0 1:2:3 2:2:2 3:1:0 4:1:0 5:0:0 6:0:0 7:0:0 8:2:0 9:1:1 10:0:0 11:1:0 12:0:0 13:2:0 14:0:0 15:0:0 3 0 0 2 1 0:2:r2:mul@base_1:lossy 1:4:r1:rotl@base_3:bijective 2:13:r5:shfl@base_9:inject 3:18:r2:xor@base_15:inject 4:23:r2:shfl@base_22:inject 5:24:r6:load@base_13:inject 6:27:r3:xor@base_12:inject 7:37:r1:mul@base_36:lossy 8:39:r5:sub@base_38:inject 9:43:r3:rotl@base_41:bijective 10:49:r0:mulhi@base_47:lossy 11:54:r1:rotr@base_48:bijective 12:55:r3:load@base_54:inject 13:56:r5:add@base_53:inject 14:57:r6:load@base_55:inject 15:63:r7:add@base_59:inject +igneum-ca3-v4-uniform/229 48ec7615bb4b490a 0 0:2:2 1:2:1 2:1:1 3:1:0 4:0:0 5:0:0 6:1:0 7:0:0 8:0:0 9:1:0 10:2:2 11:0:0 12:1:0 13:0:0 14:1:1 15:1:0 1 0 0 1 0 0:5:r5:mad@base_2:inject 1:7:r1:add@base_4:inject 2:9:r3:load@base_5:inject 3:10:r0:rotl@base_6:bijective 4:20:r7:xor@base_18:inject 5:21:r4:rotr@base_13:bijective 6:28:r6:load@base_20:inject 7:31:r0:load@base_21:inject 8:35:r5:load@base_28:inject 9:41:r7:rotl@base_39:bijective 10:48:r2:mad@base_46:inject 11:53:r6:shfl@base_50:inject 12:54:r4:mul@base_32:lossy 13:55:r3:shfl@base_44:inject 14:56:r0:add@base_49:inject 15:61:r1:load@base_53:inject +igneum-ca3-v4-uniform/230 0d6b5f4e34245fae 0 0:0:0 1:2:1 2:2:1 3:2:0 4:0:0 5:0:0 6:2:1 7:1:0 8:0:0 9:2:2 10:2:3 11:2:0 12:0:0 13:0:0 14:0:0 15:0:0 1 0 0 0 1 0:1:r6:sub@base_0:inject 1:6:r7:rotl@base_5:bijective 2:9:r1:rotl@base_3:bijective 3:11:r2:shfl@base_8:inject 4:12:r7:load@base_9:inject 5:15:r2:load@base_12:inject 6:22:r7:mad@base_21:inject 7:27:r0:mulhi@base_25:lossy 8:34:r1:load@base_27:inject 9:39:r0:xor@base_36:inject 10:42:r1:add@base_41:inject 11:43:r3:load@base_39:inject 12:56:r7:shfl@base_54:inject 13:57:r3:shfl@base_47:inject 14:60:r2:load@base_42:inject 15:62:r0:xor@base_59:inject +igneum-ca3-v4-uniform/231 241e7d68c28b4a4a 0 0:0:0 1:1:1 2:1:0 3:0:0 4:2:0 5:1:0 6:0:0 7:0:0 8:1:1 9:2:3 10:2:2 11:2:1 12:2:1 13:0:0 14:2:1 15:1:0 4 2 0 2 0 0:2:r4:xor@base_1:inject 1:6:r3:rotr@base_5:bijective 2:13:r0:mul@base_12:lossy 3:26:r5:add@base_18:inject 4:33:r4:mul@base_27:lossy 5:34:r6:load@base_33:inject 6:36:r4:xor@base_35:inject 7:37:r2:sub@base_31:inject 8:40:r4:or@base_39:lossy 9:44:r2:load@base_40:inject 10:47:r3:mad@base_22:inject 11:50:r2:add@base_49:inject 12:55:r4:add@base_45:inject 13:57:r1:load@base_55:inject 14:62:r0:or@base_60:lossy 15:63:r4:load@base_57:inject +igneum-ca3-v4-uniform/232 18f49ee27dfc1629 0 0:1:0 1:2:2 2:0:0 3:0:0 4:1:1 5:2:2 6:0:0 7:2:3 8:2:1 9:2:1 10:2:2 11:2:1 12:2:2 13:2:2 14:1:0 15:2:0 4 0 0 2 2 0:1:r4:add@shadow_245:inject 1:4:r1:rotr@base_2:bijective 2:6:r1:mul@base_5:lossy 3:11:r6:xor@base_8:inject 4:20:r2:mul@base_19:lossy 5:21:r4:xor@base_15:inject 6:24:r3:load@base_21:inject 7:25:r5:load@base_24:inject 8:32:r7:load@base_20:inject 9:41:r5:xor@base_29:inject 10:43:r4:rotl@base_34:bijective 11:44:r3:load@base_41:inject 12:50:r1:xor@base_45:inject 13:52:r7:load@base_50:inject 14:54:r2:mulhi@base_51:lossy 15:62:r7:mulhi@base_56:lossy +igneum-ca3-v4-uniform/233 b780de663264a48f 0 0:2:0 1:0:0 2:0:0 3:1:0 4:2:0 5:0:0 6:1:1 7:1:0 8:1:0 9:1:0 10:2:3 11:1:1 12:0:0 13:2:0 14:1:0 15:2:3 1 0 0 0 1 0:6:r3:mad@base_2:inject 1:32:r2:mulhi@base_10:lossy 2:35:r6:add@base_28:inject 3:36:r1:sub@base_29:inject 4:40:r7:add@base_19:inject 5:41:r2:load@base_36:inject 6:42:r3:rotr@base_38:bijective 7:45:r6:shfl@base_44:inject 8:47:r1:shfl@base_43:inject 9:48:r5:load@base_42:inject 10:51:r4:rotl@base_50:bijective 11:53:r6:mad@base_49:inject 12:56:r1:load@base_51:inject 13:58:r0:add@base_57:inject 14:60:r7:load@base_58:inject 15:62:r6:load@base_60:inject +igneum-ca3-v4-uniform/234 9720f0e5efe3f83c 0 0:1:0 1:2:1 2:1:0 3:2:3 4:2:0 5:1:0 6:2:0 7:2:3 8:1:1 9:1:0 10:0:0 11:1:0 12:1:1 13:0:0 14:0:0 15:1:1 3 1 0 1 1 0:7:r6:mad@base_2:inject 1:8:r4:load@base_7:inject 2:14:r2:xor@base_3:inject 3:19:r0:shfl@base_17:inject 4:21:r2:add@base_20:inject 5:22:r4:mad@base_15:inject 6:28:r7:rotl@base_25:bijective 7:35:r6:mad@base_33:inject 8:36:r2:or@base_30:lossy 9:37:r3:shfl@base_34:inject 10:38:r1:mul@base_32:lossy 11:41:r7:xor@base_40:inject 12:49:r7:mulhi@base_48:lossy 13:53:r0:xor@base_51:inject 14:60:r5:rotr@base_52:bijective 15:63:r0:mad@base_62:inject +igneum-ca3-v4-uniform/235 5b9ee881392b2fbe 0 0:0:0 1:0:0 2:1:0 3:1:1 4:2:1 5:2:2 6:2:3 7:0:0 8:1:1 9:2:2 10:1:0 11:2:2 12:0:0 13:2:3 14:1:0 15:0:0 5 1 0 2 2 0:2:r0:or@base_1:lossy 1:3:r3:load@base_2:inject 2:6:r1:load@base_3:inject 3:7:r0:shfl@base_5:inject 4:11:r3:add@base_8:inject 5:15:r4:mul@base_14:lossy 6:16:r7:load@base_11:inject 7:21:r6:xor@base_9:inject 8:28:r0:rotl@base_18:bijective 9:33:r5:load@base_21:inject 10:36:r4:rotr@base_32:bijective 11:44:r0:shfl@base_43:inject 12:46:r1:mulhi@base_41:lossy 13:47:r7:mulhi@base_45:lossy 14:51:r3:load@base_46:inject 15:61:r1:mul@base_58:lossy +igneum-ca3-v4-uniform/236 f82ccbcfa25fd8c2 0 0:1:1 1:2:1 2:2:3 3:2:1 4:0:0 5:0:0 6:1:0 7:1:0 8:1:0 9:2:3 10:1:1 11:0:0 12:2:0 13:0:0 14:0:0 15:0:0 1 0 0 1 0 0:7:r1:shfl@base_0:inject 1:8:r4:xor@base_5:inject 2:16:r6:xor@base_10:inject 3:18:r4:load@base_16:inject 4:20:r1:add@base_19:inject 5:24:r5:shfl@base_22:inject 6:26:r2:load@base_24:inject 7:29:r6:shfl@base_21:inject 8:34:r0:load@base_29:inject 9:35:r7:load@base_34:inject 10:38:r3:load@base_35:inject 11:42:r5:rotr@base_39:bijective 12:43:r6:rotl@base_41:bijective 13:57:r6:add@base_50:inject 14:61:r4:mad@base_53:inject 15:62:r5:mul@base_60:lossy +igneum-ca3-v4-uniform/237 51fe42e1a1d8f47d 0 0:2:2 1:0:0 2:0:0 3:0:0 4:1:1 5:1:1 6:0:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:2:0 13:2:0 14:1:1 15:2:3 5 0 0 3 2 0:6:r4:mul@base_5:lossy 1:12:r4:rotr@base_10:bijective 2:19:r5:shfl@base_0:inject 3:20:r0:sub@base_13:inject 4:26:r1:rotr@base_23:bijective 5:27:r3:mad@base_17:inject 6:32:r5:mulhi@base_22:lossy 7:35:r2:mul@base_30:lossy 8:39:r7:rotr@base_33:bijective 9:40:r3:xor@base_37:inject 10:44:r4:load@base_39:inject 11:45:r3:load@base_44:inject 12:52:r5:mulhi@base_50:lossy 13:53:r6:rotr@base_48:bijective 14:54:r0:load@base_53:inject 15:63:r3:mul@base_60:lossy +igneum-ca3-v4-uniform/238 2b6f078fdfd1fc63 0 0:2:0 1:0:0 2:1:1 3:0:0 4:2:1 5:1:0 6:2:1 7:1:0 8:1:1 9:1:1 10:2:1 11:2:2 12:0:0 13:1:0 14:1:0 15:0:0 3 1 0 1 1 0:2:r1:mulhi@base_1:lossy 1:7:r1:xor@base_4:inject 2:9:r7:load@base_7:inject 3:11:r4:mul@base_10:lossy 4:19:r4:shfl@base_17:inject 5:25:r6:load@base_19:inject 6:30:r7:rotl@base_24:bijective 7:35:r4:rotr@base_22:bijective 8:39:r3:load@base_30:inject 9:41:r1:or@base_38:lossy 10:45:r5:rotr@base_43:bijective 11:46:r2:xor@base_29:inject 12:47:r0:load@base_39:inject 13:48:r5:load@base_47:inject 14:49:r4:load@base_48:inject 15:57:r4:xor@base_56:inject +igneum-ca3-v4-uniform/239 4fd89de0a6216f63 0 0:2:2 1:1:1 2:1:1 3:2:1 4:2:3 5:0:0 6:2:1 7:2:0 8:2:0 9:2:1 10:2:0 11:2:2 12:2:1 13:0:0 14:2:2 15:1:0 4 1 0 2 1 0:8:r0:mul@base_6:lossy 1:20:r5:mulhi@base_11:lossy 2:21:r4:load@base_20:inject 3:25:r5:add@base_23:inject 4:26:r6:load@base_21:inject 5:30:r7:shfl@base_27:inject 6:37:r7:or@base_31:lossy 7:41:r7:add@base_38:inject 8:43:r1:shfl@base_40:inject 9:46:r1:add@base_44:inject 10:50:r0:xor@base_47:inject 11:51:r2:add@base_48:inject 12:53:r3:rotr@base_39:bijective 13:57:r4:mad@base_45:inject 14:61:r7:shfl@base_60:inject 15:62:r3:mul@base_54:lossy +igneum-ca3-v4-uniform/240 158857290c973f4a 0 0:2:2 1:0:0 2:2:2 3:0:0 4:0:0 5:2:1 6:0:0 7:1:1 8:0:0 9:2:2 10:2:0 11:2:2 12:0:0 13:0:0 14:0:0 15:1:0 3 1 0 1 1 0:2:r1:rotr@base_1:bijective 1:5:r4:load@base_2:inject 2:8:r3:mul@base_7:lossy 3:9:r2:mad@base_0:inject 4:25:r7:mulhi@base_12:lossy 5:32:r2:load@base_25:inject 6:40:r1:xor@base_39:inject 7:41:r2:load@base_40:inject 8:42:r0:or@base_29:lossy 9:43:r6:xor@base_33:inject 10:45:r3:xor@base_36:inject 11:48:r3:shfl@base_47:inject 12:49:r5:load@base_45:inject 13:51:r6:mad@base_46:inject 14:53:r0:load@base_48:inject 15:62:r4:load@base_53:inject +igneum-ca3-v4-uniform/241 f8e5982c6eafe47c 0 0:2:0 1:0:0 2:1:1 3:0:0 4:0:0 5:2:2 6:1:1 7:0:0 8:2:1 9:2:0 10:2:3 11:0:0 12:0:0 13:1:0 14:2:0 15:2:0 3 0 0 2 1 0:6:r6:xor@base_3:inject 1:17:r1:rotl@base_9:bijective 2:18:r3:rotr@base_15:bijective 3:23:r5:rotl@base_14:bijective 4:27:r7:sub@base_22:inject 5:30:r3:xor@base_26:inject 6:33:r0:mul@base_13:lossy 7:35:r6:rotr@base_31:bijective 8:36:r7:mad@base_29:inject 9:39:r4:xor@base_37:inject 10:44:r3:add@base_40:inject 11:45:r0:mulhi@base_41:lossy 12:46:r6:add@base_42:inject 13:47:r5:mul@base_28:lossy 14:51:r7:load@base_47:inject 15:56:r2:load@base_51:inject +igneum-ca3-v4-uniform/242 82d972068ab89d6b 0 0:1:0 1:2:2 2:2:3 3:0:0 4:0:0 5:0:0 6:2:0 7:2:3 8:1:1 9:1:0 10:1:1 11:1:1 12:0:0 13:2:2 14:2:0 15:2:0 5 2 0 3 0 0:5:r7:or@base_3:lossy 1:8:r3:or@base_7:lossy 2:10:r0:mul@base_9:lossy 3:12:r3:mul@base_11:lossy 4:19:r1:xor@base_13:inject 5:27:r7:rotr@base_26:bijective 6:28:r0:xor@base_21:inject 7:32:r1:rotr@base_29:bijective 8:34:r3:mad@base_22:inject 9:37:r5:shfl@base_33:inject 10:47:r3:mul@base_46:lossy 11:49:r5:sub@base_39:inject 12:51:r6:load@base_47:inject 13:55:r4:load@base_51:inject 14:57:r5:sub@base_56:inject 15:62:r3:load@base_57:inject +igneum-ca3-v4-uniform/243 cee162d72e51d156 0 0:0:0 1:2:3 2:2:0 3:2:1 4:1:1 5:1:0 6:0:0 7:0:0 8:2:1 9:2:1 10:1:1 11:1:0 12:2:3 13:2:0 14:0:0 15:1:0 6 1 0 5 0 0:1:r2:mad@base_0:inject 1:7:r7:sub@base_6:inject 2:9:r4:load@base_1:inject 3:20:r5:mul@base_11:lossy 4:25:r3:mul@base_24:lossy 5:28:r1:load@base_25:inject 6:35:r6:rotr@base_30:bijective 7:36:r4:or@base_31:lossy 8:38:r3:mul@base_32:lossy 9:39:r1:load@base_38:inject 10:43:r3:xor@base_41:inject 11:44:r5:sub@base_22:inject 12:46:r0:load@base_43:inject 13:49:r6:mad@base_45:inject 14:56:r1:mul@base_51:lossy 15:63:r3:mul@base_53:lossy +igneum-ca3-v4-uniform/244 d0f8d04424378528 0 0:1:0 1:1:1 2:0:0 3:2:3 4:1:0 5:1:1 6:1:0 7:1:0 8:0:0 9:1:0 10:1:1 11:1:1 12:1:1 13:1:0 14:2:2 15:1:1 7 2 0 3 2 0:2:r5:mul@base_0:lossy 1:3:r4:mul@base_1:lossy 2:4:r6:load@base_3:inject 3:5:r2:load@base_2:inject 4:10:r7:mul@base_7:lossy 5:17:r5:shfl@base_15:inject 6:18:r4:load@base_17:inject 7:27:r2:mad@base_25:inject 8:29:r0:mad@base_23:inject 9:38:r7:mulhi@base_37:lossy 10:41:r1:or@base_40:lossy 11:44:r5:load@base_41:inject 12:50:r2:mulhi@base_43:lossy 13:53:r5:mad@base_51:inject 14:54:r2:add@base_52:inject 15:62:r7:or@base_57:lossy +igneum-ca3-v4-uniform/245 e44f48f770f1a689 0 0:0:0 1:0:0 2:2:2 3:2:1 4:1:0 5:0:0 6:1:1 7:2:1 8:0:0 9:2:2 10:0:0 11:0:0 12:0:0 13:2:0 14:2:1 15:0:0 3 1 0 1 1 0:2:r6:xor@base_1:inject 1:5:r7:add@base_0:inject 2:10:r3:sub@base_7:inject 3:20:r6:shfl@base_9:inject 4:21:r5:load@base_20:inject 5:22:r4:mul@base_18:lossy 6:24:r3:load@base_22:inject 7:25:r2:mulhi@base_17:lossy 8:26:r1:load@base_24:inject 9:27:r0:add@base_4:inject 10:31:r7:add@base_30:inject 11:33:r4:load@base_25:inject 12:34:r0:load@base_31:inject 13:48:r5:rotl@base_37:bijective 14:58:r5:or@base_57:lossy 15:59:r4:add@base_53:inject +igneum-ca3-v4-uniform/246 d127a9597b13916f 0 0:1:0 1:0:0 2:0:0 3:0:0 4:2:3 5:0:0 6:1:0 7:2:0 8:0:0 9:2:1 10:2:3 11:0:0 12:1:1 13:0:0 14:1:1 15:0:0 2 0 0 2 0 0:7:r6:mul@base_3:lossy 1:10:r0:mul@base_6:lossy 2:13:r0:xor@base_11:inject 3:20:r1:mad@base_18:inject 4:21:r3:sub@base_19:inject 5:29:r5:add@base_26:inject 6:30:r1:add@base_22:inject 7:31:r0:shfl@base_28:inject 8:33:r3:rotr@base_32:bijective 9:38:r6:xor@base_34:inject 10:40:r7:rotl@base_39:bijective 11:41:r2:xor@base_37:inject 12:44:r4:add@base_42:inject 13:45:r1:shfl@base_35:inject 14:46:r2:sub@base_43:inject 15:54:r5:xor@base_48:inject +igneum-ca3-v4-uniform/247 3915a1ffd9dfc57b 0 0:1:0 1:0:0 2:1:1 3:2:1 4:0:0 5:1:1 6:2:0 7:1:1 8:2:0 9:1:1 10:1:1 11:2:0 12:2:0 13:2:0 14:2:2 15:1:1 3 0 0 2 1 0:3:r4:rotr@base_0:bijective 1:5:r6:load@base_3:inject 2:11:r1:rotr@base_4:bijective 3:15:r3:mad@base_7:inject 4:16:r6:mul@base_8:lossy 5:17:r2:load@base_15:inject 6:21:r7:load@base_17:inject 7:28:r4:load@base_16:inject 8:31:r1:mul@base_30:lossy 9:37:r6:mad@base_35:inject 10:42:r7:xor@base_38:inject 11:43:r0:load@base_42:inject 12:46:r4:sub@base_44:inject 13:49:r3:shfl@base_34:inject 14:53:r2:mulhi@base_40:lossy 15:54:r3:shfl@base_52:inject +igneum-ca3-v4-uniform/248 f0dcfd3da6c9e5da 0 0:0:0 1:2:2 2:2:0 3:1:1 4:2:3 5:2:2 6:1:1 7:0:0 8:1:0 9:2:1 10:1:0 11:0:0 12:2:2 13:0:0 14:1:1 15:0:0 5 1 0 3 1 0:1:r5:add@base_0:inject 1:3:r6:mad@base_2:inject 2:8:r0:rotl@base_7:bijective 3:11:r2:load@base_3:inject 4:17:r6:mulhi@base_14:lossy 5:18:r1:load@base_17:inject 6:22:r5:add@base_6:inject 7:26:r0:load@base_18:inject 8:31:r0:mul@base_27:lossy 9:32:r2:mad@base_28:inject 10:37:r1:shfl@base_35:inject 11:38:r4:rotl@base_30:bijective 12:45:r4:mul@base_44:lossy 13:46:r5:mul@base_40:lossy 14:49:r0:mad@base_48:inject 15:58:r3:or@base_53:lossy +igneum-ca3-v4-uniform/249 3d9e5e3351fa3cfe 0 0:2:0 1:0:0 2:2:1 3:0:0 4:1:0 5:2:0 6:0:0 7:2:0 8:1:1 9:1:1 10:1:1 11:1:0 12:0:0 13:0:0 14:2:1 15:1:1 1 0 0 0 1 0:3:r2:xor@base_2:inject 1:5:r7:add@base_0:inject 2:11:r1:rotr@base_7:bijective 3:12:r3:rotr@base_9:bijective 4:17:r3:sub@base_16:inject 5:19:r0:sub@base_15:inject 6:20:r4:load@base_19:inject 7:21:r0:load@base_20:inject 8:27:r3:mulhi@base_26:lossy 9:38:r1:xor@base_18:inject 10:42:r4:load@base_38:inject 11:44:r0:xor@base_39:inject 12:46:r7:add@base_36:inject 13:48:r3:load@base_44:inject 14:59:r1:rotl@base_47:bijective 15:60:r4:add@base_53:inject +igneum-ca3-v4-uniform/250 ca675088662da713 0 0:1:0 1:0:0 2:2:3 3:1:0 4:1:1 5:2:1 6:0:0 7:0:0 8:0:0 9:0:0 10:2:0 11:2:3 12:1:0 13:2:1 14:1:0 15:0:0 3 1 0 2 0 0:1:r2:add@base_0:inject 1:3:r1:add@base_2:inject 2:9:r5:rotl@base_8:bijective 3:23:r2:sub@base_18:inject 4:24:r3:mul@base_12:lossy 5:27:r4:sub@base_19:inject 6:30:r3:rotr@base_28:bijective 7:34:r7:sub@base_22:inject 8:36:r2:mul@base_31:lossy 9:39:r0:sub@base_37:inject 10:40:r5:shfl@base_35:inject 11:46:r6:shfl@base_44:inject 12:48:r4:or@base_43:lossy 13:50:r2:load@base_46:inject 14:54:r3:shfl@base_49:inject 15:60:r4:mad@base_52:inject +igneum-ca3-v4-uniform/251 98df397c56859a93 0 0:1:1 1:1:0 2:1:1 3:1:0 4:0:0 5:0:0 6:0:0 7:0:0 8:0:0 9:2:1 10:1:1 11:2:3 12:2:3 13:1:1 14:2:0 15:2:3 4 1 0 1 2 0:3:r4:rotl@base_1:bijective 1:4:r5:mad@base_0:inject 2:6:r3:load@base_4:inject 3:12:r7:mulhi@base_11:lossy 4:15:r0:load@base_12:inject 5:16:r7:add@base_14:inject 6:21:r5:or@base_20:lossy 7:23:r1:load@base_21:inject 8:26:r2:load@base_6:inject 9:40:r2:mulhi@base_38:lossy 10:42:r7:sub@base_32:inject 11:47:r0:load@base_40:inject 12:49:r4:add@base_48:inject 13:54:r7:mul@base_53:lossy 14:57:r1:add@base_51:inject 15:58:r5:add@base_44:inject +igneum-ca3-v4-uniform/252 c17ab603bee369c0 0 0:1:0 1:2:2 2:0:0 3:2:3 4:2:3 5:0:0 6:0:0 7:2:3 8:2:2 9:0:0 10:2:0 11:2:1 12:2:0 13:2:3 14:2:2 15:1:1 4 2 1 0 2 0:6:r2:rotr@base_4:bijective 1:10:r4:mad@base_2:inject 2:18:r1:or@base_12:lossy-or-chain1 3:23:r0:xor@base_21:inject 4:25:r7:xor@base_16:inject 5:28:r2:mulhi@base_26:lossy 6:36:r3:or@base_27:lossy 7:38:r7:load@base_36:inject 8:41:r4:mulhi@base_11:lossy 9:42:r6:load@base_38:inject 10:44:r5:rotl@base_39:bijective 11:49:r5:shfl@base_48:inject 12:50:r0:load@base_44:inject 13:52:r6:load@base_49:inject 14:59:r5:shfl@base_58:inject 15:60:r1:sub@base_56:inject +igneum-ca3-v4-uniform/253 550af7eda49b2ffd 0 0:0:0 1:0:0 2:0:0 3:2:1 4:0:0 5:1:0 6:1:0 7:2:1 8:0:0 9:0:0 10:2:1 11:2:3 12:1:1 13:1:0 14:2:0 15:1:1 3 1 0 1 1 0:1:r5:sub@base_0:inject 1:6:r0:rotr@base_4:bijective 2:10:r0:rotl@base_8:bijective 3:16:r7:mul@base_14:lossy 4:17:r3:load@base_1:inject 5:20:r2:or@base_19:lossy 6:24:r1:xor@base_18:inject 7:26:r0:rotl@base_23:bijective 8:27:r5:sub@base_22:inject 9:28:r4:load@base_27:inject 10:30:r2:load@base_28:inject 11:31:r6:load@base_24:inject 12:35:r7:add@base_34:inject 13:44:r2:mulhi@base_40:lossy 14:47:r4:rotr@base_46:bijective 15:53:r1:load@base_47:inject +igneum-ca3-v4-uniform/254 f19cd0892c519e9e 1 0:1:0 1:2:1 2:1:0 3:0:0 4:1:1 5:1:0 6:1:0 7:1:1 8:2:0 9:1:0 10:1:1 11:1:0 12:0:0 13:0:0 14:0:0 15:1:1 1 1 0 0 0 0:5:r1:or@base_3:lossy 1:8:r0:shfl@base_7:inject 2:10:r4:sub@base_9:inject 3:12:r0:load@base_10:inject 4:27:r5:mad@base_25:inject 5:28:r6:add@base_24:inject 6:33:r1:mad@base_32:inject 7:36:r2:rotr@base_35:bijective 8:39:r5:load@base_33:inject 9:43:r5:rotl@base_41:bijective 10:44:r3:load@base_39:inject 11:46:r0:load@base_43:inject 12:47:r7:load@base_44:inject 13:56:r2:add@base_51:inject 14:57:r4:shfl@base_52:inject 15:59:r5:load@base_56:inject +igneum-ca3-v4-uniform/255 1b02f0d17be2a754 0 0:0:0 1:0:0 2:1:0 3:2:2 4:0:0 5:0:0 6:0:0 7:2:1 8:1:0 9:0:0 10:1:1 11:1:0 12:1:0 13:1:0 14:1:0 15:1:1 4 3 0 0 1 0:5:r3:or@base_1:lossy 1:6:r5:shfl@base_2:inject 2:14:r4:or@base_13:lossy 3:16:r2:shfl@base_12:inject 4:19:r3:load@base_16:inject 5:20:r1:rotl@base_18:bijective 6:24:r3:or@base_22:lossy 7:27:r2:shfl@base_26:inject 8:28:r6:load@base_19:inject 9:29:r1:add@base_21:inject 10:33:r2:sub@base_30:inject 11:35:r5:load@base_24:inject 12:39:r4:load@base_27:inject 13:50:r6:mulhi@base_47:lossy 14:57:r3:rotr@base_51:bijective 15:63:r2:xor@base_62:inject +igneum-ca3-v4-uniform/256 dfe6c877bdc37b18 0 0:1:0 1:1:0 2:2:2 3:1:1 4:1:0 5:2:2 6:2:3 7:1:0 8:1:1 9:1:1 10:2:0 11:0:0 12:2:0 13:1:0 14:1:0 15:0:0 2 1 0 0 1 0:4:r0:mad@base_1:inject 1:7:r2:mad@base_2:inject 2:8:r5:load@base_4:inject 3:17:r6:add@base_13:inject 4:18:r1:mad@base_14:inject 5:23:r0:load@base_17:inject 6:25:r2:shfl@base_19:inject 7:28:r7:sub@base_26:inject 8:35:r0:or@base_33:lossy 9:36:r5:load@base_25:inject 10:37:r4:shfl@base_16:inject 11:49:r4:mad@base_48:inject 12:51:r5:mad@base_46:inject 13:53:r0:rotl@base_52:bijective 14:54:r4:load@base_53:inject 15:60:r2:mulhi@base_57:lossy +igneum-ca3-v4-uniform/257 a373a01a44fd3c85 0 0:1:0 1:1:0 2:0:0 3:1:0 4:1:1 5:0:0 6:2:1 7:2:2 8:1:0 9:2:0 10:2:2 11:1:1 12:0:0 13:0:0 14:2:0 15:1:1 2 1 0 0 1 0:1:r6:or@base_0:lossy 1:8:r4:rotr@base_7:bijective 2:14:r2:rotl@base_12:bijective 3:15:r6:xor@base_11:inject 4:22:r2:xor@base_16:inject 5:24:r1:sub@base_20:inject 6:26:r5:add@base_23:inject 7:27:r4:load@base_22:inject 8:28:r7:load@base_26:inject 9:37:r1:add@base_36:inject 10:40:r6:add@base_39:inject 11:42:r1:mad@base_38:inject 12:43:r4:shfl@base_32:inject 13:47:r0:load@base_40:inject 14:56:r0:add@base_48:inject 15:60:r1:mulhi@base_58:lossy +igneum-ca3-v4-uniform/258 b47fe0e9741e2410 0 0:0:0 1:1:0 2:0:0 3:0:0 4:0:0 5:1:1 6:2:0 7:0:0 8:1:1 9:2:1 10:2:1 11:2:3 12:0:0 13:0:0 14:0:0 15:0:0 5 3 0 2 0 0:2:r7:or@base_1:lossy 1:4:r5:shfl@base_0:inject 2:5:r2:load@base_4:inject 3:10:r6:add@base_9:inject 4:13:r3:add@base_11:inject 5:14:r4:add@base_8:inject 6:17:r5:load@base_14:inject 7:19:r6:or@base_15:lossy 8:26:r3:shfl@base_22:inject 9:32:r7:xor@base_29:inject 10:36:r3:xor@base_35:inject 11:39:r0:mul@base_25:lossy 12:42:r6:or@base_37:lossy 13:45:r2:load@base_42:inject 14:48:r7:sub@base_34:inject 15:52:r1:mul@base_51:lossy +igneum-ca3-v4-uniform/259 295f6ff0ebc135a3 0 0:2:3 1:1:1 2:0:0 3:0:0 4:2:0 5:0:0 6:0:0 7:1:0 8:2:1 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 7 1 0 5 1 0:1:r4:mul@base_0:lossy 1:6:r3:mul@base_4:lossy 2:7:r2:load@base_1:inject 3:13:r4:mul@base_9:lossy 4:16:r1:sub@base_12:inject 5:29:r3:mad@base_21:inject 6:32:r6:add@base_18:inject 7:37:r7:or@base_34:lossy 8:39:r5:load@base_37:inject 9:41:r3:mul@base_36:lossy 10:42:r5:sub@base_40:inject 11:43:r0:load@base_42:inject 12:45:r2:mulhi@base_44:lossy 13:48:r7:mul@base_47:lossy 14:56:r3:shfl@base_54:inject 15:62:r6:load@base_56:inject +igneum-ca3-v4-uniform/260 2ab567b2dc918684 0 0:2:0 1:1:0 2:0:0 3:0:0 4:0:0 5:1:1 6:2:1 7:0:0 8:2:2 9:1:0 10:2:2 11:2:1 12:0:0 13:0:0 14:0:0 15:1:0 3 0 0 2 1 0:1:r3:add@base_0:inject 1:3:r2:load@base_1:inject 2:7:r0:xor@base_5:inject 3:22:r3:rotr@base_19:bijective 4:27:r1:shfl@base_25:inject 5:37:r2:add@base_33:inject 6:43:r0:shfl@base_18:inject 7:44:r1:sub@base_39:inject 8:47:r3:mul@base_26:lossy 9:48:r6:xor@base_46:inject 10:52:r7:mad@base_51:inject 11:55:r0:mulhi@base_53:lossy 12:57:r1:mad@base_56:inject 13:58:r6:mul@base_54:lossy 14:60:r4:add@base_59:inject 15:62:r2:xor@base_61:inject +igneum-ca3-v4-uniform/261 8bf58feb1f4f9657 1 0:2:3 1:0:0 2:1:0 3:1:0 4:0:0 5:1:1 6:1:1 7:1:0 8:1:0 9:1:0 10:2:3 11:1:1 12:1:0 13:2:2 14:2:0 15:0:0 2 0 0 1 1 0:2:r0:mul@base_0:lossy 1:19:r3:add@base_17:inject 2:24:r4:mulhi@base_23:lossy 3:28:r5:xor@base_21:inject 4:29:r0:add@base_5:inject 5:33:r2:add@base_20:inject 6:34:r0:sub@base_32:inject 7:36:r4:rotl@base_27:bijective 8:38:r6:rotl@base_35:bijective 9:41:r5:load@base_33:inject 10:43:r1:load@base_41:inject 11:44:r0:load@base_38:inject 12:50:r4:mad@base_49:inject 13:52:r3:load@base_43:inject 14:61:r0:sub@base_48:inject 15:62:r3:xor@base_60:inject +igneum-ca3-v4-uniform/262 88baf8a3e0844eb5 0 0:0:0 1:0:0 2:0:0 3:2:3 4:2:0 5:1:0 6:2:2 7:0:0 8:2:0 9:2:1 10:2:0 11:0:0 12:0:0 13:2:3 14:2:1 15:1:0 3 0 0 1 2 0:3:r5:rotr@base_0:bijective 1:6:r6:load@base_3:inject 2:10:r7:mulhi@base_4:lossy 3:19:r1:sub@base_12:inject 4:20:r2:add@base_5:inject 5:32:r0:xor@base_26:inject 6:35:r4:xor@base_14:inject 7:36:r6:load@base_32:inject 8:38:r1:mulhi@base_37:lossy 9:39:r5:mad@base_34:inject 10:42:r2:load@base_35:inject 11:44:r1:shfl@base_43:inject 12:56:r6:xor@base_40:inject 13:57:r3:add@base_52:inject 14:59:r0:add@base_55:inject 15:62:r2:mul@base_51:lossy +igneum-ca3-v4-uniform/263 79ec15a0fbefac9a 0 0:0:0 1:2:3 2:2:3 3:0:0 4:2:3 5:1:0 6:1:0 7:0:0 8:1:0 9:1:0 10:1:1 11:1:1 12:1:0 13:0:0 14:2:1 15:1:1 2 1 0 1 0 0:2:r6:shfl@base_1:inject 1:4:r7:add@base_0:inject 2:12:r5:or@base_8:lossy 3:24:r4:add@base_20:inject 4:25:r1:sub@base_21:inject 5:26:r0:xor@base_23:inject 6:31:r2:mul@base_28:lossy 7:38:r7:load@base_31:inject 8:40:r2:mad@base_34:inject 9:42:r4:add@base_36:inject 10:46:r6:rotr@base_35:bijective 11:55:r4:rotr@base_53:bijective 12:57:r2:xor@base_56:inject 13:59:r7:add@base_48:inject 14:60:r1:load@base_59:inject 15:62:r3:load@base_26:inject +igneum-ca3-v4-uniform/264 9dbc3ea015e1c9a2 0 0:1:0 1:2:3 2:0:0 3:1:1 4:1:0 5:2:1 6:1:1 7:0:0 8:2:0 9:1:0 10:0:0 11:0:0 12:2:2 13:2:2 14:1:1 15:2:0 6 1 0 3 2 0:1:r5:xor@base_0:inject 1:3:r4:load@base_1:inject 2:9:r5:mul@base_8:lossy 3:11:r6:load@base_3:inject 4:13:r4:load@base_9:inject 5:14:r3:shfl@base_12:inject 6:18:r3:mulhi@base_15:lossy 7:24:r5:load@base_18:inject 8:29:r7:or@base_26:lossy 9:40:r5:mulhi@base_39:lossy 10:46:r7:mul@base_45:lossy 11:55:r4:mul@base_48:lossy 12:56:r7:load@base_55:inject 13:58:r4:load@base_56:inject 14:59:r0:rotl@base_54:bijective 15:60:r2:mad@base_44:inject +igneum-ca3-v4-uniform/265 ad8546d191f90991 0 0:2:3 1:2:2 2:1:0 3:0:0 4:2:3 5:2:1 6:0:0 7:2:0 8:0:0 9:1:0 10:1:0 11:1:1 12:2:3 13:2:3 14:0:0 15:2:3 0 0 0 0 0 0:1:r3:shfl@base_0:inject 1:3:r2:rotl@base_2:bijective 2:7:r5:rotl@base_4:bijective 3:8:r3:rotr@base_6:bijective 4:10:r0:load@base_3:inject 5:11:r7:add@base_9:inject 6:13:r4:xor@base_12:inject 7:17:r0:shfl@base_15:inject 8:20:r6:load@base_11:inject 9:28:r3:sub@base_27:inject 10:33:r5:add@base_16:inject 11:35:r2:load@base_20:inject 12:37:r6:load@base_35:inject 13:44:r5:xor@base_42:inject 14:50:r7:xor@base_46:inject 15:55:r6:xor@base_54:inject +igneum-ca3-v4-uniform/266 a17562e28afb50dd 0 0:1:1 1:2:0 2:1:1 3:0:0 4:1:1 5:1:0 6:2:1 7:2:1 8:2:1 9:0:0 10:2:0 11:1:0 12:1:1 13:0:0 14:1:1 15:2:1 4 2 0 1 1 0:4:r0:add@base_3:inject 1:9:r2:rotr@base_8:bijective 2:10:r0:shfl@base_5:inject 3:11:r5:xor@base_6:inject 4:18:r3:load@base_4:inject 5:19:r7:or@base_17:lossy 6:22:r1:or@base_16:lossy 7:24:r5:sub@base_23:inject 8:25:r4:load@base_24:inject 9:30:r7:xor@base_27:inject 10:48:r5:sub@base_44:inject 11:49:r1:mad@base_38:inject 12:50:r6:load@base_48:inject 13:57:r1:load@base_50:inject 14:59:r2:mulhi@base_51:lossy 15:62:r5:mul@base_55:lossy +igneum-ca3-v4-uniform/267 8d3ee8475be6ac77 0 0:2:0 1:0:0 2:1:1 3:0:0 4:0:0 5:2:1 6:2:0 7:1:1 8:1:0 9:1:0 10:2:2 11:1:0 12:0:0 13:1:0 14:1:0 15:0:0 1 0 0 1 0 0:5:r6:mad@base_0:inject 1:15:r7:shfl@base_14:inject 2:16:r6:shfl@base_7:inject 3:17:r5:mad@base_11:inject 4:27:r6:xor@base_20:inject 5:35:r1:load@base_17:inject 6:36:r0:load@base_35:inject 7:37:r7:load@base_27:inject 8:38:r2:mul@base_33:lossy 9:39:r1:load@base_38:inject 10:42:r3:mad@base_41:inject 11:47:r4:load@base_42:inject 12:50:r2:load@base_47:inject 13:53:r0:sub@base_51:inject 14:56:r4:sub@base_55:inject 15:61:r0:xor@base_59:inject +igneum-ca3-v4-uniform/268 98024ada71fd1ae0 0 0:2:3 1:2:3 2:2:0 3:2:0 4:2:2 5:0:0 6:0:0 7:1:1 8:2:0 9:2:3 10:0:0 11:0:0 12:2:2 13:0:0 14:2:0 15:0:0 2 0 0 2 0 0:1:r0:mul@base_0:lossy 1:7:r3:rotl@base_6:bijective 2:15:r3:rotr@base_11:bijective 3:19:r5:xor@base_17:inject 4:20:r2:add@base_12:inject 5:23:r0:mad@base_21:inject 6:26:r7:load@base_20:inject 7:27:r6:mad@base_22:inject 8:28:r1:rotr@base_25:bijective 9:31:r5:load@base_23:inject 10:33:r0:load@base_31:inject 11:41:r1:mad@base_39:inject 12:45:r7:rotr@base_35:bijective 13:46:r0:rotl@base_37:bijective 14:52:r3:mul@base_48:lossy 15:54:r5:add@base_51:inject +igneum-ca3-v4-uniform/269 a208cbe6bdb5d947 1 0:1:1 1:0:0 2:0:0 3:0:0 4:2:2 5:0:0 6:2:0 7:1:1 8:0:0 9:2:0 10:0:0 11:1:1 12:0:0 13:2:2 14:1:0 15:2:2 6 2 0 2 2 0:5:r3:add@base_1:inject 1:6:r7:load@base_5:inject 2:7:r2:shfl@base_4:inject 3:11:r4:mulhi@base_8:lossy 4:18:r5:add@base_16:inject 5:22:r1:or@base_14:lossy 6:24:r0:load@base_22:inject 7:25:r3:mul@base_21:lossy 8:30:r7:or@base_15:lossy 9:39:r2:xor@base_28:inject 10:41:r5:mulhi@base_27:lossy 11:43:r0:add@base_42:inject 12:46:r2:mad@base_40:inject 13:47:r0:shfl@base_44:inject 14:53:r5:mul@base_50:lossy 15:55:r6:rotl@base_33:bijective +igneum-ca3-v4-uniform/270 08db95e3fb2da6e0 0 0:2:2 1:0:0 2:2:2 3:1:1 4:1:1 5:1:1 6:0:0 7:2:1 8:1:0 9:1:0 10:2:1 11:0:0 12:0:0 13:2:0 14:2:1 15:0:0 1 1 0 0 0 0:1:r3:add@shadow_252:inject 1:2:r0:load@base_1:inject 2:5:r7:rotl@base_4:bijective 3:9:r2:xor@base_6:inject 4:14:r3:sub@base_12:inject 5:15:r7:xor@base_13:inject 6:16:r4:load@base_14:inject 7:18:r3:load@base_16:inject 8:23:r1:add@base_19:inject 9:28:r5:xor@base_20:inject 10:31:r1:shfl@base_30:inject 11:32:r7:load@base_31:inject 12:33:r5:or@base_29:lossy 13:36:r4:shfl@base_27:inject 14:37:r2:load@base_18:inject 15:40:r0:load@base_33:inject +igneum-ca3-v4-uniform/271 490ebdfa49b39ddc 0 0:0:0 1:1:0 2:2:3 3:2:1 4:1:0 5:2:1 6:0:0 7:1:1 8:1:1 9:2:3 10:2:3 11:1:0 12:0:0 13:0:0 14:2:0 15:0:0 1 0 0 1 0 0:1:r7:shfl@base_0:inject 1:8:r1:add@base_2:inject 2:12:r0:xor@base_11:inject 3:13:r7:rotl@base_10:bijective 4:15:r3:mul@base_5:lossy 5:19:r1:load@base_12:inject 6:41:r7:xor@base_38:inject 7:43:r3:load@base_41:inject 8:44:r4:mad@base_39:inject 9:46:r2:add@base_32:inject 10:48:r1:xor@base_47:inject 11:49:r7:rotr@base_45:bijective 12:50:r2:load@base_48:inject 13:58:r2:shfl@base_56:inject 14:59:r3:load@base_58:inject 15:63:r7:load@base_50:inject +igneum-ca3-v4-uniform/272 adb65f5d209b6cb6 1 0:2:3 1:2:3 2:1:1 3:2:3 4:0:0 5:2:0 6:1:0 7:1:1 8:0:0 9:1:0 10:0:0 11:2:2 12:0:0 13:2:0 14:0:0 15:2:3 2 1 0 1 0 0:3:r2:add@base_0:inject 1:12:r3:rotr@base_10:bijective 2:13:r2:shfl@base_11:inject 3:19:r3:shfl@base_14:inject 4:25:r6:sub@base_22:inject 5:26:r2:load@base_19:inject 6:30:r5:add@base_29:inject 7:34:r0:load@base_30:inject 8:41:r2:shfl@base_32:inject 9:48:r6:shfl@base_47:inject 10:49:r3:or@base_24:lossy 11:51:r4:load@base_48:inject 12:53:r4:add@base_52:inject 13:54:r7:load@base_53:inject 14:57:r1:mul@base_46:lossy 15:62:r5:rotr@base_56:bijective +igneum-ca3-v4-uniform/273 8c8079b0bd6e56b7 0 0:2:3 1:1:1 2:1:1 3:2:2 4:0:0 5:0:0 6:1:0 7:2:1 8:0:0 9:0:0 10:2:3 11:0:0 12:1:0 13:1:1 14:0:0 15:2:0 3 1 0 1 1 0:1:r6:rotl@base_0:bijective 1:4:r0:rotl@base_2:bijective 2:6:r6:sub@base_5:inject 3:14:r1:load@base_4:inject 4:22:r4:xor@base_21:inject 5:24:r1:load@base_22:inject 6:25:r3:or@base_17:lossy 7:27:r7:xor@base_18:inject 8:29:r1:load@base_27:inject 9:31:r5:load@base_29:inject 10:33:r4:load@base_31:inject 11:39:r6:mulhi@base_36:lossy 12:49:r4:sub@base_45:inject 13:50:r7:mad@base_48:inject 14:53:r3:mul@base_47:lossy 15:60:r0:xor@base_56:inject +igneum-ca3-v4-uniform/274 051c0324a930a0ac 0 0:2:1 1:1:1 2:0:0 3:2:0 4:1:1 5:2:0 6:0:0 7:2:0 8:0:0 9:2:0 10:0:0 11:1:1 12:0:0 13:2:0 14:1:1 15:2:0 5 1 0 4 0 0:14:r2:or@base_13:lossy 1:17:r5:shfl@base_10:inject 2:18:r1:mul@base_2:lossy 3:19:r4:add@base_4:inject 4:23:r0:xor@base_20:inject 5:26:r2:shfl@base_24:inject 6:29:r7:xor@base_22:inject 7:31:r0:mul@base_27:lossy 8:33:r7:mad@base_32:inject 9:36:r2:rotl@base_35:bijective 10:37:r5:mul@base_34:lossy 11:47:r5:shfl@base_44:inject 12:49:r6:load@base_47:inject 13:50:r4:rotr@base_28:bijective 14:54:r1:mul@base_43:lossy 15:55:r2:xor@base_53:inject +igneum-ca3-v4-uniform/275 7ace17c37f5fed87 0 0:1:1 1:0:0 2:1:0 3:0:0 4:1:1 5:1:0 6:0:0 7:0:0 8:2:2 9:0:0 10:1:1 11:2:3 12:2:2 13:1:0 14:2:2 15:1:0 2 1 0 1 0 0:4:r1:or@base_3:lossy 1:6:r5:xor@base_5:inject 2:10:r0:add@base_8:inject 3:13:r7:mad@base_0:inject 4:20:r2:shfl@base_18:inject 5:22:r0:shfl@base_21:inject 6:23:r4:load@base_10:inject 7:25:r5:load@base_23:inject 8:33:r1:load@base_25:inject 9:41:r6:sub@base_36:inject 10:43:r2:add@base_32:inject 11:56:r5:xor@base_46:inject 12:57:r3:mul@base_44:lossy 13:60:r7:sub@base_58:inject 14:61:r6:load@base_60:inject 15:62:r2:rotr@base_59:bijective +igneum-ca3-v4-uniform/276 2061a34b9dff0aa3 0 0:0:0 1:2:2 2:0:0 3:0:0 4:1:0 5:1:0 6:1:1 7:1:1 8:0:0 9:2:2 10:1:1 11:2:2 12:0:0 13:1:0 14:0:0 15:0:0 2 0 0 2 0 0:1:r4:mul@base_0:lossy 1:2:r0:load@base_1:inject 2:7:r3:add@base_3:inject 3:8:r4:sub@base_5:inject 4:13:r0:add@base_10:inject 5:15:r4:rotl@base_14:bijective 6:21:r6:add@base_17:inject 7:22:r5:load@base_7:inject 8:23:r0:load@base_15:inject 9:25:r3:load@base_22:inject 10:28:r1:xor@base_24:inject 11:43:r6:load@base_28:inject 12:45:r5:add@base_42:inject 13:51:r7:mul@base_40:lossy 14:57:r1:load@base_51:inject 15:59:r4:mad@base_58:inject +igneum-ca3-v4-uniform/277 f991dbe9190b7592 0 0:1:0 1:1:1 2:2:1 3:2:0 4:0:0 5:1:1 6:0:0 7:0:0 8:0:0 9:1:0 10:2:3 11:1:0 12:1:0 13:1:1 14:0:0 15:0:0 4 0 0 3 1 0:5:r4:mulhi@base_4:lossy 1:8:r2:load@base_5:inject 2:15:r3:mul@base_6:lossy 3:17:r4:sub@base_16:inject 4:21:r2:sub@base_9:inject 5:23:r1:add@base_18:inject 6:24:r3:load@base_21:inject 7:25:r7:mul@base_19:lossy 8:28:r6:mul@base_27:lossy 9:35:r1:load@base_28:inject 10:37:r7:load@base_35:inject 11:43:r6:sub@base_36:inject 12:50:r3:add@base_44:inject 13:59:r4:xor@base_56:inject 14:60:r2:add@base_49:inject 15:63:r5:add@base_52:inject +igneum-ca3-v4-uniform/278 4bc1b9cee1f51520 0 0:2:1 1:0:0 2:0:0 3:2:0 4:0:0 5:2:2 6:2:3 7:2:3 8:2:3 9:2:2 10:1:1 11:0:0 12:0:0 13:0:0 14:1:0 15:2:0 2 1 0 0 1 0:5:r7:rotl@base_2:bijective 1:6:r0:load@base_5:inject 2:9:r5:rotr@base_0:bijective 3:13:r7:shfl@base_10:inject 4:20:r5:shfl@base_12:inject 5:21:r4:xor@base_19:inject 6:30:r6:mad@base_28:inject 7:35:r3:load@base_30:inject 8:39:r0:add@base_26:inject 9:40:r4:add@base_38:inject 10:45:r1:mulhi@base_44:lossy 11:50:r2:or@base_27:lossy 12:53:r3:mad@base_46:inject 13:55:r3:mad@base_54:inject 14:61:r1:rotl@base_56:bijective 15:63:r0:shfl@base_52:inject +igneum-ca3-v4-uniform/279 b7f12d0a96ef788d 0 0:0:0 1:1:0 2:1:0 3:0:0 4:2:1 5:0:0 6:0:0 7:2:3 8:0:0 9:1:1 10:1:1 11:2:2 12:2:3 13:0:0 14:1:1 15:0:0 5 2 0 1 2 0:7:r3:rotl@base_5:bijective 1:9:r1:mulhi@base_6:lossy 2:13:r2:add@base_10:inject 3:16:r4:mad@base_4:inject 4:21:r7:rotl@base_20:bijective 5:27:r0:xor@base_22:inject 6:28:r6:or@base_17:lossy 7:30:r1:or@base_25:lossy 8:32:r5:load@base_30:inject 9:35:r6:rotl@base_34:bijective 10:39:r1:shfl@base_36:inject 11:51:r7:rotr@base_47:bijective 12:53:r5:rotr@base_43:bijective 13:56:r2:mul@base_50:lossy 14:58:r3:shfl@base_48:inject 15:61:r4:mulhi@base_60:lossy +igneum-ca3-v4-uniform/280 aee04c1d4bcb8d39 0 0:2:1 1:2:3 2:2:2 3:0:0 4:2:0 5:2:0 6:0:0 7:2:3 8:2:2 9:0:0 10:0:0 11:1:1 12:2:2 13:1:1 14:2:2 15:1:0 3 1 0 1 1 0:1:r7:xor@base_0:inject 1:9:r5:mulhi@base_5:lossy 2:15:r6:mad@base_4:inject 3:22:r0:mad@base_18:inject 4:29:r7:rotr@base_27:bijective 5:32:r5:rotr@base_31:bijective 6:35:r6:add@base_33:inject 7:36:r1:load@base_32:inject 8:41:r6:shfl@base_40:inject 9:44:r4:rotl@base_38:bijective 10:51:r5:sub@base_49:inject 11:53:r7:or@base_45:lossy 12:54:r2:sub@base_48:inject 13:55:r5:load@base_53:inject 14:56:r3:load@base_54:inject 15:62:r6:mul@base_50:lossy +igneum-ca3-v4-uniform/281 00cd9e659ab43893 0 0:0:0 1:2:0 2:1:1 3:2:0 4:0:0 5:0:0 6:2:2 7:0:0 8:1:0 9:2:3 10:1:1 11:2:0 12:2:1 13:2:0 14:1:1 15:2:2 3 0 0 2 1 0:3:r3:rotl@base_0:bijective 1:4:r1:load@base_3:inject 2:6:r6:add@base_1:inject 3:8:r2:load@base_6:inject 4:9:r5:load@base_8:inject 5:10:r0:load@base_9:inject 6:17:r4:rotl@base_12:bijective 7:19:r3:mul@base_18:lossy 8:32:r7:mad@base_28:inject 9:37:r1:rotl@base_35:bijective 10:48:r4:rotr@base_42:bijective 11:52:r5:mulhi@base_24:lossy 12:53:r0:mad@base_38:inject 13:56:r3:add@base_55:inject 14:58:r7:load@base_56:inject 15:59:r6:mul@base_49:lossy +igneum-ca3-v4-uniform/282 02ce20f1a4b4ab80 0 0:2:3 1:0:0 2:2:1 3:2:2 4:0:0 5:1:1 6:1:1 7:0:0 8:2:0 9:1:0 10:2:2 11:1:0 12:0:0 13:0:0 14:2:3 15:2:2 0 0 0 0 0 0:1:r5:xor@base_0:inject 1:2:r6:load@base_1:inject 2:4:r7:load@base_2:inject 3:10:r1:load@base_4:inject 4:11:r6:load@base_10:inject 5:12:r7:add@base_6:inject 6:14:r7:add@base_13:inject 7:16:r6:load@base_12:inject 8:18:r7:add@base_15:inject 9:21:r5:load@base_16:inject 10:25:r4:mad@base_22:inject 11:27:r3:load@base_25:inject 12:38:r4:add@base_36:inject 13:43:r6:rotr@base_40:bijective 14:57:r4:sub@base_51:inject 15:58:r1:rotl@base_48:bijective +igneum-ca3-v4-uniform/283 6624da4ac48ae016 0 0:1:1 1:1:1 2:1:1 3:2:2 4:0:0 5:0:0 6:0:0 7:1:0 8:0:0 9:0:0 10:1:1 11:2:1 12:0:0 13:2:3 14:0:0 15:0:0 3 1 0 2 0 0:2:r3:mul@base_1:lossy 1:3:r7:rotr@base_0:bijective 2:9:r0:shfl@base_8:inject 3:14:r4:rotr@base_10:bijective 4:16:r1:load@base_2:inject 5:28:r2:add@base_23:inject 6:31:r0:rotr@base_18:bijective 7:34:r3:load@base_31:inject 8:37:r0:mul@base_36:lossy 9:39:r4:rotl@base_27:bijective 10:42:r2:sub@base_38:inject 11:43:r6:or@base_33:lossy 12:45:r2:load@base_43:inject 13:46:r7:load@base_45:inject 14:51:r4:add@base_48:inject 15:60:r2:xor@base_47:inject +igneum-ca3-v4-uniform/284 07a2d2b7d5e244b8 0 0:2:2 1:1:0 2:2:3 3:0:0 4:2:3 5:2:2 6:0:0 7:0:0 8:1:1 9:1:1 10:2:3 11:2:1 12:1:1 13:1:0 14:0:0 15:1:1 4 1 0 0 3 0:3:r0:mad@base_2:inject 1:4:r4:mulhi@base_0:lossy 2:7:r3:rotr@base_1:bijective 3:23:r0:or@base_14:lossy 4:25:r2:mulhi@base_18:lossy 5:28:r4:xor@base_11:inject 6:33:r5:load@base_28:inject 7:35:r3:mulhi@base_31:lossy 8:36:r1:rotl@base_21:bijective 9:38:r6:rotl@base_34:bijective 10:46:r4:load@base_36:inject 11:54:r1:sub@base_53:inject 12:58:r3:shfl@base_51:inject 13:59:r0:rotr@base_52:bijective 14:61:r5:sub@base_45:inject 15:63:r4:rotl@base_48:bijective +igneum-ca3-v4-uniform/285 def258c7abd0160b 0 0:2:3 1:0:0 2:2:3 3:1:1 4:0:0 5:0:0 6:1:1 7:2:0 8:0:0 9:2:1 10:0:0 11:1:1 12:0:0 13:0:0 14:2:0 15:1:1 5 2 1 2 1 0:1:r6:xor@base_0:inject 1:3:r4:or@base_2:lossy-or-chain1 2:4:r5:load@base_3:inject 3:6:r4:sub@base_5:inject 4:19:r1:xor@base_17:inject 5:20:r7:xor@base_18:inject 6:25:r0:add@base_11:inject 7:29:r6:mul@base_27:lossy 8:32:r0:add@base_30:inject 9:33:r2:load@base_20:inject 10:36:r4:mulhi@base_34:lossy 11:38:r6:load@base_32:inject 12:40:r5:load@base_38:inject 13:46:r6:mad@base_45:inject 14:50:r1:mul@base_43:lossy 15:60:r5:or@base_59:lossy +igneum-ca3-v4-uniform/286 0c3e515c6a8f8e54 0 0:2:3 1:2:2 2:2:3 3:2:0 4:0:0 5:0:0 6:1:1 7:1:0 8:1:0 9:2:0 10:1:0 11:2:0 12:0:0 13:1:0 14:1:1 15:0:0 1 0 0 0 1 0:3:r5:shfl@base_0:inject 1:12:r6:mad@base_10:inject 2:13:r3:load@base_12:inject 3:15:r4:sub@base_4:inject 4:22:r0:rotl@base_21:bijective 5:23:r5:load@base_15:inject 6:26:r4:mulhi@base_24:lossy 7:29:r1:mad@base_28:inject 8:39:r3:xor@base_35:inject 9:49:r5:sub@base_47:inject 10:50:r0:shfl@base_38:inject 11:55:r5:sub@base_52:inject 12:56:r4:load@base_55:inject 13:59:r6:xor@base_46:inject 14:60:r7:load@base_56:inject 15:61:r2:sub@base_44:inject +igneum-ca3-v4-uniform/287 2c0e4de058e2ca28 0 0:0:0 1:2:1 2:1:0 3:1:1 4:2:0 5:2:2 6:1:0 7:2:1 8:2:1 9:0:0 10:0:0 11:2:0 12:2:3 13:0:0 14:1:0 15:2:2 2 0 0 1 1 0:8:r3:shfl@base_3:inject 1:14:r1:add@base_4:inject 2:17:r4:mad@base_16:inject 3:21:r6:shfl@base_11:inject 4:22:r2:rotl@base_20:bijective 5:24:r3:load@base_21:inject 6:28:r6:mulhi@base_26:lossy 7:29:r0:load@base_22:inject 8:30:r3:load@base_29:inject 9:32:r1:shfl@base_23:inject 10:36:r3:xor@base_33:inject 11:37:r7:add@base_31:inject 12:42:r7:mul@base_38:lossy 13:43:r1:mad@base_35:inject 14:55:r7:mad@base_44:inject 15:59:r4:load@base_55:inject +igneum-ca3-v4-uniform/288 fbb9b2b7b40fd2c9 1 0:1:0 1:1:0 2:2:1 3:0:0 4:1:0 5:0:0 6:1:0 7:1:1 8:2:3 9:0:0 10:1:1 11:1:0 12:1:0 13:2:3 14:2:1 15:0:0 0 0 0 0 0 0:5:r2:shfl@base_1:inject 1:8:r4:rotr@base_4:bijective 2:10:r7:load@base_5:inject 3:14:r5:sub@base_9:inject 4:16:r3:mad@base_7:inject 5:26:r4:add@base_24:inject 6:27:r2:sub@base_25:inject 7:30:r3:rotr@base_22:bijective 8:35:r7:sub@base_29:inject 9:37:r1:add@base_28:inject 10:45:r6:mad@base_43:inject 11:48:r5:load@base_26:inject 12:50:r0:rotl@base_49:bijective 13:54:r0:rotl@base_53:bijective 14:58:r0:add@base_55:inject 15:59:r1:xor@base_57:inject +igneum-ca3-v4-uniform/289 005911df6386440c 0 0:2:0 1:1:1 2:0:0 3:1:0 4:0:0 5:1:1 6:0:0 7:0:0 8:1:1 9:0:0 10:2:3 11:0:0 12:0:0 13:0:0 14:1:0 15:2:1 7 3 0 2 2 0:7:r1:or@base_4:lossy 1:11:r6:xor@base_0:inject 2:17:r7:or@base_13:lossy 3:18:r5:mul@base_5:lossy 4:24:r0:rotl@base_23:bijective 5:25:r6:load@base_24:inject 6:27:r3:mul@base_26:lossy 7:29:r4:load@base_27:inject 8:32:r7:mulhi@base_28:lossy 9:33:r4:load@base_32:inject 10:39:r1:rotr@base_34:bijective 11:49:r1:or@base_46:lossy 12:52:r3:mulhi@base_47:lossy 13:53:r2:add@base_37:inject 14:55:r1:load@base_53:inject 15:56:r4:load@base_49:inject +igneum-ca3-v4-uniform/290 729ac90db5ec080d 0 0:1:1 1:2:1 2:2:3 3:0:0 4:1:1 5:2:3 6:1:1 7:2:0 8:2:3 9:1:1 10:0:0 11:0:0 12:2:2 13:2:3 14:0:0 15:2:3 3 1 0 1 1 0:2:r1:mulhi@base_1:lossy 1:4:r6:add@base_3:inject 2:5:r4:load@base_4:inject 3:6:r3:load@base_5:inject 4:7:r6:load@base_6:inject 5:8:r4:load@base_7:inject 6:15:r6:rotr@base_14:bijective 7:20:r4:add@base_19:inject 8:23:r2:add@base_21:inject 9:35:r2:rotl@base_28:bijective 10:45:r0:mul@base_32:lossy 11:50:r6:mad@base_46:inject 12:58:r4:or@base_54:lossy 13:60:r1:add@base_59:inject 14:62:r0:load@base_58:inject 15:63:r7:sub@base_57:inject +igneum-ca3-v4-uniform/291 5509cf7e6693448a 0 0:1:0 1:2:3 2:2:0 3:1:0 4:2:1 5:2:1 6:2:1 7:0:0 8:1:1 9:2:2 10:1:0 11:0:0 12:2:3 13:2:3 14:0:0 15:1:0 1 0 0 0 1 0:2:r3:xor@base_0:inject 1:6:r2:mad@base_4:inject 2:7:r7:shfl@base_5:inject 3:10:r6:add@base_3:inject 4:12:r5:load@base_10:inject 5:13:r3:load@base_6:inject 6:15:r2:load@base_12:inject 7:17:r5:load@base_13:inject 8:20:r4:mad@base_18:inject 9:21:r2:mulhi@base_16:lossy 10:22:r0:load@base_15:inject 11:29:r5:load@base_21:inject 12:31:r7:load@base_29:inject 13:46:r4:rotr@base_41:bijective 14:55:r5:xor@base_37:inject 15:58:r4:add@base_54:inject +igneum-ca3-v4-uniform/292 3b1d7a65558e3632 0 0:2:1 1:2:0 2:0:0 3:2:0 4:2:1 5:0:0 6:0:0 7:1:1 8:2:2 9:0:0 10:2:2 11:2:3 12:1:1 13:0:0 14:2:0 15:1:0 4 3 0 0 1 0:1:r7:or@base_0:lossy 1:3:r1:add@base_2:inject 2:7:r7:add@base_6:inject 3:9:r4:load@base_3:inject 4:12:r6:load@base_9:inject 5:15:r4:rotl@base_10:bijective 6:16:r2:or@base_13:lossy 7:17:r0:load@base_15:inject 8:22:r3:load@base_17:inject 9:25:r7:xor@base_23:inject 10:31:r2:xor@base_24:inject 11:41:r4:mulhi@base_37:lossy 12:47:r5:rotr@base_40:bijective 13:48:r1:rotr@base_46:bijective 14:54:r6:or@base_49:lossy 15:55:r5:mad@base_52:inject +igneum-ca3-v4-uniform/293 0461cfe018156415 0 0:1:0 1:0:0 2:0:0 3:0:0 4:1:1 5:1:1 6:2:2 7:1:1 8:2:1 9:2:3 10:2:2 11:0:0 12:1:0 13:0:0 14:2:0 15:2:3 3 1 0 1 1 0:1:r6:or@base_0:lossy 1:2:r0:load@base_1:inject 2:6:r7:xor@base_5:inject 3:7:r4:rotr@base_3:bijective 4:8:r6:load@base_2:inject 5:12:r4:xor@base_11:inject 6:17:r0:load@base_7:inject 7:30:r6:mul@base_29:lossy 8:37:r3:add@base_34:inject 9:46:r1:shfl@base_28:inject 10:49:r2:rotl@base_43:bijective 11:51:r3:xor@base_45:inject 12:52:r6:shfl@base_50:inject 13:54:r5:load@base_51:inject 14:55:r0:mulhi@base_38:lossy 15:61:r7:rotr@base_53:bijective +igneum-ca3-v4-uniform/294 6f90e791463471a5 0 0:2:2 1:2:1 2:2:2 3:1:0 4:0:0 5:0:0 6:0:0 7:1:0 8:1:1 9:2:1 10:0:0 11:1:1 12:1:0 13:0:0 14:0:0 15:2:0 5 1 0 2 2 0:5:r6:or@base_0:lossy 1:8:r7:mad@base_2:inject 2:10:r5:rotl@base_7:bijective 3:12:r1:load@base_10:inject 4:15:r7:mul@base_9:lossy 5:28:r4:rotr@base_25:bijective 6:30:r3:mulhi@base_29:lossy 7:31:r0:mad@base_24:inject 8:33:r5:load@base_30:inject 9:38:r3:xor@base_37:inject 10:42:r7:add@base_26:inject 11:45:r2:mul@base_44:lossy 12:46:r6:xor@base_32:inject 13:48:r1:xor@base_47:inject 14:58:r7:shfl@base_51:inject 15:60:r5:mulhi@base_56:lossy +igneum-ca3-v4-uniform/295 9363e24fd5cc174f 0 0:2:0 1:2:1 2:1:0 3:0:0 4:0:0 5:0:0 6:1:1 7:0:0 8:1:0 9:1:0 10:1:0 11:0:0 12:1:0 13:2:1 14:2:1 15:2:2 3 0 0 2 1 0:7:r7:add@base_2:inject 1:8:r2:mul@base_4:lossy 2:10:r3:load@base_8:inject 3:11:r7:mad@base_9:inject 4:13:r4:rotr@base_12:bijective 5:16:r7:mul@base_15:lossy 6:25:r0:xor@base_21:inject 7:37:r7:mad@base_36:inject 8:42:r4:shfl@base_32:inject 9:43:r5:mulhi@base_38:lossy 10:44:r2:xor@base_23:inject 11:45:r0:load@base_43:inject 12:46:r6:load@base_42:inject 13:56:r3:load@base_37:inject 14:58:r5:sub@base_51:inject 15:62:r7:rotl@base_54:bijective +igneum-ca3-v4-uniform/296 3ad5a750f2b42a5e 0 0:2:3 1:0:0 2:1:0 3:0:0 4:1:1 5:2:1 6:1:1 7:2:0 8:0:0 9:2:0 10:2:1 11:2:1 12:2:1 13:1:0 14:0:0 15:0:0 2 1 0 0 1 0:7:r3:mad@base_5:inject 1:21:r1:xor@base_20:inject 2:22:r3:mad@base_19:inject 3:24:r6:xor@base_0:inject 4:29:r5:sub@base_26:inject 5:31:r3:or@base_27:lossy 6:36:r7:rotr@base_34:bijective 7:40:r6:sub@base_32:inject 8:44:r1:mad@base_43:inject 9:45:r6:mad@base_41:inject 10:46:r4:rotl@base_39:bijective 11:48:r2:add@base_18:inject 12:50:r3:load@base_48:inject 13:51:r1:mulhi@base_49:lossy 14:53:r3:load@base_51:inject 15:59:r0:shfl@base_33:inject +igneum-ca3-v4-uniform/297 f2f9c9ed52219eb5 0 0:2:2 1:1:0 2:2:3 3:1:1 4:2:0 5:0:0 6:1:1 7:1:0 8:0:0 9:0:0 10:0:0 11:0:0 12:0:0 13:1:1 14:2:3 15:1:0 2 1 0 0 1 0:5:r3:mulhi@base_4:lossy 1:22:r1:rotl@base_20:bijective 2:23:r7:load@base_22:inject 3:25:r0:xor@base_24:inject 4:26:r5:rotl@base_21:bijective 5:27:r6:or@base_3:lossy 6:33:r4:rotl@base_32:bijective 7:36:r5:xor@base_30:inject 8:37:r1:add@base_31:inject 9:38:r2:load@base_37:inject 10:39:r7:load@base_25:inject 11:41:r3:load@base_38:inject 12:42:r6:load@base_41:inject 13:44:r4:load@base_42:inject 14:54:r5:xor@base_51:inject 15:55:r3:load@base_54:inject +igneum-ca3-v4-uniform/298 6ad4bc503f78f668 0 0:2:2 1:0:0 2:2:0 3:2:2 4:0:0 5:2:1 6:0:0 7:2:1 8:0:0 9:2:2 10:0:0 11:1:1 12:1:0 13:1:0 14:1:0 15:2:2 4 1 0 1 2 0:2:r3:or@base_0:lossy 1:11:r2:mul@base_3:lossy 2:19:r2:rotr@base_12:bijective 3:21:r4:add@base_10:inject 4:24:r3:rotr@base_18:bijective 5:26:r0:mulhi@base_23:lossy 6:28:r6:load@base_26:inject 7:29:r5:rotl@base_14:bijective 8:32:r2:mad@base_31:inject 9:35:r7:sub@base_30:inject 10:36:r6:load@base_35:inject 11:39:r0:load@base_32:inject 12:46:r7:mulhi@base_44:lossy 13:56:r2:rotl@base_52:bijective 14:58:r5:load@base_46:inject 15:60:r7:mad@base_53:inject +igneum-ca3-v4-uniform/299 5e98b95f99b189de 0 0:1:0 1:2:1 2:2:3 3:2:0 4:0:0 5:0:0 6:0:0 7:1:1 8:1:1 9:0:0 10:1:0 11:0:0 12:0:0 13:0:0 14:1:1 15:2:1 2 0 0 2 0 0:2:r3:shfl@base_1:inject 1:9:r2:mul@base_5:lossy 2:11:r0:load@base_9:inject 3:18:r4:add@base_15:inject 4:19:r7:load@base_2:inject 5:20:r3:load@base_19:inject 6:22:r5:rotr@base_17:bijective 7:23:r1:rotr@base_16:bijective 8:32:r7:mul@base_28:lossy 9:38:r5:shfl@base_33:inject 10:44:r7:rotl@base_42:bijective 11:46:r6:sub@base_31:inject 12:50:r6:mad@base_49:inject 13:51:r1:sub@base_41:inject 14:54:r3:sub@base_48:inject 15:58:r5:xor@base_55:inject +igneum-ca3-v4-uniform/300 71feeb5000833af7 0 0:2:2 1:1:1 2:0:0 3:0:0 4:1:1 5:1:1 6:1:0 7:1:0 8:2:3 9:1:1 10:2:0 11:0:0 12:0:0 13:1:0 14:1:1 15:0:0 1 0 0 0 1 0:5:r1:mad@base_4:inject 1:9:r6:mulhi@base_6:lossy 2:10:r2:sub@base_2:inject 3:14:r2:add@base_11:inject 4:26:r4:rotl@base_24:bijective 5:29:r7:rotr@base_1:bijective 6:30:r1:xor@base_25:inject 7:36:r0:add@base_33:inject 8:40:r3:rotl@base_39:bijective 9:41:r0:load@base_40:inject 10:44:r2:load@base_41:inject 11:50:r6:rotr@base_37:bijective 12:53:r1:xor@base_38:inject 13:55:r7:add@base_45:inject 14:62:r2:load@base_50:inject 15:63:r4:rotr@base_58:bijective +igneum-ca3-v4-uniform/301 5079b8e1427bca9e 0 0:1:0 1:0:0 2:2:3 3:1:0 4:2:0 5:0:0 6:2:2 7:1:1 8:2:3 9:2:1 10:0:0 11:0:0 12:2:0 13:0:0 14:0:0 15:2:0 3 1 0 0 2 0:4:r5:mulhi@base_2:lossy 1:6:r7:load@base_4:inject 2:9:r0:add@base_8:inject 3:16:r3:rotl@base_11:bijective 4:18:r0:add@base_10:inject 5:20:r7:load@base_16:inject 6:21:r4:load@base_20:inject 7:31:r5:add@base_29:inject 8:32:r3:rotl@base_26:bijective 9:37:r2:rotr@base_5:bijective 10:39:r2:or@base_38:lossy 11:42:r7:mulhi@base_40:lossy 12:43:r6:load@base_42:inject 13:44:r0:load@base_39:inject 14:61:r7:xor@base_57:inject 15:62:r4:sub@base_60:inject +igneum-ca3-v4-uniform/302 edcb08f31a9ed935 0 0:1:1 1:2:1 2:0:0 3:2:3 4:0:0 5:0:0 6:0:0 7:2:1 8:1:1 9:1:0 10:1:0 11:2:1 12:0:0 13:0:0 14:2:0 15:1:1 1 0 0 0 1 0:2:r6:mulhi@base_0:lossy 1:3:r7:load@base_2:inject 2:5:r6:load@base_3:inject 3:6:r4:sub@base_4:inject 4:22:r2:xor@base_21:inject 5:24:r4:rotl@base_23:bijective 6:29:r2:mad@base_26:inject 7:38:r5:mad@base_37:inject 8:43:r1:sub@base_42:inject 9:46:r4:add@base_41:inject 10:49:r6:load@base_43:inject 11:50:r5:shfl@base_47:inject 12:55:r0:shfl@base_52:inject 13:60:r3:load@base_55:inject 14:62:r5:add@base_59:inject 15:63:r1:xor@base_51:inject +igneum-ca3-v4-uniform/303 bb4ca16781714df8 1 0:0:0 1:2:1 2:0:0 3:1:1 4:1:1 5:2:3 6:0:0 7:0:0 8:1:0 9:2:3 10:1:0 11:1:0 12:2:3 13:2:3 14:1:0 15:0:0 3 0 0 0 3 0:4:r6:sub@base_0:inject 1:13:r3:mulhi@base_12:lossy 2:20:r2:rotl@base_18:bijective 3:25:r5:rotr@base_21:bijective 4:29:r2:shfl@base_28:inject 5:31:r4:mulhi@base_7:lossy 6:35:r6:sub@base_32:inject 7:36:r5:load@base_35:inject 8:39:r2:load@base_36:inject 9:41:r1:rotr@base_37:bijective 10:45:r3:load@base_39:inject 11:46:r1:load@base_45:inject 12:48:r0:add@base_10:inject 13:51:r3:load@base_48:inject 14:57:r4:mulhi@base_56:lossy 15:62:r0:add@base_54:inject +igneum-ca3-v4-uniform/304 4ab0eec1becf44be 0 0:2:2 1:2:0 2:1:1 3:1:1 4:0:0 5:2:1 6:2:1 7:0:0 8:1:1 9:2:1 10:1:1 11:2:3 12:0:0 13:2:0 14:1:0 15:1:0 2 0 0 1 1 0:4:r6:rotr@base_3:bijective 1:12:r5:rotr@base_9:bijective 2:14:r0:load@base_12:inject 3:20:r5:mul@base_19:lossy 4:22:r6:rotr@base_21:bijective 5:23:r4:load@base_4:inject 6:25:r1:load@base_22:inject 7:26:r7:sub@base_24:inject 8:28:r1:mulhi@base_27:lossy 9:34:r0:load@base_20:inject 10:45:r6:load@base_34:inject 11:48:r2:load@base_45:inject 12:49:r1:mad@base_35:inject 13:53:r6:xor@base_51:inject 14:56:r5:mad@base_52:inject 15:60:r0:shfl@base_59:inject +igneum-ca3-v4-uniform/305 6594e1be88820bba 0 0:2:2 1:2:0 2:0:0 3:1:0 4:2:3 5:0:0 6:2:0 7:0:0 8:0:0 9:2:3 10:1:0 11:2:0 12:0:0 13:0:0 14:0:0 15:0:0 3 1 0 1 1 0:2:r3:mulhi@base_1:lossy 1:4:r7:load@base_2:inject 2:11:r5:xor@base_8:inject 3:13:r3:xor@base_7:inject 4:18:r7:mad@base_5:inject 5:23:r1:shfl@base_22:inject 6:30:r5:mad@base_24:inject 7:35:r4:rotl@base_26:bijective 8:36:r7:mul@base_32:lossy 9:45:r2:load@base_36:inject 10:46:r3:load@base_45:inject 11:47:r6:load@base_30:inject 12:53:r5:or@base_50:lossy 13:58:r3:sub@base_52:inject 14:61:r4:shfl@base_54:inject 15:62:r1:load@base_58:inject +igneum-ca3-v4-uniform/306 2bf66ce86f98a8cc 0 0:2:3 1:1:1 2:1:0 3:2:2 4:2:0 5:1:1 6:2:0 7:2:3 8:2:3 9:1:0 10:0:0 11:0:0 12:0:0 13:2:3 14:2:2 15:1:1 2 0 0 1 1 0:1:r1:shfl@shadow_248:inject 1:8:r0:add@base_6:inject 2:10:r3:load@base_8:inject 3:14:r0:load@base_10:inject 4:17:r7:load@base_14:inject 5:20:r6:mul@base_12:lossy 6:27:r5:mulhi@base_22:lossy 7:28:r2:load@base_27:inject 8:33:r2:shfl@base_29:inject 9:37:r1:load@base_33:inject 10:46:r4:add@base_41:inject 11:47:r7:load@base_37:inject 12:48:r5:load@base_47:inject 13:50:r0:add@base_36:inject 14:51:r1:load@base_46:inject 15:56:r5:load@base_51:inject +igneum-ca3-v4-uniform/307 e2068bb3c4ded65c 0 0:0:0 1:2:3 2:2:2 3:0:0 4:2:1 5:2:3 6:0:0 7:2:0 8:2:1 9:1:0 10:1:0 11:1:1 12:1:0 13:0:0 14:0:0 15:1:1 1 0 0 1 0 0:2:r6:add@base_0:inject 1:3:r0:load@base_2:inject 2:14:r7:rotl@base_12:bijective 3:15:r6:add@base_9:inject 4:16:r5:load@base_15:inject 5:21:r0:xor@base_17:inject 6:25:r3:mad@base_24:inject 7:26:r4:mad@base_6:inject 8:32:r5:rotr@base_23:bijective 9:35:r6:load@base_25:inject 10:43:r1:mul@base_40:lossy 11:44:r3:load@base_35:inject 12:46:r2:shfl@base_31:inject 13:47:r6:load@base_44:inject 14:48:r7:mad@base_39:inject 15:56:r4:load@base_47:inject +igneum-ca3-v4-uniform/308 8a079a255a5cefd9 1 0:0:0 1:2:3 2:0:0 3:2:0 4:2:1 5:2:3 6:1:0 7:0:0 8:1:1 9:0:0 10:1:1 11:1:0 12:2:2 13:2:2 14:0:0 15:2:1 2 1 0 0 1 0:3:r1:xor@base_1:inject 1:7:r3:or@base_6:lossy 2:15:r6:sub@base_10:inject 3:22:r1:load@base_15:inject 4:23:r0:load@base_22:inject 5:24:r3:add@base_17:inject 6:27:r4:add@base_21:inject 7:28:r7:load@base_23:inject 8:29:r6:load@base_27:inject 9:40:r1:xor@base_39:inject 10:43:r5:shfl@base_31:inject 11:49:r6:load@base_43:inject 12:51:r2:add@base_46:inject 13:52:r5:load@base_49:inject 14:59:r6:mulhi@base_53:lossy 15:61:r1:mad@base_56:inject +igneum-ca3-v4-uniform/309 9ca29d6d026b63cf 0 0:1:0 1:2:0 2:0:0 3:0:0 4:2:2 5:2:1 6:1:0 7:1:0 8:1:0 9:1:0 10:2:0 11:2:1 12:0:0 13:2:3 14:0:0 15:1:0 5 3 0 2 0 0:3:r5:mad@base_2:inject 1:4:r7:load@base_3:inject 2:5:r2:sub@base_1:inject 3:9:r2:shfl@base_7:inject 4:11:r0:rotl@base_6:bijective 5:16:r1:shfl@base_8:inject 6:22:r3:or@base_20:lossy 7:31:r4:rotr@base_28:bijective 8:33:r2:or@base_18:lossy 9:40:r1:xor@base_37:inject 10:41:r4:mad@base_38:inject 11:48:r5:mul@base_47:lossy 12:50:r4:mul@base_43:lossy 13:55:r0:or@base_52:lossy 14:62:r4:rotl@base_61:bijective 15:63:r7:add@base_57:inject +igneum-ca3-v4-uniform/310 f48b7a41f0125d7d 0 0:1:1 1:0:0 2:0:0 3:0:0 4:1:1 5:2:2 6:1:0 7:2:1 8:1:1 9:1:1 10:0:0 11:0:0 12:1:0 13:0:0 14:0:0 15:0:0 2 0 0 1 1 0:5:r7:rotl@base_4:bijective 1:8:r4:mad@base_7:inject 2:9:r6:xor@base_3:inject 3:13:r1:mul@base_10:lossy 4:14:r7:mad@base_12:inject 5:17:r7:shfl@base_15:inject 6:20:r3:load@base_8:inject 7:26:r0:add@base_23:inject 8:28:r7:load@base_26:inject 9:29:r4:load@base_13:inject 10:41:r1:shfl@base_34:inject 11:45:r3:sub@base_39:inject 12:52:r2:load@base_45:inject 13:53:r7:mulhi@base_50:lossy 14:59:r3:load@base_52:inject 15:61:r6:mad@base_49:inject +igneum-ca3-v4-uniform/311 1348870a7a93150e 0 0:2:0 1:1:1 2:2:1 3:2:2 4:0:0 5:0:0 6:2:0 7:0:0 8:1:0 9:1:0 10:1:1 11:2:1 12:0:0 13:0:0 14:0:0 15:1:0 5 4 0 1 0 0:1:r2:or@base_0:lossy 1:6:r7:xor@base_3:inject 2:7:r0:mad@base_4:inject 3:15:r7:xor@base_14:inject 4:20:r5:load@base_6:inject 5:23:r2:rotl@base_19:bijective 6:26:r1:xor@base_24:inject 7:30:r2:mul@base_28:lossy 8:36:r0:or@base_35:lossy 9:38:r6:add@base_32:inject 10:39:r4:load@base_30:inject 11:42:r7:add@base_40:inject 12:43:r5:or@base_34:lossy 13:50:r2:or@base_49:lossy 14:54:r6:load@base_43:inject 15:61:r2:rotl@base_55:bijective +igneum-ca3-v4-uniform/312 d3fa4af831fcf901 0 0:1:1 1:0:0 2:1:0 3:1:0 4:0:0 5:1:0 6:0:0 7:0:0 8:2:2 9:0:0 10:0:0 11:1:0 12:0:0 13:2:3 14:2:0 15:1:0 4 1 1 2 1 0:4:r5:or@base_3:lossy-or-chain1 1:5:r0:sub@base_2:inject 2:8:r4:load@base_5:inject 3:9:r1:load@base_8:inject 4:13:r0:xor@base_6:inject 5:16:r1:mul@base_15:lossy 6:24:r5:mulhi@base_23:lossy 7:30:r3:load@base_24:inject 8:33:r4:mul@base_28:lossy 9:37:r6:mad@base_31:inject 10:42:r2:load@base_33:inject 11:45:r6:rotl@base_44:bijective 12:48:r5:shfl@base_46:inject 13:49:r0:add@base_25:inject 14:50:r1:shfl@base_43:inject 15:63:r2:load@base_49:inject +igneum-ca3-v4-uniform/313 21a032846fb2a9c8 0 0:1:0 1:0:0 2:1:0 3:1:0 4:0:0 5:0:0 6:0:0 7:0:0 8:2:3 9:1:1 10:0:0 11:2:2 12:0:0 13:1:1 14:0:0 15:1:0 4 1 0 2 1 0:1:r1:or@shadow_251:lossy 1:7:r2:rotr@base_2:bijective 2:9:r7:load@base_7:inject 3:11:r4:mulhi@base_5:lossy 4:16:r2:rotl@base_14:bijective 5:18:r6:mul@base_13:lossy 6:21:r3:mul@base_19:lossy 7:25:r0:add@base_24:inject 8:28:r7:xor@base_22:inject 9:30:r5:add@base_23:inject 10:35:r7:load@base_30:inject 11:37:r0:mad@base_26:inject 12:46:r6:load@base_35:inject 13:51:r2:sub@base_48:inject 14:57:r0:sub@base_54:inject 15:61:r5:shfl@base_55:inject +igneum-ca3-v4-uniform/314 0f982258993ccd9c 0 0:1:1 1:0:0 2:2:0 3:0:0 4:2:3 5:0:0 6:0:0 7:2:1 8:2:0 9:1:0 10:2:2 11:1:0 12:2:0 13:0:0 14:0:0 15:2:2 2 0 0 2 0 0:9:r6:sub@base_4:inject 1:14:r2:mad@base_13:inject 2:15:r4:sub@base_10:inject 3:26:r5:mul@base_21:lossy 4:31:r0:load@base_26:inject 5:32:r6:add@base_17:inject 6:33:r3:mad@base_27:inject 7:39:r7:rotr@base_28:bijective 8:42:r5:add@base_37:inject 9:48:r6:add@base_36:inject 10:49:r2:load@base_39:inject 11:50:r5:mul@base_43:lossy 12:51:r1:load@base_48:inject 13:55:r5:xor@base_54:inject 14:60:r2:add@base_52:inject 15:63:r0:add@base_59:inject +igneum-ca3-v4-uniform/315 5753f4a4e34ea3f5 0 0:0:0 1:1:1 2:1:0 3:0:0 4:0:0 5:2:1 6:2:1 7:0:0 8:1:0 9:0:0 10:0:0 11:0:0 12:1:0 13:0:0 14:1:1 15:0:0 3 0 0 2 1 0:7:r5:mulhi@base_1:lossy 1:8:r6:add@base_6:inject 2:19:r6:add@base_16:inject 3:20:r3:load@base_19:inject 4:23:r4:load@base_20:inject 5:26:r7:shfl@base_18:inject 6:36:r0:xor@base_33:inject 7:38:r7:mul@base_28:lossy 8:40:r3:xor@base_29:inject 9:42:r5:mul@base_35:lossy 10:45:r2:load@base_38:inject 11:49:r2:add@base_48:inject 12:50:r7:load@base_49:inject 13:51:r5:load@base_50:inject 14:53:r4:xor@base_44:inject 15:62:r3:rotl@base_58:bijective +igneum-ca3-v4-uniform/316 54f6400db0692bf7 0 0:2:3 1:1:1 2:1:1 3:1:1 4:1:0 5:2:1 6:2:3 7:1:0 8:1:1 9:2:1 10:2:3 11:1:1 12:1:0 13:1:0 14:2:1 15:0:0 3 1 0 0 2 0:3:r1:mulhi@base_0:lossy 1:5:r7:mulhi@base_4:lossy 2:6:r0:load@base_5:inject 3:16:r1:add@base_14:inject 4:28:r3:rotr@base_24:bijective 5:29:r6:rotr@base_26:bijective 6:31:r0:shfl@base_22:inject 7:35:r5:mad@base_34:inject 8:37:r7:xor@base_10:inject 9:40:r2:add@base_36:inject 10:44:r6:rotl@base_41:bijective 11:49:r4:rotl@base_47:bijective 12:52:r0:sub@base_46:inject 13:60:r3:xor@base_59:inject 14:61:r7:or@base_50:lossy 15:62:r5:add@base_54:inject +igneum-ca3-v4-uniform/317 f5ee5b98fa28833a 0 0:2:1 1:1:1 2:0:0 3:0:0 4:1:1 5:2:0 6:0:0 7:1:1 8:1:1 9:2:1 10:1:1 11:2:1 12:2:3 13:0:0 14:0:0 15:2:0 6 2 0 2 2 0:3:r6:mulhi@base_2:lossy 1:5:r5:add@base_0:inject 2:13:r5:add@base_11:inject 3:14:r1:rotr@base_9:bijective 4:16:r0:load@base_14:inject 5:19:r3:rotr@base_17:bijective 6:21:r7:xor@base_18:inject 7:26:r7:sub@base_25:inject 8:32:r0:add@base_31:inject 9:33:r5:or@base_27:lossy 10:36:r5:mul@base_35:lossy 11:40:r0:mulhi@base_38:lossy 12:42:r4:or@base_30:lossy 13:43:r3:load@base_32:inject 14:53:r0:mul@base_45:lossy 15:58:r5:rotr@base_56:bijective +igneum-ca3-v4-uniform/318 497029da467aa690 0 0:0:0 1:0:0 2:2:1 3:0:0 4:0:0 5:0:0 6:2:3 7:0:0 8:2:2 9:1:0 10:1:0 11:0:0 12:1:1 13:2:1 14:2:3 15:2:3 5 3 0 2 0 0:2:r3:shfl@base_1:inject 1:4:r7:xor@base_3:inject 2:17:r2:or@base_8:lossy 3:20:r7:xor@base_9:inject 4:28:r4:sub@base_26:inject 5:31:r5:or@base_13:lossy 6:36:r3:shfl@base_35:inject 7:42:r3:sub@base_41:inject 8:43:r7:mul@base_37:lossy 9:46:r6:add@base_29:inject 10:47:r0:add@base_40:inject 11:49:r2:load@base_31:inject 12:55:r0:or@base_54:lossy 13:60:r1:load@base_47:inject 14:62:r6:load@base_55:inject 15:63:r0:mul@base_58:lossy +igneum-ca3-v4-uniform/319 a719e556ea4dced2 0 0:1:1 1:2:1 2:2:0 3:2:3 4:1:1 5:0:0 6:0:0 7:2:2 8:2:0 9:0:0 10:0:0 11:1:0 12:0:0 13:2:0 14:1:0 15:0:0 1 1 0 0 0 0:1:r2:shfl@base_0:inject 1:6:r3:shfl@base_4:inject 2:10:r2:or@base_5:lossy 3:17:r3:mad@base_16:inject 4:22:r1:add@base_14:inject 5:28:r2:xor@base_27:inject 6:34:r7:load@base_17:inject 7:35:r1:xor@base_33:inject 8:37:r5:add@base_21:inject 9:40:r3:load@base_28:inject 10:41:r1:load@base_37:inject 11:47:r3:mad@base_45:inject 12:48:r1:shfl@base_42:inject 13:53:r6:add@base_49:inject 14:62:r7:load@base_48:inject 15:63:r2:mad@base_59:inject +igneum-ca3-v4-uniform/320 c0d1d2d3fbfd6770 0 0:1:0 1:1:1 2:2:1 3:1:1 4:1:0 5:2:0 6:2:3 7:1:0 8:2:2 9:1:1 10:0:0 11:0:0 12:0:0 13:1:0 14:0:0 15:1:1 4 2 0 1 1 0:2:r2:mad@base_0:inject 1:3:r7:or@base_1:lossy 2:8:r0:xor@base_4:inject 3:15:r4:or@base_10:lossy 4:23:r7:add@base_22:inject 5:24:r6:shfl@base_17:inject 6:29:r0:sub@base_20:inject 7:32:r4:xor@base_28:inject 8:35:r6:add@base_33:inject 9:40:r7:mulhi@base_31:lossy 10:41:r0:mul@base_39:lossy 11:46:r4:add@base_44:inject 12:47:r7:add@base_45:inject 13:49:r3:sub@base_48:inject 14:51:r4:rotr@base_50:bijective 15:55:r0:load@base_46:inject +igneum-ca3-v4-uniform/321 d2c1b1145d025477 0 0:2:1 1:0:0 2:1:1 3:1:1 4:1:1 5:2:2 6:2:2 7:2:2 8:1:0 9:0:0 10:0:0 11:1:1 12:2:3 13:0:0 14:2:0 15:0:0 4 0 0 4 0 0:8:r2:add@base_1:inject 1:9:r6:mul@base_4:lossy 2:14:r3:load@base_9:inject 3:18:r2:rotl@base_16:bijective 4:24:r6:rotr@base_19:bijective 5:27:r7:mul@base_10:lossy 6:29:r5:rotl@base_28:bijective 7:30:r1:mul@base_23:lossy 8:34:r2:add@base_33:inject 9:35:r5:load@base_34:inject 10:39:r4:sub@base_17:inject 11:48:r3:rotr@base_47:bijective 12:55:r2:shfl@base_45:inject 13:58:r5:rotl@base_57:bijective 14:59:r4:load@base_55:inject 15:63:r6:mul@base_54:lossy +igneum-ca3-v4-uniform/322 ffda3264e4857bad 0 0:2:1 1:1:0 2:2:2 3:0:0 4:1:0 5:2:2 6:0:0 7:0:0 8:0:0 9:2:2 10:0:0 11:1:0 12:0:0 13:2:0 14:0:0 15:0:0 4 3 0 1 0 0:1:r4:or@base_0:lossy 1:6:r6:mad@base_3:inject 2:17:r7:add@base_14:inject 3:20:r3:or@base_11:lossy 4:21:r5:shfl@base_18:inject 5:22:r2:add@base_13:inject 6:23:r6:sub@base_16:inject 7:32:r6:or@base_28:lossy 8:37:r1:xor@base_33:inject 9:42:r4:xor@base_34:inject 10:44:r3:mad@base_41:inject 11:45:r5:add@base_40:inject 12:51:r4:sub@base_50:inject 13:57:r6:mul@base_55:lossy 14:59:r3:rotr@base_58:bijective 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/323 22fa648c0e950136 1 0:2:0 1:2:3 2:1:0 3:0:0 4:2:1 5:0:0 6:2:3 7:2:2 8:1:0 9:1:0 10:1:1 11:0:0 12:2:3 13:1:0 14:1:0 15:0:0 3 0 0 3 0 0:7:r2:shfl@base_3:inject 1:8:r1:mad@base_4:inject 2:16:r3:rotr@base_14:bijective 3:18:r7:mul@base_1:lossy 4:21:r6:rotl@base_13:bijective 5:22:r5:add@base_9:inject 6:23:r0:load@base_16:inject 7:28:r1:sub@base_26:inject 8:30:r4:sub@base_0:inject 9:33:r0:mad@base_29:inject 10:38:r6:load@base_33:inject 11:40:r5:mul@base_32:lossy 12:48:r5:xor@base_47:inject 13:53:r2:mul@base_49:lossy 14:54:r4:load@base_53:inject 15:62:r6:rotl@base_61:bijective +igneum-ca3-v4-uniform/324 ca425e13a6c3f966 0 0:2:2 1:1:1 2:0:0 3:0:0 4:1:0 5:0:0 6:0:0 7:0:0 8:1:1 9:2:2 10:2:0 11:0:0 12:1:0 13:1:1 14:1:1 15:0:0 5 0 0 2 3 0:2:r6:xor@base_1:inject 1:8:r5:shfl@base_3:inject 2:11:r2:load@base_8:inject 3:15:r6:shfl@base_10:inject 4:23:r1:mulhi@base_19:lossy 5:25:r6:mulhi@base_21:lossy 6:26:r5:xor@base_20:inject 7:30:r7:rotl@base_12:bijective 8:32:r1:mul@base_29:lossy 9:37:r1:add@base_33:inject 10:40:r2:load@base_30:inject 11:45:r6:mul@base_34:lossy 12:48:r5:sub@base_41:inject 13:49:r4:rotr@base_36:bijective 14:51:r2:mulhi@base_46:lossy 15:57:r3:rotr@base_38:bijective +igneum-ca3-v4-uniform/325 bad8a5a33bd373e8 0 0:0:0 1:0:0 2:0:0 3:1:1 4:2:2 5:0:0 6:1:0 7:0:0 8:1:1 9:2:3 10:1:1 11:1:0 12:1:1 13:0:0 14:1:0 15:1:1 0 0 0 0 0 0:4:r6:xor@base_3:inject 1:13:r2:rotl@base_10:bijective 2:16:r6:xor@base_7:inject 3:19:r0:add@base_17:inject 4:23:r1:rotl@base_18:bijective 5:27:r2:mad@base_15:inject 6:28:r4:shfl@base_22:inject 7:30:r6:shfl@base_26:inject 8:40:r0:sub@base_35:inject 9:46:r5:load@base_28:inject 10:47:r7:rotl@base_38:bijective 11:51:r4:load@base_46:inject 12:52:r0:load@base_51:inject 13:53:r6:add@base_39:inject 14:54:r3:load@base_53:inject 15:61:r2:rotl@base_58:bijective +igneum-ca3-v4-uniform/326 893cd1e47cd285cd 0 0:2:2 1:1:0 2:2:1 3:0:0 4:1:1 5:2:0 6:0:0 7:1:0 8:1:1 9:1:0 10:1:1 11:0:0 12:2:3 13:1:1 14:2:3 15:0:0 1 0 0 1 0 0:3:r7:mul@base_0:lossy 1:5:r1:load@base_3:inject 2:8:r5:rotr@base_4:bijective 3:18:r2:sub@base_14:inject 4:24:r4:sub@base_15:inject 5:25:r7:sub@base_23:inject 6:27:r5:load@base_18:inject 7:30:r1:rotr@base_20:bijective 8:32:r7:shfl@base_29:inject 9:36:r0:shfl@base_33:inject 10:37:r3:load@base_36:inject 11:48:r2:add@base_40:inject 12:55:r4:sub@base_41:inject 13:56:r0:rotr@base_50:bijective 14:58:r6:load@base_27:inject 15:60:r3:load@base_58:inject +igneum-ca3-v4-uniform/327 a398db70dd63fb70 1 0:0:0 1:2:1 2:1:1 3:2:1 4:1:1 5:2:2 6:1:0 7:1:1 8:0:0 9:1:1 10:2:3 11:2:1 12:1:0 13:2:0 14:2:0 15:2:1 3 0 0 1 2 0:9:r1:sub@base_6:inject 1:10:r3:mulhi@base_3:lossy 2:11:r5:add@base_7:inject 3:13:r7:rotr@base_12:bijective 4:14:r6:load@base_13:inject 5:15:r0:load@base_9:inject 6:19:r1:mulhi@base_18:lossy 7:21:r3:load@base_15:inject 8:23:r1:load@base_21:inject 9:31:r6:mul@base_29:lossy 10:34:r6:rotl@base_33:bijective 11:39:r1:xor@base_37:inject 12:41:r0:load@base_34:inject 13:46:r6:rotl@base_44:bijective 14:53:r6:rotl@base_49:bijective 15:58:r2:load@base_46:inject +igneum-ca3-v4-uniform/328 14625c7bbb6f351d 0 0:1:0 1:2:3 2:1:1 3:1:0 4:1:1 5:1:1 6:1:1 7:1:1 8:1:1 9:1:0 10:2:1 11:1:1 12:2:2 13:0:0 14:2:2 15:1:1 3 1 1 1 1 0:9:r2:mad@base_8:inject 1:12:r2:mad@base_11:inject 2:21:r3:or@base_14:lossy-or-chain1 3:22:r2:mul@base_16:lossy 4:24:r1:rotl@base_0:bijective 5:28:r6:mulhi@base_10:lossy 6:29:r4:add@base_20:inject 7:30:r2:load@base_28:inject 8:36:r0:add@base_32:inject 9:37:r3:rotl@base_33:bijective 10:42:r7:rotl@base_39:bijective 11:47:r1:add@base_41:inject 12:48:r2:shfl@base_43:inject 13:51:r6:sub@base_45:inject 14:57:r7:sub@base_55:inject 15:63:r1:rotr@base_61:bijective +igneum-ca3-v4-uniform/329 3264a8436a359649 0 0:1:1 1:0:0 2:2:3 3:2:0 4:2:3 5:2:1 6:2:0 7:0:0 8:2:0 9:0:0 10:2:1 11:2:1 12:2:2 13:0:0 14:2:0 15:1:0 3 1 0 2 0 0:1:r3:mul@base_0:lossy 1:8:r5:xor@base_5:inject 2:15:r0:sub@base_2:inject 3:19:r3:rotr@base_18:bijective 4:20:r2:load@base_19:inject 5:23:r5:xor@base_14:inject 6:28:r4:xor@base_26:inject 7:34:r0:add@base_31:inject 8:37:r2:or@base_33:lossy 9:38:r5:xor@base_36:inject 10:40:r6:add@base_30:inject 11:44:r0:load@base_40:inject 12:50:r3:xor@base_45:inject 13:54:r3:xor@base_53:inject 14:55:r4:mad@base_42:inject 15:63:r1:mul@base_62:lossy +igneum-ca3-v4-uniform/330 d617d5b5d724ce89 1 0:1:1 1:1:0 2:0:0 3:2:1 4:2:1 5:0:0 6:2:3 7:1:1 8:1:0 9:1:1 10:1:1 11:2:0 12:0:0 13:0:0 14:1:0 15:1:0 4 0 0 2 2 0:4:r4:mulhi@base_3:lossy 1:9:r3:xor@base_2:inject 2:10:r5:add@base_5:inject 3:15:r5:mul@base_14:lossy 4:17:r0:rotr@base_12:bijective 5:19:r7:load@base_15:inject 6:21:r5:rotr@base_18:bijective 7:25:r1:mad@base_6:inject 8:27:r4:load@base_25:inject 9:30:r6:sub@base_29:inject 10:37:r3:shfl@base_35:inject 11:38:r0:load@base_37:inject 12:39:r6:xor@base_32:inject 13:52:r2:mul@base_47:lossy 14:57:r3:sub@base_56:inject 15:60:r4:mulhi@base_46:lossy +igneum-ca3-v4-uniform/331 6c274ef931417d8d 0 0:1:0 1:2:3 2:1:0 3:0:0 4:1:1 5:0:0 6:2:1 7:0:0 8:2:0 9:2:0 10:2:3 11:0:0 12:0:0 13:1:0 14:0:0 15:0:0 3 0 0 2 1 0:3:r5:add@base_0:inject 1:4:r4:rotr@base_1:bijective 2:5:r2:mad@base_2:inject 3:12:r0:mulhi@base_8:lossy 4:13:r5:load@base_4:inject 5:19:r1:shfl@base_14:inject 6:20:r2:load@base_19:inject 7:29:r5:mul@base_26:lossy 8:32:r3:rotl@base_18:bijective 9:33:r5:load@base_32:inject 10:45:r6:add@base_38:inject 11:49:r2:mul@base_42:lossy 12:52:r1:add@base_51:inject 13:54:r3:load@base_52:inject 14:60:r2:load@base_54:inject 15:61:r4:rotr@base_48:bijective +igneum-ca3-v4-uniform/332 a2649bbefa10639d 0 0:0:0 1:1:0 2:0:0 3:2:3 4:2:1 5:1:1 6:1:1 7:1:1 8:2:0 9:2:1 10:0:0 11:0:0 12:2:3 13:0:0 14:2:0 15:0:0 3 0 0 2 1 0:7:r5:mulhi@base_5:lossy 1:9:r1:rotr@base_2:bijective 2:15:r0:shfl@base_1:inject 3:20:r2:mad@base_3:inject 4:22:r3:mul@base_17:lossy 5:30:r1:shfl@base_26:inject 6:32:r5:mad@base_27:inject 7:33:r6:shfl@base_31:inject 8:34:r4:xor@base_29:inject 9:37:r2:load@base_34:inject 10:41:r1:add@base_40:inject 11:42:r6:load@base_41:inject 12:46:r5:mul@base_43:lossy 13:47:r0:rotl@base_45:bijective 14:51:r1:load@base_42:inject 15:60:r4:sub@base_54:inject +igneum-ca3-v4-uniform/333 812cf3484addadcb 0 0:0:0 1:2:3 2:2:2 3:0:0 4:1:1 5:0:0 6:1:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:2:3 13:1:1 14:2:2 15:0:0 3 0 0 2 1 0:3:r1:sub@base_0:inject 1:10:r2:sub@base_6:inject 2:13:r3:rotl@base_9:bijective 3:14:r1:load@base_13:inject 4:17:r0:mul@base_16:lossy 5:18:r4:load@base_14:inject 6:20:r5:load@base_18:inject 7:25:r6:xor@base_24:inject 8:30:r0:shfl@base_26:inject 9:39:r1:mad@base_36:inject 10:41:r0:mul@base_37:lossy 11:49:r0:mad@base_46:inject 12:51:r7:mulhi@base_48:lossy 13:52:r2:rotl@base_42:bijective 14:53:r6:load@base_51:inject 15:56:r4:load@base_52:inject +igneum-ca3-v4-uniform/334 87d7143d5719b9d4 0 0:0:0 1:1:0 2:0:0 3:1:0 4:0:0 5:1:0 6:0:0 7:2:1 8:1:1 9:1:0 10:1:0 11:1:0 12:0:0 13:2:3 14:1:0 15:2:3 4 0 0 1 3 0:1:r1:xor@base_0:inject 1:11:r6:shfl@base_8:inject 2:20:r2:mulhi@base_18:lossy 3:23:r5:mulhi@base_15:lossy 4:24:r0:load@base_23:inject 5:25:r5:load@base_24:inject 6:26:r4:shfl@base_6:inject 7:28:r5:mul@base_27:lossy 8:32:r2:mad@base_29:inject 9:36:r4:mad@base_34:inject 10:42:r1:shfl@base_41:inject 11:47:r2:sub@base_44:inject 12:52:r0:mulhi@base_37:lossy 13:55:r3:load@base_47:inject 14:57:r4:add@base_45:inject 15:61:r5:xor@base_59:inject +igneum-ca3-v4-uniform/335 1ae378b226ef3e2e 0 0:0:0 1:0:0 2:0:0 3:2:2 4:0:0 5:2:3 6:1:1 7:0:0 8:2:2 9:1:0 10:2:0 11:2:0 12:0:0 13:2:2 14:0:0 15:0:0 2 1 0 1 0 0:6:r3:mul@base_4:lossy 1:8:r7:or@base_1:lossy 2:9:r6:shfl@base_2:inject 3:10:r2:load@base_8:inject 4:11:r5:load@base_10:inject 5:14:r4:load@base_6:inject 6:19:r7:load@base_9:inject 7:30:r6:mad@base_28:inject 8:33:r0:load@base_30:inject 9:34:r1:load@base_33:inject 10:40:r0:load@base_34:inject 11:41:r5:mad@base_39:inject 12:42:r7:xor@base_32:inject 13:53:r5:shfl@base_50:inject 14:57:r0:rotl@base_51:bijective 15:60:r3:mad@base_38:inject +igneum-ca3-v4-uniform/336 d9be8a06f314023a 0 0:1:1 1:1:0 2:2:1 3:0:0 4:2:3 5:0:0 6:1:1 7:0:0 8:1:0 9:2:3 10:1:0 11:0:0 12:0:0 13:2:0 14:2:1 15:0:0 1 0 0 1 0 0:9:r2:xor@base_8:inject 1:11:r5:mad@base_6:inject 2:12:r3:load@base_11:inject 3:13:r0:rotl@base_5:bijective 4:16:r4:add@base_7:inject 5:17:r3:load@base_16:inject 6:22:r1:shfl@base_21:inject 7:23:r2:mul@base_20:lossy 8:35:r4:xor@base_29:inject 9:37:r7:rotl@base_24:bijective 10:40:r0:add@base_33:inject 11:46:r7:shfl@base_38:inject 12:48:r6:rotl@base_45:bijective 13:49:r5:add@base_47:inject 14:50:r1:mad@base_43:inject 15:58:r3:load@base_50:inject +igneum-ca3-v4-uniform/337 76a7594d8b08142a 0 0:2:0 1:1:1 2:0:0 3:1:0 4:2:1 5:0:0 6:1:0 7:2:2 8:0:0 9:2:1 10:2:2 11:0:0 12:2:3 13:0:0 14:1:1 15:0:0 5 1 0 3 1 0:1:r0:rotl@base_0:bijective 1:4:r3:mul@base_3:lossy 2:6:r1:rotr@base_5:bijective 3:7:r2:load@base_1:inject 4:11:r0:add@base_10:inject 5:13:r7:load@base_11:inject 6:18:r1:shfl@base_15:inject 7:21:r0:mulhi@base_16:lossy 8:22:r1:load@base_21:inject 9:31:r0:mul@base_26:lossy 10:41:r7:rotl@base_33:bijective 11:48:r2:or@base_40:lossy 12:54:r3:mul@base_52:lossy 13:55:r1:rotl@base_51:bijective 14:61:r6:load@base_54:inject 15:63:r3:rotr@base_59:bijective +igneum-ca3-v4-uniform/338 e0e8641d3e46265b 0 0:0:0 1:2:0 2:2:3 3:1:1 4:0:0 5:1:0 6:2:3 7:2:3 8:0:0 9:2:2 10:2:2 11:2:0 12:0:0 13:2:2 14:1:0 15:0:0 5 1 0 1 3 0:4:r5:mulhi@base_3:lossy 1:7:r1:add@base_2:inject 2:8:r7:mul@base_6:lossy 3:11:r5:add@base_10:inject 4:18:r4:add@base_9:inject 5:25:r1:add@base_17:inject 6:27:r4:mulhi@base_24:lossy 7:28:r2:load@base_18:inject 8:29:r7:or@base_12:lossy 9:30:r1:rotl@base_26:bijective 10:31:r4:load@base_30:inject 11:32:r0:mulhi@base_20:lossy 12:37:r1:add@base_35:inject 13:45:r2:shfl@base_39:inject 14:54:r4:add@base_52:inject 15:55:r3:load@base_54:inject +igneum-ca3-v4-uniform/339 646b08183fe232dc 0 0:1:0 1:2:3 2:1:0 3:0:0 4:2:2 5:0:0 6:2:2 7:0:0 8:1:0 9:0:0 10:2:2 11:0:0 12:2:1 13:1:1 14:2:3 15:1:1 5 0 0 4 1 0:2:r5:mul@base_1:lossy 1:6:r2:load@base_2:inject 2:7:r7:load@base_6:inject 3:8:r3:load@base_7:inject 4:14:r1:mul@base_4:lossy 5:23:r1:mul@base_20:lossy 6:26:r3:xor@base_22:inject 7:38:r1:rotr@base_31:bijective 8:39:r6:mulhi@base_34:lossy 9:43:r2:load@base_38:inject 10:50:r1:load@base_43:inject 11:53:r2:xor@base_47:inject 12:54:r4:add@base_44:inject 13:55:r6:rotr@base_49:bijective 14:57:r7:load@base_55:inject 15:61:r5:mul@base_52:lossy +igneum-ca3-v4-uniform/340 a48a902339a990c9 0 0:1:1 1:0:0 2:1:0 3:0:0 4:1:1 5:1:1 6:0:0 7:1:0 8:0:0 9:2:3 10:0:0 11:2:3 12:2:3 13:0:0 14:2:2 15:2:2 4 1 0 0 3 0:7:r2:rotr@base_2:bijective 1:9:r4:load@base_7:inject 2:11:r1:mad@base_6:inject 3:12:r0:add@base_10:inject 4:15:r5:xor@base_4:inject 5:19:r4:rotl@base_18:bijective 6:24:r6:or@base_23:lossy 7:32:r2:rotl@base_22:bijective 8:44:r5:add@base_38:inject 9:46:r2:add@base_43:inject 10:48:r1:mulhi@base_42:lossy 11:52:r3:mulhi@base_39:lossy 12:54:r6:shfl@base_49:inject 13:59:r5:xor@base_55:inject 14:61:r6:mulhi@base_56:lossy 15:62:r2:load@base_52:inject +igneum-ca3-v4-uniform/341 65a629cd92f42236 0 0:2:0 1:2:2 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:2:2 8:2:3 9:1:0 10:0:0 11:0:0 12:0:0 13:1:1 14:2:2 15:0:0 3 0 0 2 1 0:4:r2:add@base_1:inject 1:6:r5:mul@base_5:lossy 2:12:r2:mulhi@base_11:lossy 3:14:r0:rotr@base_10:bijective 4:15:r7:load@base_6:inject 5:19:r3:mul@base_18:lossy 6:24:r1:load@base_15:inject 7:26:r5:shfl@base_23:inject 8:27:r4:load@base_24:inject 9:40:r6:mad@base_35:inject 10:52:r5:sub@base_48:inject 11:54:r1:rotl@base_47:bijective 12:55:r4:load@base_54:inject 13:61:r3:add@base_49:inject 14:62:r5:load@base_61:inject 15:63:r2:load@base_55:inject +igneum-ca3-v4-uniform/342 9e613c7cfccccc96 0 0:2:1 1:0:0 2:1:0 3:1:0 4:2:0 5:2:3 6:2:3 7:2:3 8:2:0 9:2:3 10:1:1 11:0:0 12:1:1 13:2:1 14:1:1 15:0:0 5 2 0 1 2 0:1:r2:or@base_0:lossy 1:12:r4:add@base_11:inject 2:16:r1:mulhi@base_7:lossy 3:19:r3:mulhi@base_5:lossy 4:23:r2:xor@base_13:inject 5:33:r6:mul@base_14:lossy 6:36:r5:shfl@base_31:inject 7:38:r7:shfl@base_29:inject 8:39:r3:rotr@base_32:bijective 9:46:r2:add@base_41:inject 10:47:r3:xor@base_43:inject 11:49:r4:load@base_47:inject 12:56:r2:or@base_55:lossy 13:57:r3:load@base_56:inject 14:61:r6:rotl@base_60:bijective 15:62:r3:load@base_61:inject +igneum-ca3-v4-uniform/343 bbbbe37a1c274ad9 0 0:0:0 1:2:0 2:1:0 3:2:0 4:2:2 5:0:0 6:2:0 7:1:1 8:2:1 9:2:2 10:0:0 11:0:0 12:0:0 13:2:0 14:1:0 15:0:0 4 0 0 3 1 0:2:r2:xor@base_0:inject 1:11:r3:mul@base_7:lossy 2:20:r5:xor@base_14:inject 3:26:r0:mulhi@base_17:lossy 4:29:r1:rotl@base_21:bijective 5:37:r3:sub@base_28:inject 6:38:r4:sub@base_33:inject 7:42:r1:load@base_37:inject 8:44:r6:shfl@base_41:inject 9:45:r5:load@base_44:inject 10:47:r4:xor@base_46:inject 11:49:r0:load@base_45:inject 12:50:r7:load@base_49:inject 13:60:r2:mad@base_52:inject 14:61:r7:mul@base_51:lossy 15:63:r2:mul@base_62:lossy +igneum-ca3-v4-uniform/344 a32d55529d6fb68d 0 0:0:0 1:2:2 2:0:0 3:1:1 4:1:0 5:2:2 6:2:2 7:0:0 8:0:0 9:0:0 10:0:0 11:0:0 12:0:0 13:0:0 14:2:3 15:1:0 2 0 0 1 1 0:1:r7:mad@base_0:inject 1:10:r2:mad@base_3:inject 2:11:r0:load@base_10:inject 3:12:r4:rotr@base_8:bijective 4:17:r4:mul@base_13:lossy 5:19:r6:load@base_11:inject 6:30:r3:load@base_17:inject 7:37:r7:xor@base_27:inject 8:40:r4:xor@base_39:inject 9:43:r7:rotl@base_42:bijective 10:45:r1:add@base_32:inject 11:46:r2:mulhi@base_44:lossy 12:47:r3:load@base_45:inject 13:48:r0:load@base_47:inject 14:49:r5:shfl@base_41:inject 15:52:r5:rotr@base_50:bijective +igneum-ca3-v4-uniform/345 903dd1176d19aa54 0 0:0:0 1:1:0 2:2:3 3:0:0 4:0:0 5:2:3 6:2:1 7:2:1 8:1:1 9:2:0 10:2:2 11:0:0 12:0:0 13:2:2 14:0:0 15:1:0 2 0 0 1 1 0:2:r6:mad@base_1:inject 1:14:r1:rotr@base_13:bijective 2:32:r7:sub@base_30:inject 3:33:r4:rotl@base_27:bijective 4:34:r2:add@base_31:inject 5:36:r0:load@base_34:inject 6:37:r5:load@base_33:inject 7:42:r6:mul@base_21:lossy 8:47:r0:mulhi@base_44:lossy 9:48:r1:load@base_36:inject 10:52:r7:rotr@base_49:bijective 11:53:r2:load@base_52:inject 12:55:r0:mad@base_54:inject 13:56:r1:load@base_55:inject 14:62:r0:xor@base_58:inject 15:63:r7:load@base_62:inject +igneum-ca3-v4-uniform/346 00cc49212e27555f 0 0:1:0 1:1:1 2:0:0 3:2:3 4:2:2 5:1:1 6:0:0 7:2:1 8:0:0 9:0:0 10:0:0 11:2:3 12:1:0 13:0:0 14:0:0 15:2:0 3 2 0 0 1 0:2:r7:mulhi@base_0:lossy 1:13:r4:add@base_11:inject 2:19:r1:or@base_16:lossy 3:25:r0:shfl@base_24:inject 4:29:r2:load@base_19:inject 5:32:r1:load@base_29:inject 6:35:r5:rotl@base_3:bijective 7:37:r2:add@base_34:inject 8:38:r0:load@base_32:inject 9:41:r7:add@base_18:inject 10:50:r6:load@base_38:inject 11:52:r1:rotr@base_44:bijective 12:56:r2:add@base_55:inject 13:57:r6:or@base_53:lossy 14:60:r7:xor@base_58:inject 15:63:r6:add@base_61:inject +igneum-ca3-v4-uniform/347 0b6f4bf861661829 0 0:0:0 1:0:0 2:1:0 3:0:0 4:2:0 5:1:0 6:2:1 7:1:0 8:1:0 9:1:0 10:1:1 11:2:0 12:0:0 13:2:1 14:1:1 15:0:0 1 0 0 1 0 0:6:r6:mul@base_5:lossy 1:10:r1:add@base_7:inject 2:16:r5:rotl@base_13:bijective 3:18:r4:xor@base_15:inject 4:20:r1:rotl@base_17:bijective 5:22:r7:load@base_18:inject 6:24:r0:shfl@base_19:inject 7:26:r6:load@base_22:inject 8:28:r4:xor@base_27:inject 9:32:r2:add@base_30:inject 10:41:r3:add@base_36:inject 11:43:r7:rotl@base_39:bijective 12:45:r4:load@base_41:inject 13:55:r4:xor@base_53:inject 14:59:r2:xor@base_58:inject 15:62:r7:rotl@base_56:bijective +igneum-ca3-v4-uniform/348 e786bbfe11f72328 0 0:0:0 1:2:2 2:2:3 3:1:0 4:2:0 5:2:2 6:2:2 7:0:0 8:2:3 9:1:1 10:2:1 11:0:0 12:2:1 13:0:0 14:1:0 15:2:2 3 0 0 0 3 0:6:r2:mulhi@base_5:lossy 1:13:r0:mulhi@base_12:lossy 2:16:r3:shfl@base_4:inject 3:27:r4:mulhi@base_24:lossy 4:28:r0:shfl@base_17:inject 5:32:r5:xor@base_21:inject 6:39:r7:shfl@base_37:inject 7:40:r4:load@base_39:inject 8:44:r0:rotl@base_43:bijective 9:46:r1:rotl@base_36:bijective 10:49:r7:rotr@base_41:bijective 11:50:r6:load@base_44:inject 12:52:r2:rotl@base_48:bijective 13:55:r4:load@base_52:inject 14:58:r6:load@base_55:inject 15:63:r2:rotr@base_62:bijective +igneum-ca3-v4-uniform/349 45e6f11c3e68bf63 0 0:0:0 1:2:2 2:0:0 3:2:0 4:0:0 5:0:0 6:2:1 7:2:2 8:1:1 9:1:1 10:1:0 11:0:0 12:2:2 13:0:0 14:0:0 15:0:0 7 0 0 3 4 0:3:r5:add@base_0:inject 1:6:r4:mul@base_5:lossy 2:13:r1:mulhi@base_12:lossy 3:23:r5:mul@base_19:lossy 4:34:r5:sub@base_30:inject 5:36:r2:mul@base_27:lossy 6:41:r0:mulhi@base_32:lossy 7:42:r4:xor@base_24:inject 8:44:r3:load@base_41:inject 9:48:r6:xor@base_39:inject 10:50:r5:mulhi@base_49:lossy 11:54:r7:load@base_48:inject 12:55:r5:add@base_53:inject 13:58:r3:add@base_52:inject 14:60:r7:load@base_58:inject 15:61:r1:mulhi@base_56:lossy +igneum-ca3-v4-uniform/350 5d0ed8c54f4d24b4 0 0:0:0 1:1:1 2:2:3 3:2:1 4:1:0 5:2:0 6:2:1 7:0:0 8:1:1 9:2:3 10:1:0 11:2:2 12:2:0 13:1:0 14:0:0 15:1:1 3 0 0 1 2 0:2:r1:mulhi@base_0:lossy 1:3:r2:load@base_2:inject 2:8:r1:mulhi@base_6:lossy 3:11:r5:xor@base_7:inject 4:18:r5:xor@base_16:inject 5:21:r7:add@base_17:inject 6:25:r5:shfl@base_22:inject 7:32:r1:load@base_25:inject 8:33:r4:load@base_32:inject 9:34:r5:rotr@base_28:bijective 10:37:r4:mad@base_35:inject 11:38:r3:load@base_8:inject 12:45:r3:mul@base_39:lossy 13:52:r0:rotl@base_49:bijective 14:57:r4:add@base_48:inject 15:58:r3:rotr@base_56:bijective +igneum-ca3-v4-uniform/351 ac12c901192d772d 0 0:1:0 1:0:0 2:1:1 3:2:0 4:1:1 5:0:0 6:1:0 7:1:1 8:2:2 9:2:2 10:2:1 11:0:0 12:2:2 13:0:0 14:1:1 15:0:0 8 0 0 6 2 0:3:r1:mad@base_0:inject 1:19:r5:rotl@base_14:bijective 2:22:r4:mulhi@base_18:lossy 3:25:r5:mulhi@base_24:lossy 4:27:r6:mul@base_26:lossy 5:36:r5:mul@base_35:lossy 6:37:r0:load@base_36:inject 7:38:r2:mul@base_32:lossy 8:42:r5:mul@base_41:lossy 9:44:r6:mul@base_34:lossy 10:47:r0:load@base_42:inject 11:52:r2:xor@base_43:inject 12:53:r7:xor@base_40:inject 13:55:r1:load@base_52:inject 14:56:r3:mul@base_54:lossy 15:60:r6:shfl@base_59:inject +igneum-ca3-v4-uniform/352 d6029ddd5ec07a11 0 0:2:1 1:1:1 2:2:0 3:1:0 4:2:0 5:1:1 6:1:0 7:1:0 8:1:1 9:1:0 10:0:0 11:1:1 12:1:1 13:2:0 14:2:2 15:2:3 1 0 0 0 1 0:2:r3:xor@base_1:inject 1:4:r0:load@base_2:inject 2:10:r3:xor@base_9:inject 3:21:r4:mulhi@base_17:lossy 4:23:r2:add@base_22:inject 5:26:r6:sub@base_11:inject 6:34:r1:sub@base_29:inject 7:36:r7:rotr@base_32:bijective 8:41:r0:load@base_34:inject 9:43:r4:rotr@base_39:bijective 10:44:r1:load@base_36:inject 11:46:r7:load@base_44:inject 12:49:r6:shfl@base_48:inject 13:52:r1:load@base_46:inject 14:58:r2:rotl@base_45:bijective 15:60:r5:rotl@base_50:bijective +igneum-ca3-v4-uniform/353 c2e7e8e7c1e41eed 0 0:2:3 1:0:0 2:0:0 3:1:1 4:1:1 5:1:0 6:1:1 7:0:0 8:0:0 9:2:2 10:2:3 11:2:1 12:0:0 13:2:2 14:0:0 15:1:1 3 0 0 2 1 0:3:r4:add@base_0:inject 1:8:r6:load@base_3:inject 2:10:r7:rotl@base_4:bijective 3:16:r3:sub@base_14:inject 4:24:r4:mul@base_5:lossy 5:29:r5:mulhi@base_19:lossy 6:32:r3:load@base_24:inject 7:33:r0:mul@base_30:lossy 8:39:r2:load@base_29:inject 9:40:r4:mad@base_31:inject 10:44:r0:load@base_39:inject 11:46:r5:shfl@base_38:inject 12:52:r2:load@base_46:inject 13:53:r3:xor@base_51:inject 14:60:r4:mad@base_55:inject 15:62:r7:sub@base_56:inject +igneum-ca3-v4-uniform/354 0e10cab2753c5e15 0 0:0:0 1:1:1 2:1:1 3:0:0 4:1:0 5:0:0 6:2:3 7:0:0 8:2:1 9:2:2 10:1:1 11:0:0 12:2:3 13:2:1 14:2:2 15:1:1 2 0 0 1 1 0:1:r7:mulhi@base_0:lossy 1:5:r6:sub@base_3:inject 2:8:r5:shfl@base_4:inject 3:10:r4:load@base_5:inject 4:18:r0:add@base_17:inject 5:19:r6:xor@base_16:inject 6:21:r0:mad@base_20:inject 7:22:r1:load@base_10:inject 8:29:r0:mad@base_26:inject 9:31:r6:rotr@base_28:bijective 10:32:r5:load@base_29:inject 11:34:r4:load@base_22:inject 12:39:r3:load@base_21:inject 13:42:r1:mad@base_25:inject 14:43:r7:mul@base_30:lossy 15:46:r6:load@base_39:inject +igneum-ca3-v4-uniform/355 00a39604a829883d 0 0:0:0 1:1:1 2:1:0 3:2:1 4:2:0 5:2:2 6:1:1 7:2:1 8:1:1 9:0:0 10:1:1 11:1:0 12:1:0 13:0:0 14:0:0 15:1:1 6 2 0 4 0 0:1:r0:mul@base_0:lossy 1:5:r1:load@base_1:inject 2:8:r6:rotl@base_6:bijective 3:13:r6:or@base_11:lossy 4:25:r7:mul@base_12:lossy 5:35:r6:add@base_31:inject 6:36:r1:or@base_19:lossy 7:40:r5:mul@base_30:lossy 8:50:r6:sub@base_45:inject 9:53:r3:rotl@base_46:bijective 10:55:r1:load@base_50:inject 11:58:r1:shfl@base_56:inject 12:59:r4:load@base_40:inject 13:61:r0:load@base_59:inject 14:62:r2:mul@base_47:lossy 15:63:r5:load@base_62:inject +igneum-ca3-v4-uniform/356 a2082bfdeadf815d 0 0:1:1 1:0:0 2:1:1 3:1:1 4:0:0 5:1:1 6:0:0 7:1:0 8:0:0 9:2:0 10:1:1 11:0:0 12:0:0 13:1:0 14:1:0 15:2:1 3 1 0 1 1 0:3:r2:rotr@base_2:bijective 1:11:r0:shfl@base_8:inject 2:12:r3:rotr@base_5:bijective 3:13:r4:sub@base_6:inject 4:14:r2:load@base_12:inject 5:19:r0:rotl@base_18:bijective 6:21:r7:or@base_10:lossy 7:22:r3:load@base_19:inject 8:26:r1:xor@base_23:inject 9:29:r6:mulhi@base_28:lossy 10:33:r3:shfl@base_30:inject 11:46:r3:mul@base_36:lossy 12:50:r5:mad@base_49:inject 13:57:r0:load@base_33:inject 14:58:r3:mad@base_56:inject 15:63:r2:load@base_50:inject +igneum-ca3-v4-uniform/357 af3945a94b75bca8 0 0:1:1 1:1:1 2:1:1 3:2:1 4:2:0 5:0:0 6:1:0 7:2:0 8:1:1 9:2:2 10:1:1 11:1:1 12:1:0 13:0:0 14:0:0 15:0:0 0 0 0 0 0 0:1:r3:xor@base_0:inject 1:4:r2:rotl@base_3:bijective 2:11:r2:sub@base_10:inject 3:12:r3:rotl@base_8:bijective 4:13:r1:load@base_12:inject 5:14:r7:load@base_11:inject 6:17:r3:load@base_14:inject 7:28:r2:mad@base_23:inject 8:29:r4:load@base_28:inject 9:30:r1:add@base_21:inject 10:31:r0:add@base_26:inject 11:35:r2:load@base_30:inject 12:44:r0:mad@base_42:inject 13:51:r0:mad@base_47:inject 14:56:r7:load@base_51:inject 15:63:r5:add@base_58:inject +igneum-ca3-v4-uniform/358 41b37b7d1609bb5c 0 0:2:3 1:0:0 2:1:0 3:0:0 4:1:0 5:1:0 6:1:0 7:0:0 8:1:0 9:1:1 10:0:0 11:2:0 12:2:0 13:0:0 14:2:2 15:0:0 3 1 0 0 2 0:1:r1:add@base_0:inject 1:7:r4:sub@base_4:inject 2:20:r3:rotl@base_16:bijective 3:23:r0:rotr@base_21:bijective 4:24:r7:sub@base_13:inject 5:28:r5:rotr@base_5:bijective 6:30:r1:add@base_17:inject 7:34:r6:rotl@base_25:bijective 8:35:r4:load@base_34:inject 9:36:r5:mulhi@base_29:lossy 10:41:r3:load@base_30:inject 11:47:r0:xor@base_40:inject 12:54:r7:mulhi@base_52:lossy 13:59:r1:add@base_50:inject 14:62:r1:add@base_60:inject 15:63:r0:or@base_57:lossy +igneum-ca3-v4-uniform/359 4fa10c811155af74 0 0:1:1 1:1:0 2:2:2 3:2:3 4:2:1 5:2:2 6:0:0 7:0:0 8:0:0 9:2:1 10:1:0 11:1:0 12:0:0 13:2:3 14:1:1 15:2:1 3 2 0 1 0 0:1:r4:add@base_0:inject 1:2:r2:load@base_1:inject 2:4:r1:or@base_3:lossy 3:18:r7:or@base_14:lossy 4:20:r1:mad@base_19:inject 5:31:r0:rotl@base_22:bijective 6:32:r3:xor@base_25:inject 7:35:r4:mul@base_33:lossy 8:36:r5:add@base_34:inject 9:38:r2:shfl@base_28:inject 10:40:r7:load@base_38:inject 11:43:r1:load@base_35:inject 12:46:r5:xor@base_45:inject 13:48:r6:load@base_46:inject 14:54:r1:shfl@base_53:inject 15:63:r3:mad@base_62:inject +igneum-ca3-v4-uniform/360 242c66a691171717 0 0:0:0 1:1:1 2:0:0 3:0:0 4:2:0 5:1:0 6:2:2 7:1:0 8:0:0 9:0:0 10:2:2 11:2:0 12:0:0 13:1:0 14:2:3 15:0:0 3 2 0 0 1 0:5:r1:add@base_2:inject 1:9:r1:xor@base_8:inject 2:16:r0:shfl@base_10:inject 3:18:r5:shfl@base_15:inject 4:21:r4:load@base_18:inject 5:22:r5:mulhi@base_20:lossy 6:24:r7:mad@base_17:inject 7:26:r1:load@base_22:inject 8:35:r6:sub@base_27:inject 9:36:r5:or@base_34:lossy 10:39:r0:xor@base_23:inject 11:44:r7:add@base_37:inject 12:49:r6:or@base_45:lossy 13:53:r4:shfl@base_48:inject 14:60:r2:load@base_49:inject 15:61:r7:load@base_53:inject +igneum-ca3-v4-uniform/361 3cc66e1402d57580 0 0:0:0 1:2:0 2:1:0 3:0:0 4:2:2 5:1:0 6:0:0 7:2:3 8:1:1 9:1:1 10:0:0 11:0:0 12:0:0 13:1:1 14:1:1 15:2:1 2 1 1 0 1 0:10:r4:rotr@base_9:bijective 1:11:r7:shfl@base_8:inject 2:14:r5:rotr@base_12:bijective 3:18:r2:or@base_1:lossy-or-chain1 4:20:r4:sub@base_17:inject 5:27:r6:rotl@base_21:bijective 6:31:r0:mulhi@base_30:lossy 7:33:r4:load@base_31:inject 8:34:r5:add@base_25:inject 9:43:r3:sub@base_41:inject 10:50:r6:mad@base_42:inject 11:51:r1:sub@base_46:inject 12:52:r7:add@base_37:inject 13:54:r4:mad@base_53:inject 14:60:r2:load@base_43:inject 15:62:r4:mad@base_61:inject +igneum-ca3-v4-uniform/362 cc65508952ab3fdc 0 0:2:0 1:2:2 2:2:3 3:2:1 4:2:2 5:2:3 6:1:0 7:1:1 8:1:1 9:1:1 10:1:0 11:0:0 12:2:0 13:0:0 14:1:1 15:0:0 5 0 0 1 4 0:2:r2:rotl@base_0:bijective 1:6:r0:mulhi@base_5:lossy 2:7:r4:load@base_6:inject 3:11:r3:rotl@base_8:bijective 4:15:r7:mul@base_13:lossy 5:19:r4:add@base_18:inject 6:21:r6:mulhi@base_17:lossy 7:22:r1:load@base_15:inject 8:26:r7:load@base_22:inject 9:33:r0:mulhi@base_29:lossy 10:35:r2:xor@base_31:inject 11:38:r6:rotl@base_36:bijective 12:53:r6:mulhi@base_51:lossy 13:56:r7:add@base_55:inject 14:57:r1:xor@base_52:inject 15:62:r4:add@base_42:inject +igneum-ca3-v4-uniform/363 f3ab77b2fe70bc9c 0 0:2:3 1:2:2 2:0:0 3:2:3 4:1:0 5:2:1 6:2:2 7:0:0 8:0:0 9:1:0 10:0:0 11:0:0 12:0:0 13:2:3 14:1:1 15:2:1 2 1 0 1 0 0:1:r2:add@base_0:inject 1:3:r2:rotl@base_2:bijective 2:18:r1:sub@base_4:inject 3:20:r3:rotr@base_13:bijective 4:25:r7:or@base_21:lossy 5:29:r3:xor@base_26:inject 6:34:r2:add@base_32:inject 7:40:r6:mul@base_35:lossy 8:43:r3:load@base_40:inject 9:45:r4:add@base_33:inject 10:47:r5:xor@base_39:inject 11:52:r1:rotl@base_31:bijective 12:54:r7:xor@base_46:inject 13:56:r5:rotl@base_55:bijective 14:60:r6:rotl@base_59:bijective 15:62:r2:xor@base_48:inject +igneum-ca3-v4-uniform/364 63555275839b205c 0 0:1:1 1:0:0 2:1:0 3:2:1 4:1:0 5:0:0 6:0:0 7:0:0 8:0:0 9:0:0 10:2:3 11:0:0 12:2:1 13:2:1 14:2:3 15:1:0 6 2 0 2 2 0:7:r4:shfl@base_4:inject 1:9:r3:or@base_5:lossy 2:11:r7:load@base_7:inject 3:15:r6:mulhi@base_14:lossy 4:22:r3:mul@base_16:lossy 5:25:r4:xor@base_21:inject 6:26:r1:xor@base_23:inject 7:27:r2:add@base_17:inject 8:28:r7:load@base_26:inject 9:34:r0:or@base_32:lossy 10:39:r3:mul@base_38:lossy 11:42:r1:mad@base_30:inject 12:45:r7:add@base_40:inject 13:47:r5:mulhi@base_46:lossy 14:52:r5:add@base_49:inject 15:58:r3:sub@base_57:inject +igneum-ca3-v4-uniform/365 2fb0cc1232a920d2 0 0:0:0 1:2:3 2:0:0 3:0:0 4:1:1 5:1:1 6:2:0 7:2:2 8:1:1 9:0:0 10:2:1 11:0:0 12:0:0 13:2:2 14:1:1 15:2:0 2 1 0 0 1 0:4:r7:sub@base_2:inject 1:10:r0:sub@base_6:inject 2:13:r2:load@base_10:inject 3:14:r3:rotr@base_5:bijective 4:15:r6:add@base_11:inject 5:20:r7:load@base_15:inject 6:22:r2:xor@base_21:inject 7:23:r7:load@base_22:inject 8:32:r3:load@base_23:inject 9:36:r4:add@base_27:inject 10:48:r5:xor@base_47:inject 11:54:r7:or@base_33:lossy 12:55:r2:shfl@base_30:inject 13:57:r3:mulhi@base_44:lossy 14:59:r1:add@base_38:inject 15:63:r4:rotl@base_60:bijective +igneum-ca3-v4-uniform/366 84cfce5fcae287e2 0 0:0:0 1:0:0 2:0:0 3:0:0 4:0:0 5:2:1 6:1:0 7:0:0 8:0:0 9:2:2 10:0:0 11:0:0 12:2:1 13:1:0 14:0:0 15:0:0 3 0 0 0 3 0:2:r1:add@base_0:inject 1:4:r2:mad@base_1:inject 2:16:r7:mulhi@base_7:lossy 3:17:r1:mulhi@base_15:lossy 4:25:r1:rotl@base_22:bijective 5:36:r0:rotr@base_21:bijective 6:37:r5:add@base_34:inject 7:38:r3:load@base_37:inject 8:41:r2:load@base_38:inject 9:42:r4:rotr@base_31:bijective 10:44:r1:load@base_41:inject 11:53:r1:mulhi@base_47:lossy 12:56:r5:mad@base_51:inject 13:57:r3:load@base_44:inject 14:58:r4:shfl@base_52:inject 15:60:r2:load@base_58:inject +igneum-ca3-v4-uniform/367 c79a0347a79aa428 0 0:1:0 1:1:1 2:0:0 3:2:3 4:2:3 5:2:3 6:1:1 7:1:1 8:1:0 9:2:3 10:2:1 11:1:1 12:1:0 13:0:0 14:0:0 15:1:1 4 2 0 1 1 0:11:r7:mad@base_4:inject 1:12:r5:rotr@base_0:bijective 2:15:r4:or@base_8:lossy 3:16:r0:load@base_15:inject 4:19:r0:or@base_18:lossy 5:25:r2:mul@base_22:lossy 6:27:r6:mulhi@base_24:lossy 7:35:r7:add@base_32:inject 8:43:r5:add@base_28:inject 9:47:r1:shfl@base_45:inject 10:48:r6:xor@base_41:inject 11:49:r2:mad@base_46:inject 12:51:r7:load@base_43:inject 13:58:r3:add@base_56:inject 14:59:r1:add@base_57:inject 15:60:r5:load@base_58:inject +igneum-ca3-v4-uniform/368 5ee5876a92636fe8 0 0:1:0 1:1:1 2:2:1 3:0:0 4:2:0 5:0:0 6:2:3 7:0:0 8:1:1 9:2:0 10:2:1 11:1:1 12:1:1 13:0:0 14:2:0 15:0:0 4 1 0 2 1 0:3:r7:add@base_1:inject 1:7:r0:rotl@base_5:bijective 2:9:r6:mul@base_6:lossy 3:18:r3:mul@base_16:lossy 4:20:r0:xor@base_17:inject 5:23:r7:shfl@base_21:inject 6:27:r1:load@base_23:inject 7:33:r5:add@base_22:inject 8:36:r1:load@base_33:inject 9:38:r3:shfl@base_32:inject 10:47:r3:add@base_46:inject 11:50:r4:mulhi@base_44:lossy 12:51:r1:rotl@base_41:bijective 13:52:r7:add@base_48:inject 14:59:r7:rotr@base_55:bijective 15:61:r1:or@base_56:lossy +igneum-ca3-v4-uniform/369 d2099dd9fee73306 0 0:0:0 1:1:1 2:2:2 3:2:1 4:0:0 5:1:1 6:1:0 7:2:1 8:1:0 9:1:1 10:0:0 11:0:0 12:1:1 13:0:0 14:0:0 15:0:0 3 0 0 2 1 0:1:r6:mad@base_0:inject 1:5:r6:add@base_4:inject 2:10:r1:load@base_5:inject 3:21:r3:sub@base_16:inject 4:23:r2:rotl@base_17:bijective 5:30:r6:mulhi@base_28:lossy 6:32:r5:load@base_30:inject 7:43:r6:rotl@base_37:bijective 8:44:r4:load@base_43:inject 9:47:r2:xor@base_41:inject 10:51:r7:mad@base_45:inject 11:53:r0:mul@base_31:lossy 12:55:r4:load@base_53:inject 13:56:r1:load@base_55:inject 14:57:r5:mul@base_52:lossy 15:58:r6:load@base_56:inject +igneum-ca3-v4-uniform/370 9e9212215804dc82 0 0:2:3 1:0:0 2:2:1 3:2:2 4:2:0 5:1:1 6:1:1 7:1:1 8:2:2 9:1:1 10:1:0 11:0:0 12:2:2 13:1:1 14:1:1 15:0:0 3 0 0 1 2 0:9:r4:rotr@base_6:bijective 1:12:r7:rotr@base_10:bijective 2:13:r5:xor@base_5:inject 3:19:r2:load@base_9:inject 4:25:r1:rotr@base_24:bijective 5:28:r5:add@base_27:inject 6:31:r4:rotr@base_30:bijective 7:35:r6:xor@base_18:inject 8:36:r7:xor@base_34:inject 9:37:r2:rotr@base_33:bijective 10:41:r4:mulhi@base_32:lossy 11:44:r6:mul@base_42:lossy 12:49:r4:add@base_47:inject 13:60:r1:xor@base_55:inject 14:61:r6:mulhi@base_51:lossy 15:62:r5:load@base_60:inject +igneum-ca3-v4-uniform/371 66141f0ce327a461 0 0:0:0 1:0:0 2:0:0 3:2:2 4:2:1 5:2:0 6:0:0 7:2:0 8:1:0 9:0:0 10:1:0 11:2:0 12:0:0 13:2:3 14:2:1 15:0:0 2 1 0 0 1 0:2:r1:mulhi@base_1:lossy 1:4:r0:shfl@base_3:inject 2:7:r2:load@base_2:inject 3:8:r6:load@base_7:inject 4:9:r7:load@base_8:inject 5:14:r5:xor@base_13:inject 6:20:r7:mad@base_19:inject 7:34:r2:rotr@base_31:bijective 8:40:r7:add@base_39:inject 9:42:r7:sub@base_41:inject 10:45:r1:add@base_44:inject 11:46:r0:rotr@base_18:bijective 12:55:r2:or@base_48:lossy 13:57:r5:shfl@base_52:inject 14:60:r0:sub@base_58:inject 15:63:r2:rotr@base_56:bijective +igneum-ca3-v4-uniform/372 3460f8558dda6579 0 0:2:2 1:1:1 2:2:3 3:2:2 4:0:0 5:2:1 6:0:0 7:1:0 8:2:3 9:2:1 10:2:1 11:0:0 12:0:0 13:1:1 14:2:1 15:2:1 3 2 0 1 0 0:7:r4:add@base_5:inject 1:9:r1:shfl@base_8:inject 2:15:r2:shfl@base_12:inject 3:18:r1:add@base_16:inject 4:20:r7:mad@base_11:inject 5:26:r1:mad@base_25:inject 6:31:r5:load@base_20:inject 7:34:r4:rotr@base_21:bijective 8:35:r1:mul@base_32:lossy 9:39:r7:rotr@base_37:bijective 10:43:r3:add@base_38:inject 11:46:r2:shfl@base_41:inject 12:48:r7:or@base_45:lossy 13:49:r6:or@base_47:lossy 14:56:r0:rotl@base_52:bijective 15:57:r4:rotr@base_55:bijective +igneum-ca3-v4-uniform/373 31166b162488fc73 0 0:2:3 1:0:0 2:1:1 3:2:3 4:1:1 5:1:1 6:1:1 7:0:0 8:2:1 9:1:1 10:0:0 11:1:1 12:1:1 13:1:0 14:0:0 15:1:0 2 1 0 1 0 0:5:r2:add@base_4:inject 1:8:r5:rotl@base_6:bijective 2:22:r3:mul@base_21:lossy 3:23:r6:load@base_22:inject 4:24:r7:add@base_18:inject 5:25:r5:load@base_23:inject 6:26:r6:load@base_25:inject 7:31:r6:or@base_27:lossy 8:32:r2:load@base_31:inject 9:36:r7:load@base_32:inject 10:39:r1:load@base_26:inject 11:49:r0:rotl@base_47:bijective 12:50:r4:xor@base_48:inject 13:51:r6:xor@base_42:inject 14:53:r1:load@base_51:inject 15:60:r2:mad@base_58:inject +igneum-ca3-v4-uniform/374 4ffed6a3f00d7018 0 0:0:0 1:2:3 2:1:0 3:1:0 4:1:0 5:0:0 6:1:0 7:1:0 8:1:0 9:0:0 10:1:1 11:2:3 12:2:2 13:2:3 14:0:0 15:2:1 5 1 0 2 2 0:5:r6:add@base_2:inject 1:7:r2:mad@base_1:inject 2:11:r3:load@base_7:inject 3:14:r4:load@base_11:inject 4:20:r0:shfl@base_4:inject 5:23:r6:shfl@base_21:inject 6:24:r7:mul@base_22:lossy 7:26:r2:mul@base_16:lossy 8:33:r4:mulhi@base_18:lossy 9:35:r5:load@base_33:inject 10:43:r4:mad@base_42:inject 11:49:r3:or@base_29:lossy 12:51:r0:mad@base_48:inject 13:52:r4:rotr@base_47:bijective 14:61:r4:xor@base_58:inject 15:62:r5:mulhi@base_60:lossy +igneum-ca3-v4-uniform/375 658073e6920bb5ed 0 0:1:1 1:0:0 2:1:0 3:1:1 4:0:0 5:0:0 6:0:0 7:1:0 8:1:1 9:1:0 10:0:0 11:0:0 12:0:0 13:2:3 14:1:0 15:1:1 4 2 1 1 1 0:4:r6:rotl@base_3:bijective 1:14:r2:rotl@base_13:bijective 2:17:r6:load@base_14:inject 3:21:r4:or@base_16:lossy 4:23:r0:add@base_20:inject 5:27:r2:mulhi@base_22:lossy 6:31:r0:rotr@base_29:bijective 7:34:r4:shfl@base_30:inject 8:35:r5:load@base_27:inject 9:36:r1:or@base_25:lossy-or-chain1 10:39:r2:load@base_36:inject 11:47:r1:load@base_39:inject 12:49:r5:xor@base_48:inject 13:52:r6:sub@base_51:inject 14:62:r2:mul@base_57:lossy 15:63:r5:load@base_52:inject +igneum-ca3-v4-uniform/376 122b498deda4bfff 0 0:0:0 1:2:1 2:1:1 3:1:1 4:0:0 5:0:0 6:0:0 7:1:1 8:1:0 9:2:0 10:1:0 11:2:0 12:2:0 13:2:1 14:1:0 15:2:3 1 0 0 1 0 0:7:r7:add@base_6:inject 1:10:r1:sub@base_9:inject 2:11:r3:mad@base_3:inject 3:13:r7:load@base_10:inject 4:16:r2:load@base_7:inject 5:18:r1:mul@base_17:lossy 6:19:r6:load@base_18:inject 7:21:r3:load@base_13:inject 8:22:r7:load@base_21:inject 9:31:r6:add@base_23:inject 10:36:r3:xor@base_32:inject 11:42:r0:xor@base_38:inject 12:53:r1:xor@base_34:inject 13:54:r5:sub@base_44:inject 14:57:r4:xor@base_50:inject 15:61:r6:sub@base_58:inject +igneum-ca3-v4-uniform/377 65bdd213f7f37e2e 0 0:0:0 1:2:0 2:1:0 3:2:1 4:0:0 5:2:3 6:2:1 7:2:0 8:0:0 9:0:0 10:2:2 11:0:0 12:2:0 13:1:1 14:2:3 15:0:0 0 0 0 0 0 0:12:r0:xor@base_4:inject 1:14:r6:shfl@base_6:inject 2:16:r1:load@base_12:inject 3:18:r7:xor@base_8:inject 4:21:r5:load@base_18:inject 5:22:r0:load@base_21:inject 6:27:r4:load@base_14:inject 7:33:r7:load@base_22:inject 8:34:r3:add@base_11:inject 9:35:r0:load@base_27:inject 10:36:r6:load@base_34:inject 11:39:r2:rotl@base_32:bijective 12:47:r6:rotl@base_42:bijective 13:49:r1:mad@base_41:inject 14:54:r0:rotl@base_53:bijective 15:58:r2:mad@base_55:inject +igneum-ca3-v4-uniform/378 340b630c9848b35c 0 0:2:0 1:0:0 2:0:0 3:0:0 4:0:0 5:0:0 6:2:0 7:0:0 8:2:2 9:2:2 10:2:0 11:0:0 12:1:0 13:1:0 14:0:0 15:0:0 3 1 1 1 1 0:2:r2:add@base_0:inject 1:3:r5:sub@base_1:inject 2:8:r0:load@base_3:inject 3:16:r1:xor@base_14:inject 4:22:r6:add@base_15:inject 5:24:r3:shfl@base_23:inject 6:31:r0:mul@base_21:lossy 7:33:r4:load@base_8:inject 8:37:r5:mulhi@base_19:lossy 9:42:r3:shfl@base_38:inject 10:43:r1:load@base_42:inject 11:44:r0:load@base_37:inject 12:52:r6:add@base_39:inject 13:58:r7:or@base_57:lossy-or-chain1 14:62:r2:load@base_43:inject 15:63:r6:load@base_58:inject +igneum-ca3-v4-uniform/379 9591ac11ea5e1c03 0 0:0:0 1:2:0 2:0:0 3:0:0 4:1:0 5:0:0 6:0:0 7:1:1 8:1:0 9:1:0 10:2:0 11:2:3 12:1:0 13:1:1 14:1:1 15:0:0 5 1 0 3 1 0:2:r7:shfl@base_1:inject 1:3:r6:load@base_2:inject 2:4:r3:load@base_3:inject 3:10:r6:or@base_9:lossy 4:21:r5:mul@base_13:lossy 5:27:r1:add@base_18:inject 6:32:r5:rotr@base_29:bijective 7:37:r4:rotr@base_26:bijective 8:44:r3:add@base_41:inject 9:45:r5:mul@base_39:lossy 10:46:r2:mulhi@base_15:lossy 11:48:r2:mul@base_47:lossy 12:51:r6:rotl@base_43:bijective 13:53:r0:load@base_37:inject 14:54:r7:load@base_44:inject 15:60:r5:mad@base_58:inject +igneum-ca3-v4-uniform/380 fc86faf767097d04 0 0:2:3 1:1:0 2:2:2 3:0:0 4:2:0 5:2:1 6:2:2 7:0:0 8:1:0 9:1:1 10:0:0 11:2:3 12:1:0 13:0:0 14:0:0 15:0:0 5 1 0 3 1 0:2:r7:sub@base_1:inject 1:6:r5:xor@base_0:inject 2:10:r3:xor@base_5:inject 3:16:r3:add@base_13:inject 4:18:r7:load@base_10:inject 5:19:r6:load@base_6:inject 6:20:r2:mul@base_17:lossy 7:28:r7:mulhi@base_24:lossy 8:33:r6:or@base_23:lossy 9:40:r1:mul@base_27:lossy 10:44:r7:add@base_43:inject 11:46:r2:load@base_44:inject 12:49:r6:mul@base_48:lossy 13:52:r2:add@base_50:inject 14:53:r0:load@base_52:inject 15:63:r5:mad@base_61:inject +igneum-ca3-v4-uniform/381 b51228f47408c9d9 0 0:0:0 1:1:1 2:2:1 3:2:2 4:1:1 5:2:0 6:2:3 7:0:0 8:0:0 9:1:0 10:2:3 11:0:0 12:2:3 13:2:0 14:0:0 15:2:3 3 2 0 1 0 0:13:r4:or@base_4:lossy 1:15:r1:mad@base_8:inject 2:19:r2:rotl@base_18:bijective 3:23:r1:load@base_19:inject 4:30:r3:mul@base_28:lossy 5:36:r5:rotl@base_25:bijective 6:39:r0:load@base_30:inject 7:40:r4:load@base_36:inject 8:41:r5:load@base_39:inject 9:45:r0:mad@base_44:inject 10:49:r7:xor@base_48:inject 11:51:r2:mad@base_50:inject 12:53:r6:load@base_45:inject 13:59:r4:xor@base_46:inject 14:60:r2:load@base_59:inject 15:63:r5:or@base_58:lossy +igneum-ca3-v4-uniform/382 6b7e5a4afb7cf33d 0 0:1:1 1:1:0 2:0:0 3:0:0 4:0:0 5:1:1 6:1:0 7:0:0 8:1:1 9:2:1 10:2:0 11:2:1 12:1:0 13:1:1 14:0:0 15:1:0 3 1 0 1 1 0:1:r7:rotl@base_0:bijective 1:2:r5:load@base_1:inject 2:4:r3:xor@base_3:inject 3:9:r1:load@base_4:inject 4:10:r2:load@base_2:inject 5:17:r0:shfl@base_16:inject 6:20:r2:load@base_17:inject 7:23:r7:rotl@base_18:bijective 8:24:r5:load@base_23:inject 9:25:r4:sub@base_19:inject 10:35:r3:rotl@base_27:bijective 11:41:r4:mul@base_39:lossy 12:43:r1:mulhi@base_38:lossy 13:45:r3:load@base_43:inject 14:52:r7:add@base_33:inject 15:63:r7:or@base_55:lossy +igneum-ca3-v4-uniform/383 f8da502b23ce5484 1 0:2:1 1:0:0 2:2:1 3:2:3 4:2:1 5:2:1 6:1:0 7:1:1 8:1:1 9:1:0 10:1:0 11:1:1 12:1:1 13:2:0 14:2:2 15:0:0 3 1 0 2 0 0:2:r2:xor@base_0:inject 1:3:r3:add@base_1:inject 2:4:r4:load@base_3:inject 3:5:r1:load@base_2:inject 4:14:r4:xor@base_9:inject 5:16:r3:or@base_7:lossy 6:20:r4:xor@base_17:inject 7:32:r7:sub@base_31:inject 8:44:r1:mul@base_36:lossy 9:48:r3:sub@base_37:inject 10:50:r6:add@base_49:inject 11:51:r0:load@base_44:inject 12:53:r7:add@base_52:inject 13:59:r7:shfl@base_56:inject 14:60:r2:load@base_48:inject 15:62:r0:mul@base_54:lossy +igneum-ca3-v4-uniform/384 f79756c455d2df7f 0 0:0:0 1:2:2 2:1:1 3:2:3 4:1:1 5:1:0 6:1:1 7:1:0 8:0:0 9:2:3 10:1:1 11:1:1 12:0:0 13:1:1 14:1:1 15:1:0 4 0 0 2 2 0:3:r3:rotl@base_2:bijective 1:5:r7:rotr@base_1:bijective 2:7:r0:load@base_3:inject 3:8:r2:mulhi@base_4:lossy 4:14:r6:mul@base_10:lossy 5:15:r7:load@base_8:inject 6:16:r2:load@base_15:inject 7:17:r3:rotl@base_12:bijective 8:20:r0:mad@base_19:inject 9:33:r0:mul@base_26:lossy 10:34:r4:mad@base_29:inject 11:36:r3:rotl@base_25:bijective 12:46:r5:sub@base_39:inject 13:49:r2:load@base_36:inject 14:53:r2:sub@base_50:inject 15:57:r1:mulhi@base_55:lossy +igneum-ca3-v4-uniform/385 3085621918bc901f 0 0:1:0 1:2:1 2:2:3 3:2:1 4:0:0 5:1:1 6:1:1 7:1:1 8:1:1 9:2:3 10:0:0 11:1:0 12:2:2 13:0:0 14:0:0 15:0:0 5 1 0 1 3 0:1:r1:mul@base_0:lossy 1:3:r7:mulhi@base_2:lossy 2:11:r4:xor@base_8:inject 3:14:r5:or@base_13:lossy 4:16:r7:rotl@base_9:bijective 5:19:r1:add@base_15:inject 6:27:r1:rotl@base_26:bijective 7:29:r5:sub@base_23:inject 8:30:r6:load@base_19:inject 9:31:r3:load@base_30:inject 10:32:r7:load@base_31:inject 11:35:r2:load@base_27:inject 12:44:r1:load@base_32:inject 13:51:r1:mulhi@base_49:lossy 14:53:r6:mulhi@base_47:lossy 15:56:r7:add@base_55:inject +igneum-ca3-v4-uniform/386 c50dbdd9db14fce3 0 0:0:0 1:2:0 2:2:1 3:0:0 4:2:1 5:0:0 6:1:1 7:2:3 8:0:0 9:1:0 10:2:2 11:0:0 12:2:2 13:0:0 14:2:2 15:0:0 4 2 0 2 0 0:3:r1:mul@base_1:lossy 1:10:r7:mad@base_7:inject 2:16:r7:rotl@base_14:bijective 3:19:r0:xor@base_8:inject 4:21:r1:shfl@base_20:inject 5:25:r0:xor@base_24:inject 6:30:r2:mul@base_5:lossy 7:31:r5:or@base_29:lossy 8:32:r4:xor@base_17:inject 9:33:r1:load@base_30:inject 10:36:r7:mad@base_28:inject 11:47:r4:or@base_37:lossy 12:54:r6:sub@base_51:inject 13:57:r1:load@base_47:inject 14:61:r4:add@base_52:inject 15:63:r2:add@base_58:inject +igneum-ca3-v4-uniform/387 c196ff7385a25cc5 0 0:1:1 1:2:3 2:2:0 3:0:0 4:0:0 5:0:0 6:1:0 7:2:3 8:0:0 9:0:0 10:1:1 11:1:1 12:1:1 13:0:0 14:0:0 15:2:0 1 0 0 0 1 0:8:r4:rotl@base_1:bijective 1:10:r2:add@base_7:inject 2:12:r0:mulhi@base_4:lossy 3:14:r6:load@base_8:inject 4:17:r1:xor@base_16:inject 5:18:r5:add@base_5:inject 6:26:r4:sub@base_21:inject 7:28:r2:mad@base_19:inject 8:30:r1:load@base_28:inject 9:32:r3:rotr@base_27:bijective 10:39:r5:load@base_26:inject 11:44:r6:rotl@base_38:bijective 12:45:r0:rotl@base_40:bijective 13:53:r2:mad@base_46:inject 14:56:r5:mad@base_54:inject 15:59:r4:rotl@base_57:bijective +igneum-ca3-v4-uniform/388 6440f3308c9681c7 0 0:2:2 1:1:0 2:1:1 3:1:0 4:1:1 5:2:1 6:2:2 7:0:0 8:0:0 9:1:0 10:2:1 11:2:2 12:1:1 13:2:0 14:0:0 15:0:0 5 0 0 3 2 0:2:r1:add@base_1:inject 1:6:r0:shfl@base_5:inject 2:9:r0:mulhi@base_8:lossy 3:10:r1:load@base_9:inject 4:12:r6:mul@base_7:lossy 5:18:r4:rotl@base_15:bijective 6:34:r3:mulhi@base_24:lossy 7:35:r0:sub@base_28:inject 8:36:r6:rotr@base_33:bijective 9:40:r5:add@base_39:inject 10:41:r4:mul@base_31:lossy 11:52:r7:mul@base_51:lossy 12:53:r6:xor@base_43:inject 13:54:r2:mad@base_50:inject 14:59:r0:load@base_52:inject 15:63:r4:rotl@base_60:bijective +igneum-ca3-v4-uniform/389 ac4122370ff8721d 0 0:2:1 1:2:2 2:0:0 3:1:1 4:0:0 5:0:0 6:2:0 7:0:0 8:1:1 9:0:0 10:1:1 11:0:0 12:1:1 13:0:0 14:1:1 15:2:2 5 0 0 3 2 0:2:r6:xor@base_0:inject 1:12:r1:mulhi@base_9:lossy 2:14:r0:mad@base_10:inject 3:22:r4:mulhi@base_19:lossy 4:23:r3:load@base_22:inject 5:25:r7:mul@base_21:lossy 6:29:r5:add@base_26:inject 7:35:r0:mul@base_33:lossy 8:41:r4:sub@base_36:inject 9:44:r2:mul@base_42:lossy 10:48:r4:add@base_46:inject 11:49:r6:load@base_48:inject 12:53:r4:load@base_49:inject 13:55:r7:rotr@base_40:bijective 14:56:r3:add@base_50:inject 15:59:r2:load@base_56:inject +igneum-ca3-v4-uniform/390 06b0019bac115fe4 0 0:2:0 1:1:0 2:2:1 3:1:1 4:2:0 5:0:0 6:2:2 7:0:0 8:1:1 9:0:0 10:2:2 11:0:0 12:2:2 13:0:0 14:0:0 15:2:2 3 1 0 1 1 0:2:r4:add@base_0:inject 1:4:r6:rotl@base_3:bijective 2:8:r7:load@base_4:inject 3:13:r2:add@base_10:inject 4:14:r3:rotl@base_9:bijective 5:16:r6:load@base_13:inject 6:21:r5:shfl@base_15:inject 7:22:r7:xor@base_20:inject 8:23:r3:load@base_22:inject 9:29:r7:or@base_26:lossy 10:37:r0:rotl@base_30:bijective 11:47:r3:xor@base_41:inject 12:50:r7:mul@base_38:lossy 13:52:r1:shfl@base_42:inject 14:57:r2:mulhi@base_48:lossy 15:59:r3:mad@base_55:inject +igneum-ca3-v4-uniform/391 8985d0b207b40043 0 0:1:1 1:1:0 2:1:1 3:2:0 4:1:1 5:0:0 6:2:0 7:1:0 8:2:1 9:2:2 10:2:2 11:2:2 12:1:1 13:0:0 14:2:0 15:2:3 5 1 0 4 0 0:1:r2:add@base_0:inject 1:3:r0:shfl@base_2:inject 2:4:r3:load@base_3:inject 3:11:r6:mul@base_10:lossy 4:15:r5:load@base_11:inject 5:16:r6:load@base_15:inject 6:21:r2:or@base_14:lossy 7:22:r3:mul@base_6:lossy 8:23:r6:load@base_22:inject 9:27:r5:mul@base_26:lossy 10:40:r1:xor@base_31:inject 11:54:r1:mad@base_46:inject 12:55:r6:mul@base_47:lossy 13:56:r0:load@base_54:inject 14:61:r3:add@base_53:inject 15:62:r5:rotr@base_52:bijective +igneum-ca3-v4-uniform/392 a567fa91178c2d7c 0 0:2:1 1:2:2 2:0:0 3:1:0 4:2:0 5:0:0 6:0:0 7:0:0 8:1:0 9:0:0 10:2:3 11:2:2 12:1:1 13:1:0 14:1:0 15:0:0 5 0 0 3 2 0:5:r0:shfl@base_2:inject 1:16:r4:rotr@base_10:bijective 2:23:r1:rotr@base_14:bijective 3:30:r0:rotl@base_25:bijective 4:33:r3:mulhi@base_28:lossy 5:34:r5:load@base_30:inject 6:36:r6:load@base_33:inject 7:37:r4:mul@base_31:lossy 8:38:r3:mul@base_35:lossy 9:39:r0:load@base_37:inject 10:43:r2:add@base_41:inject 11:53:r3:mad@base_46:inject 12:54:r1:load@base_53:inject 13:57:r7:mad@base_50:inject 14:59:r4:mulhi@base_56:lossy 15:63:r5:mul@base_48:lossy +igneum-ca3-v4-uniform/393 f4de1e2b3293e186 0 0:1:0 1:1:0 2:1:1 3:1:1 4:0:0 5:0:0 6:2:1 7:1:0 8:0:0 9:0:0 10:2:1 11:1:0 12:0:0 13:1:1 14:2:0 15:1:1 2 0 0 2 0 0:7:r5:xor@base_0:inject 1:10:r7:load@base_7:inject 2:11:r0:sub@base_4:inject 3:14:r3:xor@base_12:inject 4:19:r7:sub@base_17:inject 5:24:r6:xor@base_23:inject 6:30:r4:mul@base_26:lossy 7:32:r7:shfl@base_31:inject 8:35:r2:rotl@base_27:bijective 9:38:r1:add@base_33:inject 10:41:r3:mul@base_39:lossy 11:54:r1:sub@base_50:inject 12:55:r7:xor@base_53:inject 13:60:r6:load@base_54:inject 14:62:r1:rotr@base_57:bijective 15:63:r0:rotl@base_51:bijective +igneum-ca3-v4-uniform/394 d5fe038280ad7043 0 0:2:0 1:2:0 2:2:0 3:2:0 4:2:2 5:1:1 6:0:0 7:1:0 8:0:0 9:1:1 10:0:0 11:2:2 12:2:0 13:0:0 14:2:3 15:1:1 4 1 0 2 1 0:2:r2:mad@base_0:inject 1:6:r7:mul@base_4:lossy 2:8:r1:mad@base_5:inject 3:10:r7:load@base_8:inject 4:16:r0:sub@base_11:inject 5:23:r4:xor@base_19:inject 6:24:r2:xor@base_20:inject 7:25:r3:add@base_17:inject 8:32:r5:xor@base_28:inject 9:34:r2:mulhi@base_33:lossy 10:41:r3:mul@base_30:lossy 11:55:r5:rotr@base_54:bijective 12:57:r1:rotl@base_45:bijective 13:58:r3:shfl@base_50:inject 14:61:r1:or@base_59:lossy 15:62:r2:load@base_58:inject +igneum-ca3-v4-uniform/395 2cb75d4120ee4bdd 0 0:1:1 1:2:1 2:1:0 3:0:0 4:2:0 5:1:1 6:2:0 7:0:0 8:2:3 9:2:0 10:0:0 11:0:0 12:1:1 13:0:0 14:1:0 15:1:0 3 0 0 2 1 0:1:r0:mad@base_0:inject 1:2:r2:load@base_1:inject 2:3:r0:load@base_2:inject 3:11:r6:mul@base_5:lossy 4:12:r4:mad@base_10:inject 5:15:r0:add@base_14:inject 6:23:r3:load@base_11:inject 7:24:r5:rotr@base_18:bijective 8:30:r7:xor@base_29:inject 9:37:r7:mulhi@base_34:lossy 10:39:r0:add@base_33:inject 11:52:r3:mad@base_48:inject 12:53:r5:shfl@base_50:inject 13:54:r2:mul@base_28:lossy 14:57:r7:mad@base_55:inject 15:62:r3:add@base_58:inject +igneum-ca3-v4-uniform/396 3749dc686967d321 0 0:1:1 1:1:0 2:2:2 3:0:0 4:0:0 5:2:1 6:0:0 7:1:1 8:0:0 9:2:1 10:2:0 11:0:0 12:2:2 13:0:0 14:2:2 15:0:0 6 1 0 2 3 0:1:r5:xor@base_0:inject 1:3:r7:rotl@base_2:bijective 2:11:r7:add@base_10:inject 3:18:r4:mulhi@base_13:lossy 4:19:r5:load@base_11:inject 5:20:r0:load@base_19:inject 6:31:r0:mulhi@base_25:lossy 7:36:r4:mul@base_34:lossy 8:37:r5:add@base_35:inject 9:44:r3:load@base_36:inject 10:47:r5:or@base_41:lossy 11:49:r0:load@base_44:inject 12:56:r6:mulhi@base_43:lossy 13:59:r0:add@base_53:inject 14:62:r1:mul@base_54:lossy 15:63:r5:sub@base_61:inject +igneum-ca3-v4-uniform/397 33fade550f148c13 0 0:0:0 1:0:0 2:1:1 3:1:0 4:0:0 5:1:0 6:1:1 7:0:0 8:1:0 9:1:1 10:2:3 11:2:2 12:0:0 13:0:0 14:1:1 15:1:0 1 0 0 0 1 0:4:r5:mad@base_3:inject 1:8:r2:xor@base_6:inject 2:10:r1:mulhi@base_2:lossy 3:18:r4:sub@base_16:inject 4:22:r7:load@base_10:inject 5:23:r5:add@base_21:inject 6:24:r0:load@base_18:inject 7:31:r1:xor@base_25:inject 8:32:r6:shfl@base_30:inject 9:33:r4:add@base_29:inject 10:45:r4:shfl@base_41:inject 11:49:r5:load@base_33:inject 12:52:r0:rotr@base_37:bijective 13:60:r4:shfl@base_58:inject 14:62:r1:shfl@base_61:inject 15:63:r5:rotl@base_56:bijective +igneum-ca3-v4-uniform/398 2ff586b6590aebd8 0 0:2:1 1:1:0 2:0:0 3:2:0 4:2:1 5:0:0 6:1:0 7:1:1 8:0:0 9:2:3 10:2:1 11:2:2 12:2:0 13:1:0 14:0:0 15:2:1 1 0 0 0 1 0:2:r2:rotr@base_0:bijective 1:3:r7:load@base_2:inject 2:6:r4:rotl@base_5:bijective 3:7:r2:load@base_3:inject 4:11:r3:load@base_6:inject 5:16:r1:load@base_7:inject 6:24:r4:add@base_22:inject 7:25:r7:load@base_16:inject 8:31:r5:mad@base_27:inject 9:32:r3:mad@base_28:inject 10:36:r1:rotl@base_34:bijective 11:38:r7:xor@base_37:inject 12:47:r4:load@base_31:inject 13:49:r7:mulhi@base_46:lossy 14:55:r3:add@base_41:inject 15:61:r7:xor@base_53:inject +igneum-ca3-v4-uniform/399 b2de98e212fec1ab 0 0:1:1 1:0:0 2:2:0 3:2:1 4:2:2 5:0:0 6:0:0 7:1:1 8:2:0 9:2:1 10:1:1 11:1:0 12:1:1 13:2:1 14:0:0 15:2:0 3 1 0 2 0 0:1:r7:or@base_0:lossy 1:8:r1:xor@base_6:inject 2:11:r0:mad@base_9:inject 3:14:r4:load@base_11:inject 4:20:r6:load@base_14:inject 5:27:r6:xor@base_21:inject 6:29:r2:mul@base_26:lossy 7:31:r7:load@base_29:inject 8:33:r4:load@base_27:inject 9:35:r3:rotl@base_4:bijective 10:36:r0:xor@base_34:inject 11:41:r5:mul@base_39:lossy 12:43:r6:shfl@base_42:inject 13:50:r0:shfl@base_47:inject 14:51:r1:add@base_46:inject 15:55:r5:load@base_51:inject +igneum-ca3-v4-uniform/400 a3a001be7f5a3fec 0 0:1:0 1:2:3 2:2:3 3:1:0 4:1:1 5:2:0 6:0:0 7:1:0 8:1:0 9:1:0 10:1:0 11:1:0 12:2:1 13:2:1 14:2:2 15:0:0 5 3 1 1 1 0:2:r6:xor@base_1:inject 1:14:r7:xor@base_11:inject 2:15:r6:shfl@base_4:inject 3:19:r5:or@base_16:lossy 4:22:r7:or@base_18:lossy 5:26:r5:or@base_21:lossy-or-chain1 6:27:r0:mad@base_25:inject 7:33:r3:sub@base_31:inject 8:34:r1:load@base_19:inject 9:39:r6:mulhi@base_35:lossy 10:44:r0:sub@base_32:inject 11:46:r2:load@base_33:inject 12:48:r4:add@base_45:inject 13:54:r5:mul@base_49:lossy 14:55:r7:rotr@base_53:bijective 15:57:r5:load@base_55:inject +igneum-ca3-v4-uniform/401 be74fa3e4218c64b 0 0:2:1 1:1:0 2:2:1 3:1:0 4:1:0 5:0:0 6:2:1 7:0:0 8:0:0 9:2:2 10:2:0 11:1:0 12:1:1 13:0:0 14:2:0 15:2:3 2 1 0 1 0 0:1:r6:mul@shadow_254:lossy 1:9:r6:sub@base_7:inject 2:10:r1:mad@base_6:inject 3:15:r7:load@base_9:inject 4:17:r6:rotl@base_14:bijective 5:19:r5:shfl@base_4:inject 6:21:r3:load@base_19:inject 7:34:r2:or@base_22:lossy 8:36:r1:shfl@base_31:inject 9:37:r7:xor@base_18:inject 10:39:r4:add@base_24:inject 11:45:r7:xor@base_44:inject 12:50:r6:load@base_45:inject 13:53:r2:mad@base_48:inject 14:55:r1:mad@base_46:inject 15:58:r7:add@base_57:inject +igneum-ca3-v4-uniform/402 4d06698449081a32 0 0:2:3 1:1:1 2:2:2 3:0:0 4:2:2 5:1:0 6:2:1 7:2:3 8:1:1 9:0:0 10:0:0 11:2:1 12:0:0 13:1:0 14:0:0 15:2:2 1 1 0 0 0 0:2:r1:or@base_1:lossy 1:9:r7:add@base_7:inject 2:10:r2:load@base_9:inject 3:11:r5:rotl@base_6:bijective 4:13:r6:xor@base_0:inject 5:14:r7:load@base_11:inject 6:15:r1:load@base_14:inject 7:16:r2:load@base_13:inject 8:24:r7:mad@base_21:inject 9:26:r3:load@base_24:inject 10:27:r4:shfl@base_25:inject 11:31:r7:load@base_27:inject 12:40:r1:sub@base_39:inject 13:44:r6:load@base_26:inject 14:45:r2:xor@base_32:inject 15:53:r2:mad@base_52:inject +igneum-ca3-v4-uniform/403 8f8a7d391abb5f4e 0 0:2:0 1:0:0 2:0:0 3:1:0 4:0:0 5:1:0 6:0:0 7:0:0 8:2:3 9:1:1 10:0:0 11:1:1 12:0:0 13:2:1 14:2:1 15:1:0 4 2 0 1 1 0:3:r0:rotr@base_1:bijective 1:20:r5:sub@base_6:inject 2:22:r4:add@base_18:inject 3:25:r0:load@base_20:inject 4:29:r3:mulhi@base_19:lossy 5:38:r5:mul@base_37:lossy 6:40:r2:rotr@base_39:bijective 7:42:r4:load@base_40:inject 8:46:r1:add@base_45:inject 9:48:r6:load@base_42:inject 10:50:r7:rotr@base_49:bijective 11:53:r4:or@base_51:lossy 12:57:r2:load@base_46:inject 13:60:r7:or@base_55:lossy 14:61:r0:load@base_60:inject 15:62:r6:shfl@base_59:inject +igneum-ca3-v4-uniform/404 27aecca88865f547 0 0:2:1 1:0:0 2:0:0 3:1:0 4:2:3 5:1:1 6:1:1 7:2:0 8:1:0 9:2:0 10:2:2 11:1:0 12:2:2 13:0:0 14:2:2 15:0:0 4 1 0 2 1 0:1:r3:shfl@base_0:inject 1:2:r4:load@base_1:inject 2:5:r7:shfl@base_4:inject 3:10:r6:load@base_5:inject 4:11:r2:load@base_10:inject 5:12:r4:add@base_6:inject 6:13:r0:load@base_12:inject 7:20:r5:rotr@base_15:bijective 8:30:r5:add@base_27:inject 9:38:r3:mul@base_35:lossy 10:40:r7:or@base_17:lossy 11:43:r2:add@base_26:inject 12:46:r6:mulhi@base_31:lossy 13:47:r5:add@base_42:inject 14:55:r6:xor@base_52:inject 15:59:r3:mul@base_48:lossy +igneum-ca3-v4-uniform/405 12bf66d1fcb8fc25 0 0:1:1 1:0:0 2:0:0 3:0:0 4:1:0 5:2:1 6:2:0 7:2:2 8:1:1 9:2:3 10:1:1 11:1:0 12:2:1 13:2:2 14:0:0 15:2:1 5 2 0 2 1 0:10:r0:mad@base_9:inject 1:14:r2:add@base_5:inject 2:21:r6:mul@base_20:lossy 3:35:r2:xor@base_18:inject 4:38:r1:mul@base_37:lossy 5:39:r4:load@base_14:inject 6:40:r7:load@base_38:inject 7:42:r0:mulhi@base_30:lossy 8:43:r1:load@base_39:inject 9:44:r6:or@base_33:lossy 10:45:r3:add@base_36:inject 11:47:r2:shfl@base_41:inject 12:48:r5:load@base_43:inject 13:50:r1:load@base_45:inject 14:57:r3:or@base_55:lossy 15:58:r6:add@base_51:inject +igneum-ca3-v4-uniform/406 761a2965854e61d4 0 0:0:0 1:0:0 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:2:1 8:0:0 9:2:2 10:0:0 11:1:1 12:0:0 13:2:3 14:0:0 15:0:0 2 0 0 2 0 0:2:r2:xor@base_1:inject 1:4:r1:add@base_3:inject 2:9:r5:xor@base_5:inject 3:10:r3:mad@base_7:inject 4:13:r0:rotr@base_11:bijective 5:18:r7:rotr@base_14:bijective 6:22:r5:xor@base_21:inject 7:31:r1:mad@base_23:inject 8:34:r0:mul@base_33:lossy 9:45:r6:xor@base_42:inject 10:47:r4:rotr@base_39:bijective 11:53:r2:rotr@base_50:bijective 12:54:r3:add@base_32:inject 13:55:r4:load@base_53:inject 14:59:r3:mul@base_58:lossy 15:61:r0:load@base_54:inject +igneum-ca3-v4-uniform/407 0f6c69c33df2b6a9 0 0:2:0 1:2:1 2:2:3 3:1:0 4:0:0 5:0:0 6:1:1 7:2:2 8:1:0 9:0:0 10:0:0 11:2:2 12:1:0 13:1:0 14:2:1 15:0:0 3 1 0 1 1 0:6:r0:xor@base_4:inject 1:8:r5:add@base_7:inject 2:15:r0:rotr@base_12:bijective 3:21:r6:load@base_15:inject 4:23:r7:add@base_16:inject 5:26:r3:shfl@base_19:inject 6:35:r0:mul@base_29:lossy 7:41:r7:load@base_35:inject 8:42:r5:or@base_33:lossy 9:45:r3:rotr@base_43:bijective 10:48:r3:mulhi@base_47:lossy 11:51:r4:rotr@base_46:bijective 12:58:r7:rotr@base_49:bijective 13:59:r0:load@base_58:inject 14:60:r3:add@base_53:inject 15:63:r2:load@base_60:inject +igneum-ca3-v4-uniform/408 421b79fdff85aab2 0 0:0:0 1:1:0 2:2:1 3:1:0 4:1:1 5:2:0 6:0:0 7:1:0 8:0:0 9:0:0 10:0:0 11:2:0 12:0:0 13:1:0 14:1:1 15:1:0 3 0 0 1 2 0:4:r0:rotr@base_3:bijective 1:6:r1:load@base_4:inject 2:8:r7:mad@base_0:inject 3:9:r4:load@base_8:inject 4:16:r6:mad@base_13:inject 5:22:r4:add@base_15:inject 6:25:r5:load@base_9:inject 7:26:r0:load@base_25:inject 8:27:r3:load@base_26:inject 9:37:r6:sub@base_34:inject 10:41:r2:mul@base_24:lossy 11:42:r1:mulhi@base_30:lossy 12:43:r5:mulhi@base_36:lossy 13:47:r7:rotl@base_28:bijective 14:52:r1:load@base_47:inject 15:55:r0:shfl@base_49:inject +igneum-ca3-v4-uniform/409 83321a2336b9e6bf 1 0:0:0 1:2:3 2:2:0 3:0:0 4:2:0 5:2:1 6:2:3 7:2:1 8:2:0 9:0:0 10:2:3 11:2:3 12:2:3 13:2:3 14:1:1 15:1:1 6 2 0 2 2 0:1:r7:add@base_0:inject 1:3:r1:mad@base_2:inject 2:4:r4:load@base_3:inject 3:7:r1:mul@base_5:lossy 4:12:r7:or@base_6:lossy 5:16:r3:sub@base_11:inject 6:23:r3:mulhi@base_19:lossy 7:35:r2:sub@base_25:inject 8:36:r0:add@base_28:inject 9:42:r4:xor@base_31:inject 10:47:r2:shfl@base_46:inject 11:49:r5:or@base_48:lossy 12:53:r6:mulhi@base_40:lossy 13:54:r3:shfl@base_44:inject 14:60:r2:mul@base_55:lossy 15:62:r1:load@base_53:inject +igneum-ca3-v4-uniform/410 9104222076b1d96f 0 0:1:1 1:1:0 2:1:0 3:1:0 4:0:0 5:0:0 6:1:0 7:0:0 8:1:0 9:0:0 10:2:1 11:2:0 12:2:2 13:2:3 14:1:0 15:0:0 2 0 0 1 1 0:1:r7:xor@base_0:inject 1:2:r4:load@base_1:inject 2:9:r2:shfl@base_6:inject 3:10:r4:mulhi@base_3:lossy 4:18:r5:load@base_9:inject 5:19:r0:load@base_10:inject 6:20:r6:load@base_18:inject 7:26:r7:shfl@base_21:inject 8:27:r3:load@base_26:inject 9:28:r2:sub@base_12:inject 10:32:r7:mul@base_30:lossy 11:35:r6:rotr@base_33:bijective 12:39:r1:xor@base_37:inject 13:48:r0:add@base_40:inject 14:51:r2:rotr@base_38:bijective 15:63:r2:add@base_59:inject +igneum-ca3-v4-uniform/411 04f0b9c7a8e66b10 0 0:0:0 1:0:0 2:2:3 3:0:0 4:0:0 5:2:2 6:0:0 7:1:1 8:2:0 9:2:3 10:0:0 11:1:0 12:0:0 13:0:0 14:2:3 15:0:0 2 1 0 1 0 0:1:r7:sub@base_0:inject 1:2:r2:shfl@shadow_251:inject 2:10:r4:xor@base_9:inject 3:12:r1:load@base_2:inject 4:14:r3:rotl@base_8:bijective 5:21:r2:load@base_12:inject 6:25:r4:shfl@base_24:inject 7:26:r6:load@base_21:inject 8:28:r1:or@base_22:lossy 9:35:r3:load@base_26:inject 10:40:r3:mad@base_39:inject 11:41:r4:xor@base_31:inject 12:45:r1:shfl@base_37:inject 13:58:r5:mul@base_54:lossy 14:59:r4:rotr@base_53:bijective 15:61:r6:shfl@base_29:inject +igneum-ca3-v4-uniform/412 6d1ba538dffbc8d9 0 0:2:0 1:0:0 2:0:0 3:0:0 4:0:0 5:1:1 6:2:1 7:0:0 8:0:0 9:1:1 10:0:0 11:1:1 12:2:3 13:0:0 14:2:1 15:0:0 2 0 0 0 2 0:1:r4:shfl@base_0:inject 1:5:r4:xor@base_4:inject 2:31:r6:mad@base_9:inject 3:36:r3:add@base_30:inject 4:37:r0:sub@base_35:inject 5:38:r7:rotl@base_18:bijective 6:40:r4:mad@base_39:inject 7:43:r2:load@base_38:inject 8:47:r3:xor@base_44:inject 9:50:r1:load@base_40:inject 10:53:r7:load@base_47:inject 11:54:r3:load@base_53:inject 12:55:r5:mulhi@base_52:lossy 13:59:r7:rotl@base_56:bijective 14:62:r0:mad@base_58:inject 15:63:r7:mulhi@base_60:lossy +igneum-ca3-v4-uniform/413 ae1ba41e53550727 1 0:0:0 1:1:1 2:0:0 3:2:0 4:1:1 5:1:0 6:2:2 7:1:0 8:2:0 9:0:0 10:0:0 11:0:0 12:2:2 13:0:0 14:2:1 15:0:0 3 0 0 1 2 0:4:r1:mulhi@base_1:lossy 1:6:r4:mad@base_5:inject 2:9:r5:load@base_4:inject 3:12:r7:load@base_9:inject 4:18:r2:load@base_12:inject 5:19:r6:load@base_18:inject 6:22:r2:mulhi@base_21:lossy 7:29:r7:rotr@base_14:bijective 8:33:r4:xor@base_26:inject 9:37:r3:mul@base_34:lossy 10:38:r7:sub@base_35:inject 11:39:r1:load@base_29:inject 12:43:r5:mad@base_31:inject 13:47:r2:xor@base_40:inject 14:56:r3:load@base_38:inject 15:61:r4:mad@base_58:inject +igneum-ca3-v4-uniform/414 eb11aac7bfa2d6c5 0 0:0:0 1:0:0 2:0:0 3:1:0 4:1:1 5:0:0 6:2:1 7:0:0 8:1:1 9:0:0 10:1:0 11:2:1 12:2:0 13:2:1 14:1:1 15:1:0 4 0 0 2 2 0:2:r0:xor@base_1:inject 1:9:r6:mul@base_8:lossy 2:12:r4:sub@base_10:inject 3:15:r0:mul@base_3:lossy 4:16:r2:load@base_12:inject 5:24:r7:mulhi@base_20:lossy 6:28:r1:mad@base_26:inject 7:29:r7:add@base_25:inject 8:36:r5:rotl@base_31:bijective 9:40:r2:load@base_36:inject 10:41:r6:rotr@base_23:bijective 11:48:r4:load@base_41:inject 12:53:r2:sub@base_45:inject 13:56:r4:rotl@base_50:bijective 14:57:r1:xor@base_55:inject 15:63:r5:mulhi@base_59:lossy +igneum-ca3-v4-uniform/415 f5ee5e00a185e53a 0 0:0:0 1:2:3 2:2:1 3:0:0 4:2:0 5:1:1 6:2:1 7:2:0 8:0:0 9:2:2 10:1:1 11:2:3 12:0:0 13:0:0 14:0:0 15:1:1 2 1 0 0 1 0:2:r7:mad@base_0:inject 1:11:r7:mad@base_4:inject 2:15:r3:xor@base_10:inject 3:16:r2:load@base_15:inject 4:22:r5:shfl@base_18:inject 5:24:r2:or@base_19:lossy 6:25:r0:load@base_24:inject 7:30:r5:xor@base_28:inject 8:32:r0:mad@base_29:inject 9:38:r6:load@base_32:inject 10:48:r0:mad@base_41:inject 11:50:r6:mulhi@base_45:lossy 12:53:r4:mad@base_52:inject 13:57:r2:xor@base_56:inject 14:59:r0:load@base_53:inject 15:63:r0:xor@base_62:inject +igneum-ca3-v4-uniform/416 6adfc9548267b7b0 0 0:2:2 1:1:1 2:2:2 3:0:0 4:2:1 5:1:1 6:1:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:2:3 13:1:1 14:1:0 15:0:0 1 0 0 1 0 0:4:r6:add@base_3:inject 1:8:r7:shfl@base_7:inject 2:20:r5:xor@base_11:inject 3:21:r1:load@base_20:inject 4:24:r6:shfl@base_10:inject 5:30:r0:add@base_12:inject 6:34:r5:mul@base_22:lossy 7:35:r0:xor@base_31:inject 8:37:r4:load@base_34:inject 9:40:r3:mad@base_27:inject 10:41:r7:load@base_37:inject 11:55:r6:rotr@base_46:bijective 12:56:r1:xor@base_53:inject 13:59:r4:mad@base_57:inject 14:60:r2:load@base_56:inject 15:62:r0:sub@base_58:inject +igneum-ca3-v4-uniform/417 fbd304e0c5745273 0 0:2:1 1:1:0 2:1:0 3:0:0 4:0:0 5:2:0 6:2:0 7:0:0 8:2:3 9:0:0 10:2:2 11:2:2 12:1:1 13:1:0 14:1:1 15:1:1 1 0 0 1 0 0:10:r2:sub@base_4:inject 1:11:r6:load@base_10:inject 2:14:r7:mul@base_8:lossy 3:16:r5:shfl@base_7:inject 4:18:r4:load@base_16:inject 5:25:r6:add@base_15:inject 6:32:r4:add@base_31:inject 7:34:r5:add@base_23:inject 8:38:r2:sub@base_29:inject 9:40:r3:rotr@base_37:bijective 10:41:r6:shfl@base_30:inject 11:43:r1:load@base_41:inject 12:49:r7:load@base_38:inject 13:54:r0:shfl@base_47:inject 14:55:r5:load@base_54:inject 15:59:r3:sub@base_52:inject +igneum-ca3-v4-uniform/418 cb76edf780c0a988 0 0:1:1 1:2:2 2:1:0 3:0:0 4:2:1 5:2:3 6:1:1 7:2:2 8:1:1 9:1:1 10:2:3 11:0:0 12:0:0 13:2:2 14:2:1 15:0:0 2 0 0 1 1 0:2:r4:sub@base_1:inject 1:7:r0:load@base_2:inject 2:8:r3:shfl@base_6:inject 3:11:r2:mulhi@base_4:lossy 4:17:r1:xor@base_5:inject 5:18:r7:sub@base_9:inject 6:21:r1:mad@base_20:inject 7:23:r1:mul@base_22:lossy 8:36:r4:xor@base_31:inject 9:39:r5:rotl@base_38:bijective 10:40:r6:mad@base_34:inject 11:43:r7:xor@base_42:inject 12:47:r1:xor@base_44:inject 13:48:r0:xor@base_45:inject 14:49:r3:load@base_47:inject 15:56:r4:rotl@base_52:bijective +igneum-ca3-v4-uniform/419 f4925e6abac85b9b 0 0:2:3 1:1:1 2:0:0 3:0:0 4:0:0 5:2:0 6:1:1 7:1:0 8:0:0 9:2:3 10:2:1 11:2:3 12:1:1 13:1:0 14:1:0 15:1:1 5 0 0 1 4 0:4:r6:rotl@base_0:bijective 1:9:r6:sub@base_8:inject 2:24:r3:rotl@base_22:bijective 3:25:r1:xor@base_11:inject 4:30:r6:mul@base_16:lossy 5:34:r5:mulhi@base_33:lossy 6:36:r4:load@base_25:inject 7:39:r6:load@base_36:inject 8:42:r7:xor@base_35:inject 9:44:r3:mad@base_37:inject 10:46:r5:load@base_44:inject 11:47:r2:mulhi@base_31:lossy 12:48:r0:mulhi@base_43:lossy 13:52:r3:mad@base_51:inject 14:59:r2:shfl@base_53:inject 15:62:r7:mulhi@base_61:lossy +igneum-ca3-v4-uniform/420 cccf5f47616c751e 0 0:2:3 1:2:2 2:2:2 3:0:0 4:2:1 5:1:0 6:2:0 7:0:0 8:2:3 9:1:1 10:0:0 11:1:1 12:2:3 13:2:3 14:1:1 15:1:1 4 1 0 3 0 0:11:r3:add@base_8:inject 1:12:r4:xor@base_9:inject 2:13:r2:xor@base_7:inject 3:14:r5:mul@base_10:lossy 4:17:r1:mul@base_15:lossy 5:18:r6:load@base_14:inject 6:21:r4:sub@base_19:inject 7:23:r0:add@base_20:inject 8:24:r1:load@base_23:inject 9:27:r7:shfl@base_26:inject 10:31:r5:load@base_24:inject 11:48:r0:add@base_44:inject 12:50:r3:or@base_45:lossy 13:52:r5:load@base_50:inject 14:59:r2:sub@base_54:inject 15:62:r1:mul@base_60:lossy +igneum-ca3-v4-uniform/421 4cf1671e61c8ca92 0 0:2:1 1:0:0 2:0:0 3:0:0 4:1:0 5:1:1 6:2:3 7:2:0 8:1:1 9:0:0 10:2:0 11:1:1 12:2:1 13:0:0 14:1:0 15:2:3 4 1 0 2 1 0:3:r6:rotr@base_0:bijective 1:5:r1:mul@base_2:lossy 2:6:r2:load@base_5:inject 3:8:r4:or@base_7:lossy 4:9:r5:load@base_8:inject 5:14:r1:load@base_9:inject 6:16:r3:add@base_15:inject 7:22:r7:rotl@base_20:bijective 8:23:r1:load@base_22:inject 9:29:r0:load@base_23:inject 10:31:r2:load@base_16:inject 11:41:r2:add@base_40:inject 12:46:r3:sub@base_27:inject 13:47:r2:shfl@base_45:inject 14:51:r6:mulhi@base_43:lossy 15:54:r0:mul@base_53:lossy +igneum-ca3-v4-uniform/422 0ed961be1e135940 0 0:2:1 1:2:3 2:2:2 3:0:0 4:1:0 5:2:2 6:2:3 7:1:0 8:1:1 9:2:1 10:2:2 11:1:1 12:1:1 13:0:0 14:0:0 15:1:0 2 0 0 2 0 0:3:r1:xor@base_1:inject 1:8:r6:mul@base_0:lossy 2:13:r7:xor@base_7:inject 3:14:r5:sub@base_12:inject 4:18:r1:load@base_8:inject 5:19:r2:load@base_13:inject 6:27:r4:rotr@base_26:bijective 7:30:r3:xor@base_23:inject 8:32:r4:rotr@base_29:bijective 9:36:r2:mul@base_33:lossy 10:37:r1:load@base_32:inject 11:46:r5:mad@base_43:inject 12:55:r7:rotl@base_48:bijective 13:59:r4:xor@base_54:inject 14:61:r1:add@base_60:inject 15:63:r0:add@base_45:inject +igneum-ca3-v4-uniform/423 b9a2ce08e982c255 0 0:2:0 1:1:0 2:1:0 3:0:0 4:1:0 5:2:1 6:1:1 7:1:0 8:1:1 9:1:0 10:1:0 11:1:1 12:1:1 13:2:1 14:0:0 15:1:1 1 0 0 1 0 0:1:r1:add@base_0:inject 1:3:r6:load@base_1:inject 2:5:r0:load@base_3:inject 3:8:r3:rotl@base_4:bijective 4:9:r4:xor@base_7:inject 5:13:r4:rotl@base_11:bijective 6:15:r7:xor@base_14:inject 7:16:r1:load@base_5:inject 8:18:r0:add@base_17:inject 9:19:r5:load@base_18:inject 10:33:r3:load@base_19:inject 11:34:r4:rotl@base_32:bijective 12:37:r1:load@base_33:inject 13:40:r4:mad@base_35:inject 14:42:r6:rotl@base_30:bijective 15:47:r6:mul@base_45:lossy +igneum-ca3-v4-uniform/424 c3199c960fe70794 0 0:1:1 1:0:0 2:2:0 3:2:2 4:2:0 5:2:0 6:1:0 7:0:0 8:0:0 9:1:0 10:2:1 11:2:0 12:0:0 13:0:0 14:0:0 15:1:1 2 1 0 1 0 0:2:r2:shfl@base_0:inject 1:5:r4:add@base_3:inject 2:11:r3:load@base_2:inject 3:12:r1:xor@base_10:inject 4:17:r6:or@base_14:lossy 5:18:r0:xor@base_16:inject 6:24:r2:mul@base_21:lossy 7:27:r1:load@base_24:inject 8:34:r3:mad@base_31:inject 9:42:r7:shfl@base_29:inject 10:43:r5:add@base_35:inject 11:47:r4:load@base_42:inject 12:49:r0:load@base_47:inject 13:58:r0:rotr@base_50:bijective 14:61:r5:xor@base_55:inject 15:62:r3:load@base_58:inject +igneum-ca3-v4-uniform/425 1348ff6465240bff 0 0:0:0 1:1:1 2:2:1 3:0:0 4:0:0 5:2:1 6:1:1 7:1:0 8:0:0 9:1:1 10:0:0 11:2:2 12:2:1 13:2:2 14:1:0 15:0:0 1 0 0 1 0 0:2:r6:add@base_0:inject 1:5:r6:rotl@base_4:bijective 2:6:r2:shfl@base_3:inject 3:8:r1:load@base_5:inject 4:14:r0:mul@base_13:lossy 5:15:r6:rotr@base_7:bijective 6:17:r3:rotl@base_10:bijective 7:24:r6:rotr@base_23:bijective 8:26:r5:load@base_17:inject 9:33:r7:load@base_24:inject 10:39:r2:shfl@base_31:inject 11:53:r0:add@base_47:inject 12:56:r5:rotl@base_46:bijective 13:57:r2:xor@base_54:inject 14:59:r5:load@base_57:inject 15:60:r7:load@base_59:inject +igneum-ca3-v4-uniform/426 5c736cfa03aa719d 0 0:0:0 1:0:0 2:2:2 3:0:0 4:1:0 5:0:0 6:1:1 7:2:0 8:1:0 9:0:0 10:2:3 11:0:0 12:1:1 13:2:0 14:1:1 15:0:0 0 0 0 0 0 0:4:r7:xor@base_3:inject 1:7:r6:xor@base_6:inject 2:8:r5:load@base_4:inject 3:9:r1:load@base_8:inject 4:10:r7:load@base_7:inject 5:14:r4:rotl@base_12:bijective 6:19:r3:rotr@base_2:bijective 7:23:r5:xor@base_15:inject 8:27:r5:rotl@base_26:bijective 9:32:r4:rotr@base_30:bijective 10:46:r2:xor@base_41:inject 11:49:r6:shfl@base_47:inject 12:51:r0:rotl@base_38:bijective 13:52:r7:add@base_50:inject 14:53:r1:load@base_49:inject 15:57:r3:sub@base_42:inject +igneum-ca3-v4-uniform/427 f36fc58e295dc7df 0 0:2:0 1:2:3 2:2:3 3:0:0 4:0:0 5:1:0 6:2:1 7:2:2 8:2:1 9:0:0 10:0:0 11:0:0 12:1:0 13:1:1 14:1:1 15:1:1 2 0 0 1 1 0:1:r1:add@base_0:inject 1:2:r5:load@base_1:inject 2:3:r0:load@base_2:inject 3:7:r4:rotr@base_6:bijective 4:10:r3:load@base_7:inject 5:16:r4:xor@base_13:inject 6:28:r1:sub@base_17:inject 7:29:r4:mul@base_22:lossy 8:32:r2:rotr@base_31:bijective 9:37:r6:mad@base_34:inject 10:40:r0:load@base_16:inject 11:41:r5:add@base_38:inject 12:44:r5:mulhi@base_43:lossy 13:46:r0:load@base_44:inject 14:51:r7:add@base_45:inject 15:56:r3:load@base_46:inject +igneum-ca3-v4-uniform/428 be42660c7c009d4f 0 0:1:1 1:2:2 2:0:0 3:2:2 4:1:1 5:2:2 6:2:0 7:2:0 8:0:0 9:2:2 10:2:2 11:0:0 12:2:1 13:2:1 14:0:0 15:0:0 2 1 0 1 0 0:11:r0:rotl@base_9:bijective 1:19:r6:rotr@base_4:bijective 2:23:r0:add@base_15:inject 3:25:r2:add@base_13:inject 4:26:r1:mad@base_24:inject 5:32:r4:load@base_26:inject 6:35:r5:shfl@base_27:inject 7:40:r1:load@base_35:inject 8:43:r4:load@base_40:inject 9:45:r2:add@base_44:inject 10:47:r3:or@base_36:lossy 11:49:r0:mul@base_46:lossy 12:54:r2:sub@base_50:inject 13:55:r0:load@base_54:inject 14:57:r6:load@base_47:inject 15:59:r3:load@base_57:inject +igneum-ca3-v4-uniform/429 7ab600e314bf1c31 0 0:1:1 1:2:0 2:0:0 3:2:0 4:1:0 5:1:1 6:1:1 7:1:1 8:1:1 9:2:1 10:1:1 11:1:0 12:2:1 13:2:2 14:0:0 15:2:3 2 0 0 0 2 0:11:r5:mulhi@base_9:lossy 1:12:r2:sub@base_5:inject 2:16:r0:rotl@base_13:bijective 3:20:r4:rotr@base_17:bijective 4:24:r0:shfl@base_21:inject 5:30:r1:xor@base_28:inject 6:31:r3:add@base_27:inject 7:32:r6:load@base_30:inject 8:37:r6:add@base_35:inject 9:38:r0:load@base_37:inject 10:44:r7:xor@base_41:inject 11:45:r0:add@base_42:inject 12:51:r1:rotl@base_48:bijective 13:56:r6:mulhi@base_50:lossy 14:59:r1:rotr@base_55:bijective 15:63:r3:load@base_56:inject +igneum-ca3-v4-uniform/430 e9054017fc7cf080 0 0:1:1 1:1:0 2:1:0 3:2:2 4:0:0 5:2:0 6:0:0 7:1:1 8:1:0 9:0:0 10:0:0 11:0:0 12:2:2 13:2:1 14:2:2 15:1:0 3 0 0 1 2 0:4:r5:mulhi@base_3:lossy 1:5:r2:xor@base_2:inject 2:15:r4:rotl@base_12:bijective 3:16:r0:load@base_15:inject 4:24:r2:add@base_14:inject 5:26:r1:xor@base_22:inject 6:27:r7:xor@base_21:inject 7:34:r3:sub@base_23:inject 8:37:r0:load@base_34:inject 9:42:r4:mad@base_25:inject 10:45:r7:mulhi@base_36:lossy 11:49:r1:load@base_45:inject 12:50:r7:add@base_47:inject 13:57:r2:xor@base_56:inject 14:61:r0:mul@base_59:lossy 15:62:r4:load@base_61:inject +igneum-ca3-v4-uniform/431 203cf301bb8bc4fa 0 0:0:0 1:0:0 2:1:0 3:0:0 4:2:3 5:2:0 6:0:0 7:0:0 8:0:0 9:2:0 10:2:0 11:0:0 12:2:3 13:1:0 14:2:2 15:1:1 3 2 1 0 1 0:5:r0:xor@base_1:inject 1:8:r2:rotr@base_6:bijective 2:9:r5:load@base_5:inject 3:10:r4:load@base_9:inject 4:12:r1:or@base_2:lossy-or-chain1 5:17:r6:shfl@base_16:inject 6:27:r4:mulhi@base_25:lossy 7:31:r1:sub@base_30:inject 8:37:r0:or@base_33:lossy 9:38:r4:rotl@base_35:bijective 10:39:r2:rotr@base_34:bijective 11:49:r7:shfl@base_48:inject 12:53:r2:rotr@base_47:bijective 13:54:r7:load@base_53:inject 14:57:r1:shfl@base_50:inject 15:61:r4:mad@base_46:inject +igneum-ca3-v4-uniform/432 e93cfa2f00ead9a3 0 0:2:3 1:2:0 2:1:0 3:0:0 4:2:1 5:1:0 6:1:1 7:0:0 8:1:1 9:0:0 10:2:3 11:2:1 12:0:0 13:1:0 14:2:2 15:2:0 4 2 0 1 1 0:1:r4:sub@base_0:inject 1:3:r5:xor@base_2:inject 2:8:r7:rotr@base_5:bijective 3:9:r3:add@base_7:inject 4:11:r2:or@base_10:lossy 5:16:r4:load@base_8:inject 6:18:r0:shfl@base_17:inject 7:21:r3:or@base_13:lossy 8:24:r7:add@base_22:inject 9:28:r4:mulhi@base_26:lossy 10:32:r2:load@base_18:inject 11:33:r1:shfl@base_30:inject 12:38:r2:xor@base_37:inject 13:41:r1:mul@base_40:lossy 14:59:r1:rotr@base_55:bijective 15:60:r3:rotl@base_49:bijective +igneum-ca3-v4-uniform/433 b4aaa6f1177a3fe4 0 0:0:0 1:2:1 2:0:0 3:2:1 4:2:3 5:2:1 6:2:1 7:1:1 8:1:0 9:1:0 10:0:0 11:1:0 12:0:0 13:1:1 14:0:0 15:1:0 3 0 0 3 0 0:5:r5:xor@base_4:inject 1:9:r7:add@base_6:inject 2:12:r0:load@base_5:inject 3:15:r0:mad@base_14:inject 4:25:r0:shfl@base_23:inject 5:31:r1:shfl@base_29:inject 6:35:r3:sub@base_30:inject 7:36:r6:xor@base_34:inject 8:44:r5:load@base_36:inject 9:47:r3:mul@base_45:lossy 10:48:r7:add@base_18:inject 11:50:r2:mul@base_39:lossy 12:58:r6:load@base_47:inject 13:60:r7:load@base_58:inject 14:61:r4:mul@base_53:lossy 15:62:r5:rotr@base_57:bijective +igneum-ca3-v4-uniform/434 7422c7916804d444 0 0:1:1 1:1:0 2:0:0 3:2:2 4:0:0 5:0:0 6:2:3 7:1:1 8:2:2 9:0:0 10:2:3 11:1:0 12:0:0 13:0:0 14:2:1 15:0:0 5 0 0 2 3 0:4:r1:rotl@base_0:bijective 1:8:r3:shfl@base_5:inject 2:10:r6:load@base_4:inject 3:11:r0:load@base_10:inject 4:23:r5:xor@base_15:inject 5:31:r5:mul@base_30:lossy 6:34:r3:mulhi@base_33:lossy 7:37:r2:add@base_29:inject 8:41:r4:mulhi@base_36:lossy 9:42:r7:sub@base_38:inject 10:47:r1:add@base_46:inject 11:54:r1:rotl@base_50:bijective 12:55:r7:mulhi@base_49:lossy 13:56:r3:mul@base_53:lossy 14:58:r6:load@base_54:inject 15:62:r0:sub@base_60:inject +igneum-ca3-v4-uniform/435 1e6e408ff32c6624 0 0:2:0 1:1:0 2:0:0 3:1:1 4:2:2 5:1:0 6:1:1 7:2:1 8:2:2 9:1:0 10:2:2 11:2:3 12:1:0 13:1:0 14:2:1 15:0:0 2 1 0 0 1 0:2:r4:rotl@base_1:bijective 1:7:r2:or@base_0:lossy 2:9:r4:mulhi@base_8:lossy 3:15:r0:load@base_7:inject 4:17:r7:rotl@base_12:bijective 5:26:r3:rotl@base_25:bijective 6:32:r6:rotl@base_30:bijective 7:36:r5:mad@base_29:inject 8:37:r1:load@base_26:inject 9:38:r2:xor@base_23:inject 10:41:r3:load@base_37:inject 11:43:r4:xor@base_40:inject 12:48:r0:sub@base_39:inject 13:49:r1:load@base_48:inject 14:55:r6:xor@base_52:inject 15:60:r7:add@base_45:inject +igneum-ca3-v4-uniform/436 a96273af52ee4846 0 0:2:3 1:2:1 2:1:0 3:0:0 4:2:0 5:0:0 6:1:0 7:1:1 8:1:0 9:1:0 10:1:1 11:2:1 12:0:0 13:0:0 14:2:1 15:0:0 6 0 0 3 3 0:4:r5:mul@base_1:lossy 1:5:r1:shfl@base_0:inject 2:7:r6:mulhi@base_3:lossy 3:10:r7:mulhi@base_9:lossy 4:15:r2:load@base_4:inject 5:20:r4:load@base_15:inject 6:22:r1:mul@base_21:lossy 7:23:r2:load@base_22:inject 8:26:r1:add@base_25:inject 9:40:r3:rotl@base_38:bijective 10:41:r2:add@base_34:inject 11:49:r0:mul@base_42:lossy 12:55:r2:xor@base_53:inject 13:59:r1:mulhi@base_56:lossy 14:61:r7:load@base_59:inject 15:63:r2:add@base_62:inject +igneum-ca3-v4-uniform/437 b008ce3438059d49 0 0:2:1 1:0:0 2:2:2 3:0:0 4:0:0 5:1:0 6:2:2 7:1:1 8:2:0 9:1:0 10:2:1 11:0:0 12:2:2 13:1:1 14:0:0 15:2:3 2 1 0 1 0 0:3:r5:sub@base_0:inject 1:11:r4:shfl@base_9:inject 2:15:r3:or@base_5:lossy 3:17:r1:sub@base_1:inject 4:21:r5:mad@base_8:inject 5:22:r0:shfl@base_18:inject 6:27:r1:add@base_26:inject 7:28:r4:xor@base_23:inject 8:38:r6:mad@base_4:inject 9:44:r7:load@base_38:inject 10:47:r4:rotr@base_41:bijective 11:48:r2:load@base_28:inject 12:52:r3:shfl@base_46:inject 13:57:r1:mul@base_43:lossy 14:59:r6:add@base_51:inject 15:63:r3:load@base_57:inject +igneum-ca3-v4-uniform/438 374d7bf6eaebdd2f 0 0:0:0 1:1:1 2:2:1 3:0:0 4:1:1 5:2:1 6:2:2 7:2:3 8:2:0 9:2:3 10:1:0 11:1:1 12:1:0 13:1:0 14:0:0 15:0:0 1 1 1 0 0 0:13:r5:mad@base_12:inject 1:14:r6:mad@base_11:inject 2:18:r0:sub@base_5:inject 3:21:r4:add@base_6:inject 4:22:r0:add@base_20:inject 5:23:r7:add@base_8:inject 6:24:r2:shfl@base_17:inject 7:26:r1:load@base_23:inject 8:28:r3:load@base_14:inject 9:29:r5:load@base_22:inject 10:38:r7:load@base_29:inject 11:41:r3:rotl@base_36:bijective 12:51:r2:or@base_48:lossy-or-chain1 13:53:r6:load@base_51:inject 14:56:r4:rotl@base_47:bijective 15:62:r5:xor@base_55:inject +igneum-ca3-v4-uniform/439 da8bd3b37e3bfd2d 0 0:1:0 1:2:1 2:0:0 3:2:2 4:0:0 5:1:1 6:1:1 7:1:0 8:2:1 9:2:1 10:1:1 11:2:1 12:2:2 13:2:1 14:0:0 15:0:0 6 1 0 4 1 0:2:r2:mul@base_0:lossy 1:3:r7:xor@base_1:inject 2:6:r0:load@base_3:inject 3:12:r6:mad@base_9:inject 4:18:r3:load@base_6:inject 5:23:r7:load@base_18:inject 6:24:r6:mulhi@base_15:lossy 7:26:r2:load@base_23:inject 8:27:r0:add@base_25:inject 9:35:r5:load@base_27:inject 10:37:r7:mul@base_29:lossy 11:38:r1:load@base_35:inject 12:44:r3:or@base_42:lossy 13:45:r5:mul@base_43:lossy 14:58:r2:mul@base_46:lossy 15:61:r4:load@base_58:inject +igneum-ca3-v4-uniform/440 fe1755061ba36f77 0 0:1:0 1:2:3 2:0:0 3:2:0 4:2:1 5:2:3 6:1:1 7:0:0 8:2:0 9:1:1 10:2:2 11:1:1 12:1:1 13:2:0 14:2:1 15:0:0 2 0 0 0 2 0:1:r3:mulhi@base_0:lossy 1:2:r0:load@base_1:inject 2:8:r3:rotl@base_6:bijective 3:10:r7:load@base_8:inject 4:18:r1:mad@base_16:inject 5:19:r0:add@base_12:inject 6:23:r6:load@base_10:inject 7:25:r7:load@base_18:inject 8:35:r2:add@base_31:inject 9:37:r3:rotl@base_22:bijective 10:44:r6:mulhi@base_43:lossy 11:48:r3:xor@base_45:inject 12:50:r5:mad@base_47:inject 13:52:r4:xor@base_51:inject 14:53:r1:xor@base_36:inject 15:55:r6:mad@base_54:inject +igneum-ca3-v4-uniform/441 5707943b6c755ecf 0 0:2:0 1:0:0 2:1:0 3:1:1 4:0:0 5:1:0 6:1:0 7:1:1 8:0:0 9:0:0 10:0:0 11:1:1 12:0:0 13:0:0 14:1:1 15:0:0 2 1 0 0 1 0:2:r7:xor@base_0:inject 1:5:r2:load@base_2:inject 2:19:r7:add@base_15:inject 3:26:r6:add@base_22:inject 4:28:r2:add@base_20:inject 5:30:r0:sub@base_27:inject 6:45:r3:or@base_44:lossy 7:46:r4:mulhi@base_41:lossy 8:47:r1:rotl@base_33:bijective 9:48:r5:shfl@base_42:inject 10:52:r6:rotr@base_51:bijective 11:54:r2:add@base_53:inject 12:55:r1:load@base_52:inject 13:57:r4:load@base_54:inject 14:60:r2:add@base_59:inject 15:62:r7:load@base_60:inject +igneum-ca3-v4-uniform/442 686faa972e3b7aa0 0 0:2:1 1:2:1 2:0:0 3:0:0 4:1:0 5:2:3 6:0:0 7:1:1 8:2:1 9:1:1 10:1:0 11:2:2 12:2:1 13:2:1 14:1:0 15:2:1 2 0 0 2 0 0:5:r6:add@base_3:inject 1:15:r1:mad@base_6:inject 2:17:r7:load@base_15:inject 3:18:r3:load@base_17:inject 4:20:r7:mul@base_19:lossy 5:23:r5:load@base_20:inject 6:25:r6:mad@base_24:inject 7:28:r3:load@base_25:inject 8:31:r2:load@base_23:inject 9:40:r6:mul@base_36:lossy 10:41:r2:add@base_34:inject 11:45:r1:rotl@base_42:bijective 12:52:r2:load@base_45:inject 13:53:r3:rotr@base_50:bijective 14:59:r7:shfl@base_57:inject 15:63:r0:load@base_59:inject +igneum-ca3-v4-uniform/443 97cf46357c1bb5f4 0 0:0:0 1:0:0 2:1:0 3:1:1 4:1:0 5:1:0 6:0:0 7:0:0 8:2:3 9:2:0 10:1:0 11:2:2 12:0:0 13:2:2 14:1:1 15:1:0 4 3 1 0 1 0:5:r7:or@base_2:lossy 1:7:r4:add@base_3:inject 2:9:r5:add@base_6:inject 3:11:r1:load@base_9:inject 4:17:r5:or@base_12:lossy-or-chain1 5:18:r6:load@base_17:inject 6:22:r2:mad@base_19:inject 7:23:r0:xor@base_14:inject 8:26:r4:add@base_24:inject 9:35:r2:sub@base_33:inject 10:38:r7:mulhi@base_29:lossy 11:44:r0:or@base_43:lossy 12:47:r4:shfl@base_42:inject 13:55:r7:load@base_47:inject 14:57:r6:rotl@base_48:bijective 15:59:r1:mad@base_54:inject +igneum-ca3-v4-uniform/444 d634e4a746a4639d 0 0:2:3 1:0:0 2:0:0 3:2:1 4:2:1 5:0:0 6:2:3 7:0:0 8:2:1 9:0:0 10:0:0 11:1:0 12:0:0 13:2:2 14:1:0 15:1:1 1 0 0 1 0 0:1:r2:mad@base_0:inject 1:4:r6:add@base_2:inject 2:7:r2:xor@base_6:inject 3:13:r3:mad@base_10:inject 4:22:r6:xor@base_21:inject 5:29:r0:rotl@base_16:bijective 6:32:r3:mul@base_24:lossy 7:41:r3:mad@base_38:inject 8:43:r7:load@base_13:inject 9:47:r4:add@base_20:inject 10:48:r1:mad@base_46:inject 11:50:r2:load@base_43:inject 12:51:r7:load@base_48:inject 13:53:r3:load@base_51:inject 14:60:r7:shfl@base_57:inject 15:63:r1:sub@base_61:inject +igneum-ca3-v4-uniform/445 b5dbb5e01a67ed6a 0 0:1:1 1:1:0 2:2:2 3:2:1 4:0:0 5:2:0 6:0:0 7:0:0 8:1:0 9:2:3 10:0:0 11:2:3 12:1:1 13:0:0 14:2:1 15:0:0 5 2 0 2 1 0:3:r6:mad@base_2:inject 1:7:r2:load@base_3:inject 2:12:r4:load@base_7:inject 3:13:r6:mul@base_11:lossy 4:15:r7:load@base_12:inject 5:16:r1:or@base_14:lossy 6:21:r1:rotr@base_17:bijective 7:23:r3:mad@base_19:inject 8:27:r0:shfl@base_20:inject 9:31:r2:mul@base_29:lossy 10:33:r4:load@base_23:inject 11:44:r0:add@base_37:inject 12:45:r4:sub@base_38:inject 13:46:r5:or@base_43:lossy 14:48:r4:add@base_47:inject 15:52:r3:mulhi@base_40:lossy +igneum-ca3-v4-uniform/446 e812364b5dc002eb 0 0:0:0 1:1:1 2:1:1 3:2:2 4:2:0 5:2:3 6:2:2 7:1:0 8:0:0 9:0:0 10:2:0 11:1:1 12:0:0 13:0:0 14:1:1 15:0:0 3 0 0 2 1 0:1:r2:xor@base_0:inject 1:3:r5:mad@base_2:inject 2:4:r1:load@base_3:inject 3:10:r3:add@base_8:inject 4:17:r6:mad@base_11:inject 5:18:r5:sub@base_13:inject 6:24:r3:load@base_17:inject 7:27:r0:mul@base_15:lossy 8:31:r2:mulhi@base_28:lossy 9:33:r4:xor@base_26:inject 10:34:r1:load@base_27:inject 11:38:r5:load@base_34:inject 12:39:r1:load@base_38:inject 13:41:r5:load@base_39:inject 14:42:r3:mul@base_25:lossy 15:63:r3:xor@base_60:inject +igneum-ca3-v4-uniform/447 31d75c1a8f4e5b9c 0 0:1:0 1:1:1 2:0:0 3:1:1 4:1:0 5:1:1 6:2:3 7:2:2 8:0:0 9:0:0 10:2:3 11:2:2 12:0:0 13:1:1 14:1:0 15:1:1 3 1 0 2 0 0:1:r3:sub@base_0:inject 1:3:r1:load@base_1:inject 2:7:r3:rotr@base_6:bijective 3:12:r5:or@base_8:lossy 4:14:r5:mul@base_13:lossy 5:16:r1:load@base_12:inject 6:17:r7:rotl@base_15:bijective 7:30:r7:shfl@base_27:inject 8:31:r2:add@base_11:inject 9:34:r4:add@base_29:inject 10:40:r7:mad@base_39:inject 11:41:r1:mul@base_24:lossy 12:47:r0:rotl@base_33:bijective 13:49:r5:xor@base_44:inject 14:50:r6:load@base_41:inject 15:51:r2:sub@base_36:inject +igneum-ca3-v4-uniform/448 630fff540bd2a624 0 0:0:0 1:2:2 2:0:0 3:1:0 4:2:3 5:0:0 6:1:1 7:0:0 8:2:3 9:0:0 10:2:1 11:0:0 12:0:0 13:2:2 14:2:0 15:1:1 2 1 0 0 1 0:4:r0:mulhi@base_3:lossy 1:9:r3:rotr@base_0:bijective 2:10:r4:shfl@base_7:inject 3:18:r3:rotr@base_17:bijective 4:19:r1:sub@base_12:inject 5:22:r0:mad@base_20:inject 6:23:r3:load@base_22:inject 7:24:r2:load@base_19:inject 8:26:r6:load@base_24:inject 9:27:r7:shfl@base_15:inject 10:29:r4:load@base_26:inject 11:30:r5:mad@base_28:inject 12:38:r1:or@base_33:lossy 13:44:r0:rotl@base_32:bijective 14:53:r3:add@base_52:inject 15:58:r1:rotr@base_50:bijective +igneum-ca3-v4-uniform/449 65b52659d9960bd0 0 0:0:0 1:2:2 2:1:1 3:1:1 4:2:0 5:0:0 6:0:0 7:1:0 8:2:2 9:0:0 10:2:1 11:2:3 12:1:0 13:2:0 14:2:1 15:0:0 5 2 0 2 1 0:8:r4:or@base_6:lossy 1:16:r7:rotr@base_15:bijective 2:25:r5:mulhi@base_24:lossy 3:26:r6:mad@base_23:inject 4:28:r7:load@base_25:inject 5:31:r3:load@base_28:inject 6:38:r1:sub@base_20:inject 7:40:r0:mul@base_29:lossy 8:41:r2:or@base_37:lossy 9:44:r4:mad@base_43:inject 10:49:r6:mad@base_46:inject 11:51:r4:add@base_50:inject 12:52:r0:load@base_44:inject 13:53:r5:load@base_52:inject 14:58:r7:load@base_53:inject 15:63:r1:mul@base_54:lossy +igneum-ca3-v4-uniform/450 ebd48f2057322ca0 0 0:1:1 1:1:1 2:1:0 3:1:1 4:1:0 5:1:1 6:1:0 7:0:0 8:2:2 9:0:0 10:0:0 11:1:0 12:2:3 13:1:1 14:2:2 15:0:0 5 2 0 1 2 0:1:r1:mulhi@base_0:lossy 1:5:r2:shfl@base_3:inject 2:6:r3:load@base_1:inject 3:7:r5:load@base_5:inject 4:12:r6:add@base_10:inject 5:14:r6:or@base_13:lossy 6:16:r7:load@base_14:inject 7:26:r2:rotr@base_18:bijective 8:34:r2:mul@base_33:lossy 9:40:r3:sub@base_38:inject 10:41:r0:mulhi@base_39:lossy 11:42:r5:xor@base_35:inject 12:44:r1:shfl@base_43:inject 13:49:r0:add@base_48:inject 14:52:r2:rotr@base_51:bijective 15:62:r0:or@base_61:lossy +igneum-ca3-v4-uniform/451 2b41aaffacb749f4 0 0:1:1 1:0:0 2:0:0 3:1:0 4:0:0 5:1:1 6:2:1 7:2:1 8:2:0 9:2:1 10:0:0 11:0:0 12:0:0 13:1:1 14:0:0 15:1:1 1 0 0 1 0 0:4:r1:sub@base_3:inject 1:7:r6:shfl@base_5:inject 2:9:r3:load@base_7:inject 3:10:r5:sub@base_8:inject 4:20:r6:rotr@base_18:bijective 5:24:r1:load@base_20:inject 6:25:r4:add@base_22:inject 7:27:r3:load@base_25:inject 8:28:r0:load@base_27:inject 9:35:r1:add@base_33:inject 10:39:r6:mul@base_36:lossy 11:43:r4:add@base_42:inject 12:54:r4:add@base_50:inject 13:58:r0:xor@base_53:inject 14:60:r3:sub@base_59:inject 15:61:r2:shfl@base_55:inject +igneum-ca3-v4-uniform/452 3b659d4db34cfa94 0 0:0:0 1:0:0 2:1:1 3:0:0 4:0:0 5:1:0 6:2:3 7:0:0 8:0:0 9:1:1 10:0:0 11:2:2 12:2:2 13:1:0 14:1:0 15:1:0 5 0 0 4 1 0:1:r0:add@base_0:inject 1:3:r2:add@base_2:inject 2:12:r0:shfl@base_10:inject 3:18:r6:load@base_3:inject 4:19:r0:mulhi@base_13:lossy 5:21:r1:mul@base_4:lossy 6:25:r7:load@base_21:inject 7:27:r5:xor@base_23:inject 8:28:r2:rotl@base_26:bijective 9:33:r4:mul@base_31:lossy 10:34:r6:load@base_28:inject 11:41:r6:add@base_35:inject 12:44:r5:mul@base_40:lossy 13:50:r5:mad@base_46:inject 14:58:r1:xor@base_54:inject 15:59:r7:mul@base_56:lossy +igneum-ca3-v4-uniform/453 ce0c9fa80b2480ae 0 0:2:0 1:0:0 2:2:2 3:0:0 4:0:0 5:2:3 6:1:0 7:1:0 8:1:0 9:1:0 10:0:0 11:1:1 12:1:1 13:0:0 14:1:0 15:2:2 1 0 0 0 1 0:4:r7:shfl@base_0:inject 1:8:r0:mad@base_6:inject 2:10:r2:shfl@base_5:inject 3:12:r6:load@base_10:inject 4:14:r6:rotl@base_13:bijective 5:16:r7:xor@base_9:inject 6:19:r7:shfl@base_18:inject 7:28:r4:load@base_19:inject 8:30:r1:xor@base_26:inject 9:35:r7:load@base_30:inject 10:38:r1:add@base_33:inject 11:39:r5:mad@base_36:inject 12:42:r6:shfl@base_29:inject 13:49:r1:sub@base_41:inject 14:60:r5:mulhi@base_48:lossy 15:63:r1:add@base_59:inject +igneum-ca3-v4-uniform/454 c6516734e5417aa3 0 0:0:0 1:1:0 2:0:0 3:2:1 4:1:0 5:2:1 6:1:0 7:1:0 8:2:3 9:0:0 10:1:1 11:0:0 12:1:1 13:0:0 14:1:1 15:2:2 3 1 0 2 0 0:4:r5:rotr@base_1:bijective 1:5:r0:load@base_4:inject 2:6:r7:rotl@base_3:bijective 3:15:r6:add@base_14:inject 4:22:r2:mul@base_8:lossy 5:33:r3:mad@base_26:inject 6:36:r7:or@base_35:lossy 7:37:r0:mad@base_25:inject 8:40:r7:sub@base_39:inject 9:43:r6:rotl@base_30:bijective 10:44:r2:load@base_33:inject 11:46:r7:add@base_45:inject 12:49:r4:load@base_36:inject 13:53:r5:mul@base_47:lossy 14:57:r7:xor@base_52:inject 15:59:r0:load@base_53:inject +igneum-ca3-v4-uniform/455 aa8fe2bcc786e0ae 0 0:1:0 1:1:0 2:0:0 3:1:1 4:0:0 5:2:3 6:2:2 7:2:2 8:0:0 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:2:3 15:0:0 2 0 0 0 2 0:12:r6:mulhi@base_11:lossy 1:13:r2:rotr@base_4:bijective 2:15:r0:rotr@base_7:bijective 3:16:r3:load@base_12:inject 4:23:r7:shfl@base_21:inject 5:31:r1:rotl@base_27:bijective 6:36:r7:mad@base_33:inject 7:38:r2:xor@base_35:inject 8:42:r2:add@base_41:inject 9:43:r7:add@base_37:inject 10:44:r0:load@base_38:inject 11:49:r3:sub@base_48:inject 12:51:r7:rotl@base_45:bijective 13:53:r1:load@base_42:inject 14:56:r0:add@base_52:inject 15:59:r7:mulhi@base_55:lossy +igneum-ca3-v4-uniform/456 e6f709fe71911159 0 0:1:1 1:1:0 2:0:0 3:0:0 4:2:0 5:1:0 6:2:2 7:2:1 8:2:3 9:2:3 10:1:0 11:0:0 12:0:0 13:0:0 14:0:0 15:1:1 2 0 0 1 1 0:1:r4:sub@base_0:inject 1:8:r4:add@base_3:inject 2:10:r5:add@base_6:inject 3:12:r2:mad@base_11:inject 4:13:r3:load@base_12:inject 5:17:r0:mulhi@base_15:lossy 6:19:r7:load@base_10:inject 7:22:r4:load@base_13:inject 8:24:r5:mad@base_20:inject 9:36:r1:rotr@base_30:bijective 10:40:r3:sub@base_39:inject 11:48:r6:rotr@base_37:bijective 12:50:r5:mul@base_45:lossy 13:52:r2:load@base_36:inject 14:57:r3:mad@base_49:inject 15:63:r2:xor@base_53:inject +igneum-ca3-v4-uniform/457 05231f4c33f17b31 0 0:2:2 1:2:3 2:0:0 3:2:0 4:2:1 5:1:1 6:2:0 7:1:0 8:1:0 9:1:1 10:2:2 11:0:0 12:1:1 13:0:0 14:1:0 15:2:2 1 0 0 0 1 0:1:r3:mulhi@base_0:lossy 1:6:r5:load@base_1:inject 2:9:r6:shfl@base_2:inject 3:11:r4:mad@base_10:inject 4:28:r5:add@base_24:inject 5:31:r1:mad@base_30:inject 6:32:r6:rotl@base_25:bijective 7:41:r7:load@base_31:inject 8:45:r0:load@base_41:inject 9:48:r6:xor@base_43:inject 10:52:r2:shfl@base_50:inject 11:53:r3:load@base_52:inject 12:54:r1:load@base_45:inject 13:55:r7:load@base_48:inject 14:57:r1:mad@base_56:inject 15:59:r4:load@base_53:inject +igneum-ca3-v4-uniform/458 608912db8d44af79 0 0:0:0 1:0:0 2:0:0 3:2:1 4:0:0 5:0:0 6:1:1 7:1:0 8:1:1 9:0:0 10:1:1 11:1:0 12:1:0 13:2:0 14:0:0 15:1:1 3 0 0 2 1 0:4:r2:xor@base_0:inject 1:5:r0:load@base_4:inject 2:6:r7:load@base_5:inject 3:12:r1:mulhi@base_1:lossy 4:17:r6:xor@base_13:inject 5:23:r7:rotr@base_20:bijective 6:31:r5:xor@base_29:inject 7:38:r7:sub@base_35:inject 8:39:r1:rotr@base_21:bijective 9:43:r4:load@base_38:inject 10:47:r5:mul@base_41:lossy 11:50:r7:rotr@base_49:bijective 12:54:r2:load@base_43:inject 13:58:r1:xor@base_57:inject 14:62:r5:mul@base_55:lossy 15:63:r1:load@base_62:inject +igneum-ca3-v4-uniform/459 5b821bc9f09fb980 0 0:0:0 1:0:0 2:2:1 3:1:1 4:0:0 5:0:0 6:0:0 7:0:0 8:0:0 9:1:0 10:2:3 11:2:0 12:0:0 13:2:2 14:0:0 15:2:1 3 0 0 0 3 0:10:r4:mulhi@base_8:lossy 1:13:r7:add@base_9:inject 2:17:r1:shfl@base_16:inject 3:20:r2:load@base_13:inject 4:23:r0:xor@base_18:inject 5:27:r6:load@base_17:inject 6:31:r0:add@base_26:inject 7:34:r1:add@base_28:inject 8:42:r6:xor@base_41:inject 9:45:r0:load@base_42:inject 10:47:r7:mulhi@base_43:lossy 11:50:r4:mulhi@base_40:lossy 12:53:r5:load@base_31:inject 13:54:r0:shfl@base_49:inject 14:55:r4:shfl@base_51:inject 15:60:r1:load@base_55:inject +igneum-ca3-v4-uniform/460 f47319d873106b96 0 0:2:3 1:1:0 2:1:0 3:1:0 4:2:2 5:1:1 6:0:0 7:1:0 8:0:0 9:2:3 10:1:0 11:0:0 12:2:1 13:1:0 14:1:0 15:2:3 2 0 0 0 2 0:5:r7:shfl@base_3:inject 1:8:r3:mulhi@base_4:lossy 2:10:r6:mad@base_9:inject 3:16:r5:shfl@base_15:inject 4:18:r4:add@base_1:inject 5:21:r1:add@base_17:inject 6:22:r0:xor@base_20:inject 7:27:r1:load@base_22:inject 8:28:r6:add@base_26:inject 9:29:r5:load@base_21:inject 10:36:r0:load@base_28:inject 11:38:r2:shfl@base_30:inject 12:47:r1:load@base_36:inject 13:52:r7:mulhi@base_37:lossy 14:53:r1:xor@base_49:inject 15:58:r6:rotl@base_50:bijective +igneum-ca3-v4-uniform/461 5b7b1710480a1a3c 0 0:0:0 1:0:0 2:0:0 3:0:0 4:0:0 5:1:0 6:1:0 7:2:3 8:1:0 9:2:0 10:2:1 11:2:1 12:2:1 13:2:2 14:2:0 15:2:2 3 0 0 1 2 0:3:r0:sub@base_2:inject 1:5:r1:rotl@base_4:bijective 2:13:r0:add@base_11:inject 3:16:r3:mad@base_14:inject 4:23:r2:shfl@base_17:inject 5:25:r6:load@base_5:inject 6:28:r7:rotr@base_26:bijective 7:38:r7:mul@base_36:lossy 8:40:r5:load@base_38:inject 9:42:r6:load@base_40:inject 10:48:r5:xor@base_41:inject 11:49:r7:shfl@base_47:inject 12:50:r1:mulhi@base_30:lossy 13:53:r1:mulhi@base_52:lossy 14:61:r1:rotr@base_59:bijective 15:62:r0:rotr@base_58:bijective +igneum-ca3-v4-uniform/462 0f54f7c5aa0d2fd8 0 0:1:1 1:0:0 2:2:2 3:1:1 4:2:1 5:1:0 6:1:0 7:2:0 8:0:0 9:0:0 10:2:3 11:2:0 12:2:2 13:1:0 14:2:1 15:2:0 1 0 0 1 0 0:2:r7:xor@base_1:inject 1:6:r2:rotr@base_3:bijective 2:9:r4:load@base_2:inject 3:10:r3:xor@base_4:inject 4:11:r5:load@base_10:inject 5:12:r0:load@base_11:inject 6:24:r4:mad@base_23:inject 7:25:r6:mad@base_15:inject 8:43:r5:rotl@base_41:bijective 9:47:r2:mul@base_44:lossy 10:50:r7:load@base_47:inject 11:52:r1:rotl@base_51:bijective 12:58:r3:mad@base_28:inject 13:60:r0:shfl@base_48:inject 14:62:r5:xor@base_61:inject 15:63:r4:load@base_58:inject +igneum-ca3-v4-uniform/463 2fb899b9a433401e 0 0:2:2 1:0:0 2:2:2 3:1:0 4:1:0 5:2:2 6:1:1 7:1:0 8:1:0 9:1:1 10:1:0 11:0:0 12:0:0 13:2:0 14:2:2 15:0:0 5 2 0 1 2 0:4:r3:or@base_0:lossy 1:12:r5:mulhi@base_6:lossy 2:13:r0:rotr@base_7:bijective 3:16:r2:xor@base_15:inject 4:22:r3:load@base_16:inject 5:30:r7:sub@base_28:inject 6:32:r3:add@base_23:inject 7:38:r6:shfl@base_37:inject 8:39:r1:load@base_32:inject 9:43:r0:load@base_38:inject 10:44:r7:xor@base_40:inject 11:48:r2:rotl@base_42:bijective 12:51:r0:mulhi@base_50:lossy 13:52:r6:or@base_46:lossy 14:60:r1:load@base_52:inject 15:62:r5:mul@base_57:lossy +igneum-ca3-v4-uniform/464 3c6c13cbd562f93c 0 0:2:0 1:1:0 2:2:0 3:1:0 4:2:0 5:2:0 6:0:0 7:2:0 8:2:3 9:2:0 10:0:0 11:0:0 12:2:2 13:2:0 14:1:1 15:1:0 5 0 0 2 3 0:2:r7:rotl@base_1:bijective 1:3:r1:load@base_2:inject 2:5:r3:load@base_3:inject 3:11:r1:mad@base_8:inject 4:17:r5:mulhi@base_13:lossy 5:18:r3:xor@base_15:inject 6:21:r0:mulhi@base_14:lossy 7:27:r5:shfl@base_25:inject 8:29:r1:load@base_18:inject 9:37:r2:rotl@base_31:bijective 10:47:r5:mul@base_46:lossy 11:48:r0:mul@base_44:lossy 12:54:r2:rotr@base_52:bijective 13:57:r0:mulhi@base_50:lossy 14:59:r4:mad@base_49:inject 15:60:r3:load@base_54:inject +igneum-ca3-v4-uniform/465 ad493b973cc8a154 0 0:2:0 1:2:2 2:2:1 3:2:1 4:2:2 5:0:0 6:0:0 7:2:0 8:1:0 9:2:0 10:1:0 11:1:0 12:2:0 13:0:0 14:2:3 15:2:2 2 0 0 1 1 0:3:r6:rotl@base_2:bijective 1:7:r4:add@base_0:inject 2:12:r4:rotl@base_10:bijective 3:15:r1:xor@base_8:inject 4:19:r6:load@base_7:inject 5:23:r5:load@base_15:inject 6:34:r3:sub@base_24:inject 7:38:r0:mulhi@base_37:lossy 8:43:r5:mad@base_42:inject 9:44:r6:load@base_38:inject 10:48:r7:load@base_44:inject 11:49:r6:load@base_48:inject 12:54:r3:mul@base_53:lossy 13:55:r7:load@base_54:inject 14:61:r1:xor@base_60:inject 15:63:r2:xor@base_51:inject +igneum-ca3-v4-uniform/466 adb63b8b1d2013c6 0 0:1:1 1:1:1 2:0:0 3:0:0 4:0:0 5:2:3 6:1:1 7:2:0 8:1:1 9:0:0 10:2:0 11:0:0 12:2:1 13:2:0 14:1:1 15:0:0 1 1 0 0 0 0:5:r6:or@base_3:lossy 1:6:r7:load@base_5:inject 2:10:r0:mad@base_7:inject 3:13:r5:add@base_8:inject 4:14:r6:load@base_6:inject 5:21:r0:sub@base_18:inject 6:23:r5:add@base_19:inject 7:34:r0:sub@base_29:inject 8:42:r2:add@base_41:inject 9:44:r4:sub@base_40:inject 10:46:r0:load@base_44:inject 11:47:r3:mad@base_38:inject 12:51:r1:sub@base_49:inject 13:56:r2:xor@base_55:inject 14:57:r7:load@base_56:inject 15:58:r3:sub@base_54:inject +igneum-ca3-v4-uniform/467 bcf39f982044a231 0 0:0:0 1:1:0 2:2:3 3:0:0 4:2:1 5:0:0 6:1:1 7:1:0 8:1:1 9:2:1 10:1:0 11:2:1 12:0:0 13:1:0 14:2:1 15:1:0 4 1 0 0 3 0:1:r1:mulhi@base_0:lossy 1:4:r2:or@base_2:lossy 2:6:r0:load@base_1:inject 3:9:r5:add@base_5:inject 4:11:r0:load@base_9:inject 5:16:r1:mulhi@base_10:lossy 6:19:r6:load@base_16:inject 7:24:r2:shfl@base_22:inject 8:26:r4:load@base_24:inject 9:27:r1:mulhi@base_20:lossy 10:36:r2:rotr@base_33:bijective 11:39:r1:shfl@base_37:inject 12:46:r5:add@base_32:inject 13:51:r0:load@base_46:inject 14:57:r4:mad@base_40:inject 15:61:r1:mad@base_55:inject +igneum-ca3-v4-uniform/468 8d4e898df0241ec3 0 0:1:0 1:2:1 2:0:0 3:0:0 4:2:0 5:1:0 6:1:1 7:0:0 8:1:0 9:2:2 10:0:0 11:0:0 12:1:0 13:0:0 14:1:1 15:2:1 2 1 0 1 0 0:6:r3:add@base_4:inject 1:9:r4:mad@base_7:inject 2:13:r6:xor@base_0:inject 3:18:r7:shfl@base_17:inject 4:21:r4:sub@base_20:inject 5:25:r4:add@base_23:inject 6:27:r3:xor@base_24:inject 7:30:r1:rotr@base_28:bijective 8:37:r2:shfl@base_33:inject 9:40:r3:or@base_36:lossy 10:47:r0:load@base_30:inject 11:48:r5:rotr@base_19:bijective 12:50:r4:mul@base_44:lossy 13:52:r5:load@base_50:inject 14:53:r6:load@base_52:inject 15:60:r1:load@base_48:inject +igneum-ca3-v4-uniform/469 b8e7b38eb73cee11 0 0:2:3 1:0:0 2:2:0 3:1:0 4:0:0 5:1:0 6:0:0 7:2:2 8:1:0 9:2:0 10:0:0 11:2:2 12:2:0 13:1:1 14:2:0 15:2:3 4 1 0 0 3 0:3:r1:xor@base_1:inject 1:5:r7:sub@base_0:inject 2:6:r0:rotr@base_4:bijective 3:8:r2:load@base_3:inject 4:12:r3:load@base_5:inject 5:13:r6:sub@base_11:inject 6:14:r5:load@base_13:inject 7:16:r4:load@base_12:inject 8:20:r0:add@base_9:inject 9:23:r1:mulhi@base_19:lossy 10:29:r2:mulhi@base_28:lossy 11:31:r3:mulhi@base_30:lossy 12:41:r5:shfl@base_39:inject 13:42:r4:rotr@base_33:bijective 14:51:r1:mad@base_49:inject 15:53:r4:or@base_52:lossy +igneum-ca3-v4-uniform/470 09568ec1f51b6083 0 0:1:0 1:1:0 2:2:2 3:0:0 4:1:1 5:1:0 6:1:0 7:2:3 8:0:0 9:0:0 10:1:0 11:2:2 12:2:2 13:0:0 14:2:0 15:0:0 1 1 0 0 0 0:7:r4:add@base_3:inject 1:11:r1:rotl@base_8:bijective 2:13:r6:mad@base_12:inject 3:15:r4:mad@base_9:inject 4:16:r5:load@base_13:inject 5:17:r0:load@base_7:inject 6:19:r5:mad@base_18:inject 7:21:r2:load@base_19:inject 8:23:r6:load@base_21:inject 9:24:r1:or@base_20:lossy 10:25:r5:shfl@base_22:inject 11:26:r3:load@base_23:inject 12:31:r7:load@base_25:inject 13:32:r4:load@base_26:inject 14:49:r3:xor@base_45:inject 15:51:r4:load@base_49:inject +igneum-ca3-v4-uniform/471 0faeb811135627c0 0 0:2:2 1:0:0 2:2:1 3:1:0 4:2:3 5:0:0 6:0:0 7:2:3 8:1:1 9:1:1 10:2:1 11:2:2 12:0:0 13:1:0 14:1:1 15:2:1 1 0 0 0 1 0:1:r4:rotl@base_0:bijective 1:5:r3:xor@base_4:inject 2:8:r0:shfl@base_7:inject 3:13:r5:sub@base_12:inject 4:19:r2:sub@base_18:inject 5:20:r6:mulhi@base_14:lossy 6:34:r5:shfl@base_29:inject 7:42:r7:shfl@base_41:inject 8:43:r4:rotr@base_39:bijective 9:45:r6:rotr@base_37:bijective 10:46:r2:load@base_43:inject 11:49:r7:load@base_46:inject 12:52:r1:shfl@base_51:inject 13:53:r5:load@base_49:inject 14:56:r7:sub@base_55:inject 15:63:r3:add@base_61:inject +igneum-ca3-v4-uniform/472 06db4acd6739ee66 0 0:1:1 1:2:0 2:2:1 3:1:1 4:0:0 5:1:1 6:2:3 7:1:0 8:0:0 9:2:2 10:2:2 11:0:0 12:2:1 13:1:1 14:0:0 15:1:0 3 1 0 1 1 0:1:r4:mulhi@base_0:lossy 1:4:r6:rotr@base_3:bijective 2:8:r0:mad@base_7:inject 3:14:r6:add@base_13:inject 4:15:r0:load@base_14:inject 5:22:r7:xor@base_5:inject 6:26:r5:sub@base_23:inject 7:27:r1:mad@base_20:inject 8:31:r0:rotr@base_19:bijective 9:35:r4:load@base_31:inject 10:43:r6:mad@base_37:inject 11:47:r3:rotr@base_44:bijective 12:51:r1:or@base_50:lossy 13:53:r7:load@base_51:inject 14:57:r0:shfl@base_41:inject 15:58:r5:mul@base_56:lossy +igneum-ca3-v4-uniform/473 23a821c0506b9e7b 0 0:0:0 1:1:0 2:1:1 3:2:1 4:0:0 5:0:0 6:1:0 7:2:1 8:0:0 9:0:0 10:0:0 11:1:0 12:1:1 13:1:0 14:2:1 15:0:0 2 1 0 0 1 0:1:r4:sub@base_0:inject 1:9:r5:load@base_1:inject 2:16:r3:add@base_12:inject 3:18:r6:load@base_16:inject 4:23:r0:rotl@base_13:bijective 5:24:r2:mad@base_14:inject 6:32:r1:add@base_29:inject 7:33:r2:mulhi@base_26:lossy 8:35:r3:load@base_33:inject 9:39:r4:load@base_18:inject 10:44:r6:rotl@base_25:bijective 11:45:r5:or@base_43:lossy 12:47:r3:load@base_45:inject 13:49:r7:shfl@base_42:inject 14:57:r4:mad@base_53:inject 15:58:r7:shfl@base_55:inject +igneum-ca3-v4-uniform/474 aaa0cca8aed0f201 0 0:0:0 1:1:1 2:0:0 3:2:0 4:2:2 5:2:2 6:1:1 7:0:0 8:0:0 9:2:3 10:1:0 11:2:0 12:2:3 13:0:0 14:2:0 15:1:1 4 0 0 3 1 0:6:r7:mul@base_2:lossy 1:14:r6:rotl@base_13:bijective 2:19:r5:mad@base_4:inject 3:20:r0:mul@base_11:lossy 4:29:r4:shfl@base_28:inject 5:30:r7:mulhi@base_27:lossy 6:31:r0:load@base_29:inject 7:34:r2:load@base_30:inject 8:37:r6:mad@base_36:inject 9:41:r2:add@base_40:inject 10:43:r6:load@base_41:inject 11:49:r0:shfl@base_48:inject 12:50:r4:mul@base_44:lossy 13:52:r3:load@base_50:inject 14:61:r1:xor@base_55:inject 15:62:r3:shfl@base_56:inject +igneum-ca3-v4-uniform/475 d16f6a7caa46123f 0 0:1:1 1:2:2 2:2:0 3:0:0 4:2:1 5:2:0 6:1:0 7:0:0 8:2:0 9:2:2 10:2:2 11:2:3 12:0:0 13:2:2 14:2:0 15:0:0 4 0 0 2 2 0:4:r5:shfl@base_0:inject 1:9:r5:mulhi@base_5:lossy 2:11:r2:add@base_10:inject 3:13:r2:rotr@base_12:bijective 4:18:r6:shfl@base_14:inject 5:21:r7:load@base_9:inject 6:23:r5:shfl@base_22:inject 7:24:r6:load@base_21:inject 8:25:r4:mul@base_19:lossy 9:29:r2:load@base_23:inject 10:36:r2:shfl@base_31:inject 11:40:r6:load@base_36:inject 12:42:r5:mulhi@base_28:lossy 13:52:r6:shfl@base_48:inject 14:59:r5:mul@base_55:lossy 15:60:r4:shfl@base_57:inject +igneum-ca3-v4-uniform/476 5cddaaf5ed56e2b8 0 0:1:1 1:2:3 2:0:0 3:1:1 4:2:0 5:1:1 6:1:1 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:1:1 13:1:1 14:2:2 15:2:0 4 2 0 1 1 0:3:r6:add@base_2:inject 1:4:r5:or@base_1:lossy 2:13:r2:mul@base_6:lossy 3:15:r3:mad@base_8:inject 4:20:r3:xor@base_19:inject 5:25:r0:load@base_20:inject 6:29:r6:xor@base_17:inject 7:30:r5:mad@base_22:inject 8:34:r4:load@base_15:inject 9:38:r1:load@base_30:inject 10:42:r6:shfl@base_39:inject 11:45:r3:rotr@base_33:bijective 12:48:r7:load@base_45:inject 13:56:r2:mulhi@base_52:lossy 14:58:r0:rotl@base_47:bijective 15:62:r4:or@base_59:lossy +igneum-ca3-v4-uniform/477 7b9d1a39451fa938 0 0:1:1 1:0:0 2:1:0 3:1:1 4:0:0 5:2:0 6:0:0 7:2:1 8:1:1 9:2:2 10:1:0 11:2:1 12:1:1 13:2:1 14:2:0 15:0:0 2 0 0 2 0 0:1:r2:mul@base_0:lossy 1:6:r2:mad@base_2:inject 2:7:r5:shfl@base_3:inject 3:9:r6:shfl@base_8:inject 4:14:r6:rotl@base_13:bijective 5:18:r0:rotl@base_12:bijective 6:19:r6:rotr@base_15:bijective 7:22:r7:rotl@base_11:bijective 8:25:r2:mad@base_24:inject 9:27:r4:load@base_19:inject 10:31:r7:xor@base_30:inject 11:35:r0:load@base_22:inject 12:46:r1:xor@base_41:inject 13:56:r7:add@base_44:inject 14:57:r6:mul@base_55:lossy 15:61:r7:mad@base_59:inject +igneum-ca3-v4-uniform/478 beeee333123467f3 0 0:2:1 1:0:0 2:0:0 3:2:0 4:1:0 5:1:0 6:1:0 7:1:0 8:0:0 9:0:0 10:1:1 11:2:3 12:1:1 13:1:1 14:1:0 15:0:0 0 0 0 0 0 0:3:r6:xor@base_0:inject 1:4:r7:load@base_3:inject 2:7:r6:rotl@base_5:bijective 3:8:r3:xor@base_2:inject 4:11:r2:shfl@base_6:inject 5:15:r0:sub@base_13:inject 6:21:r4:load@base_15:inject 7:34:r2:add@base_23:inject 8:35:r3:xor@base_29:inject 9:41:r5:mad@base_32:inject 10:43:r1:mad@base_39:inject 11:44:r3:add@base_37:inject 12:47:r0:load@base_44:inject 13:48:r7:load@base_43:inject 14:52:r2:load@base_47:inject 15:62:r0:xor@base_57:inject +igneum-ca3-v4-uniform/479 0d30f596390f7519 0 0:0:0 1:0:0 2:2:0 3:2:2 4:0:0 5:2:1 6:1:0 7:1:1 8:1:0 9:1:0 10:2:3 11:1:1 12:0:0 13:0:0 14:2:1 15:1:0 3 0 0 2 1 0:10:r1:add@base_1:inject 1:12:r3:rotl@base_9:bijective 2:13:r7:mad@base_7:inject 3:14:r5:rotl@base_4:bijective 4:16:r2:sub@base_6:inject 5:20:r3:mul@base_15:lossy 6:26:r6:rotl@base_17:bijective 7:28:r0:load@base_16:inject 8:31:r1:load@base_28:inject 9:33:r4:load@base_31:inject 10:35:r6:add@base_29:inject 11:37:r5:mad@base_36:inject 12:38:r3:load@base_37:inject 13:48:r4:rotl@base_46:bijective 14:60:r7:mulhi@base_51:lossy 15:63:r6:mul@base_62:lossy +igneum-ca3-v4-uniform/480 d9d4ba7374a547a2 0 0:0:0 1:1:0 2:0:0 3:0:0 4:1:1 5:1:0 6:2:0 7:0:0 8:0:0 9:1:1 10:0:0 11:0:0 12:2:1 13:2:0 14:2:2 15:0:0 3 0 0 1 2 0:3:r4:shfl@base_1:inject 1:4:r6:load@base_3:inject 2:7:r2:load@base_4:inject 3:14:r1:mulhi@base_6:lossy 4:16:r3:mad@base_15:inject 5:23:r7:add@base_18:inject 6:27:r2:rotr@base_24:bijective 7:33:r2:add@base_30:inject 8:34:r6:rotl@base_29:bijective 9:39:r3:mad@base_35:inject 10:43:r0:mul@base_20:lossy 11:46:r1:mulhi@base_36:lossy 12:48:r6:sub@base_44:inject 13:49:r4:mad@base_45:inject 14:53:r2:xor@base_51:inject 15:61:r3:sub@base_55:inject +igneum-ca3-v4-uniform/481 9a35cfebd5401908 0 0:1:1 1:0:0 2:1:1 3:0:0 4:2:1 5:1:1 6:1:0 7:2:3 8:0:0 9:1:1 10:0:0 11:0:0 12:0:0 13:0:0 14:2:3 15:0:0 1 0 0 0 1 0:2:r2:mad@base_0:inject 1:3:r4:sub@base_1:inject 2:20:r6:sub@base_16:inject 3:25:r5:mulhi@base_15:lossy 4:26:r0:load@base_25:inject 5:27:r4:rotl@base_23:bijective 6:28:r7:load@base_27:inject 7:32:r3:rotl@base_30:bijective 8:35:r4:rotr@base_33:bijective 9:36:r7:load@base_32:inject 10:41:r4:xor@base_40:inject 11:43:r1:load@base_35:inject 12:51:r3:load@base_43:inject 13:52:r5:mad@base_46:inject 14:55:r4:load@base_51:inject 15:63:r7:add@base_58:inject +igneum-ca3-v4-uniform/482 51d47a378fe88747 0 0:2:1 1:1:0 2:0:0 3:1:0 4:1:1 5:2:2 6:0:0 7:1:0 8:1:0 9:2:0 10:1:0 11:2:0 12:1:0 13:1:1 14:0:0 15:1:0 3 1 0 1 1 0:6:r7:mad@base_5:inject 1:11:r3:mulhi@base_10:lossy 2:12:r4:shfl@base_3:inject 3:18:r7:or@base_16:lossy 4:19:r0:load@base_18:inject 5:22:r0:mul@base_20:lossy 6:35:r5:load@base_6:inject 7:37:r4:shfl@base_33:inject 8:38:r6:load@base_22:inject 9:41:r2:rotl@base_39:bijective 10:43:r0:load@base_41:inject 11:47:r2:rotl@base_46:bijective 12:49:r7:sub@base_44:inject 13:56:r0:load@base_49:inject 14:58:r4:load@base_56:inject 15:61:r7:xor@base_57:inject +igneum-ca3-v4-uniform/483 3176e1d7253eaff4 1 0:2:0 1:2:1 2:0:0 3:1:0 4:0:0 5:2:1 6:1:1 7:1:0 8:1:0 9:0:0 10:0:0 11:1:0 12:0:0 13:0:0 14:1:0 15:0:0 1 0 0 1 0 0:6:r1:mad@base_1:inject 1:8:r7:rotl@base_7:bijective 2:10:r0:load@base_6:inject 3:11:r3:xor@base_5:inject 4:17:r7:xor@base_12:inject 5:22:r3:sub@base_18:inject 6:28:r7:rotl@base_25:bijective 7:36:r0:rotr@base_31:bijective 8:39:r5:rotr@base_34:bijective 9:40:r0:sub@base_37:inject 10:41:r6:load@base_40:inject 11:42:r2:load@base_41:inject 12:43:r1:sub@base_33:inject 13:51:r3:rotr@base_48:bijective 14:52:r2:mul@base_46:lossy 15:56:r3:rotr@base_53:bijective +igneum-ca3-v4-uniform/484 c6ba49c89402cf1d 0 0:1:0 1:2:1 2:1:0 3:1:0 4:2:1 5:1:1 6:2:3 7:2:2 8:0:0 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 2 0 0 2 0 0:1:r6:shfl@base_0:inject 1:8:r7:load@base_1:inject 2:9:r5:rotr@base_3:bijective 3:13:r6:xor@base_10:inject 4:14:r4:load@base_13:inject 5:18:r0:sub@base_7:inject 6:19:r5:mul@base_12:lossy 7:23:r1:load@base_18:inject 8:24:r2:mul@base_22:lossy 9:29:r6:load@base_24:inject 10:30:r3:xor@base_17:inject 11:33:r4:rotl@base_32:bijective 12:37:r6:load@base_33:inject 13:43:r2:shfl@base_36:inject 14:51:r7:sub@base_44:inject 15:56:r2:mad@base_55:inject +igneum-ca3-v4-uniform/485 38badc69a242f1eb 0 0:0:0 1:1:1 2:2:1 3:1:0 4:0:0 5:1:1 6:0:0 7:2:3 8:1:1 9:2:3 10:2:0 11:0:0 12:1:1 13:0:0 14:0:0 15:0:0 1 0 0 0 1 0:4:r5:rotl@base_1:bijective 1:7:r7:mad@base_3:inject 2:8:r0:add@base_5:inject 3:12:r2:mad@base_2:inject 4:16:r3:load@base_12:inject 5:17:r7:mulhi@base_9:lossy 6:19:r0:load@base_16:inject 7:20:r7:load@base_19:inject 8:24:r4:load@base_20:inject 9:27:r2:shfl@base_25:inject 10:32:r0:add@base_31:inject 11:35:r6:xor@base_33:inject 12:39:r0:load@base_35:inject 13:41:r3:xor@base_38:inject 14:45:r7:load@base_32:inject 15:52:r1:load@base_45:inject +igneum-ca3-v4-uniform/486 1bcbf7a5471de741 0 0:0:0 1:0:0 2:1:1 3:0:0 4:0:0 5:2:3 6:2:2 7:0:0 8:0:0 9:0:0 10:1:0 11:2:2 12:2:3 13:2:3 14:0:0 15:2:3 2 1 0 1 0 0:1:r2:mul@base_0:lossy 1:4:r1:load@base_1:inject 2:6:r5:add@base_3:inject 3:7:r0:load@base_6:inject 4:13:r3:add@base_10:inject 5:21:r4:add@base_19:inject 6:22:r6:load@base_21:inject 7:29:r7:add@base_24:inject 8:30:r2:rotl@base_16:bijective 9:32:r5:load@base_29:inject 10:41:r1:or@base_37:lossy 11:43:r2:xor@base_42:inject 12:49:r6:sub@base_31:inject 13:55:r2:add@base_48:inject 14:60:r3:load@base_43:inject 15:62:r4:add@base_53:inject +igneum-ca3-v4-uniform/487 a278f6c6aca17d85 0 0:2:2 1:1:1 2:1:1 3:2:0 4:1:0 5:0:0 6:2:1 7:2:3 8:2:0 9:0:0 10:0:0 11:0:0 12:1:1 13:0:0 14:2:1 15:2:2 5 2 0 2 1 0:4:r6:or@base_0:lossy 1:13:r2:sub@base_10:inject 2:19:r4:mad@base_14:inject 3:22:r2:mul@base_16:lossy 4:30:r7:rotr@base_18:bijective 5:32:r7:or@base_31:lossy 6:38:r4:mulhi@base_35:lossy 7:42:r2:mul@base_37:lossy 8:47:r5:xor@base_45:inject 9:48:r3:xor@base_34:inject 10:53:r5:xor@base_50:inject 11:54:r0:shfl@base_49:inject 12:58:r3:load@base_54:inject 13:59:r5:load@base_58:inject 14:61:r7:load@base_53:inject 15:63:r6:add@base_62:inject +igneum-ca3-v4-uniform/488 efdc63099f0c2368 0 0:2:2 1:1:0 2:0:0 3:0:0 4:2:0 5:1:1 6:0:0 7:1:1 8:1:0 9:1:1 10:2:2 11:2:2 12:2:1 13:2:1 14:1:0 15:2:1 1 0 0 0 1 0:8:r1:sub@base_4:inject 1:9:r7:rotr@base_7:bijective 2:12:r2:shfl@base_10:inject 3:16:r0:mad@base_6:inject 4:19:r1:xor@base_18:inject 5:25:r3:mulhi@base_20:lossy 6:28:r6:rotr@base_27:bijective 7:31:r7:mad@base_30:inject 8:46:r7:rotl@base_45:bijective 9:47:r4:load@base_19:inject 10:48:r5:xor@base_44:inject 11:51:r5:sub@base_49:inject 12:58:r1:add@base_57:inject 13:61:r0:xor@base_54:inject 14:62:r7:xor@base_60:inject 15:63:r2:load@base_61:inject +igneum-ca3-v4-uniform/489 6eaf276972711344 0 0:1:1 1:0:0 2:0:0 3:2:0 4:2:1 5:0:0 6:2:2 7:0:0 8:1:0 9:0:0 10:1:0 11:1:1 12:0:0 13:0:0 14:2:0 15:1:0 6 1 0 3 2 0:4:r1:rotl@base_2:bijective 1:7:r2:rotl@base_6:bijective 2:8:r3:rotl@base_5:bijective 3:9:r7:load@base_8:inject 4:11:r4:load@base_9:inject 5:21:r0:mad@base_18:inject 6:23:r7:mul@base_12:lossy 7:26:r6:rotl@base_22:bijective 8:27:r7:mulhi@base_25:lossy 9:28:r1:or@base_13:lossy 10:29:r2:mad@base_24:inject 11:31:r4:load@base_26:inject 12:35:r3:add@base_34:inject 13:37:r6:mulhi@base_36:lossy 14:38:r5:mul@base_33:lossy 15:49:r3:mul@base_43:lossy +igneum-ca3-v4-uniform/490 ccb85738ef9427d9 0 0:1:1 1:0:0 2:1:1 3:0:0 4:1:1 5:2:2 6:1:1 7:0:0 8:1:0 9:2:1 10:0:0 11:2:3 12:2:3 13:1:0 14:1:1 15:1:0 5 0 0 3 2 0:2:r3:shfl@base_1:inject 1:3:r7:mul@base_0:lossy 2:8:r7:rotl@base_5:bijective 3:9:r0:mulhi@base_4:lossy 4:16:r1:rotr@base_7:bijective 5:18:r5:load@base_8:inject 6:21:r3:mul@base_10:lossy 7:37:r6:xor@base_36:inject 8:41:r2:rotl@base_39:bijective 9:44:r3:add@base_30:inject 10:45:r1:sub@base_20:inject 11:51:r5:mulhi@base_48:lossy 12:54:r7:mul@base_49:lossy 13:60:r1:add@base_50:inject 14:61:r7:rotr@base_56:bijective 15:62:r3:load@base_61:inject +igneum-ca3-v4-uniform/491 d3a77460b75d9ef1 0 0:1:1 1:1:0 2:0:0 3:2:3 4:0:0 5:0:0 6:1:1 7:2:1 8:1:1 9:2:0 10:2:0 11:1:0 12:2:0 13:2:1 14:2:3 15:1:1 3 1 0 1 1 0:1:r5:sub@base_0:inject 1:8:r0:or@base_6:lossy 2:12:r4:load@base_8:inject 3:17:r7:xor@base_13:inject 4:18:r1:shfl@base_14:inject 5:22:r3:mad@base_11:inject 6:24:r4:add@base_21:inject 7:27:r1:shfl@base_20:inject 8:33:r3:sub@base_25:inject 9:44:r2:mulhi@base_36:lossy 10:48:r5:mad@base_47:inject 11:49:r1:xor@base_45:inject 12:50:r0:mul@base_31:lossy 13:54:r2:mad@base_51:inject 14:55:r5:rotr@base_52:bijective 15:58:r7:load@base_54:inject +igneum-ca3-v4-uniform/492 0418010195e449f9 0 0:1:1 1:0:0 2:1:1 3:1:0 4:1:0 5:1:0 6:1:0 7:0:0 8:2:2 9:1:1 10:2:0 11:2:3 12:1:1 13:2:1 14:0:0 15:2:0 3 1 0 1 1 0:4:r4:sub@base_2:inject 1:5:r7:sub@base_3:inject 2:7:r2:load@base_4:inject 3:9:r1:xor@base_6:inject 4:10:r6:shfl@base_8:inject 5:13:r1:add@base_12:inject 6:15:r3:load@base_10:inject 7:19:r6:load@base_13:inject 8:22:r2:or@base_18:lossy 9:30:r5:mulhi@base_17:lossy 10:31:r3:mul@base_20:lossy 11:44:r2:load@base_30:inject 12:45:r7:shfl@base_41:inject 13:46:r0:add@base_40:inject 14:47:r6:xor@base_37:inject 15:52:r4:load@base_45:inject +igneum-ca3-v4-uniform/493 769567ab5aa100da 0 0:1:0 1:1:0 2:1:1 3:0:0 4:1:1 5:1:1 6:2:0 7:2:1 8:0:0 9:2:3 10:0:0 11:2:3 12:0:0 13:0:0 14:1:1 15:2:3 3 1 0 1 1 0:11:r1:mul@base_10:lossy 1:14:r6:load@base_11:inject 2:16:r2:sub@base_9:inject 3:19:r3:mulhi@base_18:lossy 4:24:r1:rotl@base_22:bijective 5:25:r4:load@base_19:inject 6:26:r5:load@base_24:inject 7:27:r7:rotr@base_23:bijective 8:34:r5:add@base_28:inject 9:45:r6:rotl@base_44:bijective 10:51:r0:add@base_41:inject 11:52:r3:load@base_51:inject 12:53:r1:or@base_49:lossy 13:56:r1:shfl@base_54:inject 14:59:r0:load@base_56:inject 15:61:r2:rotl@base_55:bijective +igneum-ca3-v4-uniform/494 9057d2897fd2dde7 0 0:1:0 1:2:3 2:1:1 3:0:0 4:1:1 5:0:0 6:2:0 7:0:0 8:2:2 9:2:2 10:0:0 11:1:0 12:2:2 13:1:1 14:2:3 15:1:0 3 0 0 2 1 0:5:r0:mul@base_0:lossy 1:7:r7:mad@base_4:inject 2:11:r5:load@base_7:inject 3:14:r5:xor@base_13:inject 4:17:r3:mad@base_1:inject 5:19:r0:add@base_12:inject 6:20:r2:load@base_19:inject 7:28:r1:add@base_26:inject 8:33:r3:load@base_28:inject 9:34:r7:rotr@base_32:bijective 10:36:r5:mulhi@base_31:lossy 11:38:r4:load@base_34:inject 12:46:r0:rotl@base_39:bijective 13:51:r1:load@base_46:inject 14:54:r5:mul@base_45:lossy 15:58:r2:add@base_56:inject +igneum-ca3-v4-uniform/495 157513877dc0e5c3 0 0:0:0 1:1:1 2:1:1 3:1:1 4:1:0 5:0:0 6:2:1 7:2:0 8:0:0 9:0:0 10:0:0 11:1:0 12:1:1 13:0:0 14:2:2 15:2:0 5 1 0 3 1 0:8:r2:shfl@base_6:inject 1:12:r4:xor@base_7:inject 2:20:r2:mul@base_16:lossy 3:21:r0:shfl@base_18:inject 4:23:r2:mad@base_22:inject 5:25:r5:mul@base_19:lossy 6:27:r4:load@base_20:inject 7:29:r5:shfl@base_26:inject 8:30:r7:mad@base_28:inject 9:35:r5:or@base_34:lossy 10:38:r2:add@base_32:inject 11:39:r4:load@base_38:inject 12:40:r1:mul@base_31:lossy 13:44:r3:mulhi@base_43:lossy 14:46:r7:load@base_44:inject 15:61:r7:shfl@base_60:inject +igneum-ca3-v4-uniform/496 3ffcca2d092233a4 0 0:0:0 1:0:0 2:0:0 3:1:0 4:1:0 5:0:0 6:1:1 7:1:1 8:0:0 9:0:0 10:0:0 11:0:0 12:2:3 13:2:3 14:2:2 15:0:0 3 1 0 1 1 0:6:r0:rotr@base_4:bijective 1:7:r2:load@base_6:inject 2:8:r5:mulhi@base_0:lossy 3:9:r3:mul@base_5:lossy 4:16:r7:add@base_15:inject 5:18:r0:shfl@base_13:inject 6:20:r4:rotr@base_11:bijective 7:21:r5:rotl@base_17:bijective 8:25:r0:load@base_21:inject 9:26:r1:load@base_25:inject 10:28:r4:xor@base_27:inject 11:31:r4:or@base_30:lossy 12:32:r0:load@base_28:inject 13:33:r1:load@base_31:inject 14:48:r1:rotl@base_44:bijective 15:55:r3:rotl@base_47:bijective +igneum-ca3-v4-uniform/497 ce63d0c23567058a 0 0:0:0 1:1:1 2:2:0 3:1:1 4:0:0 5:2:0 6:2:3 7:0:0 8:1:1 9:0:0 10:2:0 11:1:0 12:1:0 13:2:1 14:2:3 15:2:2 3 0 0 1 2 0:2:r2:rotl@base_1:bijective 1:6:r1:rotl@base_0:bijective 2:7:r3:xor@base_5:inject 3:13:r4:xor@base_12:inject 4:14:r2:load@base_13:inject 5:15:r6:xor@base_4:inject 6:26:r7:sub@base_21:inject 7:31:r3:rotl@base_28:bijective 8:40:r1:load@base_31:inject 9:44:r4:mul@base_39:lossy 10:49:r0:mulhi@base_46:lossy 11:51:r5:mulhi@base_42:lossy 12:52:r7:shfl@base_37:inject 13:54:r1:mad@base_53:inject 14:58:r5:load@base_54:inject 15:62:r2:add@base_61:inject +igneum-ca3-v4-uniform/498 35845ad16a6988ae 0 0:2:1 1:2:0 2:1:1 3:0:0 4:1:1 5:1:1 6:2:0 7:2:0 8:0:0 9:2:0 10:1:1 11:0:0 12:1:1 13:0:0 14:0:0 15:0:0 3 0 0 2 1 0:2:r3:add@base_0:inject 1:3:r7:load@base_2:inject 2:7:r0:load@base_3:inject 3:8:r6:mulhi@base_6:lossy 4:9:r7:rotr@base_4:bijective 5:16:r2:rotr@base_12:bijective 6:20:r0:mul@base_17:lossy 7:25:r3:load@base_7:inject 8:29:r3:mul@base_28:lossy 9:30:r5:load@base_25:inject 10:42:r7:shfl@base_37:inject 11:46:r1:rotl@base_39:bijective 12:51:r4:rotr@base_48:bijective 13:53:r0:add@base_43:inject 14:59:r2:shfl@base_38:inject 15:63:r1:rotl@base_62:bijective +igneum-ca3-v4-uniform/499 3d5edd212c1d047f 0 0:2:2 1:0:0 2:1:1 3:1:1 4:2:3 5:0:0 6:2:3 7:1:0 8:1:1 9:0:0 10:2:1 11:1:1 12:0:0 13:0:0 14:2:2 15:2:2 3 2 0 1 0 0:1:r3:mul@base_0:lossy 1:9:r2:or@base_6:lossy 2:10:r1:load@base_1:inject 3:17:r0:add@base_12:inject 4:30:r5:sub@base_20:inject 5:33:r0:mad@base_32:inject 6:36:r6:load@base_30:inject 7:38:r0:xor@base_35:inject 8:40:r1:load@base_36:inject 9:42:r3:load@base_33:inject 10:47:r4:shfl@base_46:inject 11:50:r4:shfl@base_49:inject 12:51:r6:load@base_47:inject 13:53:r3:mad@base_52:inject 14:54:r7:load@base_51:inject 15:60:r0:or@base_58:lossy +igneum-ca3-v4-uniform/500 e971ceb33d87c395 0 0:2:2 1:1:0 2:1:0 3:2:2 4:0:0 5:0:0 6:0:0 7:0:0 8:2:0 9:1:0 10:1:0 11:2:0 12:0:0 13:1:1 14:0:0 15:2:3 2 0 0 1 1 0:5:r4:mad@base_4:inject 1:7:r1:xor@base_2:inject 2:16:r2:mulhi@base_12:lossy 3:18:r3:sub@base_14:inject 4:21:r5:load@base_7:inject 5:24:r1:mul@base_23:lossy 6:26:r7:load@base_21:inject 7:29:r3:mad@base_22:inject 8:31:r0:add@base_20:inject 9:33:r7:load@base_29:inject 10:39:r4:load@base_26:inject 11:42:r0:mad@base_38:inject 12:47:r6:mad@base_46:inject 13:50:r1:xor@base_37:inject 14:56:r7:xor@base_49:inject 15:59:r0:sub@base_52:inject +igneum-ca3-v4-uniform/501 0b91ffea17cefd7b 0 0:2:1 1:2:1 2:1:0 3:1:0 4:1:0 5:0:0 6:1:0 7:0:0 8:1:1 9:2:3 10:0:0 11:1:0 12:2:0 13:2:2 14:1:1 15:2:2 3 0 0 0 3 0:5:r5:mulhi@base_2:lossy 1:9:r6:rotl@base_0:bijective 2:10:r2:rotr@base_3:bijective 3:17:r3:load@base_10:inject 4:20:r1:mad@base_18:inject 5:21:r5:rotr@base_14:bijective 6:26:r6:load@base_20:inject 7:31:r7:xor@base_30:inject 8:33:r7:mulhi@base_32:lossy 9:36:r1:mulhi@base_29:lossy 10:40:r4:load@base_31:inject 11:46:r2:mad@base_25:inject 12:50:r3:add@base_47:inject 13:52:r5:load@base_50:inject 14:56:r5:add@base_54:inject 15:61:r3:add@base_60:inject +igneum-ca3-v4-uniform/502 ee783c419ca2d45a 0 0:1:0 1:2:3 2:2:1 3:0:0 4:2:1 5:2:1 6:1:0 7:1:0 8:1:1 9:0:0 10:2:1 11:2:1 12:1:1 13:2:2 14:1:1 15:0:0 2 0 0 0 2 0:4:r5:mad@base_3:inject 1:5:r7:shfl@base_2:inject 2:11:r5:mad@base_6:inject 3:19:r1:load@base_5:inject 4:22:r0:mulhi@base_9:lossy 5:24:r2:load@base_22:inject 6:26:r3:add@base_21:inject 7:35:r3:xor@base_33:inject 8:36:r5:mad@base_34:inject 9:39:r7:add@base_32:inject 10:41:r1:load@base_26:inject 11:43:r2:load@base_41:inject 12:45:r1:shfl@base_42:inject 13:55:r4:mulhi@base_50:lossy 14:58:r2:add@base_53:inject 15:62:r6:load@base_55:inject +igneum-ca3-v4-uniform/503 7c13d6fafdcd2a8f 0 0:1:0 1:2:2 2:2:3 3:0:0 4:0:0 5:2:1 6:1:0 7:1:0 8:2:1 9:0:0 10:0:0 11:2:1 12:1:0 13:0:0 14:1:1 15:1:0 4 2 0 1 1 0:13:r7:xor@base_4:inject 1:14:r0:load@base_13:inject 2:15:r4:load@base_14:inject 3:22:r5:rotl@base_16:bijective 4:25:r6:or@base_18:lossy 5:26:r2:or@base_21:lossy 6:27:r0:rotr@base_20:bijective 7:28:r4:load@base_27:inject 8:36:r7:load@base_28:inject 9:38:r6:load@base_26:inject 10:41:r2:mad@base_37:inject 11:44:r3:load@base_41:inject 12:52:r4:mulhi@base_50:lossy 13:55:r0:load@base_36:inject 14:56:r2:mul@base_53:lossy 15:59:r2:add@base_58:inject +igneum-ca3-v4-uniform/504 29c116a6103c2399 0 0:1:0 1:0:0 2:1:0 3:2:2 4:2:1 5:0:0 6:2:1 7:0:0 8:2:3 9:2:1 10:0:0 11:2:2 12:0:0 13:1:1 14:0:0 15:2:1 3 0 0 2 1 0:5:r0:shfl@base_0:inject 1:9:r7:add@base_7:inject 2:12:r2:rotl@base_1:bijective 3:13:r0:load@base_9:inject 4:21:r4:mulhi@base_20:lossy 5:26:r5:rotr@base_25:bijective 6:29:r4:rotl@base_22:bijective 7:32:r0:load@base_21:inject 8:35:r4:load@base_32:inject 9:36:r7:rotr@base_14:bijective 10:41:r1:xor@base_40:inject 11:42:r3:mul@base_39:lossy 12:44:r2:mad@base_34:inject 13:53:r7:load@base_41:inject 14:60:r0:mul@base_59:lossy 15:62:r2:load@base_60:inject +igneum-ca3-v4-uniform/505 ce4066b7d978307b 0 0:0:0 1:1:1 2:0:0 3:1:0 4:0:0 5:2:3 6:0:0 7:0:0 8:1:0 9:2:2 10:1:0 11:2:1 12:1:0 13:1:1 14:2:1 15:1:0 7 2 0 4 1 0:1:r0:rotr@base_0:bijective 1:2:r6:load@base_1:inject 2:6:r5:mul@base_3:lossy 3:7:r3:load@base_6:inject 4:8:r4:rotl@base_4:bijective 5:9:r6:mad@base_5:inject 6:13:r7:mad@base_10:inject 7:17:r4:mul@base_16:lossy 8:21:r2:mul@base_18:lossy 9:36:r7:or@base_29:lossy 10:39:r5:mulhi@base_32:lossy 11:41:r4:mul@base_40:lossy 12:47:r3:or@base_37:lossy 13:48:r2:sub@base_46:inject 14:52:r5:load@base_47:inject 15:58:r1:add@base_57:inject +igneum-ca3-v4-uniform/506 80844b7fc6e11e3e 0 0:2:0 1:0:0 2:1:1 3:2:3 4:1:1 5:1:0 6:2:3 7:1:0 8:0:0 9:2:2 10:0:0 11:1:1 12:0:0 13:0:0 14:0:0 15:2:1 1 0 0 0 1 0:3:r0:rotl@base_0:bijective 1:4:r4:shfl@base_1:inject 2:5:r1:load@base_3:inject 3:6:r5:rotl@base_2:bijective 4:10:r6:rotl@base_8:bijective 5:14:r5:xor@base_12:inject 6:24:r4:xor@base_13:inject 7:27:r7:rotr@base_9:bijective 8:29:r2:load@base_27:inject 9:30:r6:load@base_29:inject 10:35:r5:load@base_30:inject 11:39:r7:load@base_35:inject 12:47:r2:load@base_39:inject 13:48:r1:mad@base_42:inject 14:59:r2:mulhi@base_55:lossy 15:63:r5:add@base_58:inject +igneum-ca3-v4-uniform/507 1b58fd36660b0bce 0 0:1:0 1:1:1 2:0:0 3:1:0 4:2:3 5:2:3 6:0:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 4 1 0 2 1 0:2:r2:mul@base_1:lossy 1:14:r2:mul@base_9:lossy 2:19:r4:rotl@base_4:bijective 3:21:r6:add@base_11:inject 4:23:r1:rotl@base_17:bijective 5:29:r2:mulhi@base_25:lossy 6:32:r1:shfl@base_24:inject 7:33:r6:rotl@base_28:bijective 8:39:r4:load@base_32:inject 9:49:r2:shfl@base_48:inject 10:52:r6:load@base_49:inject 11:53:r7:load@base_52:inject 12:55:r0:rotr@base_40:bijective 13:61:r6:or@base_56:lossy 14:62:r7:load@base_55:inject 15:63:r0:load@base_61:inject +igneum-ca3-v4-uniform/508 05145e88588409c5 0 0:1:0 1:1:0 2:2:1 3:0:0 4:0:0 5:1:1 6:0:0 7:0:0 8:1:1 9:0:0 10:1:1 11:0:0 12:2:0 13:2:2 14:1:0 15:0:0 4 0 0 1 3 0:3:r7:mulhi@base_2:lossy 1:14:r4:rotr@base_12:bijective 2:15:r7:load@base_14:inject 3:19:r5:add@base_9:inject 4:23:r1:shfl@base_6:inject 5:24:r2:rotl@base_20:bijective 6:30:r3:rotl@base_27:bijective 7:32:r0:load@base_30:inject 8:34:r7:mulhi@base_33:lossy 9:35:r4:add@base_16:inject 10:43:r3:mul@base_39:lossy 11:44:r5:rotr@base_37:bijective 12:48:r5:xor@base_47:inject 13:51:r6:mulhi@base_42:lossy 14:59:r4:shfl@base_56:inject 15:60:r7:load@base_59:inject +igneum-ca3-v4-uniform/509 6737e1271c0fc9a2 0 0:2:0 1:0:0 2:1:0 3:2:2 4:1:0 5:2:3 6:2:3 7:2:2 8:1:1 9:2:3 10:2:0 11:2:0 12:0:0 13:0:0 14:0:0 15:0:0 5 0 0 2 3 0:3:r3:mulhi@base_0:lossy 1:15:r3:rotl@base_12:bijective 2:18:r7:mulhi@base_16:lossy 3:21:r3:shfl@base_19:inject 4:28:r1:shfl@base_23:inject 5:29:r0:sub@base_22:inject 6:31:r5:sub@base_30:inject 7:35:r6:load@base_18:inject 8:37:r2:mul@base_36:lossy 9:40:r7:mul@base_34:lossy 10:42:r5:load@base_40:inject 11:48:r6:load@base_42:inject 12:50:r5:load@base_48:inject 13:52:r1:mulhi@base_51:lossy 14:57:r7:rotl@base_49:bijective 15:59:r0:rotr@base_44:bijective +igneum-ca3-v4-uniform/510 6a54349b4e07a82b 0 0:0:0 1:2:1 2:0:0 3:1:0 4:2:3 5:1:0 6:1:0 7:1:1 8:0:0 9:0:0 10:2:2 11:1:1 12:1:1 13:1:0 14:0:0 15:1:1 2 0 0 2 0 0:2:r3:rotl@base_0:bijective 1:5:r3:rotl@base_4:bijective 2:6:r4:mul@base_3:lossy 3:16:r7:add@base_10:inject 4:17:r6:load@base_6:inject 5:22:r5:rotl@base_20:bijective 6:25:r0:add@base_15:inject 7:26:r7:rotl@base_21:bijective 8:32:r4:rotl@base_18:bijective 9:39:r5:rotr@base_35:bijective 10:42:r1:mad@base_41:inject 11:43:r3:sub@base_19:inject 12:48:r0:load@base_42:inject 13:55:r5:load@base_48:inject 14:59:r4:load@base_43:inject 15:62:r0:mul@base_57:lossy +igneum-ca3-v4-uniform/511 fb70e45b97c8ea4a 0 0:1:0 1:1:0 2:1:0 3:0:0 4:0:0 5:1:1 6:2:1 7:1:1 8:1:1 9:0:0 10:1:1 11:0:0 12:2:1 13:1:1 14:2:1 15:0:0 4 1 0 1 2 0:2:r7:sub@base_0:inject 1:5:r4:add@base_4:inject 2:9:r1:add@base_7:inject 3:10:r4:load@base_9:inject 4:12:r0:load@base_10:inject 5:13:r7:xor@base_8:inject 6:19:r3:load@base_12:inject 7:22:r3:sub@base_20:inject 8:27:r1:xor@base_16:inject 9:34:r1:add@base_33:inject 10:37:r3:shfl@base_30:inject 11:41:r4:mulhi@base_35:lossy 12:45:r4:mulhi@base_42:lossy 13:53:r3:mul@base_51:lossy 14:60:r2:or@base_57:lossy 15:62:r6:shfl@base_54:inject +igneum-ca3-v4-uniform/512 d1d710e39c37f6ed 0 0:2:2 1:0:0 2:0:0 3:0:0 4:0:0 5:0:0 6:1:1 7:2:3 8:0:0 9:1:0 10:1:0 11:0:0 12:2:2 13:0:0 14:1:0 15:0:0 4 1 0 1 2 0:2:r7:sub@base_1:inject 1:4:r1:load@base_2:inject 2:8:r1:mulhi@base_7:lossy 3:9:r6:mul@base_3:lossy 4:10:r0:load@base_8:inject 5:27:r2:mulhi@base_20:lossy 6:28:r7:add@base_21:inject 7:29:r6:load@base_27:inject 8:36:r1:xor@base_33:inject 9:39:r5:sub@base_37:inject 10:40:r6:xor@base_32:inject 11:45:r7:shfl@base_41:inject 12:46:r2:shfl@base_42:inject 13:56:r4:shfl@base_48:inject 14:60:r7:mad@base_58:inject 15:62:r0:or@base_59:lossy +igneum-ca3-v4-uniform/513 e3d98b3336ffd2b7 0 0:2:1 1:2:2 2:1:0 3:0:0 4:2:0 5:1:0 6:2:3 7:1:0 8:2:3 9:2:0 10:1:0 11:1:1 12:0:0 13:2:1 14:2:0 15:2:3 1 1 0 0 0 0:10:r2:rotr@base_5:bijective 1:12:r3:mad@base_4:inject 2:13:r1:load@base_10:inject 3:17:r6:xor@base_15:inject 4:19:r2:add@base_16:inject 5:21:r6:mad@base_20:inject 6:24:r3:load@base_17:inject 7:30:r1:or@base_23:lossy 8:31:r4:add@base_27:inject 9:34:r0:load@base_24:inject 10:35:r3:shfl@base_28:inject 11:41:r7:rotr@base_40:bijective 12:45:r4:shfl@base_43:inject 13:47:r0:add@base_46:inject 14:50:r5:load@base_41:inject 15:60:r3:xor@base_57:inject +igneum-ca3-v4-uniform/514 418401200c1580f2 0 0:1:0 1:0:0 2:0:0 3:2:2 4:1:0 5:0:0 6:0:0 7:1:0 8:2:1 9:2:0 10:2:3 11:1:1 12:2:3 13:0:0 14:0:0 15:2:1 3 0 0 2 1 0:1:r5:add@base_0:inject 1:6:r6:mulhi@base_3:lossy 2:8:r0:mad@base_5:inject 3:12:r5:load@base_8:inject 4:21:r4:rotr@base_10:bijective 5:22:r7:load@base_21:inject 6:23:r5:mul@base_15:lossy 7:30:r2:mad@base_25:inject 8:34:r4:rotr@base_33:bijective 9:36:r5:sub@base_28:inject 10:37:r0:mad@base_29:inject 11:41:r1:load@base_36:inject 12:50:r6:mul@base_45:lossy 13:51:r4:load@base_50:inject 14:52:r7:load@base_51:inject 15:61:r0:rotl@base_57:bijective +igneum-ca3-v4-uniform/515 ce83f73ddd3f444c 0 0:0:0 1:2:2 2:0:0 3:2:1 4:1:0 5:2:2 6:1:0 7:2:1 8:2:2 9:0:0 10:0:0 11:2:3 12:1:0 13:1:0 14:1:1 15:2:3 1 1 0 0 0 0:4:r4:or@base_1:lossy 1:13:r7:rotr@base_2:bijective 2:16:r4:sub@base_15:inject 3:17:r6:rotl@base_12:bijective 4:24:r2:rotl@base_18:bijective 5:26:r4:rotl@base_23:bijective 6:27:r3:load@base_24:inject 7:29:r7:xor@base_14:inject 8:30:r5:load@base_26:inject 9:37:r0:mad@base_31:inject 10:39:r6:load@base_37:inject 11:40:r1:rotl@base_28:bijective 12:41:r2:xor@base_38:inject 13:42:r4:add@base_34:inject 14:51:r5:mad@base_49:inject 15:60:r0:add@base_54:inject +igneum-ca3-v4-uniform/516 29fd15cfe43d7353 0 0:1:0 1:2:1 2:1:0 3:1:0 4:0:0 5:1:1 6:1:0 7:0:0 8:0:0 9:0:0 10:2:1 11:0:0 12:1:0 13:0:0 14:1:0 15:0:0 2 0 0 1 1 0:10:r1:mul@base_8:lossy 1:13:r4:xor@base_9:inject 2:15:r1:add@base_14:inject 3:17:r3:mad@base_4:inject 4:18:r5:load@base_13:inject 5:25:r0:sub@base_23:inject 6:30:r3:xor@base_29:inject 7:34:r0:sub@base_28:inject 8:35:r2:rotl@base_31:bijective 9:39:r0:mulhi@base_37:lossy 10:40:r1:load@base_39:inject 11:42:r4:rotr@base_36:bijective 12:47:r5:load@base_40:inject 13:49:r0:mad@base_48:inject 14:52:r3:sub@base_50:inject 15:63:r7:mad@base_61:inject +igneum-ca3-v4-uniform/517 0251d2ec0710be24 0 0:1:0 1:0:0 2:1:0 3:2:0 4:1:1 5:2:3 6:1:1 7:1:0 8:0:0 9:0:0 10:0:0 11:0:0 12:1:1 13:2:1 14:2:3 15:1:0 3 0 0 1 2 0:11:r2:shfl@base_3:inject 1:18:r5:mul@base_16:lossy 2:19:r3:mulhi@base_17:lossy 3:20:r2:sub@base_14:inject 4:22:r0:load@base_19:inject 5:23:r1:load@base_22:inject 6:26:r6:rotr@base_25:bijective 7:29:r0:load@base_26:inject 8:31:r3:mulhi@base_30:lossy 9:32:r1:load@base_31:inject 10:34:r7:load@base_29:inject 11:48:r5:rotr@base_39:bijective 12:49:r6:rotl@base_42:bijective 13:54:r1:sub@base_51:inject 14:56:r3:load@base_48:inject 15:63:r3:rotr@base_58:bijective +igneum-ca3-v4-uniform/518 891c740b210e478c 0 0:1:1 1:0:0 2:1:1 3:0:0 4:0:0 5:1:1 6:1:1 7:1:0 8:0:0 9:1:0 10:0:0 11:0:0 12:2:1 13:1:1 14:1:1 15:2:3 1 0 0 1 0 0:1:r3:rotl@base_0:bijective 1:7:r5:add@base_4:inject 2:17:r2:add@base_13:inject 3:21:r1:rotl@base_16:bijective 4:24:r2:xor@base_19:inject 5:27:r7:load@base_24:inject 6:30:r4:load@base_27:inject 7:31:r3:mul@base_29:lossy 8:34:r6:load@base_31:inject 9:38:r0:sub@base_33:inject 10:39:r6:load@base_38:inject 11:42:r4:load@base_34:inject 12:46:r3:sub@base_36:inject 13:48:r2:load@base_39:inject 14:54:r3:load@base_48:inject 15:57:r1:mad@base_52:inject +igneum-ca3-v4-uniform/519 7346364bd6e68045 0 0:0:0 1:1:0 2:0:0 3:0:0 4:1:1 5:0:0 6:2:1 7:0:0 8:1:0 9:0:0 10:1:0 11:2:3 12:2:2 13:1:0 14:1:0 15:2:2 4 0 0 3 1 0:4:r7:mul@base_2:lossy 1:5:r2:rotl@base_1:bijective 2:10:r3:load@base_5:inject 3:14:r4:sub@base_6:inject 4:17:r4:rotr@base_15:bijective 5:20:r7:shfl@base_16:inject 6:30:r0:xor@base_8:inject 7:31:r2:load@base_20:inject 8:39:r4:load@base_31:inject 9:40:r1:mul@base_37:lossy 10:41:r3:load@base_40:inject 11:46:r7:mul@base_29:lossy 12:49:r2:rotl@base_34:bijective 13:55:r3:add@base_48:inject 14:61:r4:rotl@base_60:bijective 15:63:r6:mulhi@base_59:lossy +igneum-ca3-v4-uniform/520 fc3d107a63b9bf69 0 0:2:3 1:1:1 2:2:1 3:2:3 4:0:0 5:2:0 6:2:3 7:1:1 8:1:0 9:2:3 10:1:1 11:2:3 12:0:0 13:0:0 14:0:0 15:2:3 1 0 0 1 0 0:1:r1:xor@base_0:inject 1:7:r4:sub@base_5:inject 2:15:r0:xor@base_8:inject 3:16:r3:rotl@base_13:bijective 4:27:r0:xor@base_17:inject 5:28:r3:xor@base_22:inject 6:29:r5:load@base_27:inject 7:35:r1:load@base_16:inject 8:38:r4:load@base_35:inject 9:39:r2:mad@base_19:inject 10:44:r6:mul@base_41:lossy 11:46:r4:add@base_43:inject 12:47:r3:rotl@base_42:bijective 13:51:r0:load@base_47:inject 14:54:r5:sub@base_52:inject 15:59:r2:rotl@base_58:bijective +igneum-ca3-v4-uniform/521 3980a0d2ea4f0009 0 0:2:3 1:1:0 2:1:1 3:1:1 4:1:1 5:0:0 6:2:3 7:0:0 8:2:1 9:0:0 10:2:2 11:0:0 12:0:0 13:0:0 14:2:0 15:2:1 1 0 0 1 0 0:1:r1:mul@base_0:lossy 1:8:r1:mad@base_4:inject 2:14:r2:add@base_2:inject 3:16:r1:load@base_14:inject 4:18:r2:sub@base_17:inject 5:21:r0:add@base_11:inject 6:24:r5:sub@base_23:inject 7:30:r1:rotr@base_25:bijective 8:35:r5:load@base_30:inject 9:36:r1:load@base_35:inject 10:49:r2:xor@base_47:inject 11:51:r0:shfl@base_43:inject 12:56:r5:sub@base_50:inject 13:58:r4:rotr@base_57:bijective 14:59:r3:load@base_56:inject 15:62:r7:load@base_59:inject +igneum-ca3-v4-uniform/522 36bd342cec6a645c 0 0:2:0 1:0:0 2:2:3 3:2:3 4:0:0 5:0:0 6:0:0 7:2:3 8:2:0 9:0:0 10:0:0 11:1:0 12:1:1 13:1:1 14:0:0 15:0:0 3 1 0 1 1 0:4:r2:add@base_0:inject 1:10:r2:add@base_7:inject 2:16:r1:rotl@base_6:bijective 3:21:r1:mad@base_20:inject 4:23:r2:or@base_22:lossy 5:26:r4:add@base_25:inject 6:28:r2:load@base_26:inject 7:29:r3:load@base_28:inject 8:30:r7:mul@base_27:lossy 9:31:r4:load@base_30:inject 10:38:r5:rotl@base_33:bijective 11:42:r3:add@base_37:inject 12:46:r6:xor@base_44:inject 13:51:r1:xor@base_50:inject 14:56:r3:mad@base_48:inject 15:63:r4:mulhi@base_60:lossy +igneum-ca3-v4-uniform/523 98b3857422a578fe 0 0:2:2 1:1:1 2:0:0 3:1:1 4:0:0 5:0:0 6:0:0 7:0:0 8:2:0 9:2:1 10:0:0 11:2:1 12:1:1 13:0:0 14:0:0 15:1:1 2 0 0 1 1 0:6:r5:rotr@base_2:bijective 1:10:r1:rotl@base_7:bijective 2:11:r0:rotl@base_9:bijective 3:12:r7:load@base_10:inject 4:24:r7:xor@base_16:inject 5:25:r1:mul@base_18:lossy 6:31:r5:xor@base_27:inject 7:35:r4:sub@base_33:inject 8:36:r3:load@base_35:inject 9:37:r2:mulhi@base_32:lossy 10:38:r5:add@base_34:inject 11:43:r7:load@base_38:inject 12:45:r7:mad@base_44:inject 13:53:r3:load@base_43:inject 14:55:r4:add@base_52:inject 15:62:r2:sub@base_58:inject +igneum-ca3-v4-uniform/524 f218d9df38cc9abc 0 0:1:0 1:0:0 2:2:2 3:0:0 4:0:0 5:1:1 6:1:0 7:0:0 8:0:0 9:2:2 10:1:1 11:1:1 12:2:0 13:1:1 14:0:0 15:0:0 3 1 0 1 1 0:1:r3:or@base_0:lossy 1:5:r7:sub@base_3:inject 2:15:r3:xor@base_7:inject 3:18:r7:load@base_15:inject 4:21:r0:load@base_18:inject 5:24:r5:add@base_20:inject 6:25:r1:sub@base_17:inject 7:31:r3:shfl@base_27:inject 8:32:r1:mad@base_29:inject 9:42:r4:rotl@base_39:bijective 10:44:r5:mulhi@base_43:lossy 11:50:r5:add@base_48:inject 12:53:r2:shfl@base_51:inject 13:56:r7:load@base_44:inject 14:57:r0:mul@base_54:lossy 15:63:r6:shfl@base_61:inject +igneum-ca3-v4-uniform/525 604bf04277d094de 0 0:0:0 1:1:0 2:1:1 3:2:1 4:2:2 5:0:0 6:0:0 7:0:0 8:2:0 9:1:1 10:0:0 11:0:0 12:2:2 13:1:0 14:0:0 15:2:0 1 0 0 0 1 0:11:r3:rotl@base_10:bijective 1:13:r7:load@base_11:inject 2:14:r4:mulhi@base_12:lossy 3:16:r0:load@base_13:inject 4:18:r5:load@base_14:inject 5:20:r4:load@base_16:inject 6:31:r6:xor@base_23:inject 7:35:r4:shfl@base_32:inject 8:38:r7:load@base_35:inject 9:39:r0:load@base_38:inject 10:45:r1:rotr@base_44:bijective 11:49:r3:mad@base_40:inject 12:52:r5:sub@base_51:inject 13:57:r1:load@base_52:inject 14:58:r0:rotr@base_55:bijective 15:63:r4:shfl@base_46:inject +igneum-ca3-v4-uniform/526 aacb1c7ea2eb3e3c 0 0:0:0 1:1:1 2:1:1 3:1:1 4:1:1 5:1:1 6:0:0 7:1:1 8:1:0 9:0:0 10:1:0 11:2:3 12:1:1 13:2:2 14:2:2 15:2:3 4 0 0 2 2 0:5:r1:mad@base_3:inject 1:8:r7:rotr@base_6:bijective 2:12:r1:shfl@base_9:inject 3:14:r5:rotr@base_13:bijective 4:17:r2:mulhi@base_15:lossy 5:19:r5:mul@base_16:lossy 6:24:r3:mulhi@base_18:lossy 7:27:r2:sub@base_26:inject 8:29:r5:sub@base_20:inject 9:33:r4:xor@base_31:inject 10:37:r5:shfl@base_36:inject 11:40:r0:mul@base_32:lossy 12:46:r1:rotl@base_43:bijective 13:47:r7:load@base_33:inject 14:50:r1:shfl@base_49:inject 15:53:r4:mad@base_52:inject +igneum-ca3-v4-uniform/527 2cf6914d09509dda 0 0:2:2 1:0:0 2:2:1 3:1:1 4:2:0 5:2:0 6:0:0 7:0:0 8:0:0 9:0:0 10:2:2 11:0:0 12:2:1 13:0:0 14:0:0 15:0:0 5 1 0 1 3 0:8:r6:mulhi@base_5:lossy 1:16:r4:mulhi@base_7:lossy 2:20:r3:add@base_4:inject 3:22:r5:rotr@base_10:bijective 4:27:r1:xor@base_21:inject 5:28:r2:load@base_22:inject 6:30:r0:mul@base_17:lossy 7:31:r4:add@base_29:inject 8:33:r0:load@base_31:inject 9:39:r1:mad@base_32:inject 10:40:r2:sub@base_36:inject 11:41:r6:sub@base_37:inject 12:45:r4:mulhi@base_44:lossy 13:49:r7:or@base_47:lossy 14:50:r5:load@base_45:inject 15:57:r3:load@base_50:inject +igneum-ca3-v4-uniform/528 4e066b1d4933d5c9 0 0:2:1 1:2:1 2:1:1 3:1:0 4:1:1 5:0:0 6:0:0 7:1:1 8:0:0 9:2:1 10:2:3 11:2:1 12:2:3 13:0:0 14:1:1 15:2:2 4 1 0 1 2 0:5:r6:mulhi@base_0:lossy 1:8:r0:mulhi@base_7:lossy 2:16:r2:rotl@base_10:bijective 3:19:r6:rotr@base_15:bijective 4:24:r7:add@base_17:inject 5:25:r1:load@base_24:inject 6:26:r0:sub@base_23:inject 7:30:r6:load@base_26:inject 8:33:r3:rotr@base_18:bijective 9:34:r5:mad@base_31:inject 10:35:r2:load@base_30:inject 11:40:r7:xor@base_36:inject 12:41:r1:load@base_40:inject 13:44:r4:mul@base_43:lossy 14:59:r0:rotl@base_55:bijective 15:62:r1:or@base_42:lossy +igneum-ca3-v4-uniform/529 2d7c7881c5dc2fba 1 0:0:0 1:1:1 2:1:0 3:2:1 4:1:0 5:1:1 6:1:1 7:2:1 8:1:1 9:0:0 10:1:1 11:2:2 12:2:2 13:1:1 14:2:1 15:1:0 5 0 0 5 0 0:2:r1:mul@base_0:lossy 1:7:r3:load@base_2:inject 2:8:r2:rotr@base_5:bijective 3:14:r6:mul@base_3:lossy 4:18:r4:load@base_14:inject 5:19:r3:add@base_9:inject 6:21:r2:rotl@base_17:bijective 7:27:r5:xor@base_20:inject 8:35:r1:mul@base_34:lossy 9:42:r2:rotr@base_37:bijective 10:45:r0:sub@base_26:inject 11:50:r3:add@base_44:inject 12:52:r5:mul@base_51:lossy 13:59:r0:add@base_58:inject 14:61:r4:mul@base_60:lossy 15:63:r6:load@base_19:inject +igneum-ca3-v4-uniform/530 2e67ff52fe2ebfe8 0 0:1:1 1:2:1 2:1:1 3:2:0 4:2:2 5:1:1 6:2:2 7:0:0 8:2:2 9:1:0 10:0:0 11:0:0 12:1:0 13:0:0 14:1:1 15:2:3 2 0 0 1 1 0:1:r1:add@base_0:inject 1:2:r7:load@base_1:inject 2:13:r7:shfl@base_11:inject 3:20:r2:rotr@base_16:bijective 4:22:r3:xor@base_4:inject 5:23:r7:xor@base_15:inject 6:25:r5:shfl@base_17:inject 7:26:r1:load@base_22:inject 8:32:r2:sub@base_21:inject 9:33:r7:load@base_26:inject 10:34:r1:load@base_32:inject 11:49:r7:rotl@base_44:bijective 12:52:r2:load@base_49:inject 13:57:r7:mulhi@base_51:lossy 14:58:r5:mul@base_50:lossy 15:59:r2:load@base_57:inject +igneum-ca3-v4-uniform/531 5a5f7a49eae9eb7f 0 0:0:0 1:0:0 2:2:0 3:1:0 4:1:0 5:0:0 6:1:1 7:0:0 8:0:0 9:2:0 10:1:1 11:2:0 12:1:0 13:2:1 14:0:0 15:2:0 2 1 0 0 1 0:9:r2:or@base_8:lossy 1:14:r7:add@base_13:inject 2:15:r5:shfl@base_10:inject 3:16:r1:load@base_14:inject 4:21:r6:load@base_16:inject 5:24:r0:xor@base_19:inject 6:27:r2:mulhi@base_26:lossy 7:29:r4:rotr@base_25:bijective 8:42:r3:add@base_32:inject 9:43:r6:load@base_42:inject 10:51:r4:sub@base_49:inject 11:53:r2:sub@base_52:inject 12:55:r0:load@base_51:inject 13:58:r5:load@base_53:inject 14:62:r1:sub@base_54:inject 15:63:r2:load@base_62:inject +igneum-ca3-v4-uniform/532 08e17421d29f5a40 0 0:2:3 1:1:1 2:2:0 3:0:0 4:1:0 5:0:0 6:1:1 7:1:1 8:1:0 9:2:1 10:0:0 11:2:0 12:0:0 13:2:3 14:0:0 15:1:0 4 1 0 3 0 0:1:r7:rotr@base_0:bijective 1:4:r5:shfl@base_3:inject 2:10:r4:rotl@base_7:bijective 3:15:r3:add@base_14:inject 4:17:r0:load@base_10:inject 5:22:r5:rotl@base_18:bijective 6:27:r6:mul@base_26:lossy 7:28:r4:rotl@base_24:bijective 8:32:r7:mul@base_29:lossy 9:37:r4:add@base_35:inject 10:45:r4:mul@base_39:lossy 11:52:r2:or@base_49:lossy 12:58:r6:rotr@base_50:bijective 13:59:r7:add@base_53:inject 14:60:r3:load@base_58:inject 15:61:r2:add@base_54:inject +igneum-ca3-v4-uniform/533 4cac48888aab5fb7 0 0:1:1 1:2:2 2:2:1 3:1:1 4:0:0 5:0:0 6:0:0 7:1:1 8:0:0 9:0:0 10:2:0 11:1:0 12:0:0 13:1:0 14:0:0 15:0:0 2 0 0 2 0 0:9:r2:rotr@base_8:bijective 1:17:r6:sub@base_11:inject 2:21:r2:mad@base_13:inject 3:28:r1:shfl@base_12:inject 4:35:r0:mad@base_34:inject 5:38:r5:mad@base_20:inject 6:39:r0:mul@base_36:lossy 7:41:r3:mul@base_37:lossy 8:42:r0:xor@base_40:inject 9:43:r2:mad@base_31:inject 10:44:r4:load@base_42:inject 11:51:r6:rotr@base_48:bijective 12:55:r1:load@base_39:inject 13:56:r4:add@base_45:inject 14:59:r5:xor@base_53:inject 15:62:r5:xor@base_61:inject +igneum-ca3-v4-uniform/534 07b8349a9c7d091a 0 0:1:0 1:1:1 2:1:1 3:1:1 4:0:0 5:1:1 6:2:0 7:2:1 8:0:0 9:1:1 10:1:0 11:0:0 12:2:0 13:0:0 14:0:0 15:1:0 2 0 0 2 0 0:3:r7:add@base_2:inject 1:4:r3:add@base_0:inject 2:9:r2:add@base_7:inject 3:14:r3:mul@base_8:lossy 4:16:r5:add@base_13:inject 5:22:r0:rotl@base_18:bijective 6:28:r0:rotl@base_26:bijective 7:30:r7:mul@base_23:lossy 8:36:r4:sub@base_35:inject 9:39:r3:add@base_34:inject 10:42:r6:load@base_28:inject 11:51:r1:load@base_42:inject 12:52:r3:rotl@base_47:bijective 13:59:r7:shfl@base_43:inject 14:60:r6:add@base_46:inject 15:62:r5:load@base_60:inject +igneum-ca3-v4-uniform/535 7cb7d7163a7e80c4 0 0:2:3 1:1:1 2:2:0 3:1:1 4:2:0 5:0:0 6:2:3 7:1:0 8:0:0 9:2:3 10:1:1 11:0:0 12:0:0 13:2:0 14:0:0 15:0:0 1 1 0 0 0 0:1:r5:or@base_0:lossy 1:13:r6:add@base_9:inject 2:14:r3:shfl@base_2:inject 3:16:r5:rotr@base_11:bijective 4:17:r2:load@base_13:inject 5:25:r2:xor@base_23:inject 6:29:r6:load@base_25:inject 7:30:r5:sub@base_27:inject 8:31:r4:add@base_24:inject 9:32:r0:load@base_31:inject 10:35:r2:load@base_30:inject 11:37:r1:load@base_29:inject 12:48:r7:xor@base_47:inject 13:53:r4:mad@base_51:inject 14:54:r5:add@base_52:inject 15:63:r4:xor@base_58:inject +igneum-ca3-v4-uniform/536 b6ac43da6ea58fce 0 0:1:1 1:0:0 2:2:1 3:1:0 4:1:1 5:2:3 6:2:0 7:1:1 8:2:1 9:1:0 10:2:2 11:1:0 12:0:0 13:0:0 14:1:1 15:1:1 2 1 0 0 1 0:1:r3:shfl@base_0:inject 1:3:r1:load@base_1:inject 2:4:r4:or@base_2:lossy 3:11:r6:add@base_6:inject 4:14:r0:xor@base_13:inject 5:24:r2:sub@base_20:inject 6:25:r1:load@base_24:inject 7:26:r4:mad@base_5:inject 8:28:r7:add@base_15:inject 9:29:r1:load@base_26:inject 10:39:r2:xor@base_33:inject 11:43:r1:mad@base_37:inject 12:44:r0:mulhi@base_35:lossy 13:47:r3:rotr@base_45:bijective 14:52:r6:shfl@base_49:inject 15:54:r3:load@base_52:inject +igneum-ca3-v4-uniform/537 d4266722e9e4098a 0 0:1:1 1:0:0 2:1:1 3:1:0 4:0:0 5:2:1 6:0:0 7:2:0 8:1:0 9:1:0 10:2:1 11:1:1 12:1:0 13:1:1 14:2:1 15:0:0 2 1 0 0 1 0:14:r1:mad@base_6:inject 1:15:r0:rotr@base_10:bijective 2:18:r3:add@base_17:inject 3:19:r5:load@base_18:inject 4:23:r2:rotr@base_13:bijective 5:24:r0:mad@base_16:inject 6:26:r3:add@base_22:inject 7:30:r6:or@base_29:lossy 8:36:r4:mulhi@base_27:lossy 9:37:r3:load@base_36:inject 10:42:r6:add@base_33:inject 11:46:r3:add@base_41:inject 12:49:r5:xor@base_38:inject 13:50:r3:sub@base_48:inject 14:56:r1:sub@base_43:inject 15:63:r2:xor@base_61:inject +igneum-ca3-v4-uniform/538 e2b7d798d039ddf7 0 0:2:1 1:1:1 2:2:1 3:0:0 4:2:0 5:1:1 6:2:1 7:1:0 8:2:0 9:0:0 10:1:0 11:2:2 12:1:1 13:1:1 14:2:3 15:2:2 2 1 0 0 1 0:1:r0:mulhi@base_0:lossy 1:4:r3:mad@base_3:inject 2:6:r2:mad@base_5:inject 3:11:r7:shfl@base_7:inject 4:12:r4:mad@base_10:inject 5:17:r6:shfl@base_9:inject 6:20:r0:load@base_12:inject 7:22:r1:or@base_18:lossy 8:23:r3:rotr@base_21:bijective 9:27:r5:rotl@base_24:bijective 10:30:r6:xor@base_28:inject 11:34:r2:mad@base_33:inject 12:44:r7:add@base_31:inject 13:47:r3:add@base_45:inject 14:53:r2:add@base_52:inject 15:55:r7:load@base_47:inject +igneum-ca3-v4-uniform/539 a04cce796c12782b 0 0:1:0 1:0:0 2:1:1 3:0:0 4:2:3 5:0:0 6:0:0 7:0:0 8:0:0 9:0:0 10:2:2 11:0:0 12:0:0 13:2:3 14:0:0 15:2:2 4 0 0 2 2 0:1:r6:add@base_0:inject 1:2:r2:load@base_1:inject 2:3:r7:mulhi@shadow_243:lossy 3:8:r4:mulhi@base_4:lossy 4:12:r3:load@base_8:inject 5:18:r2:sub@base_14:inject 6:24:r6:sub@base_23:inject 7:28:r7:load@base_12:inject 8:37:r6:mul@base_32:lossy 9:39:r5:load@base_28:inject 10:46:r2:rotl@base_44:bijective 11:50:r1:mul@base_49:lossy 12:55:r7:add@base_53:inject 13:57:r5:add@base_56:inject 14:59:r4:load@base_50:inject 15:61:r3:shfl@base_60:inject +igneum-ca3-v4-uniform/540 6e9cefcb7e67fcb1 0 0:2:2 1:2:0 2:1:0 3:1:0 4:1:0 5:1:0 6:1:1 7:1:1 8:2:0 9:2:2 10:2:0 11:0:0 12:1:0 13:0:0 14:1:0 15:1:1 4 1 1 2 1 0:3:r3:mul@base_1:lossy 1:14:r2:xor@base_0:inject 2:16:r3:add@base_13:inject 3:19:r5:add@base_18:inject 4:23:r6:load@base_19:inject 5:33:r4:load@base_16:inject 6:37:r3:mul@base_31:lossy 7:38:r0:mulhi@base_28:lossy 8:39:r6:load@base_37:inject 9:40:r7:xor@base_36:inject 10:45:r6:xor@base_42:inject 11:47:r4:load@base_39:inject 12:48:r2:xor@base_46:inject 13:51:r4:or@base_49:lossy-or-chain1 14:53:r1:load@base_45:inject 15:63:r0:xor@base_61:inject +igneum-ca3-v4-uniform/541 2737c09382c87a39 0 0:2:0 1:0:0 2:2:1 3:0:0 4:2:2 5:0:0 6:1:1 7:1:1 8:1:0 9:1:0 10:0:0 11:1:1 12:1:0 13:1:1 14:0:0 15:1:0 3 0 0 2 1 0:3:r4:mul@base_1:lossy 1:8:r7:rotr@base_7:bijective 2:9:r5:load@base_8:inject 3:13:r5:mad@base_12:inject 4:15:r2:load@base_9:inject 5:17:r6:load@base_15:inject 6:19:r1:mul@base_14:lossy 7:20:r3:load@base_17:inject 8:24:r5:mad@base_21:inject 9:29:r0:rotl@base_25:bijective 10:30:r5:sub@base_26:inject 11:37:r3:mad@base_27:inject 12:41:r4:load@base_29:inject 13:43:r1:load@base_37:inject 14:44:r2:sub@base_39:inject 15:56:r3:mulhi@base_53:lossy +igneum-ca3-v4-uniform/542 9d540c9030b8009e 0 0:1:0 1:0:0 2:0:0 3:0:0 4:0:0 5:2:3 6:1:1 7:0:0 8:1:1 9:1:0 10:1:0 11:2:0 12:1:1 13:2:3 14:0:0 15:0:0 4 0 0 2 2 0:2:r3:add@base_0:inject 1:8:r0:xor@base_4:inject 2:11:r6:load@base_2:inject 3:13:r7:rotl@base_3:bijective 4:19:r4:shfl@base_15:inject 5:23:r3:rotl@base_17:bijective 6:24:r7:sub@base_18:inject 7:27:r0:shfl@base_25:inject 8:34:r4:mulhi@base_21:lossy 9:35:r6:mulhi@base_29:lossy 10:39:r3:load@base_24:inject 11:44:r4:mad@base_38:inject 12:53:r6:rotr@base_51:bijective 13:55:r5:xor@base_45:inject 14:62:r6:mul@base_60:lossy 15:63:r4:mul@base_56:lossy +igneum-ca3-v4-uniform/543 ab3bb4ff645d041a 0 0:0:0 1:0:0 2:2:0 3:2:1 4:1:1 5:0:0 6:0:0 7:1:0 8:1:0 9:2:3 10:1:0 11:1:0 12:2:0 13:0:0 14:1:1 15:0:0 4 1 0 1 2 0:2:r2:mul@base_0:lossy 1:7:r6:mulhi@base_6:lossy 2:10:r6:or@base_9:lossy 3:12:r1:load@base_10:inject 4:15:r0:mulhi@base_8:lossy 5:23:r3:sub@base_21:inject 6:26:r3:shfl@base_25:inject 7:28:r1:load@base_23:inject 8:35:r6:load@base_28:inject 9:37:r2:rotl@base_30:bijective 10:38:r0:xor@base_34:inject 11:43:r4:load@base_35:inject 12:52:r4:rotl@base_48:bijective 13:53:r7:rotl@base_47:bijective 14:58:r5:rotr@base_40:bijective 15:62:r3:add@base_45:inject +igneum-ca3-v4-uniform/544 b540c5e42cf93085 0 0:2:3 1:0:0 2:1:1 3:1:0 4:1:0 5:1:1 6:1:0 7:1:1 8:1:0 9:2:0 10:0:0 11:2:0 12:2:2 13:2:2 14:1:1 15:1:0 3 1 0 1 1 0:5:r1:mulhi@base_2:lossy 1:15:r7:rotl@base_9:bijective 2:19:r4:add@base_18:inject 3:23:r5:add@base_10:inject 4:25:r3:load@base_23:inject 5:26:r2:mad@base_13:inject 6:27:r6:mad@base_24:inject 7:28:r0:load@base_25:inject 8:29:r4:xor@base_20:inject 9:36:r3:add@base_32:inject 10:37:r2:mul@base_35:lossy 11:40:r6:mad@base_34:inject 12:50:r1:add@base_46:inject 13:60:r3:xor@base_57:inject 14:61:r6:or@base_47:lossy 15:62:r2:rotl@base_59:bijective +igneum-ca3-v4-uniform/545 bd94d745e823a6e4 0 0:2:3 1:1:1 2:1:0 3:1:1 4:1:1 5:2:3 6:0:0 7:2:2 8:2:0 9:1:0 10:0:0 11:0:0 12:2:0 13:0:0 14:1:0 15:2:0 1 1 1 0 0 0:6:r2:rotr@base_4:bijective 1:8:r7:or@base_5:lossy-or-chain1 2:11:r0:xor@base_0:inject 3:13:r2:xor@base_7:inject 4:16:r7:add@base_14:inject 5:29:r7:mad@base_27:inject 6:32:r4:load@base_13:inject 7:35:r0:shfl@base_21:inject 8:36:r5:add@base_34:inject 9:37:r1:load@base_32:inject 10:43:r6:rotr@base_42:bijective 11:48:r0:mad@base_41:inject 12:58:r5:rotl@base_56:bijective 13:59:r4:rotl@base_54:bijective 14:61:r2:load@base_43:inject 15:62:r1:mad@base_55:inject +igneum-ca3-v4-uniform/546 1f96252ed76cc9d8 0 0:2:2 1:2:3 2:0:0 3:2:1 4:1:1 5:0:0 6:2:2 7:2:0 8:0:0 9:1:0 10:1:0 11:2:3 12:2:2 13:0:0 14:1:1 15:0:0 2 0 0 1 1 0:1:r4:sub@base_0:inject 1:2:r0:load@base_1:inject 2:5:r0:xor@base_3:inject 3:9:r6:sub@base_7:inject 4:12:r2:load@base_9:inject 5:17:r7:add@base_15:inject 6:21:r2:xor@base_14:inject 7:24:r1:xor@base_22:inject 8:35:r5:shfl@base_10:inject 9:36:r2:add@base_32:inject 10:37:r4:mul@base_19:lossy 11:38:r0:mad@base_28:inject 12:40:r7:load@base_35:inject 13:44:r3:shfl@base_41:inject 14:46:r4:load@base_40:inject 15:63:r1:mulhi@base_50:lossy +igneum-ca3-v4-uniform/547 e282311711d74da7 0 0:2:1 1:1:0 2:0:0 3:2:0 4:1:0 5:0:0 6:1:0 7:2:0 8:1:0 9:0:0 10:2:1 11:2:2 12:2:3 13:1:0 14:1:1 15:1:1 3 0 0 2 1 0:4:r2:mulhi@base_3:lossy 1:5:r3:load@base_4:inject 2:14:r3:rotr@base_12:bijective 3:19:r0:mad@base_15:inject 4:21:r6:load@base_19:inject 5:23:r1:add@base_17:inject 6:30:r1:shfl@base_27:inject 7:31:r4:mul@base_29:lossy 8:32:r5:add@base_26:inject 9:33:r7:add@base_11:inject 10:44:r1:mul@base_42:lossy 11:45:r6:shfl@base_37:inject 12:48:r5:xor@base_38:inject 13:50:r3:load@base_44:inject 14:51:r2:load@base_50:inject 15:57:r0:shfl@base_20:inject +igneum-ca3-v4-uniform/548 0511847a104119d1 0 0:0:0 1:1:1 2:0:0 3:2:3 4:0:0 5:2:3 6:0:0 7:2:2 8:2:1 9:2:1 10:0:0 11:0:0 12:0:0 13:0:0 14:1:1 15:1:0 3 1 0 0 2 0:1:r6:shfl@base_0:inject 1:2:r1:load@base_1:inject 2:7:r0:rotl@base_3:bijective 3:11:r4:rotr@base_5:bijective 4:17:r4:mad@base_14:inject 5:19:r5:add@base_16:inject 6:33:r0:or@base_29:lossy 7:34:r4:mulhi@base_30:lossy 8:36:r7:rotl@base_32:bijective 9:38:r6:rotl@base_28:bijective 10:43:r3:mulhi@base_39:lossy 11:44:r1:load@base_34:inject 12:46:r4:xor@base_35:inject 13:48:r5:rotl@base_41:bijective 14:52:r0:xor@base_50:inject 15:55:r4:add@base_53:inject +igneum-ca3-v4-uniform/549 25c501e277d45140 0 0:1:0 1:0:0 2:0:0 3:1:0 4:1:0 5:2:2 6:1:0 7:0:0 8:0:0 9:1:0 10:0:0 11:1:0 12:2:2 13:1:1 14:2:2 15:2:2 3 2 0 0 1 0:2:r3:add@base_0:inject 1:3:r0:shfl@base_1:inject 2:6:r5:rotr@base_4:bijective 3:20:r5:rotl@base_19:bijective 4:21:r4:mulhi@base_15:lossy 5:23:r1:mad@base_12:inject 6:27:r6:load@base_20:inject 7:28:r5:or@base_24:lossy 8:31:r5:shfl@base_29:inject 9:34:r0:add@base_33:inject 10:35:r1:mad@base_32:inject 11:41:r4:mad@base_38:inject 12:45:r6:or@base_42:lossy 13:54:r5:xor@base_49:inject 14:62:r1:xor@base_55:inject 15:63:r2:xor@base_59:inject +igneum-ca3-v4-uniform/550 e801fca204c6bb64 0 0:0:0 1:2:3 2:0:0 3:1:0 4:2:3 5:0:0 6:2:2 7:1:0 8:0:0 9:2:1 10:0:0 11:0:0 12:0:0 13:1:1 14:1:0 15:2:0 2 0 0 0 2 0:6:r2:xor@base_5:inject 1:7:r4:mulhi@base_3:lossy 2:9:r1:mulhi@base_2:lossy 3:14:r1:mad@base_11:inject 4:23:r0:shfl@base_21:inject 5:26:r4:mad@base_15:inject 6:35:r6:xor@base_29:inject 7:38:r5:sub@base_33:inject 8:40:r3:load@base_23:inject 9:42:r2:rotl@base_41:bijective 10:46:r4:load@base_35:inject 11:48:r6:mad@base_44:inject 12:50:r7:add@base_36:inject 13:51:r1:load@base_48:inject 14:55:r0:load@base_42:inject 15:58:r2:load@base_50:inject +igneum-ca3-v4-uniform/551 0583dc71a0aaa557 0 0:1:0 1:1:1 2:1:1 3:2:1 4:0:0 5:0:0 6:1:0 7:1:0 8:0:0 9:2:2 10:1:0 11:2:0 12:2:1 13:0:0 14:2:2 15:1:1 4 1 0 1 2 0:2:r2:xor@base_0:inject 1:3:r3:load@base_2:inject 2:5:r1:xor@base_4:inject 3:6:r6:load@base_3:inject 4:19:r1:mul@base_17:lossy 5:20:r5:load@base_6:inject 6:23:r0:shfl@base_15:inject 7:27:r2:sub@base_11:inject 8:31:r1:add@base_24:inject 9:33:r4:load@base_31:inject 10:37:r0:mulhi@base_36:lossy 11:46:r7:or@base_43:lossy 12:48:r6:shfl@base_40:inject 13:54:r4:mulhi@base_53:lossy 14:60:r0:rotr@base_51:bijective 15:63:r7:rotl@base_61:bijective +igneum-ca3-v4-uniform/552 c6a06377b9e43e00 0 0:0:0 1:2:2 2:1:0 3:2:0 4:0:0 5:2:0 6:2:1 7:2:2 8:1:1 9:2:1 10:1:0 11:2:1 12:0:0 13:0:0 14:0:0 15:1:1 1 0 0 1 0 0:5:r5:add@base_3:inject 1:11:r7:sub@base_2:inject 2:14:r1:xor@base_10:inject 3:19:r3:add@base_16:inject 4:21:r1:mad@base_18:inject 5:27:r1:mul@base_26:lossy 6:28:r7:rotl@base_25:bijective 7:30:r5:add@base_24:inject 8:32:r7:load@base_30:inject 9:33:r0:load@base_21:inject 10:35:r4:xor@base_29:inject 11:39:r2:load@base_27:inject 12:47:r4:rotl@base_43:bijective 13:48:r6:add@base_44:inject 14:57:r2:load@base_48:inject 15:63:r7:add@base_61:inject +igneum-ca3-v4-uniform/553 a322e5f02dc2d700 1 0:0:0 1:1:1 2:1:0 3:0:0 4:0:0 5:1:0 6:2:1 7:0:0 8:0:0 9:2:3 10:2:0 11:0:0 12:0:0 13:0:0 14:2:1 15:2:2 3 1 0 1 1 0:3:r5:add@base_2:inject 1:5:r5:mul@base_4:lossy 2:18:r3:rotr@base_7:bijective 3:26:r3:shfl@base_23:inject 4:27:r2:or@base_14:lossy 5:30:r7:xor@base_25:inject 6:33:r0:mad@base_13:inject 7:35:r5:load@base_33:inject 8:36:r1:mad@base_28:inject 9:40:r2:mulhi@base_38:lossy 10:43:r4:load@base_36:inject 11:44:r5:load@base_43:inject 12:45:r3:add@base_41:inject 13:47:r7:add@base_39:inject 14:54:r6:load@base_40:inject 15:62:r6:rotr@base_55:bijective +igneum-ca3-v4-uniform/554 d6aa4155f0de4e57 0 0:2:1 1:1:1 2:2:3 3:0:0 4:1:1 5:2:3 6:2:3 7:2:3 8:2:2 9:0:0 10:2:1 11:1:0 12:1:1 13:1:1 14:2:3 15:0:0 5 0 0 3 2 0:6:r7:mulhi@base_2:lossy 1:10:r0:mulhi@base_8:lossy 2:11:r6:xor@base_4:inject 3:14:r3:load@base_10:inject 4:21:r3:rotr@base_15:bijective 5:24:r5:xor@base_13:inject 6:25:r2:mad@base_12:inject 7:28:r7:mul@base_23:lossy 8:29:r0:mul@base_20:lossy 9:34:r0:mad@base_30:inject 10:42:r7:add@base_39:inject 11:44:r3:add@base_38:inject 12:45:r6:mul@base_40:lossy 13:46:r1:load@base_45:inject 14:55:r5:load@base_46:inject 15:60:r7:rotl@base_56:bijective +igneum-ca3-v4-uniform/555 49353ffffb4d5bad 1 0:0:0 1:0:0 2:0:0 3:1:0 4:2:1 5:0:0 6:2:1 7:1:0 8:1:0 9:2:3 10:1:1 11:2:2 12:1:1 13:2:3 14:0:0 15:1:1 6 1 0 3 2 0:1:r1:mul@shadow_240:lossy 1:4:r7:add@base_2:inject 2:5:r0:xor@base_3:inject 3:9:r2:mad@base_8:inject 4:22:r7:rotr@base_20:bijective 5:24:r1:sub@base_19:inject 6:25:r4:rotr@base_17:bijective 7:29:r5:mad@base_6:inject 8:32:r3:mul@base_21:lossy 9:35:r4:mul@base_34:lossy 10:36:r1:mad@base_30:inject 11:43:r5:load@base_35:inject 12:44:r6:or@base_40:lossy 13:56:r5:mulhi@base_55:lossy 14:60:r0:mulhi@base_58:lossy 15:61:r2:load@base_60:inject +igneum-ca3-v4-uniform/556 2b98fc91e49406ec 0 0:1:1 1:1:0 2:2:0 3:1:1 4:1:0 5:2:3 6:0:0 7:1:0 8:2:3 9:2:2 10:2:2 11:1:0 12:0:0 13:0:0 14:0:0 15:1:0 4 0 0 1 3 0:5:r0:mulhi@base_2:lossy 1:6:r5:load@base_5:inject 2:13:r4:rotl@base_11:bijective 3:15:r7:xor@base_10:inject 4:16:r6:rotr@base_9:bijective 5:18:r0:rotr@base_17:bijective 6:21:r6:xor@base_20:inject 7:26:r5:rotl@base_22:bijective 8:27:r3:mul@base_24:lossy 9:32:r6:sub@base_29:inject 10:43:r2:load@base_32:inject 11:44:r1:sub@base_23:inject 12:48:r5:add@base_46:inject 13:50:r7:add@base_37:inject 14:55:r7:mulhi@base_54:lossy 15:59:r3:mulhi@base_56:lossy +igneum-ca3-v4-uniform/557 d872b5b54be5965d 0 0:2:2 1:1:1 2:2:1 3:2:2 4:1:0 5:2:0 6:1:0 7:2:3 8:0:0 9:0:0 10:0:0 11:1:0 12:2:0 13:2:2 14:2:1 15:2:2 3 1 0 1 1 0:4:r1:xor@base_2:inject 1:6:r1:or@base_5:lossy 2:9:r3:xor@base_8:inject 3:13:r2:add@base_11:inject 4:17:r3:shfl@base_15:inject 5:25:r7:rotr@base_20:bijective 6:27:r2:rotr@base_18:bijective 7:30:r5:mulhi@base_23:lossy 8:34:r1:rotl@base_33:bijective 9:42:r4:mul@base_36:lossy 10:52:r5:mad@base_46:inject 11:53:r1:load@base_52:inject 12:54:r2:mad@base_28:inject 13:55:r0:xor@base_51:inject 14:57:r7:add@base_50:inject 15:59:r3:load@base_55:inject +igneum-ca3-v4-uniform/558 ada9447eaf37fc53 0 0:1:1 1:0:0 2:2:2 3:0:0 4:2:1 5:0:0 6:1:0 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:2:3 13:2:2 14:1:1 15:0:0 3 0 0 1 2 0:4:r7:xor@base_2:inject 1:5:r2:load@base_4:inject 2:6:r5:rotr@base_1:bijective 3:7:r2:load@base_6:inject 4:13:r6:rotl@base_10:bijective 5:28:r1:mulhi@base_24:lossy 6:32:r6:load@base_28:inject 7:33:r0:load@base_32:inject 8:39:r7:mulhi@base_36:lossy 9:40:r2:load@base_39:inject 10:46:r7:mul@base_44:lossy 11:49:r4:rotr@base_47:bijective 12:50:r3:add@base_48:inject 13:54:r4:rotl@base_51:bijective 14:58:r2:mad@base_55:inject 15:61:r2:sub@base_59:inject +igneum-ca3-v4-uniform/559 43f26886df1ed80a 0 0:2:2 1:2:3 2:1:1 3:1:0 4:1:0 5:2:0 6:2:1 7:1:0 8:0:0 9:2:3 10:2:2 11:0:0 12:2:2 13:0:0 14:2:2 15:1:0 1 0 0 1 0 0:1:r6:xor@base_0:inject 1:25:r7:mul@base_20:lossy 2:28:r1:add@base_18:inject 3:30:r3:mad@base_26:inject 4:36:r4:xor@base_13:inject 5:39:r1:shfl@base_37:inject 6:40:r2:sub@base_34:inject 7:41:r5:xor@base_35:inject 8:44:r6:load@base_40:inject 9:45:r0:load@base_44:inject 10:46:r4:load@base_39:inject 11:52:r7:shfl@base_50:inject 12:53:r1:load@base_46:inject 13:55:r4:load@base_53:inject 14:58:r3:shfl@base_42:inject 15:61:r0:add@base_60:inject +igneum-ca3-v4-uniform/560 c774f50fc3dc594b 0 0:1:0 1:1:0 2:0:0 3:1:1 4:0:0 5:1:1 6:2:2 7:2:3 8:0:0 9:2:1 10:2:0 11:1:1 12:0:0 13:1:1 14:1:1 15:1:1 8 2 0 5 1 0:1:r7:rotr@base_0:bijective 1:5:r0:mad@base_3:inject 2:7:r1:mad@base_6:inject 3:12:r4:or@base_11:lossy 4:16:r7:mul@base_14:lossy 5:22:r6:add@base_20:inject 6:26:r3:mul@base_17:lossy 7:33:r4:mul@base_30:lossy 8:39:r2:rotr@base_38:bijective 9:42:r3:xor@base_29:inject 10:43:r5:mul@base_41:lossy 11:44:r0:load@base_42:inject 12:45:r7:mul@base_31:lossy 13:50:r3:or@base_49:lossy 14:60:r2:mulhi@base_48:lossy 15:62:r4:add@base_54:inject +igneum-ca3-v4-uniform/561 bcf3dc721f28a3bd 0 0:2:1 1:0:0 2:1:1 3:0:0 4:1:1 5:2:0 6:2:3 7:0:0 8:2:1 9:0:0 10:0:0 11:0:0 12:1:0 13:2:0 14:2:2 15:0:0 3 0 0 2 1 0:2:r4:rotl@base_1:bijective 1:5:r3:mul@base_4:lossy 2:6:r1:load@base_5:inject 3:7:r2:add@base_3:inject 4:10:r7:load@base_7:inject 5:14:r6:load@base_10:inject 6:20:r6:mulhi@base_19:lossy 7:21:r3:load@base_20:inject 8:25:r0:shfl@base_22:inject 9:26:r4:load@base_21:inject 10:30:r1:shfl@base_28:inject 11:32:r6:load@base_25:inject 12:37:r2:load@base_32:inject 13:40:r6:rotr@base_38:bijective 14:54:r7:add@base_53:inject 15:60:r5:mul@base_56:lossy +igneum-ca3-v4-uniform/562 3f5f996cb6ad28e5 0 0:1:1 1:2:2 2:0:0 3:0:0 4:1:1 5:2:1 6:1:1 7:1:0 8:0:0 9:0:0 10:0:0 11:1:1 12:0:0 13:2:2 14:1:0 15:2:2 3 1 0 2 0 0:7:r7:mul@base_6:lossy 1:9:r0:shfl@base_8:inject 2:14:r3:load@base_7:inject 3:16:r4:xor@base_13:inject 4:19:r1:xor@base_17:inject 5:25:r3:rotl@base_18:bijective 6:28:r7:mul@base_27:lossy 7:29:r1:mad@base_21:inject 8:30:r2:xor@base_26:inject 9:33:r0:mad@base_22:inject 10:40:r6:add@base_32:inject 11:43:r2:or@base_42:lossy 12:44:r7:xor@base_34:inject 13:51:r3:load@base_33:inject 14:53:r4:rotl@base_46:bijective 15:57:r3:add@base_56:inject +igneum-ca3-v4-uniform/563 92edf0dab238d2a1 0 0:0:0 1:2:2 2:1:0 3:1:1 4:0:0 5:0:0 6:2:2 7:0:0 8:1:1 9:1:0 10:2:0 11:1:1 12:2:1 13:2:0 14:0:0 15:1:1 4 1 0 0 3 0:3:r3:or@base_2:lossy 1:6:r7:load@base_3:inject 2:10:r4:mulhi@base_9:lossy 3:13:r2:sub@base_0:inject 4:14:r4:load@base_13:inject 5:16:r0:mulhi@base_15:lossy 6:17:r7:load@base_14:inject 7:22:r1:shfl@base_20:inject 8:23:r0:load@base_17:inject 9:27:r6:load@base_22:inject 10:30:r7:add@base_24:inject 11:35:r0:load@base_27:inject 12:39:r1:mulhi@base_26:lossy 13:42:r5:sub@base_41:inject 14:58:r4:sub@base_28:inject 15:62:r7:load@base_35:inject +igneum-ca3-v4-uniform/564 8439f08958f6fc34 0 0:2:3 1:0:0 2:1:1 3:0:0 4:2:3 5:1:1 6:1:1 7:2:0 8:2:3 9:2:1 10:1:0 11:1:1 12:2:2 13:2:0 14:0:0 15:1:1 4 0 0 4 0 0:3:r7:xor@base_2:inject 1:4:r4:sub@base_0:inject 2:10:r7:mul@base_6:lossy 3:13:r6:shfl@base_12:inject 4:16:r0:shfl@base_1:inject 5:17:r5:load@base_16:inject 6:22:r3:add@base_21:inject 7:28:r4:mul@base_25:lossy 8:29:r7:rotl@base_20:bijective 9:37:r6:rotr@base_34:bijective 10:38:r7:mul@base_32:lossy 11:40:r0:mul@base_39:lossy 12:42:r5:rotr@base_41:bijective 13:48:r1:mad@base_44:inject 14:54:r0:sub@base_45:inject 15:55:r3:load@base_54:inject +igneum-ca3-v4-uniform/565 875a51565edf80e1 0 0:1:1 1:0:0 2:0:0 3:1:1 4:0:0 5:2:0 6:2:1 7:1:1 8:2:3 9:1:1 10:2:0 11:2:3 12:0:0 13:1:1 14:1:0 15:2:0 3 1 0 0 2 0:4:r5:add@base_3:inject 1:9:r7:add@base_8:inject 2:15:r0:add@base_12:inject 3:16:r5:sub@base_10:inject 4:22:r2:mulhi@base_21:lossy 5:23:r7:load@base_22:inject 6:26:r5:mulhi@base_17:lossy 7:28:r4:load@base_15:inject 8:30:r1:load@base_26:inject 9:33:r6:xor@base_32:inject 10:36:r4:mad@base_34:inject 11:40:r4:or@base_38:lossy 12:52:r5:xor@base_50:inject 13:55:r2:shfl@base_35:inject 14:60:r2:shfl@base_59:inject 15:62:r4:rotl@base_54:bijective +igneum-ca3-v4-uniform/566 4f757c03886a8845 0 0:1:1 1:0:0 2:0:0 3:1:1 4:0:0 5:1:0 6:1:0 7:2:3 8:1:1 9:1:0 10:2:2 11:1:1 12:0:0 13:0:0 14:2:1 15:2:2 2 2 0 0 0 0:7:r0:add@base_5:inject 1:8:r4:shfl@base_6:inject 2:9:r5:add@base_2:inject 3:13:r0:load@base_9:inject 4:15:r2:shfl@base_14:inject 5:18:r0:load@base_15:inject 6:26:r3:or@base_12:lossy 7:34:r4:sub@base_33:inject 8:37:r7:shfl@base_30:inject 9:39:r1:shfl@base_19:inject 10:47:r2:xor@base_42:inject 11:50:r6:load@base_47:inject 12:51:r3:add@base_48:inject 13:54:r4:or@base_46:lossy 14:55:r7:xor@base_49:inject 15:62:r1:xor@base_59:inject +igneum-ca3-v4-uniform/567 b352171a3ffddcd5 0 0:0:0 1:0:0 2:1:0 3:1:1 4:0:0 5:0:0 6:1:1 7:1:0 8:2:0 9:0:0 10:2:3 11:0:0 12:0:0 13:2:0 14:0:0 15:1:0 5 2 0 0 3 0:3:r0:shfl@base_2:inject 1:12:r2:mulhi@base_11:lossy 2:17:r1:mad@base_7:inject 3:19:r4:rotl@base_10:bijective 4:26:r4:or@base_24:lossy 5:29:r5:mad@base_8:inject 6:30:r3:mulhi@base_15:lossy 7:36:r7:add@base_35:inject 8:43:r0:rotl@base_42:bijective 9:45:r1:mad@base_23:inject 10:47:r2:xor@base_44:inject 11:48:r7:or@base_46:lossy 12:52:r6:mulhi@base_50:lossy 13:54:r3:shfl@base_39:inject 14:57:r1:load@base_52:inject 15:60:r0:rotr@base_58:bijective +igneum-ca3-v4-uniform/568 9001dc10e59ae753 0 0:2:0 1:0:0 2:0:0 3:2:2 4:0:0 5:2:3 6:0:0 7:2:2 8:1:1 9:1:0 10:2:1 11:2:3 12:2:0 13:0:0 14:1:0 15:2:0 1 0 0 1 0 0:6:r5:add@base_1:inject 1:8:r3:rotl@base_3:bijective 2:15:r6:load@base_6:inject 3:21:r3:add@base_20:inject 4:28:r1:mul@base_27:lossy 5:34:r2:load@base_15:inject 6:35:r4:sub@base_31:inject 7:36:r6:shfl@base_32:inject 8:37:r7:load@base_35:inject 9:45:r6:rotr@base_42:bijective 10:46:r3:rotl@base_40:bijective 11:48:r2:shfl@base_47:inject 12:52:r7:xor@base_51:inject 13:58:r3:shfl@base_50:inject 14:59:r1:add@base_38:inject 15:60:r4:rotr@base_56:bijective +igneum-ca3-v4-uniform/569 d14f9e0f0d1cda7a 0 0:0:0 1:0:0 2:2:1 3:2:0 4:1:1 5:1:1 6:0:0 7:2:2 8:1:1 9:1:0 10:2:0 11:2:3 12:0:0 13:2:0 14:0:0 15:2:3 1 0 0 1 0 0:8:r2:mul@base_2:lossy 1:9:r3:sub@base_4:inject 2:12:r6:xor@base_11:inject 3:13:r5:load@base_12:inject 4:16:r0:add@base_14:inject 5:18:r5:load@base_16:inject 6:21:r4:load@base_13:inject 7:22:r5:load@base_21:inject 8:28:r7:mad@base_23:inject 9:30:r2:add@base_27:inject 10:31:r1:load@base_28:inject 11:36:r2:sub@base_34:inject 12:43:r0:sub@base_39:inject 13:57:r0:add@base_55:inject 14:58:r1:rotl@base_52:bijective 15:61:r3:rotl@base_50:bijective +igneum-ca3-v4-uniform/570 d1a5a2864482882d 0 0:2:3 1:1:0 2:2:2 3:0:0 4:0:0 5:2:1 6:1:0 7:2:2 8:1:1 9:2:0 10:0:0 11:0:0 12:2:3 13:0:0 14:0:0 15:2:1 3 0 0 2 1 0:7:r2:rotl@base_4:bijective 1:8:r5:mad@base_6:inject 2:10:r0:rotl@base_1:bijective 3:13:r4:load@base_10:inject 4:25:r0:mad@base_23:inject 5:27:r3:load@base_25:inject 6:34:r5:mad@base_33:inject 7:35:r2:xor@base_22:inject 8:36:r1:rotl@base_32:bijective 9:43:r4:mul@base_41:lossy 10:46:r2:mul@base_40:lossy 11:48:r0:load@base_35:inject 12:55:r6:mulhi@base_51:lossy 13:57:r3:load@base_55:inject 14:61:r7:shfl@base_60:inject 15:62:r0:load@base_57:inject +igneum-ca3-v4-uniform/571 1364b26842c0c0ae 0 0:2:3 1:0:0 2:1:1 3:2:0 4:2:1 5:0:0 6:2:1 7:0:0 8:1:1 9:2:3 10:1:1 11:2:3 12:2:1 13:0:0 14:2:1 15:0:0 3 1 0 2 0 0:14:r7:shfl@base_6:inject 1:19:r2:or@base_18:lossy 2:20:r0:add@base_7:inject 3:21:r6:load@base_20:inject 4:22:r4:mul@base_17:lossy 5:23:r5:mad@base_9:inject 6:29:r1:load@base_21:inject 7:30:r6:load@base_23:inject 8:34:r4:mul@base_27:lossy 9:36:r2:add@base_25:inject 10:38:r4:load@base_36:inject 11:43:r5:load@base_30:inject 12:44:r1:xor@base_39:inject 13:50:r7:load@base_44:inject 14:59:r0:rotl@base_46:bijective 15:63:r6:rotr@base_45:bijective +igneum-ca3-v4-uniform/572 62aed6b8b22357ad 0 0:2:2 1:2:0 2:1:1 3:0:0 4:1:1 5:1:0 6:0:0 7:0:0 8:0:0 9:2:0 10:0:0 11:1:1 12:2:1 13:1:0 14:0:0 15:0:0 3 0 0 3 0 0:6:r4:xor@base_0:inject 1:11:r3:mul@base_3:lossy 2:15:r5:add@base_13:inject 3:17:r2:xor@base_9:inject 4:18:r0:load@base_11:inject 5:22:r6:load@base_17:inject 6:25:r0:load@base_22:inject 7:27:r1:add@base_8:inject 8:30:r5:load@base_27:inject 9:32:r2:mul@base_26:lossy 10:36:r3:shfl@base_29:inject 11:39:r2:add@base_35:inject 12:52:r4:load@base_39:inject 13:57:r4:mad@base_54:inject 14:58:r6:mul@base_56:lossy 15:61:r3:shfl@base_53:inject +igneum-ca3-v4-uniform/573 e22afb43e1a269a4 0 0:1:0 1:0:0 2:1:0 3:1:0 4:2:0 5:2:2 6:2:1 7:1:1 8:0:0 9:2:2 10:1:0 11:0:0 12:0:0 13:2:1 14:1:0 15:0:0 1 1 0 0 0 0:7:r1:rotl@base_5:bijective 1:15:r2:add@base_3:inject 2:22:r0:rotr@base_21:bijective 3:24:r7:add@base_0:inject 4:26:r4:xor@base_19:inject 5:28:r0:rotr@base_27:bijective 6:29:r1:load@base_22:inject 7:35:r1:mad@base_30:inject 8:37:r2:load@base_26:inject 9:38:r5:load@base_37:inject 10:39:r7:mad@base_36:inject 11:41:r2:mad@base_40:inject 12:52:r0:mad@base_45:inject 13:57:r6:add@base_51:inject 14:60:r3:or@base_47:lossy 15:62:r5:load@base_60:inject +igneum-ca3-v4-uniform/574 a02a7083b9887f87 0 0:1:1 1:2:2 2:0:0 3:2:2 4:0:0 5:2:1 6:2:0 7:1:1 8:2:1 9:1:0 10:1:1 11:0:0 12:1:0 13:1:0 14:0:0 15:1:0 1 0 0 0 1 0:7:r5:add@base_2:inject 1:17:r1:mad@base_10:inject 2:18:r6:mulhi@base_12:lossy 3:21:r6:sub@base_19:inject 4:22:r2:mad@base_15:inject 5:23:r4:load@base_21:inject 6:24:r7:load@base_22:inject 7:29:r1:mad@base_26:inject 8:32:r4:rotr@base_28:bijective 9:34:r6:xor@base_30:inject 10:35:r5:rotr@base_25:bijective 11:42:r1:mad@base_41:inject 12:47:r2:load@base_35:inject 13:50:r7:rotr@base_45:bijective 14:55:r0:mad@base_53:inject 15:58:r0:rotl@base_57:bijective +igneum-ca3-v4-uniform/575 e47938ec17ea6b9c 0 0:0:0 1:0:0 2:2:2 3:0:0 4:0:0 5:2:0 6:1:1 7:0:0 8:1:1 9:0:0 10:1:0 11:2:1 12:1:0 13:0:0 14:1:0 15:2:2 5 1 0 2 2 0:9:r6:mulhi@base_2:lossy 1:10:r5:rotl@base_7:bijective 2:15:r2:load@base_10:inject 3:20:r6:rotr@base_17:bijective 4:22:r3:mul@base_19:lossy 5:28:r7:mad@base_1:inject 6:30:r7:mad@base_29:inject 7:31:r1:add@base_24:inject 8:34:r0:load@base_31:inject 9:40:r5:mulhi@base_23:lossy 10:41:r7:xor@base_38:inject 11:43:r6:add@base_42:inject 12:49:r5:or@base_46:lossy 13:51:r6:sub@base_50:inject 14:54:r7:mul@base_47:lossy 15:61:r2:add@base_60:inject +igneum-ca3-v4-uniform/576 80080dcd30d6835d 0 0:0:0 1:0:0 2:0:0 3:1:1 4:0:0 5:1:0 6:2:2 7:1:1 8:0:0 9:2:3 10:2:1 11:1:0 12:2:1 13:1:0 14:0:0 15:2:2 5 0 0 4 1 0:3:r4:mulhi@base_1:lossy 1:5:r0:shfl@base_4:inject 2:9:r2:xor@base_8:inject 3:10:r4:mad@base_7:inject 4:14:r4:mad@base_13:inject 5:16:r0:rotr@base_15:bijective 6:17:r5:load@base_16:inject 7:27:r0:mul@base_26:lossy 8:29:r2:load@base_27:inject 9:30:r5:mul@base_21:lossy 10:34:r1:mul@base_19:lossy 11:35:r2:shfl@base_33:inject 12:36:r7:load@base_29:inject 13:42:r6:add@base_41:inject 14:48:r2:mul@base_46:lossy 15:51:r5:load@base_35:inject +igneum-ca3-v4-uniform/577 b85ff985933bd7ef 0 0:2:0 1:1:1 2:2:3 3:1:0 4:0:0 5:2:3 6:2:0 7:1:0 8:1:0 9:0:0 10:1:0 11:2:0 12:2:2 13:1:0 14:1:0 15:0:0 3 0 0 3 0 0:5:r1:xor@base_4:inject 1:12:r6:mul@base_11:lossy 2:13:r7:mad@base_7:inject 3:19:r4:load@base_12:inject 4:25:r0:xor@base_21:inject 5:27:r2:load@base_25:inject 6:34:r1:rotr@base_33:bijective 7:38:r3:shfl@base_24:inject 8:40:r6:xor@base_32:inject 9:46:r4:rotl@base_42:bijective 10:48:r3:mul@base_45:lossy 11:54:r1:load@base_48:inject 12:55:r3:rotl@base_53:bijective 13:59:r3:shfl@base_57:inject 14:60:r7:mul@base_52:lossy 15:63:r2:add@base_36:inject +igneum-ca3-v4-uniform/578 6d1a48db88b667b6 0 0:1:0 1:0:0 2:2:0 3:2:0 4:1:0 5:2:2 6:2:1 7:0:0 8:2:3 9:1:1 10:1:0 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 6 1 0 5 0 0:1:r0:mul@shadow_253:lossy 1:4:r5:mul@base_2:lossy 2:6:r6:shfl@base_5:inject 3:9:r1:mul@base_7:lossy 4:21:r4:add@base_17:inject 5:25:r5:load@base_9:inject 6:26:r0:load@base_25:inject 7:28:r2:mul@base_22:lossy 8:36:r3:add@base_34:inject 9:38:r4:shfl@base_37:inject 10:40:r6:load@base_36:inject 11:41:r7:shfl@base_32:inject 12:54:r5:load@base_41:inject 13:56:r2:load@base_54:inject 14:62:r1:or@base_51:lossy 15:63:r6:mul@base_55:lossy +igneum-ca3-v4-uniform/579 e0b76e864790b132 0 0:0:0 1:0:0 2:0:0 3:1:1 4:2:1 5:0:0 6:2:0 7:1:0 8:2:1 9:0:0 10:1:0 11:1:0 12:0:0 13:2:0 14:0:0 15:2:0 4 1 0 1 2 0:2:r3:add@base_1:inject 1:8:r1:rotl@base_5:bijective 2:12:r4:add@base_9:inject 3:13:r6:shfl@base_10:inject 4:14:r3:mul@base_4:lossy 5:17:r5:mulhi@base_0:lossy 6:20:r6:load@base_14:inject 7:22:r1:xor@base_21:inject 8:25:r3:mulhi@base_24:lossy 9:28:r2:load@base_17:inject 10:30:r0:load@base_25:inject 11:31:r6:or@base_26:lossy 12:33:r6:mad@base_32:inject 13:46:r2:mad@base_42:inject 14:48:r7:rotl@base_47:bijective 15:63:r3:xor@base_52:inject +igneum-ca3-v4-uniform/580 bb5223d5daa0a5e1 2 0:1:0 1:1:1 2:2:3 3:1:0 4:0:0 5:2:3 6:1:1 7:2:0 8:0:0 9:0:0 10:2:0 11:2:0 12:1:0 13:1:1 14:0:0 15:0:0 2 1 0 1 0 0:2:r7:mul@base_1:lossy 1:3:r3:load@base_2:inject 2:6:r6:mad@base_4:inject 3:8:r1:load@base_3:inject 4:10:r4:shfl@base_5:inject 5:21:r3:shfl@base_17:inject 6:22:r2:load@base_8:inject 7:25:r5:load@base_10:inject 8:28:r5:add@base_26:inject 9:36:r7:mad@base_32:inject 10:41:r0:load@base_36:inject 11:43:r3:load@base_41:inject 12:55:r3:mad@base_47:inject 13:58:r1:or@base_50:lossy 14:61:r5:add@base_51:inject 15:62:r6:add@base_59:inject +igneum-ca3-v4-uniform/581 69d8e438936af6ea 0 0:1:0 1:2:2 2:2:1 3:2:3 4:0:0 5:2:3 6:2:2 7:0:0 8:1:1 9:2:2 10:0:0 11:2:0 12:1:1 13:1:1 14:2:3 15:0:0 3 0 0 3 0 0:7:r6:mul@base_3:lossy 1:8:r5:shfl@base_0:inject 2:14:r3:rotr@base_6:bijective 3:25:r7:rotr@base_24:bijective 4:28:r4:mul@base_23:lossy 5:30:r3:mul@base_22:lossy 6:32:r2:rotr@base_26:bijective 7:36:r3:shfl@base_33:inject 8:37:r7:load@base_30:inject 9:39:r6:load@base_37:inject 10:42:r0:xor@base_38:inject 11:53:r3:xor@base_51:inject 12:56:r0:shfl@base_43:inject 13:58:r5:load@base_53:inject 14:59:r4:xor@base_57:inject 15:61:r2:load@base_58:inject +igneum-ca3-v4-uniform/582 bb51b24703785ad9 0 0:2:3 1:2:2 2:2:1 3:2:0 4:1:1 5:2:0 6:2:1 7:1:0 8:1:0 9:1:0 10:0:0 11:2:2 12:1:0 13:0:0 14:1:0 15:0:0 4 2 0 1 1 0:3:r0:mad@base_1:inject 1:19:r1:or@base_16:lossy 2:20:r5:mulhi@base_2:lossy 3:24:r1:mul@base_21:lossy 4:26:r7:load@base_19:inject 5:31:r5:rotr@base_30:bijective 6:32:r0:mad@base_29:inject 7:37:r0:shfl@base_33:inject 8:42:r1:mad@base_39:inject 9:43:r6:or@base_36:lossy 10:44:r7:xor@base_40:inject 11:48:r1:load@base_43:inject 12:52:r2:load@base_44:inject 13:57:r4:xor@base_55:inject 14:58:r6:shfl@base_46:inject 15:61:r0:xor@base_60:inject +igneum-ca3-v4-uniform/583 17a54517a692fec4 0 0:0:0 1:0:0 2:1:0 3:0:0 4:0:0 5:1:1 6:2:2 7:1:0 8:2:0 9:1:0 10:0:0 11:1:0 12:2:3 13:1:0 14:2:0 15:0:0 3 0 0 1 2 0:3:r5:mul@base_1:lossy 1:7:r2:xor@base_5:inject 2:8:r1:xor@base_2:inject 3:14:r7:shfl@base_6:inject 4:15:r1:sub@base_11:inject 5:16:r4:load@base_15:inject 6:17:r2:shfl@base_9:inject 7:19:r5:load@base_17:inject 8:25:r2:mulhi@base_24:lossy 9:42:r4:shfl@base_41:inject 10:46:r3:xor@base_44:inject 11:51:r0:xor@base_48:inject 12:53:r2:rotr@base_45:bijective 13:54:r5:mad@base_40:inject 14:57:r1:load@base_53:inject 15:63:r1:mulhi@base_60:lossy +igneum-ca3-v4-uniform/584 2d3b95ff0fc11890 0 0:2:3 1:0:0 2:0:0 3:2:3 4:2:0 5:0:0 6:0:0 7:1:1 8:1:0 9:0:0 10:0:0 11:2:1 12:1:0 13:2:2 14:1:1 15:0:0 3 0 0 3 0 0:6:r6:mul@base_2:lossy 1:7:r2:add@base_0:inject 2:8:r3:load@base_7:inject 3:17:r6:mad@base_16:inject 4:19:r5:rotl@base_14:bijective 5:23:r2:load@base_19:inject 6:26:r1:xor@base_25:inject 7:28:r7:xor@base_13:inject 8:30:r3:shfl@base_20:inject 9:32:r1:load@base_28:inject 10:36:r5:shfl@base_35:inject 11:48:r7:add@base_29:inject 12:49:r4:mul@base_44:lossy 13:56:r3:xor@base_51:inject 14:60:r2:mul@base_39:lossy 15:62:r6:shfl@base_53:inject +igneum-ca3-v4-uniform/585 bf08ccfc1ead89bf 0 0:2:0 1:0:0 2:2:3 3:0:0 4:1:1 5:1:0 6:1:1 7:1:1 8:2:0 9:2:2 10:0:0 11:1:0 12:1:1 13:0:0 14:2:2 15:1:0 3 0 0 1 2 0:8:r2:sub@base_2:inject 1:9:r5:load@base_8:inject 2:12:r3:shfl@base_5:inject 3:21:r5:mul@base_15:lossy 4:22:r4:rotl@base_14:bijective 5:23:r6:load@base_21:inject 6:29:r7:mulhi@base_24:lossy 7:30:r1:add@base_27:inject 8:32:r7:load@base_30:inject 9:33:r0:load@base_22:inject 10:35:r3:load@base_32:inject 11:48:r7:xor@base_44:inject 12:51:r3:mulhi@base_43:lossy 13:54:r0:load@base_51:inject 14:57:r3:load@base_54:inject 15:62:r1:sub@base_55:inject +igneum-ca3-v4-uniform/586 ac87bf31e7dca811 0 0:0:0 1:1:1 2:0:0 3:0:0 4:2:1 5:0:0 6:0:0 7:2:2 8:0:0 9:1:1 10:0:0 11:2:0 12:0:0 13:0:0 14:2:0 15:2:3 3 0 0 2 1 0:1:r2:sub@base_0:inject 1:5:r0:rotl@base_3:bijective 2:6:r5:mul@base_4:lossy 3:7:r3:xor@base_2:inject 4:23:r6:rotr@base_10:bijective 5:25:r4:load@base_5:inject 6:28:r1:rotr@base_27:bijective 7:30:r0:mad@base_20:inject 8:32:r2:rotl@base_21:bijective 9:34:r7:xor@base_31:inject 10:36:r6:shfl@base_35:inject 11:48:r4:load@base_30:inject 12:49:r5:mulhi@base_46:lossy 13:50:r3:rotr@base_43:bijective 14:55:r2:shfl@base_53:inject 15:60:r4:mul@base_51:lossy +igneum-ca3-v4-uniform/587 7881ae2d16d614f9 0 0:2:1 1:2:1 2:0:0 3:0:0 4:0:0 5:0:0 6:2:3 7:0:0 8:1:0 9:0:0 10:0:0 11:1:1 12:2:3 13:1:1 14:1:1 15:0:0 3 1 0 0 2 0:5:r0:or@base_3:lossy 1:9:r4:add@base_8:inject 2:11:r7:load@base_5:inject 3:14:r5:sub@base_4:inject 4:18:r4:mulhi@base_15:lossy 5:22:r1:rotl@base_16:bijective 6:25:r7:load@base_14:inject 7:26:r4:load@base_25:inject 8:38:r4:add@base_36:inject 9:39:r5:load@base_38:inject 10:41:r7:shfl@base_34:inject 11:48:r1:mad@base_40:inject 12:56:r2:mulhi@base_54:lossy 13:57:r6:mad@base_44:inject 14:61:r2:add@base_58:inject 15:63:r5:load@base_57:inject +igneum-ca3-v4-uniform/588 ebd7bdf8284d37e8 0 0:2:3 1:2:0 2:2:2 3:1:0 4:2:0 5:0:0 6:0:0 7:2:1 8:0:0 9:1:0 10:2:0 11:0:0 12:1:0 13:2:0 14:2:0 15:1:0 3 0 0 2 1 0:1:r3:mul@shadow_254:lossy 1:4:r0:rotl@base_2:bijective 2:5:r2:load@base_4:inject 3:8:r7:xor@base_7:inject 4:9:r0:load@base_8:inject 5:13:r4:rotl@base_12:bijective 6:14:r7:load@base_13:inject 7:15:r2:load@base_14:inject 8:18:r4:mad@base_17:inject 9:20:r6:load@base_18:inject 10:23:r5:mulhi@base_19:lossy 11:25:r7:load@base_20:inject 12:29:r5:mul@base_27:lossy 13:40:r6:rotl@base_37:bijective 14:60:r0:add@base_56:inject 15:63:r4:shfl@base_59:inject +igneum-ca3-v4-uniform/589 140a4940b32cb873 0 0:2:3 1:0:0 2:0:0 3:2:0 4:2:2 5:1:1 6:0:0 7:0:0 8:0:0 9:1:1 10:1:1 11:1:1 12:0:0 13:1:1 14:1:1 15:2:2 1 0 0 1 0 0:1:r5:mad@shadow_246:inject 1:4:r4:rotr@base_2:bijective 2:5:r7:load@base_4:inject 3:12:r4:xor@base_6:inject 4:13:r5:add@base_9:inject 5:22:r5:add@base_20:inject 6:34:r1:add@base_32:inject 7:36:r7:mul@base_30:lossy 8:38:r0:sub@base_35:inject 9:40:r3:load@base_36:inject 10:41:r2:load@base_40:inject 11:44:r7:mad@base_42:inject 12:45:r5:load@base_44:inject 13:48:r3:add@base_47:inject 14:49:r6:shfl@base_37:inject 15:62:r0:load@base_48:inject +igneum-ca3-v4-uniform/590 6bef16b31b192711 0 0:0:0 1:0:0 2:0:0 3:1:1 4:2:0 5:0:0 6:1:0 7:0:0 8:2:2 9:0:0 10:2:2 11:1:0 12:2:3 13:2:2 14:0:0 15:2:2 3 2 0 1 0 0:5:r3:rotl@base_3:bijective 1:6:r2:shfl@base_1:inject 2:7:r5:or@base_4:lossy 3:9:r4:or@base_8:lossy 4:13:r2:xor@base_11:inject 5:17:r7:load@base_13:inject 6:18:r4:xor@base_16:inject 7:20:r5:load@base_18:inject 8:24:r5:rotr@base_23:bijective 9:34:r2:rotl@base_28:bijective 10:36:r0:load@base_34:inject 11:37:r7:mad@base_30:inject 12:47:r0:shfl@base_42:inject 13:48:r5:load@base_47:inject 14:60:r2:mad@base_51:inject 15:63:r5:mul@base_53:lossy +igneum-ca3-v4-uniform/591 0f9072cc89cf0b1e 0 0:1:1 1:0:0 2:0:0 3:0:0 4:2:2 5:1:0 6:2:1 7:0:0 8:0:0 9:0:0 10:0:0 11:0:0 12:2:3 13:0:0 14:1:1 15:1:0 4 2 0 2 0 0:9:r3:shfl@base_6:inject 1:10:r6:xor@base_8:inject 2:15:r6:rotl@base_14:bijective 3:19:r7:mul@base_0:lossy 4:20:r0:load@base_10:inject 5:24:r2:xor@base_18:inject 6:25:r3:load@base_24:inject 7:28:r4:or@base_23:lossy 8:30:r1:shfl@base_27:inject 9:32:r5:or@base_29:lossy 10:40:r7:mul@base_33:lossy 11:44:r6:add@base_37:inject 12:53:r0:add@base_42:inject 13:54:r7:load@base_53:inject 14:57:r4:load@base_54:inject 15:63:r0:rotl@base_56:bijective +igneum-ca3-v4-uniform/592 2e2488648e0aa958 0 0:2:2 1:0:0 2:0:0 3:0:0 4:0:0 5:0:0 6:1:0 7:2:0 8:1:0 9:2:1 10:1:0 11:0:0 12:2:0 13:2:1 14:0:0 15:0:0 4 2 0 0 2 0:3:r7:sub@base_1:inject 1:10:r0:mad@base_7:inject 2:15:r6:or@base_14:lossy 3:24:r2:load@base_15:inject 4:25:r4:xor@base_22:inject 5:26:r0:load@base_24:inject 6:30:r2:shfl@base_27:inject 7:31:r6:mulhi@base_28:lossy 8:33:r7:mad@base_23:inject 9:42:r7:mulhi@base_40:lossy 10:48:r0:add@base_45:inject 11:53:r4:load@base_48:inject 12:55:r1:or@base_52:lossy 13:56:r0:load@base_53:inject 14:58:r7:load@base_55:inject 15:63:r0:xor@base_61:inject +igneum-ca3-v4-uniform/593 00d75683220960c8 0 0:2:2 1:1:0 2:0:0 3:0:0 4:2:1 5:0:0 6:0:0 7:2:0 8:1:1 9:2:1 10:2:0 11:1:1 12:2:2 13:2:2 14:1:1 15:2:0 4 1 0 3 0 0:4:r6:mul@base_0:lossy 1:12:r6:rotl@base_9:bijective 2:13:r4:mad@base_10:inject 3:14:r7:load@base_13:inject 4:15:r0:load@base_12:inject 5:16:r5:load@base_15:inject 6:28:r1:add@base_24:inject 7:30:r0:mul@base_26:lossy 8:34:r2:mul@base_33:lossy 9:35:r3:load@base_34:inject 10:40:r0:or@base_32:lossy 11:41:r6:load@base_28:inject 12:42:r7:load@base_41:inject 13:44:r5:load@base_35:inject 14:53:r2:shfl@base_50:inject 15:60:r6:load@base_53:inject +igneum-ca3-v4-uniform/594 314704f84952e8a6 0 0:2:1 1:2:1 2:1:1 3:0:0 4:0:0 5:1:1 6:0:0 7:0:0 8:1:1 9:0:0 10:2:1 11:2:0 12:0:0 13:1:1 14:0:0 15:0:0 5 3 0 1 1 0:11:r4:or@base_5:lossy 1:14:r7:mul@base_12:lossy 2:18:r6:or@base_13:lossy 3:30:r4:mad@base_21:inject 4:36:r5:add@base_31:inject 5:38:r1:xor@base_23:inject 6:39:r2:mulhi@base_35:lossy 7:43:r2:xor@base_42:inject 8:45:r7:or@base_33:lossy 9:46:r4:shfl@base_32:inject 10:48:r3:load@base_30:inject 11:50:r0:load@base_45:inject 12:53:r6:load@base_50:inject 13:59:r1:add@base_58:inject 14:61:r7:load@base_59:inject 15:63:r2:shfl@base_52:inject +igneum-ca3-v4-uniform/595 fb89cb5ec93f4b10 0 0:0:0 1:0:0 2:1:0 3:1:1 4:2:0 5:1:1 6:1:0 7:1:1 8:1:1 9:2:2 10:0:0 11:1:0 12:1:1 13:2:1 14:0:0 15:1:1 7 1 0 4 2 0:3:r3:mulhi@base_0:lossy 1:5:r5:mulhi@base_2:lossy 2:7:r3:mul@base_6:lossy 3:16:r5:xor@base_9:inject 4:20:r1:rotl@base_14:bijective 5:22:r3:mul@base_11:lossy 6:23:r6:shfl@base_15:inject 7:26:r5:mul@base_18:lossy 8:30:r1:mad@base_29:inject 9:33:r7:load@base_26:inject 10:35:r2:load@base_33:inject 11:36:r4:or@base_31:lossy 12:37:r0:rotl@base_10:bijective 13:39:r2:load@base_37:inject 14:51:r4:shfl@base_48:inject 15:54:r0:mul@base_52:lossy +igneum-ca3-v4-uniform/596 5d58577420ba67b2 0 0:0:0 1:1:1 2:2:2 3:2:1 4:2:1 5:1:1 6:1:1 7:0:0 8:0:0 9:1:0 10:1:0 11:2:2 12:2:1 13:2:1 14:0:0 15:1:0 1 0 0 0 1 0:1:r1:add@base_0:inject 1:4:r6:mad@base_3:inject 2:9:r1:xor@base_2:inject 3:12:r6:rotr@base_6:bijective 4:20:r7:add@base_13:inject 5:22:r1:load@base_20:inject 6:25:r2:rotl@base_19:bijective 7:34:r0:mad@base_30:inject 8:38:r3:rotr@base_26:bijective 9:39:r4:mulhi@base_35:lossy 10:43:r6:add@base_40:inject 11:46:r1:load@base_38:inject 12:47:r4:load@base_43:inject 13:54:r0:load@base_47:inject 14:55:r5:add@base_45:inject 15:58:r7:shfl@base_48:inject +igneum-ca3-v4-uniform/597 d6f929ea02d6857a 0 0:1:1 1:1:0 2:2:1 3:1:0 4:2:0 5:1:1 6:1:1 7:0:0 8:2:0 9:1:1 10:2:0 11:1:1 12:2:1 13:0:0 14:2:2 15:1:0 1 0 0 0 1 0:3:r6:mad@base_1:inject 1:4:r3:sub@base_2:inject 2:5:r4:load@base_4:inject 3:13:r0:xor@base_10:inject 4:19:r1:shfl@base_16:inject 5:20:r6:shfl@base_17:inject 6:22:r2:mulhi@base_21:lossy 7:23:r4:load@base_20:inject 8:28:r5:shfl@base_11:inject 9:30:r7:xor@base_27:inject 10:39:r2:sub@base_32:inject 11:40:r1:xor@base_38:inject 12:42:r3:shfl@base_36:inject 13:47:r7:load@base_40:inject 14:49:r6:rotr@base_43:bijective 15:58:r6:add@base_55:inject +igneum-ca3-v4-uniform/598 82ace122e23b7bb8 0 0:1:0 1:1:1 2:2:0 3:1:1 4:1:1 5:0:0 6:1:0 7:2:3 8:1:0 9:2:3 10:1:0 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 1 0 0 1 0 0:2:r2:xor@base_1:inject 1:5:r0:sub@base_0:inject 2:9:r3:mad@base_7:inject 3:14:r0:add@base_12:inject 4:19:r0:sub@base_18:inject 5:24:r2:load@base_19:inject 6:27:r4:add@base_21:inject 7:28:r7:load@base_24:inject 8:29:r6:rotr@base_26:bijective 9:30:r3:sub@base_10:inject 10:33:r1:shfl@base_32:inject 11:42:r6:mul@base_40:lossy 12:50:r5:add@base_49:inject 13:53:r0:rotl@base_51:bijective 14:61:r1:xor@base_60:inject 15:63:r7:sub@base_54:inject +igneum-ca3-v4-uniform/599 8c390ff8dfc3f286 0 0:0:0 1:0:0 2:0:0 3:1:0 4:2:3 5:1:1 6:2:0 7:0:0 8:0:0 9:0:0 10:2:0 11:0:0 12:0:0 13:0:0 14:0:0 15:1:0 5 0 0 3 2 0:5:r4:sub@base_1:inject 1:7:r1:rotl@base_6:bijective 2:14:r2:sub@base_13:inject 3:18:r7:mulhi@base_10:lossy 4:19:r5:xor@base_16:inject 5:26:r1:add@base_20:inject 6:29:r1:mul@base_28:lossy 7:35:r3:mul@base_21:lossy 8:36:r0:mulhi@base_34:lossy 9:40:r4:mad@base_24:inject 10:42:r3:load@base_40:inject 11:43:r1:rotl@base_37:bijective 12:46:r5:load@base_35:inject 13:56:r6:add@base_49:inject 14:58:r2:mul@base_54:lossy 15:59:r0:load@base_58:inject +igneum-ca3-v4-uniform/600 cb4dc81384b8c106 0 0:1:1 1:0:0 2:1:0 3:1:0 4:0:0 5:1:1 6:2:1 7:2:1 8:2:0 9:0:0 10:0:0 11:1:1 12:0:0 13:0:0 14:0:0 15:1:1 1 0 0 0 1 0:1:r5:xor@base_0:inject 1:5:r7:load@base_1:inject 2:7:r5:shfl@base_2:inject 3:9:r6:sub@base_6:inject 4:16:r0:rotr@base_15:bijective 5:17:r2:mad@base_10:inject 6:21:r6:load@base_17:inject 7:27:r7:xor@base_22:inject 8:29:r1:load@base_27:inject 9:30:r5:load@base_9:inject 10:47:r0:mad@base_41:inject 11:48:r1:shfl@base_42:inject 12:50:r6:shfl@base_28:inject 13:55:r4:sub@base_35:inject 14:59:r7:xor@base_58:inject 15:62:r6:mulhi@base_54:lossy +igneum-ca3-v4-uniform/601 d3ac9abd93b459ba 0 0:1:1 1:2:1 2:0:0 3:2:0 4:2:3 5:1:0 6:2:3 7:2:1 8:2:2 9:1:0 10:2:1 11:2:2 12:2:1 13:1:0 14:0:0 15:1:0 4 0 0 3 1 0:2:r5:mul@base_1:lossy 1:3:r3:load@base_2:inject 2:5:r2:shfl@base_0:inject 3:8:r5:rotr@base_6:bijective 4:11:r3:rotl@base_10:bijective 5:14:r7:mul@base_9:lossy 6:17:r0:load@base_11:inject 7:19:r2:rotl@base_15:bijective 8:24:r3:rotr@base_20:bijective 9:29:r2:mulhi@base_21:lossy 10:38:r4:mul@base_33:lossy 11:41:r6:rotl@base_40:bijective 12:46:r5:xor@base_35:inject 13:47:r1:rotl@base_43:bijective 14:53:r0:rotl@base_52:bijective 15:62:r4:mad@base_61:inject +igneum-ca3-v4-uniform/602 773e4119e2a1026c 1 0:0:0 1:1:1 2:0:0 3:0:0 4:1:1 5:1:1 6:0:0 7:1:1 8:0:0 9:0:0 10:1:0 11:0:0 12:1:1 13:1:0 14:2:2 15:0:0 3 0 0 1 2 0:1:r1:sub@base_0:inject 1:2:r5:load@base_1:inject 2:8:r6:load@base_2:inject 3:10:r1:rotr@base_9:bijective 4:18:r2:mul@base_15:lossy 5:26:r4:load@base_18:inject 6:29:r4:rotr@base_28:bijective 7:35:r0:shfl@base_21:inject 8:37:r5:load@base_35:inject 9:45:r3:mulhi@base_38:lossy 10:54:r1:add@base_36:inject 11:57:r0:mad@base_53:inject 12:59:r7:mulhi@base_51:lossy 13:61:r3:sub@base_56:inject 14:62:r6:rotl@base_60:bijective 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/603 dd2d6801d0995b06 0 0:0:0 1:1:1 2:0:0 3:2:0 4:1:1 5:0:0 6:0:0 7:1:0 8:1:0 9:2:1 10:0:0 11:1:0 12:1:0 13:2:1 14:2:2 15:0:0 1 0 0 0 1 0:12:r7:add@base_10:inject 1:13:r3:load@base_12:inject 2:17:r1:sub@base_16:inject 3:18:r4:rotr@base_7:bijective 4:20:r3:load@base_17:inject 5:21:r2:load@base_13:inject 6:28:r6:xor@base_19:inject 7:29:r7:load@base_20:inject 8:30:r5:add@base_23:inject 9:41:r3:rotr@base_38:bijective 10:45:r6:rotl@base_31:bijective 11:48:r0:mulhi@base_44:lossy 12:49:r2:load@base_48:inject 13:56:r3:add@base_51:inject 14:57:r7:mad@base_54:inject 15:62:r4:add@base_59:inject +igneum-ca3-v4-uniform/604 0db572c45541b4ea 0 0:1:0 1:2:0 2:0:0 3:1:1 4:2:2 5:0:0 6:0:0 7:2:2 8:2:2 9:0:0 10:2:0 11:0:0 12:1:0 13:2:0 14:1:1 15:2:2 2 0 0 2 0 0:3:r6:xor@base_0:inject 1:6:r2:mul@base_1:lossy 2:12:r0:load@base_6:inject 3:13:r7:rotl@base_7:bijective 4:25:r7:add@base_23:inject 5:32:r4:add@base_26:inject 6:33:r7:load@base_32:inject 7:37:r1:xor@base_35:inject 8:41:r3:mul@base_34:lossy 9:45:r3:rotl@base_44:bijective 10:51:r3:shfl@base_47:inject 11:53:r5:mad@base_42:inject 12:55:r1:load@base_51:inject 13:57:r6:rotl@base_54:bijective 14:59:r4:xor@base_50:inject 15:60:r1:rotr@base_58:bijective +igneum-ca3-v4-uniform/605 8d1892a2eca1332d 0 0:0:0 1:1:0 2:0:0 3:2:0 4:1:0 5:1:0 6:0:0 7:1:1 8:0:0 9:0:0 10:1:1 11:0:0 12:2:0 13:0:0 14:1:0 15:1:0 4 2 1 1 1 0:4:r1:or@base_3:lossy-or-chain1 1:7:r5:mad@base_5:inject 2:10:r7:mul@base_2:lossy 3:11:r5:load@base_10:inject 4:14:r1:mad@base_12:inject 5:18:r6:load@base_14:inject 6:19:r4:add@base_6:inject 7:23:r2:mulhi@base_21:lossy 8:27:r5:sub@base_24:inject 9:32:r7:or@base_22:lossy 10:33:r0:add@base_31:inject 11:35:r1:load@base_33:inject 12:49:r4:xor@base_34:inject 13:52:r4:xor@base_50:inject 14:61:r6:xor@base_59:inject 15:62:r7:shfl@base_43:inject +igneum-ca3-v4-uniform/606 4c7be56c62c1cffa 0 0:2:2 1:2:3 2:2:0 3:1:1 4:1:0 5:2:2 6:0:0 7:2:3 8:0:0 9:0:0 10:2:3 11:2:3 12:2:2 13:2:0 14:0:0 15:0:0 5 0 0 2 3 0:3:r1:mad@base_2:inject 1:9:r3:xor@base_8:inject 2:15:r7:rotr@base_14:bijective 3:19:r5:mulhi@base_7:lossy 4:21:r7:mulhi@base_18:lossy 5:25:r6:mulhi@base_22:lossy 6:32:r3:mul@base_28:lossy 7:37:r5:add@base_36:inject 8:38:r2:xor@base_12:inject 9:39:r6:xor@base_35:inject 10:41:r5:load@base_39:inject 11:42:r0:add@base_34:inject 12:43:r3:load@base_42:inject 13:55:r4:add@base_52:inject 14:60:r5:load@base_55:inject 15:61:r1:mul@base_33:lossy +igneum-ca3-v4-uniform/607 495982b645409709 0 0:1:1 1:2:0 2:2:2 3:0:0 4:1:0 5:2:3 6:1:0 7:2:3 8:0:0 9:2:0 10:0:0 11:1:1 12:2:1 13:1:1 14:0:0 15:0:0 1 1 0 0 0 0:4:r2:add@base_1:inject 1:17:r4:add@base_5:inject 2:18:r0:rotr@base_13:bijective 3:21:r6:shfl@base_12:inject 4:22:r0:load@base_21:inject 5:24:r2:or@base_23:lossy 6:26:r3:sub@base_15:inject 7:32:r5:rotr@base_30:bijective 8:36:r3:load@base_32:inject 9:43:r0:add@base_42:inject 10:44:r5:xor@base_38:inject 11:46:r7:load@base_44:inject 12:48:r3:shfl@base_47:inject 13:52:r2:rotl@base_39:bijective 14:58:r0:xor@base_49:inject 15:60:r2:load@base_58:inject +igneum-ca3-v4-uniform/608 f4dca4f00aed92f7 0 0:1:0 1:2:0 2:2:0 3:0:0 4:1:0 5:1:1 6:1:1 7:1:0 8:2:1 9:0:0 10:2:2 11:1:1 12:1:1 13:1:0 14:2:3 15:1:1 3 1 0 1 1 0:2:r3:or@base_1:lossy 1:6:r4:xor@base_3:inject 2:9:r3:add@base_4:inject 3:14:r6:mul@base_5:lossy 4:18:r5:load@base_6:inject 5:23:r0:load@base_18:inject 6:26:r6:mulhi@base_19:lossy 7:30:r6:xor@base_28:inject 8:31:r1:load@base_26:inject 9:38:r2:xor@base_37:inject 10:39:r3:load@base_38:inject 11:40:r1:rotl@base_36:bijective 12:42:r7:add@base_27:inject 13:43:r5:load@base_42:inject 14:62:r0:add@base_46:inject 15:63:r6:rotr@base_60:bijective +igneum-ca3-v4-uniform/609 e5ac25088b9ac5c7 0 0:2:1 1:1:0 2:0:0 3:2:0 4:1:1 5:0:0 6:2:2 7:0:0 8:2:2 9:1:0 10:1:0 11:0:0 12:0:0 13:1:1 14:0:0 15:1:0 3 1 0 2 0 0:1:r4:xor@base_0:inject 1:2:r6:mad@shadow_227:inject 2:6:r5:add@base_3:inject 3:15:r2:sub@base_14:inject 4:19:r1:mad@base_5:inject 5:29:r2:mul@base_17:lossy 6:31:r4:mul@base_27:lossy 7:33:r5:mad@base_10:inject 8:35:r3:load@base_31:inject 9:36:r6:load@base_35:inject 10:37:r1:load@base_33:inject 11:44:r0:or@base_41:lossy 12:47:r6:mad@base_38:inject 13:55:r4:rotr@base_48:bijective 14:57:r7:load@base_44:inject 15:61:r3:rotr@base_60:bijective +igneum-ca3-v4-uniform/610 75086f0c488c5084 0 0:1:0 1:2:3 2:2:3 3:0:0 4:2:0 5:1:0 6:0:0 7:0:0 8:2:2 9:2:2 10:0:0 11:1:0 12:0:0 13:1:1 14:0:0 15:1:0 1 0 0 1 0 0:9:r4:mul@base_8:lossy 1:10:r1:load@base_9:inject 2:13:r2:xor@base_11:inject 3:16:r7:rotr@base_12:bijective 4:32:r4:add@base_31:inject 5:38:r1:shfl@base_24:inject 6:39:r7:add@base_27:inject 7:40:r2:add@base_37:inject 8:41:r0:load@base_40:inject 9:42:r3:mad@base_36:inject 10:45:r4:sub@base_43:inject 11:47:r3:sub@base_46:inject 12:52:r6:load@base_41:inject 13:53:r2:rotr@base_51:bijective 14:56:r0:mad@base_50:inject 15:59:r7:xor@base_55:inject +igneum-ca3-v4-uniform/611 33b5c8c86692a35a 0 0:0:0 1:1:0 2:2:2 3:0:0 4:0:0 5:2:2 6:2:2 7:1:1 8:1:1 9:1:1 10:0:0 11:0:0 12:0:0 13:2:0 14:0:0 15:0:0 1 1 0 0 0 0:7:r0:xor@base_3:inject 1:18:r3:add@base_12:inject 2:19:r7:sub@base_10:inject 3:23:r0:mad@base_9:inject 4:25:r1:load@base_19:inject 5:26:r3:load@base_25:inject 6:30:r1:load@base_26:inject 7:34:r5:or@base_5:lossy 8:35:r3:load@base_34:inject 9:37:r4:load@base_35:inject 10:40:r1:shfl@base_36:inject 11:42:r5:load@base_40:inject 12:43:r7:load@base_42:inject 13:50:r4:rotl@base_46:bijective 14:54:r1:mad@base_51:inject 15:63:r4:add@base_60:inject +igneum-ca3-v4-uniform/612 d33f92ece02a330b 0 0:2:0 1:1:1 2:1:1 3:1:1 4:2:2 5:2:1 6:0:0 7:2:1 8:1:1 9:0:0 10:2:0 11:2:2 12:1:1 13:0:0 14:0:0 15:0:0 2 1 0 1 0 0:12:r3:shfl@base_7:inject 1:13:r0:mad@base_9:inject 2:18:r5:xor@base_17:inject 3:21:r6:shfl@base_19:inject 4:23:r4:add@base_10:inject 5:24:r3:load@base_21:inject 6:32:r2:or@base_30:lossy 7:34:r5:mad@base_33:inject 8:38:r0:rotr@base_22:bijective 9:40:r4:load@base_38:inject 10:41:r1:sub@base_39:inject 11:43:r1:rotr@base_42:bijective 12:44:r7:load@base_43:inject 13:46:r5:load@base_41:inject 14:56:r4:load@base_46:inject 15:57:r1:mul@base_52:lossy +igneum-ca3-v4-uniform/613 c2d2276daacbffd4 0 0:2:2 1:1:1 2:0:0 3:1:1 4:1:1 5:0:0 6:2:2 7:2:1 8:2:1 9:0:0 10:1:0 11:2:0 12:2:2 13:2:0 14:2:1 15:1:1 3 0 0 2 1 0:5:r3:mul@base_0:lossy 1:13:r7:xor@base_12:inject 2:14:r1:shfl@base_9:inject 3:16:r6:add@base_11:inject 4:19:r4:mad@base_15:inject 5:21:r1:mad@base_18:inject 6:26:r2:shfl@base_25:inject 7:29:r7:rotl@base_22:bijective 8:30:r3:mulhi@base_20:lossy 9:42:r4:mad@base_41:inject 10:46:r7:shfl@base_45:inject 11:47:r6:mad@base_37:inject 12:49:r2:mul@base_32:lossy 13:53:r3:rotr@base_51:bijective 14:55:r7:load@base_49:inject 15:62:r0:rotl@base_52:bijective +igneum-ca3-v4-uniform/614 f9e335ab5e7c2214 0 0:0:0 1:0:0 2:1:0 3:2:0 4:2:1 5:1:1 6:1:0 7:1:0 8:1:1 9:1:1 10:2:1 11:1:0 12:0:0 13:2:3 14:2:2 15:2:0 3 0 0 2 1 0:1:r3:shfl@base_0:inject 1:5:r5:load@base_1:inject 2:8:r7:load@base_5:inject 3:15:r1:mulhi@base_14:lossy 4:16:r6:xor@base_9:inject 5:20:r5:mul@base_18:lossy 6:22:r0:rotl@base_21:bijective 7:31:r6:rotl@base_28:bijective 8:40:r3:mul@base_39:lossy 9:41:r1:load@base_31:inject 10:43:r2:xor@base_33:inject 11:47:r7:xor@base_46:inject 12:48:r0:load@base_40:inject 13:51:r5:mad@base_49:inject 14:55:r1:xor@base_52:inject 15:57:r4:load@base_51:inject +igneum-ca3-v4-uniform/615 dcd8c7a58b214d27 0 0:2:0 1:1:0 2:0:0 3:1:1 4:0:0 5:2:1 6:0:0 7:2:0 8:2:1 9:1:1 10:1:1 11:1:0 12:2:3 13:2:3 14:0:0 15:0:0 2 0 0 2 0 0:1:r5:add@base_0:inject 1:4:r3:add@base_2:inject 2:10:r7:load@base_4:inject 3:11:r6:mul@base_8:lossy 4:12:r0:load@base_11:inject 5:15:r5:mul@base_13:lossy 6:31:r2:load@base_10:inject 7:36:r4:shfl@base_34:inject 8:37:r3:add@base_32:inject 9:39:r5:xor@base_29:inject 10:40:r6:load@base_37:inject 11:44:r7:xor@base_35:inject 12:45:r3:load@base_40:inject 13:49:r6:add@base_47:inject 14:51:r4:xor@base_50:inject 15:58:r1:load@base_51:inject +igneum-ca3-v4-uniform/616 2768b889fb629a5f 0 0:0:0 1:0:0 2:1:1 3:1:0 4:2:1 5:0:0 6:0:0 7:1:1 8:1:0 9:1:0 10:1:0 11:0:0 12:1:1 13:1:0 14:1:0 15:0:0 1 0 0 1 0 0:4:r4:add@base_0:inject 1:11:r7:mad@base_8:inject 2:13:r6:add@base_9:inject 3:14:r7:load@base_13:inject 4:16:r3:add@base_6:inject 5:18:r4:rotl@base_15:bijective 6:23:r2:mul@base_21:lossy 7:27:r3:load@base_23:inject 8:28:r5:load@base_27:inject 9:38:r7:rotl@base_36:bijective 10:46:r2:rotl@base_44:bijective 11:52:r7:xor@base_47:inject 12:56:r3:rotr@base_50:bijective 13:59:r4:add@base_58:inject 14:61:r1:sub@base_60:inject 15:62:r6:xor@base_54:inject +igneum-ca3-v4-uniform/617 e25a23fad58c9bf5 0 0:0:0 1:1:0 2:2:2 3:0:0 4:0:0 5:1:0 6:1:0 7:1:1 8:2:2 9:2:0 10:0:0 11:2:3 12:0:0 13:2:0 14:2:1 15:1:0 3 0 0 3 0 0:6:r2:xor@base_4:inject 1:23:r1:add@base_16:inject 2:26:r5:mul@base_24:lossy 3:27:r6:load@base_26:inject 4:29:r0:rotl@base_25:bijective 5:30:r6:mul@base_28:lossy 6:40:r3:load@base_30:inject 7:43:r5:mul@base_34:lossy 8:45:r4:load@base_43:inject 9:48:r7:rotl@base_36:bijective 10:49:r2:add@base_47:inject 11:52:r1:add@base_37:inject 12:53:r4:rotr@base_46:bijective 13:55:r3:add@base_51:inject 14:58:r0:load@base_52:inject 15:60:r6:load@base_53:inject +igneum-ca3-v4-uniform/618 c848703f1ddb7357 2 0:1:0 1:0:0 2:0:0 3:1:0 4:0:0 5:2:0 6:0:0 7:0:0 8:2:2 9:2:3 10:0:0 11:2:0 12:1:1 13:1:0 14:1:0 15:1:0 0 0 0 0 0 0:6:r2:mad@base_2:inject 1:7:r3:load@base_6:inject 2:8:r4:shfl@base_4:inject 3:11:r0:rotr@base_5:bijective 4:13:r4:sub@base_10:inject 5:17:r7:load@base_13:inject 6:25:r4:sub@base_16:inject 7:26:r5:sub@base_18:inject 8:29:r1:xor@base_23:inject 9:30:r2:load@base_29:inject 10:32:r3:xor@base_21:inject 11:40:r0:load@base_26:inject 12:47:r3:rotr@base_43:bijective 13:54:r4:sub@base_49:inject 14:58:r6:mad@base_50:inject 15:62:r5:rotr@base_35:bijective +igneum-ca3-v4-uniform/619 c3350399454d6580 0 0:0:0 1:2:1 2:0:0 3:1:1 4:0:0 5:0:0 6:0:0 7:2:3 8:0:0 9:2:1 10:2:2 11:2:2 12:2:3 13:0:0 14:2:0 15:2:0 6 3 1 2 1 0:2:r7:mul@base_0:lossy 1:5:r5:add@base_3:inject 2:8:r3:load@base_5:inject 3:11:r1:shfl@base_9:inject 4:15:r7:or@base_12:lossy 5:18:r0:load@base_11:inject 6:20:r5:add@base_10:inject 7:21:r1:rotl@base_19:bijective 8:25:r2:mulhi@base_23:lossy 9:39:r5:or@base_31:lossy-or-chain1 10:48:r2:mul@base_46:lossy 11:53:r5:shfl@base_51:inject 12:55:r2:load@base_53:inject 13:56:r6:xor@base_49:inject 14:57:r4:or@base_41:lossy 15:63:r0:add@base_61:inject +igneum-ca3-v4-uniform/620 74742785671b76a5 0 0:1:0 1:0:0 2:2:2 3:1:1 4:1:1 5:1:0 6:2:2 7:0:0 8:0:0 9:2:3 10:1:1 11:0:0 12:0:0 13:1:0 14:0:0 15:1:1 4 1 0 1 2 0:2:r6:shfl@base_0:inject 1:3:r7:load@base_2:inject 2:6:r3:mulhi@base_5:lossy 3:17:r4:xor@base_11:inject 4:18:r6:add@base_15:inject 5:24:r5:mad@base_21:inject 6:31:r1:or@base_30:lossy 7:32:r6:load@base_24:inject 8:34:r7:rotr@base_33:bijective 9:36:r2:sub@base_25:inject 10:37:r3:sub@base_20:inject 11:39:r5:load@base_37:inject 12:41:r6:add@base_35:inject 13:45:r4:mulhi@base_44:lossy 14:54:r5:rotl@base_53:bijective 15:62:r5:mul@base_61:lossy +igneum-ca3-v4-uniform/621 e6e024bd5ca9581f 0 0:2:1 1:2:3 2:1:0 3:2:3 4:0:0 5:1:0 6:1:0 7:2:1 8:0:0 9:2:2 10:2:1 11:2:0 12:0:0 13:1:0 14:0:0 15:1:1 1 0 0 0 1 0:8:r7:add@base_1:inject 1:14:r3:shfl@base_13:inject 2:17:r2:mulhi@base_11:lossy 3:19:r7:load@base_14:inject 4:22:r0:rotr@base_21:bijective 5:24:r4:sub@base_23:inject 6:25:r7:load@base_24:inject 7:27:r5:load@base_19:inject 8:31:r1:add@base_26:inject 9:40:r1:sub@base_38:inject 10:45:r4:add@base_42:inject 11:46:r0:load@base_45:inject 12:50:r6:rotr@base_48:bijective 13:53:r7:rotr@base_47:bijective 14:55:r0:load@base_53:inject 15:56:r5:shfl@base_54:inject +igneum-ca3-v4-uniform/622 02af00f5e620532c 0 0:0:0 1:1:1 2:2:2 3:0:0 4:0:0 5:2:3 6:2:2 7:0:0 8:1:0 9:0:0 10:0:0 11:1:0 12:0:0 13:2:2 14:0:0 15:0:0 3 1 0 1 1 0:2:r6:add@base_0:inject 1:3:r4:or@base_1:lossy 2:5:r0:load@base_3:inject 3:6:r2:xor@base_4:inject 4:9:r1:load@base_5:inject 5:13:r1:mul@base_10:lossy 6:14:r3:load@base_6:inject 7:19:r6:rotr@base_18:bijective 8:24:r0:rotr@base_16:bijective 9:40:r7:add@base_25:inject 10:45:r2:add@base_34:inject 11:46:r4:load@base_40:inject 12:52:r6:mulhi@base_44:lossy 13:57:r2:shfl@base_51:inject 14:58:r4:add@base_54:inject 15:63:r6:load@base_58:inject +igneum-ca3-v4-uniform/623 3285e4acbce4bb16 0 0:1:1 1:1:1 2:1:1 3:1:0 4:2:2 5:1:0 6:2:2 7:2:3 8:2:0 9:1:1 10:1:1 11:0:0 12:1:0 13:1:0 14:2:3 15:1:0 4 1 0 1 2 0:3:r7:mulhi@base_0:lossy 1:5:r0:add@base_2:inject 2:7:r3:mul@base_1:lossy 3:8:r2:mulhi@base_4:lossy 4:17:r1:rotr@base_9:bijective 5:25:r3:sub@base_16:inject 6:26:r2:rotr@base_23:bijective 7:27:r6:load@base_26:inject 8:30:r0:load@base_25:inject 9:31:r6:load@base_30:inject 10:36:r5:add@base_29:inject 11:39:r4:rotr@base_38:bijective 12:40:r1:mad@base_35:inject 13:44:r0:or@base_32:lossy 14:47:r5:shfl@base_46:inject 15:52:r6:mad@base_49:inject +igneum-ca3-v4-uniform/624 c6b06a8b4b1ca291 0 0:0:0 1:0:0 2:2:1 3:0:0 4:1:0 5:0:0 6:1:1 7:1:1 8:0:0 9:1:1 10:2:1 11:1:1 12:0:0 13:1:1 14:0:0 15:1:1 1 0 0 1 0 0:5:r1:add@base_0:inject 1:6:r3:rotl@base_1:bijective 2:8:r4:mad@base_4:inject 3:9:r0:load@base_6:inject 4:10:r6:xor@base_7:inject 5:11:r7:load@base_9:inject 6:21:r3:add@base_18:inject 7:24:r1:add@base_22:inject 8:25:r7:load@base_21:inject 9:31:r5:load@base_24:inject 10:32:r3:load@base_31:inject 11:34:r4:load@base_25:inject 12:35:r0:mad@base_15:inject 13:41:r7:load@base_35:inject 14:43:r3:rotl@base_36:bijective 15:53:r1:mul@base_48:lossy +igneum-ca3-v4-uniform/625 572f7a8bc2e9a518 0 0:1:1 1:0:0 2:0:0 3:1:0 4:1:0 5:1:1 6:0:0 7:2:3 8:0:0 9:0:0 10:2:3 11:1:1 12:0:0 13:0:0 14:1:0 15:2:1 4 0 0 4 0 0:7:r5:mul@base_6:lossy 1:12:r0:load@base_7:inject 2:13:r2:shfl@base_11:inject 3:14:r5:load@base_13:inject 4:21:r6:mad@base_16:inject 5:32:r4:sub@base_31:inject 6:33:r1:mul@base_30:lossy 7:41:r3:shfl@base_39:inject 8:46:r3:mul@base_42:lossy 9:48:r6:load@base_46:inject 10:50:r7:sub@base_47:inject 11:54:r3:mad@base_52:inject 12:55:r1:xor@base_49:inject 13:60:r4:add@base_53:inject 14:61:r1:load@base_60:inject 15:62:r7:mul@base_57:lossy +igneum-ca3-v4-uniform/626 27208927143ed8b9 0 0:2:1 1:0:0 2:1:0 3:1:0 4:0:0 5:2:2 6:2:0 7:2:2 8:2:3 9:2:1 10:0:0 11:2:0 12:1:1 13:1:1 14:1:1 15:2:3 2 0 0 1 1 0:1:r4:shfl@shadow_252:inject 1:2:r0:load@base_1:inject 2:4:r1:load@base_2:inject 3:5:r0:load@base_4:inject 4:8:r3:load@base_5:inject 5:10:r5:load@base_8:inject 6:26:r1:add@base_21:inject 7:28:r0:load@base_26:inject 8:31:r2:sub@base_23:inject 9:38:r7:xor@base_27:inject 10:43:r4:mul@base_20:lossy 11:45:r1:load@base_43:inject 12:48:r1:xor@base_47:inject 13:49:r7:xor@base_39:inject 14:50:r5:load@base_48:inject 15:59:r0:mulhi@base_52:lossy +igneum-ca3-v4-uniform/627 914d114827c6a010 0 0:2:1 1:1:0 2:2:3 3:0:0 4:1:1 5:2:0 6:0:0 7:1:1 8:2:2 9:2:2 10:1:0 11:0:0 12:2:1 13:1:1 14:0:0 15:1:0 3 1 0 1 1 0:3:r0:or@base_0:lossy 1:6:r1:mulhi@base_2:lossy 2:9:r3:load@base_6:inject 3:16:r7:rotl@base_15:bijective 4:24:r1:mul@base_22:lossy 5:26:r6:load@base_24:inject 6:29:r0:rotl@base_27:bijective 7:38:r3:rotr@base_34:bijective 8:41:r2:load@base_38:inject 9:46:r5:load@base_41:inject 10:47:r3:load@base_46:inject 11:49:r6:add@base_45:inject 12:51:r1:load@base_49:inject 13:52:r2:rotr@base_48:bijective 14:57:r3:add@base_56:inject 15:59:r2:rotr@base_54:bijective +igneum-ca3-v4-uniform/628 6ef584c860a30967 0 0:1:0 1:1:1 2:2:3 3:1:1 4:2:1 5:1:0 6:0:0 7:2:2 8:0:0 9:1:1 10:2:0 11:1:0 12:0:0 13:2:3 14:2:3 15:0:0 4 1 0 1 2 0:1:r4:mulhi@base_0:lossy 1:2:r3:load@base_1:inject 2:4:r4:load@base_2:inject 3:8:r2:sub@base_6:inject 4:11:r3:mulhi@base_10:lossy 5:12:r5:load@base_4:inject 6:23:r5:shfl@base_20:inject 7:25:r4:or@base_24:lossy 8:26:r1:sub@base_16:inject 9:35:r4:load@base_26:inject 10:46:r0:rotr@base_44:bijective 11:47:r5:load@base_46:inject 12:50:r4:mul@base_42:lossy 13:53:r3:add@base_49:inject 14:59:r5:rotl@base_55:bijective 15:63:r6:mad@base_62:inject +igneum-ca3-v4-uniform/629 c09cfb3128cf8448 0 0:0:0 1:1:1 2:1:0 3:1:0 4:1:1 5:2:1 6:1:0 7:2:2 8:0:0 9:1:1 10:0:0 11:0:0 12:2:3 13:0:0 14:2:0 15:0:0 2 0 0 1 1 0:3:r0:mulhi@base_2:lossy 1:4:r5:xor@base_1:inject 2:5:r2:xor@base_0:inject 3:15:r5:rotl@base_11:bijective 4:23:r5:add@base_18:inject 5:27:r4:rotl@base_24:bijective 6:31:r1:shfl@base_14:inject 7:34:r3:add@base_26:inject 8:38:r2:shfl@base_36:inject 9:39:r3:load@base_38:inject 10:42:r5:xor@base_33:inject 11:44:r6:load@base_42:inject 12:45:r5:load@base_44:inject 13:50:r7:mad@base_47:inject 14:51:r2:shfl@base_46:inject 15:55:r6:mul@base_48:lossy +igneum-ca3-v4-uniform/630 42c9561a00dfc4f0 0 0:0:0 1:1:0 2:1:0 3:0:0 4:2:0 5:1:0 6:1:0 7:0:0 8:0:0 9:0:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 1 1 1 0 0 0:1:r4:xor@base_0:inject 1:3:r5:shfl@base_2:inject 2:4:r0:load@base_1:inject 3:5:r7:load@base_4:inject 4:10:r2:xor@base_8:inject 5:11:r3:load@base_10:inject 6:12:r7:load@base_11:inject 7:14:r0:rotr@base_13:bijective 8:18:r6:add@base_9:inject 9:19:r7:shfl@base_16:inject 10:26:r1:or@base_25:lossy-or-chain1 11:39:r3:xor@base_31:inject 12:46:r4:load@base_39:inject 13:48:r6:sub@base_44:inject 14:55:r6:shfl@base_54:inject 15:57:r3:load@base_55:inject +igneum-ca3-v4-uniform/631 8a83e4031e8bdcbd 0 0:2:0 1:1:1 2:2:3 3:2:1 4:1:0 5:2:1 6:2:0 7:1:0 8:2:0 9:1:1 10:2:3 11:2:3 12:2:2 13:1:0 14:2:1 15:2:2 2 0 0 0 2 0:2:r3:xor@base_1:inject 1:3:r0:load@base_2:inject 2:23:r3:add@base_19:inject 3:29:r7:shfl@base_28:inject 4:30:r0:mulhi@base_17:lossy 5:37:r2:load@base_30:inject 6:41:r6:shfl@base_38:inject 7:44:r3:mulhi@base_39:lossy 8:49:r5:rotr@base_48:bijective 9:50:r7:load@base_49:inject 10:54:r0:mad@base_47:inject 11:58:r5:rotl@base_53:bijective 12:59:r3:add@base_51:inject 13:60:r6:mad@base_57:inject 14:61:r2:load@base_41:inject 15:62:r1:rotl@base_55:bijective +igneum-ca3-v4-uniform/632 22eeec401ade3e04 0 0:1:1 1:1:0 2:2:1 3:0:0 4:0:0 5:2:1 6:2:3 7:1:0 8:1:1 9:2:2 10:2:0 11:2:3 12:2:1 13:2:3 14:0:0 15:1:1 2 0 0 1 1 0:8:r3:xor@base_7:inject 1:10:r6:add@base_4:inject 2:20:r1:mad@base_14:inject 3:23:r0:add@base_15:inject 4:24:r7:xor@base_16:inject 5:25:r6:load@base_20:inject 6:26:r5:load@base_23:inject 7:32:r3:load@base_24:inject 8:38:r2:add@base_37:inject 9:45:r0:xor@base_35:inject 10:47:r6:add@base_29:inject 11:53:r2:add@base_50:inject 12:54:r6:xor@base_49:inject 13:55:r3:mul@base_51:lossy 14:57:r7:mad@base_33:inject 15:59:r2:mulhi@base_58:lossy +igneum-ca3-v4-uniform/633 51bacf08e515ed90 0 0:1:1 1:0:0 2:0:0 3:0:0 4:1:0 5:2:3 6:2:3 7:0:0 8:0:0 9:1:0 10:0:0 11:2:1 12:1:1 13:2:2 14:0:0 15:1:1 0 0 0 0 0 0:3:r4:shfl@base_2:inject 1:4:r1:add@base_1:inject 2:6:r5:load@base_4:inject 3:8:r7:add@base_5:inject 4:16:r2:add@base_15:inject 5:17:r0:sub@base_13:inject 6:45:r4:xor@base_43:inject 7:46:r7:add@base_40:inject 8:48:r0:xor@base_36:inject 9:49:r2:xor@base_47:inject 10:50:r7:load@base_49:inject 11:52:r5:load@base_48:inject 12:54:r3:load@base_50:inject 13:57:r1:sub@base_55:inject 14:58:r0:shfl@base_56:inject 15:61:r5:load@base_58:inject +igneum-ca3-v4-uniform/634 ee955967eabe5607 0 0:1:1 1:2:2 2:1:0 3:2:3 4:1:1 5:0:0 6:1:1 7:2:1 8:1:1 9:2:1 10:2:1 11:2:3 12:0:0 13:1:1 14:0:0 15:1:0 3 0 0 1 2 0:3:r0:mul@base_1:lossy 1:4:r6:mulhi@base_2:lossy 2:6:r5:load@base_4:inject 3:18:r7:shfl@base_14:inject 4:20:r1:xor@base_17:inject 5:22:r5:load@base_20:inject 6:25:r4:add@base_16:inject 7:26:r3:xor@base_11:inject 8:27:r0:load@base_26:inject 9:29:r1:load@base_25:inject 10:30:r7:add@base_23:inject 11:32:r1:add@base_31:inject 12:34:r2:mulhi@base_33:lossy 13:37:r3:load@base_30:inject 14:53:r7:mad@base_48:inject 15:63:r6:add@base_60:inject +igneum-ca3-v4-uniform/635 ed05e72468b0862e 0 0:0:0 1:0:0 2:2:0 3:1:1 4:1:1 5:0:0 6:0:0 7:2:2 8:2:1 9:1:1 10:1:0 11:1:1 12:1:1 13:2:0 14:0:0 15:2:0 1 0 0 1 0 0:2:r6:rotr@base_0:bijective 1:5:r0:rotl@base_4:bijective 2:7:r7:mad@base_6:inject 3:16:r1:rotl@base_12:bijective 4:22:r0:add@base_19:inject 5:23:r3:load@base_22:inject 6:24:r5:mad@base_21:inject 7:26:r6:load@base_24:inject 8:27:r3:load@base_26:inject 9:33:r4:shfl@base_32:inject 10:35:r1:shfl@base_30:inject 11:36:r2:load@base_35:inject 12:37:r0:load@base_36:inject 13:41:r6:rotl@base_34:bijective 14:52:r2:mul@base_49:lossy 15:57:r3:rotl@base_50:bijective +igneum-ca3-v4-uniform/636 8ff6b99578dfe6f3 0 0:2:3 1:1:0 2:2:2 3:0:0 4:1:0 5:1:1 6:0:0 7:2:3 8:0:0 9:1:1 10:2:1 11:0:0 12:1:0 13:0:0 14:0:0 15:1:1 3 1 0 2 0 0:1:r2:add@base_0:inject 1:7:r5:or@base_4:lossy 2:8:r3:mul@base_6:lossy 3:9:r4:rotr@base_2:bijective 4:11:r6:load@base_1:inject 5:13:r5:rotl@base_10:bijective 6:19:r1:rotl@base_18:bijective 7:28:r2:load@base_8:inject 8:31:r4:mul@base_27:lossy 9:32:r7:shfl@base_23:inject 10:33:r5:load@base_31:inject 11:34:r1:add@base_22:inject 12:43:r7:mad@base_42:inject 13:50:r0:add@base_48:inject 14:59:r4:rotl@base_41:bijective 15:63:r0:xor@base_61:inject +igneum-ca3-v4-uniform/637 a0da8737f483ea84 0 0:2:3 1:1:1 2:0:0 3:1:1 4:1:1 5:2:3 6:2:2 7:0:0 8:0:0 9:1:0 10:1:1 11:0:0 12:1:1 13:2:0 14:1:1 15:1:0 3 0 0 2 1 0:2:r6:add@base_1:inject 1:3:r2:mulhi@base_0:lossy 2:5:r4:load@base_3:inject 3:8:r4:mul@base_6:lossy 4:11:r3:mul@base_4:lossy 5:12:r5:shfl@base_10:inject 6:13:r2:load@base_12:inject 7:18:r6:rotr@base_15:bijective 8:19:r7:shfl@base_17:inject 9:20:r3:load@base_19:inject 10:25:r7:xor@base_23:inject 11:27:r1:rotl@base_26:bijective 12:32:r7:shfl@base_30:inject 13:36:r5:load@base_32:inject 14:50:r7:add@base_49:inject 15:54:r5:load@base_50:inject +igneum-ca3-v4-uniform/638 45717ffb4776879e 0 0:2:0 1:2:1 2:0:0 3:2:3 4:0:0 5:1:1 6:1:1 7:0:0 8:1:1 9:1:1 10:2:1 11:2:1 12:1:1 13:2:0 14:1:0 15:2:2 4 1 0 1 2 0:1:r5:rotl@base_0:bijective 1:9:r5:mulhi@base_8:lossy 2:12:r2:or@base_7:lossy 3:14:r0:mulhi@base_11:lossy 4:17:r4:rotr@base_13:bijective 5:19:r6:load@base_14:inject 6:21:r7:rotr@base_10:bijective 7:27:r4:load@base_19:inject 8:28:r2:load@base_21:inject 9:35:r1:add@base_24:inject 10:36:r5:rotl@base_33:bijective 11:42:r6:load@base_28:inject 12:46:r3:mad@base_40:inject 13:60:r7:rotl@base_58:bijective 14:62:r3:mul@base_51:lossy 15:63:r1:add@base_61:inject +igneum-ca3-v4-uniform/639 9a55fcb4211bfe22 0 0:2:0 1:0:0 2:2:0 3:1:1 4:2:3 5:1:1 6:2:3 7:0:0 8:1:0 9:0:0 10:2:0 11:2:3 12:2:2 13:2:0 14:0:0 15:1:0 3 0 0 3 0 0:3:r7:add@base_2:inject 1:4:r3:rotr@base_1:bijective 2:8:r3:mul@base_7:lossy 3:13:r6:load@base_3:inject 4:14:r5:shfl@base_9:inject 5:16:r3:xor@base_11:inject 6:18:r7:mad@base_17:inject 7:20:r0:mul@base_15:lossy 8:26:r5:xor@base_24:inject 9:34:r3:shfl@base_27:inject 10:35:r1:rotr@base_19:bijective 11:42:r7:add@base_40:inject 12:45:r1:rotr@base_37:bijective 13:47:r2:add@base_38:inject 14:50:r3:mul@base_46:lossy 15:59:r2:sub@base_54:inject +igneum-ca3-v4-uniform/640 81c4d8c942b72bff 0 0:1:1 1:1:1 2:2:3 3:1:0 4:2:2 5:0:0 6:1:0 7:2:2 8:1:1 9:0:0 10:0:0 11:1:1 12:1:0 13:0:0 14:1:0 15:2:2 3 1 0 1 1 0:9:r4:or@base_7:lossy 1:10:r1:load@base_9:inject 2:14:r6:rotl@base_3:bijective 3:17:r4:shfl@base_12:inject 4:22:r0:rotr@base_16:bijective 5:24:r3:xor@base_21:inject 6:25:r7:mulhi@base_0:lossy 7:32:r2:load@base_25:inject 8:38:r6:load@base_32:inject 9:39:r7:rotl@base_26:bijective 10:50:r7:xor@base_40:inject 11:51:r2:mul@base_45:lossy 12:52:r0:load@base_38:inject 13:54:r1:sub@base_44:inject 14:56:r5:load@base_54:inject 15:63:r7:shfl@base_62:inject +igneum-ca3-v4-uniform/641 e4813d2fcf2c2cb1 0 0:0:0 1:2:0 2:2:2 3:1:0 4:0:0 5:0:0 6:0:0 7:0:0 8:1:0 9:0:0 10:2:2 11:2:1 12:0:0 13:1:0 14:2:1 15:2:3 4 1 0 2 1 0:2:r3:xor@base_1:inject 1:4:r5:xor@base_3:inject 2:8:r1:xor@base_0:inject 3:15:r4:or@base_14:lossy 4:24:r7:xor@base_20:inject 5:25:r0:load@base_4:inject 6:27:r5:load@base_25:inject 7:33:r1:shfl@base_32:inject 8:34:r5:rotr@base_29:bijective 9:38:r2:load@base_34:inject 10:43:r7:mad@base_40:inject 11:44:r0:load@base_43:inject 12:46:r1:add@base_42:inject 13:48:r3:mulhi@base_37:lossy 14:56:r3:mul@base_52:lossy 15:59:r0:mul@base_54:lossy +igneum-ca3-v4-uniform/642 34aba5010e20fad8 0 0:2:2 1:0:0 2:2:3 3:2:2 4:2:0 5:2:1 6:0:0 7:1:1 8:1:1 9:0:0 10:0:0 11:0:0 12:2:2 13:1:1 14:0:0 15:1:1 3 1 0 1 1 0:1:r1:shfl@base_0:inject 1:5:r2:load@base_1:inject 2:10:r7:mulhi@base_3:lossy 3:12:r4:rotr@base_11:bijective 4:14:r7:xor@base_13:inject 5:16:r6:or@base_6:lossy 6:21:r7:xor@base_19:inject 7:23:r4:rotl@base_20:bijective 8:24:r6:rotl@base_22:bijective 9:25:r3:load@base_24:inject 10:28:r5:load@base_14:inject 11:42:r4:rotr@base_38:bijective 12:46:r6:mad@base_43:inject 13:50:r1:mul@base_47:lossy 14:58:r3:mad@base_57:inject 15:61:r3:sub@base_60:inject +igneum-ca3-v4-uniform/643 2af90d83334af21e 0 0:1:0 1:0:0 2:1:1 3:2:1 4:1:1 5:2:2 6:0:0 7:0:0 8:2:2 9:2:1 10:2:1 11:1:1 12:2:3 13:2:3 14:2:0 15:1:0 5 2 0 1 2 0:2:r1:add@base_1:inject 1:7:r0:mad@base_0:inject 2:13:r7:load@base_7:inject 3:16:r1:add@base_11:inject 4:19:r1:mad@base_18:inject 5:21:r4:load@base_16:inject 6:22:r6:mulhi@base_12:lossy 7:37:r4:rotr@base_32:bijective 8:40:r0:shfl@base_35:inject 9:42:r5:load@base_22:inject 10:44:r2:shfl@base_9:inject 11:46:r6:or@base_39:lossy 12:50:r3:or@base_43:lossy 13:54:r0:mulhi@base_49:lossy 14:61:r1:mul@base_41:lossy 15:63:r3:mad@base_58:inject +igneum-ca3-v4-uniform/644 11add72c431215bc 0 0:0:0 1:0:0 2:2:1 3:1:0 4:1:1 5:1:0 6:2:2 7:2:3 8:0:0 9:2:1 10:1:0 11:1:0 12:2:1 13:0:0 14:2:1 15:2:1 2 0 0 1 1 0:2:r4:mad@base_1:inject 1:4:r2:load@base_2:inject 2:13:r3:xor@base_8:inject 3:16:r7:shfl@base_9:inject 4:18:r3:rotr@base_14:bijective 5:23:r4:rotl@base_12:bijective 6:25:r1:add@base_15:inject 7:27:r5:rotl@base_22:bijective 8:30:r0:mul@base_29:lossy 9:34:r7:sub@base_24:inject 10:40:r1:add@base_26:inject 11:50:r3:rotr@base_45:bijective 12:53:r6:load@base_34:inject 13:54:r2:sub@base_48:inject 14:58:r7:load@base_53:inject 15:59:r4:mulhi@base_56:lossy +igneum-ca3-v4-uniform/645 cf17c9913bc5dc1d 0 0:1:0 1:0:0 2:2:3 3:2:3 4:2:1 5:2:0 6:2:1 7:0:0 8:1:0 9:1:0 10:1:0 11:0:0 12:0:0 13:0:0 14:0:0 15:1:1 0 0 0 0 0 0:4:r6:shfl@base_0:inject 1:5:r5:load@base_4:inject 2:7:r2:sub@base_6:inject 3:14:r4:load@base_7:inject 4:19:r0:shfl@base_18:inject 5:21:r5:sub@base_20:inject 6:27:r2:load@base_21:inject 7:30:r7:load@base_27:inject 8:40:r4:add@base_36:inject 9:42:r0:load@base_40:inject 10:43:r5:add@base_39:inject 11:44:r1:sub@base_37:inject 12:53:r6:load@base_43:inject 13:54:r4:add@base_49:inject 14:55:r1:load@base_54:inject 15:60:r0:load@base_53:inject +igneum-ca3-v4-uniform/646 cbdf483fbdc1490a 0 0:0:0 1:0:0 2:0:0 3:2:1 4:1:1 5:0:0 6:0:0 7:1:0 8:1:1 9:2:0 10:1:1 11:2:3 12:1:1 13:0:0 14:0:0 15:2:2 2 0 0 2 0 0:5:r6:mul@base_2:lossy 1:10:r2:xor@base_6:inject 2:14:r1:xor@base_7:inject 3:19:r5:load@base_10:inject 4:21:r6:rotl@base_17:bijective 5:22:r3:load@base_19:inject 6:28:r4:mul@base_12:lossy 7:30:r1:sub@base_29:inject 8:34:r7:rotr@base_26:bijective 9:43:r2:xor@base_42:inject 10:49:r0:rotl@base_47:bijective 11:52:r6:rotl@base_50:bijective 12:53:r4:load@base_52:inject 13:54:r5:load@base_43:inject 14:56:r6:xor@base_55:inject 15:63:r5:xor@base_59:inject +igneum-ca3-v4-uniform/647 c6471411440719d5 0 0:2:1 1:0:0 2:0:0 3:0:0 4:2:3 5:1:1 6:0:0 7:1:1 8:0:0 9:1:1 10:0:0 11:2:0 12:0:0 13:0:0 14:2:0 15:2:1 4 2 0 0 2 0:6:r1:rotl@base_4:bijective 1:7:r6:or@base_1:lossy 2:10:r6:shfl@base_8:inject 3:14:r2:rotr@base_5:bijective 4:22:r2:add@base_19:inject 5:25:r3:mulhi@base_17:lossy 6:28:r2:rotr@base_27:bijective 7:40:r3:add@base_26:inject 8:43:r7:load@base_40:inject 9:44:r2:shfl@base_35:inject 10:47:r1:load@base_43:inject 11:50:r4:or@base_49:lossy 12:55:r5:rotr@base_53:bijective 13:57:r7:load@base_55:inject 14:62:r0:shfl@base_59:inject 15:63:r3:mulhi@base_60:lossy +igneum-ca3-v4-uniform/648 c089cb8e2aeb7f03 0 0:2:2 1:1:0 2:2:1 3:2:3 4:1:1 5:2:0 6:1:1 7:2:3 8:2:0 9:1:1 10:1:1 11:0:0 12:0:0 13:1:1 14:0:0 15:2:2 3 1 0 1 1 0:1:r1:shfl@base_0:inject 1:12:r0:xor@base_5:inject 2:13:r5:load@base_12:inject 3:15:r2:rotr@base_11:bijective 4:23:r7:mul@base_22:lossy 5:25:r3:add@base_24:inject 6:26:r5:load@base_15:inject 7:28:r1:add@base_18:inject 8:29:r7:load@base_28:inject 9:30:r0:load@base_29:inject 10:32:r4:load@base_23:inject 11:39:r6:or@base_38:lossy 12:42:r1:xor@base_41:inject 13:50:r6:mulhi@base_48:lossy 14:56:r0:sub@base_53:inject 15:63:r3:add@base_62:inject +igneum-ca3-v4-uniform/649 9292dabbbb80be7b 0 0:1:0 1:0:0 2:0:0 3:2:1 4:1:0 5:1:1 6:2:2 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:1:0 13:2:1 14:0:0 15:2:1 3 1 0 1 1 0:3:r3:or@base_1:lossy 1:7:r7:mul@base_0:lossy 2:8:r1:load@base_7:inject 3:9:r2:shfl@base_5:inject 4:12:r6:load@base_8:inject 5:13:r0:rotr@base_10:bijective 6:15:r5:load@base_12:inject 7:18:r1:load@base_9:inject 8:19:r6:mulhi@base_17:lossy 9:24:r4:rotl@base_20:bijective 10:26:r1:load@base_24:inject 11:27:r7:load@base_19:inject 12:31:r2:mad@base_30:inject 13:45:r5:load@base_26:inject 14:51:r7:add@base_40:inject 15:61:r2:add@base_60:inject +igneum-ca3-v4-uniform/650 7c34066e89bc536a 0 0:1:1 1:1:0 2:0:0 3:0:0 4:1:0 5:2:1 6:1:1 7:0:0 8:1:0 9:1:1 10:1:0 11:0:0 12:0:0 13:2:1 14:2:3 15:0:0 3 2 1 1 0 0:1:r5:or@base_0:lossy 1:2:r2:load@base_1:inject 2:4:r1:xor@base_3:inject 3:10:r6:load@base_2:inject 4:11:r7:or@base_5:lossy-or-chain1 5:16:r5:add@base_13:inject 6:32:r2:add@base_19:inject 7:33:r0:load@base_32:inject 8:35:r7:mul@base_17:lossy 9:36:r2:load@base_33:inject 10:38:r4:shfl@base_29:inject 11:41:r5:add@base_39:inject 12:43:r4:rotr@base_42:bijective 13:48:r2:mad@base_40:inject 14:54:r5:shfl@base_46:inject 15:58:r6:add@base_24:inject +igneum-ca3-v4-uniform/651 616af1905c05577e 0 0:1:0 1:2:1 2:0:0 3:2:2 4:2:0 5:0:0 6:2:0 7:2:1 8:2:0 9:2:1 10:2:2 11:0:0 12:2:2 13:1:1 14:0:0 15:2:0 1 0 0 1 0 0:10:r7:sub@base_9:inject 1:13:r3:shfl@base_12:inject 2:14:r2:load@base_13:inject 3:20:r0:add@base_16:inject 4:23:r2:load@base_20:inject 5:24:r1:xor@base_21:inject 6:25:r0:load@base_23:inject 7:32:r5:sub@base_27:inject 8:37:r2:rotr@base_31:bijective 9:42:r1:add@base_38:inject 10:46:r4:xor@base_43:inject 11:47:r0:rotr@base_28:bijective 12:48:r7:load@base_32:inject 13:55:r3:mad@base_54:inject 14:57:r6:load@base_42:inject 15:61:r5:mul@base_56:lossy +igneum-ca3-v4-uniform/652 3e93f6413b2c37d7 0 0:0:0 1:1:1 2:2:0 3:2:1 4:2:1 5:2:2 6:1:1 7:2:0 8:0:0 9:1:1 10:1:0 11:1:1 12:1:1 13:0:0 14:1:0 15:1:1 2 2 1 0 0 0:4:r4:shfl@base_1:inject 1:7:r6:or@base_6:lossy 2:17:r1:rotl@base_9:bijective 3:18:r3:or@base_15:lossy-or-chain1 4:24:r1:shfl@base_19:inject 5:25:r7:add@base_20:inject 6:27:r4:xor@base_22:inject 7:31:r3:load@base_27:inject 8:33:r5:xor@base_32:inject 9:36:r6:load@base_33:inject 10:41:r4:load@base_36:inject 11:44:r7:mad@base_34:inject 12:57:r4:load@base_44:inject 13:58:r1:sub@base_42:inject 14:59:r5:rotr@base_53:bijective 15:62:r2:load@base_57:inject +igneum-ca3-v4-uniform/653 d082ce2c0335745d 0 0:1:1 1:2:2 2:0:0 3:1:0 4:2:3 5:1:1 6:1:0 7:2:1 8:0:0 9:1:1 10:0:0 11:2:0 12:2:0 13:2:1 14:2:0 15:0:0 6 2 0 1 3 0:7:r1:mulhi@base_6:lossy 1:8:r3:load@base_7:inject 2:10:r4:mad@base_9:inject 3:13:r6:mad@base_5:inject 4:15:r7:xor@base_14:inject 5:17:r5:load@base_10:inject 6:18:r2:rotl@base_11:bijective 7:20:r3:load@base_15:inject 8:21:r0:mulhi@base_19:lossy 9:28:r0:or@base_25:lossy 10:38:r6:mad@base_37:inject 11:39:r3:load@base_38:inject 12:43:r0:mulhi@base_36:lossy 13:49:r5:mul@base_27:lossy 14:53:r2:or@base_51:lossy 15:58:r4:shfl@base_52:inject +igneum-ca3-v4-uniform/654 bbc382c72f079713 0 0:1:0 1:0:0 2:2:2 3:0:0 4:0:0 5:1:1 6:1:0 7:2:0 8:0:0 9:0:0 10:2:3 11:1:1 12:1:1 13:0:0 14:1:1 15:1:1 3 1 0 1 1 0:5:r5:add@base_3:inject 1:8:r6:rotr@base_2:bijective 2:10:r2:mulhi@base_7:lossy 3:13:r5:load@base_8:inject 4:16:r7:rotl@base_9:bijective 5:18:r3:or@base_15:lossy 6:29:r2:rotr@base_26:bijective 7:32:r0:load@base_13:inject 8:38:r5:mul@base_36:lossy 9:40:r5:mad@base_39:inject 10:41:r3:load@base_38:inject 11:42:r7:load@base_40:inject 12:46:r6:shfl@base_43:inject 13:54:r7:shfl@base_51:inject 14:59:r6:xor@base_50:inject 15:62:r1:add@base_47:inject +igneum-ca3-v4-uniform/655 60168715fdf82512 0 0:1:1 1:1:0 2:1:1 3:0:0 4:0:0 5:1:1 6:0:0 7:0:0 8:0:0 9:1:0 10:2:1 11:0:0 12:2:2 13:1:1 14:2:1 15:0:0 4 1 0 1 2 0:2:r0:xor@base_0:inject 1:8:r6:add@base_7:inject 2:10:r2:load@base_8:inject 3:12:r1:add@base_11:inject 4:13:r5:load@base_10:inject 5:21:r2:shfl@base_20:inject 6:25:r6:mul@base_22:lossy 7:32:r6:mad@base_31:inject 8:35:r7:mulhi@base_30:lossy 9:36:r3:shfl@base_28:inject 10:38:r5:mulhi@base_34:lossy 11:39:r6:add@base_33:inject 12:49:r7:load@base_39:inject 13:53:r3:or@base_48:lossy 14:55:r0:rotl@base_54:bijective 15:58:r5:xor@base_57:inject +igneum-ca3-v4-uniform/656 7683ada7d48dc63f 0 0:1:0 1:0:0 2:1:1 3:2:3 4:0:0 5:2:2 6:1:1 7:1:0 8:2:2 9:0:0 10:2:1 11:1:0 12:2:3 13:2:3 14:0:0 15:0:0 3 0 0 2 1 0:3:r6:mulhi@base_1:lossy 1:4:r3:rotr@base_2:bijective 2:6:r6:mul@base_5:lossy 3:7:r2:load@base_6:inject 4:10:r5:add@base_8:inject 5:16:r4:add@base_15:inject 6:19:r6:xor@base_18:inject 7:22:r5:xor@base_13:inject 8:30:r7:mul@base_27:lossy 9:32:r1:load@base_19:inject 10:35:r2:load@base_30:inject 11:37:r5:rotl@base_36:bijective 12:47:r3:shfl@base_26:inject 13:50:r2:rotl@base_49:bijective 14:52:r0:rotl@base_51:bijective 15:53:r1:load@base_52:inject +igneum-ca3-v4-uniform/657 607f6c9c8ed9f7f0 0 0:1:0 1:1:0 2:0:0 3:1:0 4:2:0 5:1:1 6:2:1 7:0:0 8:0:0 9:2:2 10:1:0 11:1:1 12:2:0 13:1:0 14:1:1 15:2:1 3 1 0 1 1 0:1:r7:mulhi@base_0:lossy 1:2:r0:load@base_1:inject 2:5:r4:rotl@base_3:bijective 3:6:r7:load@base_5:inject 4:14:r0:or@base_13:lossy 5:22:r2:add@base_17:inject 6:24:r1:load@base_22:inject 7:26:r5:load@base_2:inject 8:28:r2:load@base_26:inject 9:38:r7:shfl@base_31:inject 10:47:r0:load@base_28:inject 11:48:r6:add@base_33:inject 12:51:r2:rotr@base_50:bijective 13:55:r3:mul@base_30:lossy 14:59:r5:mad@base_57:inject 15:62:r4:shfl@base_54:inject +igneum-ca3-v4-uniform/658 58945c52efba6bc7 0 0:1:0 1:0:0 2:1:0 3:2:0 4:2:0 5:0:0 6:1:0 7:2:3 8:1:0 9:0:0 10:1:1 11:2:1 12:1:0 13:0:0 14:1:1 15:0:0 2 0 0 0 2 0:4:r4:sub@base_2:inject 1:6:r1:load@base_4:inject 2:7:r7:add@base_3:inject 3:8:r5:load@base_7:inject 4:10:r6:load@base_8:inject 5:16:r5:mad@base_11:inject 6:17:r0:load@base_16:inject 7:18:r6:rotr@base_12:bijective 8:22:r3:rotl@base_19:bijective 9:30:r3:mulhi@base_24:lossy 10:31:r2:load@base_18:inject 11:37:r5:mad@base_26:inject 12:43:r6:sub@base_38:inject 13:46:r2:xor@base_42:inject 14:48:r7:add@base_34:inject 15:59:r7:mulhi@base_55:lossy +igneum-ca3-v4-uniform/659 9503d6c00202f540 0 0:2:1 1:0:0 2:1:0 3:0:0 4:0:0 5:0:0 6:2:3 7:0:0 8:0:0 9:2:2 10:2:0 11:2:1 12:1:0 13:2:2 14:2:0 15:0:0 4 2 0 1 1 0:1:r3:xor@base_0:inject 1:2:r2:load@base_1:inject 2:4:r0:or@base_3:lossy 3:6:r0:shfl@base_5:inject 4:22:r1:shfl@base_15:inject 5:33:r2:or@base_25:lossy 6:34:r4:mul@base_20:lossy 7:39:r0:rotr@base_35:bijective 8:46:r7:load@base_39:inject 9:48:r3:shfl@base_29:inject 10:51:r5:rotl@base_44:bijective 11:55:r6:load@base_48:inject 12:59:r4:mulhi@base_56:lossy 13:60:r0:xor@base_49:inject 14:61:r1:load@base_59:inject 15:62:r6:mad@base_57:inject +igneum-ca3-v4-uniform/660 31ef4616c326eff8 0 0:2:0 1:0:0 2:2:1 3:1:1 4:0:0 5:2:2 6:0:0 7:2:1 8:1:0 9:1:1 10:2:1 11:1:1 12:2:3 13:2:3 14:1:1 15:2:0 4 1 1 1 2 0:1:r6:rotl@base_0:bijective 1:2:r7:load@base_1:inject 2:4:r2:load@base_2:inject 3:8:r1:mad@base_3:inject 4:20:r0:mad@base_17:inject 5:22:r7:load@base_20:inject 6:28:r3:or@base_26:lossy-or-chain1 7:30:r7:shfl@base_25:inject 8:32:r6:add@base_31:inject 9:36:r5:mulhi@base_16:lossy 10:39:r0:mulhi@base_34:lossy 11:43:r1:add@base_42:inject 12:45:r3:add@base_44:inject 13:49:r3:xor@base_47:inject 14:52:r4:mul@base_50:lossy 15:59:r7:load@base_49:inject +igneum-ca3-v4-uniform/661 50fa2dfea93c881b 0 0:1:1 1:0:0 2:2:3 3:2:2 4:1:0 5:2:3 6:1:0 7:0:0 8:1:1 9:1:1 10:0:0 11:2:0 12:2:2 13:2:1 14:2:0 15:0:0 2 2 0 0 0 0:1:r3:rotl@base_0:bijective 1:15:r4:add@base_14:inject 2:18:r6:add@base_9:inject 3:19:r3:or@base_16:lossy 4:20:r1:load@base_18:inject 5:24:r3:load@base_20:inject 6:30:r5:add@base_22:inject 7:37:r7:or@base_35:lossy 8:40:r4:rotl@base_27:bijective 9:47:r2:rotl@base_36:bijective 10:49:r3:sub@base_46:inject 11:52:r6:xor@base_50:inject 12:55:r7:load@base_47:inject 13:59:r3:rotr@base_54:bijective 14:61:r2:load@base_59:inject 15:62:r4:load@base_52:inject +igneum-ca3-v4-uniform/662 f0d95074b6ff0603 0 0:0:0 1:1:1 2:2:3 3:2:2 4:2:1 5:1:0 6:1:0 7:0:0 8:1:1 9:1:1 10:2:0 11:1:1 12:1:1 13:1:1 14:0:0 15:2:0 2 0 0 1 1 0:1:r0:add@base_0:inject 1:7:r1:mulhi@base_6:lossy 2:15:r3:add@base_11:inject 3:17:r5:shfl@base_10:inject 4:18:r1:load@base_17:inject 5:19:r7:add@base_14:inject 6:29:r5:mad@base_28:inject 7:34:r3:rotr@base_30:bijective 8:35:r6:load@base_18:inject 9:39:r2:mad@base_38:inject 10:41:r7:load@base_39:inject 11:43:r5:shfl@base_42:inject 12:44:r4:mul@base_36:lossy 13:47:r5:load@base_44:inject 14:56:r2:xor@base_46:inject 15:58:r5:add@base_57:inject +igneum-ca3-v4-uniform/663 5b88a1dff6744bbf 0 0:1:1 1:2:1 2:0:0 3:2:3 4:2:3 5:2:0 6:2:1 7:2:3 8:0:0 9:0:0 10:0:0 11:1:1 12:0:0 13:1:1 14:1:0 15:0:0 2 0 0 1 1 0:3:r7:add@base_2:inject 1:5:r4:add@base_1:inject 2:8:r7:load@base_5:inject 3:20:r5:add@base_15:inject 4:25:r7:rotl@base_10:bijective 5:28:r5:load@base_25:inject 6:31:r1:xor@base_30:inject 7:35:r2:mad@base_33:inject 8:40:r5:load@base_31:inject 9:47:r6:add@base_39:inject 10:55:r0:sub@base_42:inject 11:56:r3:sub@base_37:inject 12:57:r5:mul@base_54:lossy 13:59:r2:shfl@base_50:inject 14:60:r1:load@base_59:inject 15:61:r4:mulhi@base_52:lossy +igneum-ca3-v4-uniform/664 aa85e1d5457f316e 0 0:0:0 1:0:0 2:2:3 3:2:3 4:2:1 5:0:0 6:1:1 7:2:0 8:1:0 9:0:0 10:0:0 11:1:1 12:2:0 13:0:0 14:2:3 15:2:3 4 2 1 2 0 0:3:r6:or@base_0:lossy 1:10:r5:mul@base_9:lossy 2:12:r4:rotl@base_11:bijective 3:13:r2:mad@base_6:inject 4:16:r0:load@base_10:inject 5:21:r7:load@base_12:inject 6:22:r6:or@base_8:lossy-or-chain1 7:29:r5:mad@base_20:inject 8:30:r2:sub@base_28:inject 9:31:r4:xor@base_17:inject 10:35:r0:mad@base_34:inject 11:37:r3:load@base_21:inject 12:48:r7:add@base_46:inject 13:49:r4:mad@base_40:inject 14:59:r5:sub@base_42:inject 15:61:r7:mul@base_53:lossy +igneum-ca3-v4-uniform/665 0fc34312aa3283d7 0 0:2:1 1:2:2 2:0:0 3:1:1 4:0:0 5:1:0 6:1:0 7:2:0 8:1:0 9:0:0 10:0:0 11:0:0 12:2:3 13:1:1 14:2:2 15:2:3 1 0 0 0 1 0:2:r7:rotr@base_1:bijective 1:3:r1:load@base_2:inject 2:6:r1:xor@base_5:inject 3:9:r0:mulhi@base_8:lossy 4:12:r5:load@base_6:inject 5:21:r4:mad@base_16:inject 6:22:r2:add@base_17:inject 7:24:r3:mad@base_15:inject 8:26:r6:load@base_22:inject 9:33:r1:load@base_24:inject 10:37:r0:sub@base_31:inject 11:42:r4:load@base_33:inject 12:44:r5:add@base_32:inject 13:47:r1:rotl@base_46:bijective 14:49:r7:shfl@base_39:inject 15:59:r6:shfl@base_55:inject +igneum-ca3-v4-uniform/666 cf0e7a27db3c134f 0 0:0:0 1:0:0 2:2:1 3:1:1 4:2:3 5:0:0 6:0:0 7:1:0 8:0:0 9:0:0 10:0:0 11:1:0 12:0:0 13:1:1 14:2:1 15:2:3 2 0 0 0 2 0:2:r0:add@base_0:inject 1:4:r5:load@base_2:inject 2:5:r1:load@base_4:inject 3:6:r7:load@base_5:inject 4:19:r6:mulhi@base_7:lossy 5:21:r0:load@base_19:inject 6:22:r2:mulhi@base_17:lossy 7:23:r6:shfl@base_20:inject 8:36:r7:xor@base_34:inject 9:39:r4:load@base_23:inject 10:42:r3:add@base_32:inject 11:45:r0:xor@base_41:inject 12:46:r1:load@base_39:inject 13:50:r0:sub@base_48:inject 14:51:r5:shfl@base_31:inject 15:52:r7:load@base_51:inject +igneum-ca3-v4-uniform/667 1b9d5d4f01890aca 1 0:0:0 1:2:1 2:2:2 3:0:0 4:1:0 5:0:0 6:2:0 7:0:0 8:0:0 9:2:3 10:1:0 11:1:1 12:0:0 13:0:0 14:1:1 15:2:2 5 2 0 1 2 0:2:r4:or@base_1:lossy 1:4:r6:or@base_0:lossy 2:11:r3:load@base_4:inject 3:12:r6:mul@base_9:lossy 4:16:r2:add@base_15:inject 5:18:r0:load@base_11:inject 6:19:r6:mulhi@base_14:lossy 7:27:r1:xor@base_25:inject 8:30:r5:load@base_18:inject 9:31:r2:load@base_27:inject 10:34:r5:xor@base_33:inject 11:35:r3:mulhi@base_29:lossy 12:38:r4:shfl@base_32:inject 13:39:r7:load@base_16:inject 14:43:r5:sub@base_40:inject 15:52:r2:xor@base_47:inject +igneum-ca3-v4-uniform/668 f921c908829a5d40 0 0:2:0 1:0:0 2:1:0 3:1:1 4:2:1 5:2:3 6:0:0 7:0:0 8:1:0 9:2:1 10:2:3 11:0:0 12:0:0 13:2:1 14:2:2 15:0:0 5 1 0 4 0 0:3:r3:mul@base_2:lossy 1:5:r4:rotr@base_4:bijective 2:7:r3:sub@base_6:inject 3:13:r7:add@base_9:inject 4:15:r6:mul@base_12:lossy 5:17:r5:load@base_15:inject 6:19:r1:load@base_17:inject 7:20:r6:or@base_18:lossy 8:24:r2:add@base_23:inject 9:28:r3:xor@base_26:inject 10:36:r2:mul@base_31:lossy 11:45:r5:load@base_36:inject 12:49:r4:add@base_47:inject 13:52:r3:load@base_45:inject 14:54:r4:mul@base_51:lossy 15:57:r2:load@base_54:inject +igneum-ca3-v4-uniform/669 78ac6eb678fdd9fa 0 0:2:2 1:2:2 2:1:0 3:0:0 4:0:0 5:1:0 6:0:0 7:2:0 8:1:1 9:0:0 10:0:0 11:1:1 12:2:2 13:1:0 14:1:0 15:0:0 3 1 0 0 2 0:5:r4:rotr@base_4:bijective 1:7:r3:or@base_6:lossy 2:9:r1:load@base_7:inject 3:12:r7:load@base_5:inject 4:19:r6:xor@base_13:inject 5:20:r4:shfl@base_15:inject 6:25:r2:mulhi@base_22:lossy 7:28:r0:rotl@base_26:bijective 8:31:r5:load@base_20:inject 9:33:r6:load@base_31:inject 10:44:r3:load@base_28:inject 11:46:r1:mulhi@base_36:lossy 12:54:r4:xor@base_52:inject 13:55:r6:load@base_54:inject 14:59:r7:shfl@base_50:inject 15:60:r0:mad@base_37:inject +igneum-ca3-v4-uniform/670 3674631cd6c602bf 0 0:2:2 1:2:3 2:2:0 3:0:0 4:0:0 5:2:2 6:1:0 7:0:0 8:0:0 9:0:0 10:2:1 11:0:0 12:0:0 13:0:0 14:0:0 15:0:0 4 0 0 1 3 0:4:r1:rotr@base_1:bijective 1:7:r5:xor@base_0:inject 2:11:r0:mulhi@base_8:lossy 3:12:r1:mad@base_10:inject 4:14:r5:mad@base_13:inject 5:15:r2:load@base_4:inject 6:17:r4:sub@base_9:inject 7:20:r1:load@base_15:inject 8:25:r6:add@base_22:inject 9:28:r1:mulhi@base_23:lossy 10:31:r2:shfl@base_24:inject 11:32:r5:load@base_28:inject 12:47:r3:mul@base_43:lossy 13:52:r2:mulhi@base_41:lossy 14:54:r1:sub@base_48:inject 15:61:r0:rotr@base_46:bijective +igneum-ca3-v4-uniform/671 a38a3920e4320ae3 0 0:2:2 1:0:0 2:2:2 3:2:2 4:2:3 5:2:1 6:0:0 7:2:3 8:2:1 9:1:0 10:1:1 11:0:0 12:0:0 13:0:0 14:2:2 15:2:1 5 1 0 3 1 0:3:r1:or@base_2:lossy 1:6:r7:rotr@base_1:bijective 2:10:r0:load@base_6:inject 3:13:r6:shfl@base_8:inject 4:23:r3:load@base_10:inject 5:26:r0:mad@base_24:inject 6:27:r7:sub@base_25:inject 7:29:r2:load@base_23:inject 8:30:r4:load@base_29:inject 9:42:r4:mul@base_38:lossy 10:44:r7:mul@base_28:lossy 11:49:r2:sub@base_47:inject 12:51:r6:mulhi@base_48:lossy 13:57:r0:mad@base_54:inject 14:59:r4:load@base_49:inject 15:61:r5:mul@base_52:lossy +igneum-ca3-v4-uniform/672 5ecb52dc5a707e2f 0 0:1:0 1:1:1 2:2:3 3:1:1 4:2:1 5:1:0 6:1:1 7:0:0 8:0:0 9:1:0 10:0:0 11:1:1 12:0:0 13:0:0 14:0:0 15:0:0 3 1 0 1 1 0:1:r7:shfl@base_0:inject 1:8:r4:load@base_1:inject 2:13:r7:or@base_7:lossy 3:14:r6:add@base_11:inject 4:21:r4:load@base_13:inject 5:24:r5:shfl@base_23:inject 6:26:r4:mul@base_22:lossy 7:30:r7:mulhi@base_29:lossy 8:33:r5:sub@base_27:inject 9:35:r6:add@base_31:inject 10:42:r1:load@base_30:inject 11:48:r0:shfl@base_40:inject 12:51:r4:sub@base_47:inject 13:54:r2:shfl@base_49:inject 14:56:r3:add@base_52:inject 15:57:r5:rotr@base_55:bijective +igneum-ca3-v4-uniform/673 dd77eecf49ee48c1 0 0:1:0 1:0:0 2:2:0 3:0:0 4:2:2 5:2:1 6:1:1 7:1:1 8:1:1 9:1:1 10:2:1 11:2:2 12:0:0 13:0:0 14:1:0 15:2:3 5 1 0 1 3 0:9:r6:shfl@base_1:inject 1:10:r4:rotr@base_8:bijective 2:15:r3:xor@base_14:inject 3:17:r2:xor@base_12:inject 4:18:r7:xor@base_16:inject 5:19:r1:mulhi@base_2:lossy 6:21:r3:mulhi@base_20:lossy 7:22:r0:load@base_19:inject 8:25:r5:load@base_17:inject 9:31:r3:mad@base_26:inject 10:43:r3:add@base_42:inject 11:44:r5:add@base_27:inject 12:45:r0:mul@base_40:lossy 13:46:r6:mulhi@base_36:lossy 14:57:r0:sub@base_56:inject 15:58:r5:or@base_50:lossy +igneum-ca3-v4-uniform/674 5693be27ad204471 0 0:2:3 1:1:0 2:2:2 3:0:0 4:2:0 5:1:0 6:1:0 7:2:1 8:2:2 9:0:0 10:0:0 11:1:1 12:0:0 13:2:0 14:0:0 15:2:1 3 1 0 1 1 0:1:r7:mul@base_0:lossy 1:11:r6:add@base_10:inject 2:12:r1:mad@base_4:inject 3:16:r2:add@base_13:inject 4:17:r0:load@base_11:inject 5:18:r6:load@base_16:inject 6:22:r5:rotl@base_14:bijective 7:25:r2:or@base_24:lossy 8:31:r4:mulhi@base_26:lossy 9:32:r5:load@base_31:inject 10:34:r0:shfl@base_28:inject 11:36:r0:sub@base_35:inject 12:41:r4:rotr@base_39:bijective 13:54:r7:load@base_22:inject 14:58:r0:rotr@base_53:bijective 15:62:r1:add@base_59:inject +igneum-ca3-v4-uniform/675 c7ebe5490931c283 0 0:2:3 1:0:0 2:0:0 3:0:0 4:1:1 5:1:1 6:1:1 7:1:0 8:1:1 9:0:0 10:2:1 11:0:0 12:0:0 13:1:0 14:0:0 15:2:2 2 0 0 2 0 0:2:r7:rotr@base_1:bijective 1:8:r4:rotr@base_5:bijective 2:10:r2:load@base_8:inject 3:11:r6:load@base_2:inject 4:23:r5:mad@base_22:inject 5:25:r1:load@base_11:inject 6:27:r6:mad@base_12:inject 7:32:r1:rotl@base_30:bijective 8:36:r1:mul@base_35:lossy 9:39:r3:load@base_36:inject 10:41:r4:mul@base_31:lossy 11:44:r5:add@base_43:inject 12:47:r0:mad@base_33:inject 13:48:r4:add@base_45:inject 14:50:r2:load@base_47:inject 15:60:r5:sub@base_54:inject +igneum-ca3-v4-uniform/676 994a9d1c780e30ae 0 0:2:2 1:2:1 2:0:0 3:1:0 4:2:2 5:1:1 6:1:0 7:2:1 8:1:1 9:1:1 10:1:0 11:2:2 12:2:0 13:1:0 14:2:2 15:2:1 4 1 0 1 2 0:8:r7:rotl@base_0:bijective 1:9:r5:mulhi@base_7:lossy 2:12:r6:rotl@base_6:bijective 3:22:r4:load@base_12:inject 4:23:r0:mad@base_20:inject 5:24:r2:mad@base_14:inject 6:26:r7:add@base_21:inject 7:29:r3:load@base_23:inject 8:39:r4:mul@base_34:lossy 9:41:r6:add@base_38:inject 10:42:r0:or@base_36:lossy 11:46:r6:rotl@base_43:bijective 12:48:r3:sub@base_47:inject 13:49:r5:load@base_46:inject 14:51:r7:rotr@base_44:bijective 15:63:r5:mulhi@base_60:lossy +igneum-ca3-v4-uniform/677 9c6018c1b2658dad 0 0:2:1 1:1:0 2:0:0 3:2:3 4:0:0 5:2:1 6:2:2 7:0:0 8:2:2 9:0:0 10:1:0 11:0:0 12:2:0 13:2:1 14:0:0 15:1:0 1 0 0 1 0 0:1:r0:xor@base_0:inject 1:3:r7:shfl@base_2:inject 2:6:r0:sub@base_4:inject 3:7:r2:load@base_6:inject 4:11:r7:add@base_8:inject 5:14:r4:load@base_11:inject 6:19:r0:mul@base_17:lossy 7:31:r2:shfl@base_18:inject 8:32:r0:sub@base_22:inject 9:36:r1:load@base_32:inject 10:45:r2:shfl@base_37:inject 11:46:r0:load@base_36:inject 12:47:r5:sub@base_43:inject 13:49:r3:rotl@base_42:bijective 14:51:r6:load@base_47:inject 15:53:r0:load@base_49:inject +igneum-ca3-v4-uniform/678 27b489ec0466a92d 0 0:2:1 1:2:1 2:0:0 3:1:1 4:0:0 5:0:0 6:0:0 7:0:0 8:0:0 9:2:0 10:1:0 11:1:1 12:0:0 13:1:1 14:2:2 15:0:0 3 3 1 0 0 0:2:r7:add@base_0:inject 1:3:r6:load@base_2:inject 2:4:r5:load@base_3:inject 3:5:r1:load@base_4:inject 4:8:r5:shfl@base_6:inject 5:26:r0:or@base_16:lossy 6:29:r7:shfl@base_23:inject 7:30:r1:add@base_27:inject 8:35:r6:or@base_24:lossy-or-chain1 9:37:r4:load@base_30:inject 10:38:r7:load@base_35:inject 11:51:r5:mad@base_46:inject 12:55:r6:or@base_49:lossy 13:58:r3:load@base_38:inject 14:59:r5:shfl@base_56:inject 15:60:r4:sub@base_48:inject +igneum-ca3-v4-uniform/679 a4f121a7228a910b 0 0:0:0 1:0:0 2:0:0 3:0:0 4:1:1 5:1:0 6:1:1 7:2:1 8:2:0 9:1:0 10:0:0 11:0:0 12:0:0 13:1:0 14:2:0 15:2:2 1 0 0 0 1 0:3:r4:xor@base_0:inject 1:4:r5:mad@base_2:inject 2:5:r7:load@base_4:inject 3:7:r6:load@base_3:inject 4:15:r0:shfl@base_9:inject 5:17:r1:load@base_15:inject 6:25:r7:add@base_18:inject 7:31:r4:load@base_25:inject 8:32:r7:mulhi@base_29:lossy 9:42:r0:load@base_17:inject 10:47:r5:shfl@base_41:inject 11:48:r1:shfl@base_38:inject 12:52:r4:mad@base_49:inject 13:56:r0:rotl@base_55:bijective 14:61:r3:add@base_54:inject 15:63:r5:mad@base_59:inject +igneum-ca3-v4-uniform/680 544c0a69b2026df6 0 0:1:0 1:1:1 2:0:0 3:2:1 4:2:3 5:1:1 6:1:1 7:2:0 8:1:0 9:0:0 10:2:3 11:0:0 12:1:0 13:2:2 14:2:1 15:2:1 3 0 0 2 1 0:1:r2:xor@base_0:inject 1:6:r1:sub@base_4:inject 2:9:r3:load@base_6:inject 3:12:r2:add@base_5:inject 4:16:r5:mulhi@base_11:lossy 5:17:r6:mul@base_14:lossy 6:23:r2:mad@base_20:inject 7:25:r6:load@base_23:inject 8:26:r4:load@base_16:inject 9:43:r6:sub@base_40:inject 10:46:r1:xor@base_42:inject 11:47:r4:load@base_46:inject 12:49:r2:sub@base_45:inject 13:52:r4:mul@base_48:lossy 14:59:r0:xor@base_36:inject 15:60:r3:add@base_57:inject +igneum-ca3-v4-uniform/681 44e695042a3087aa 0 0:1:1 1:1:1 2:2:1 3:0:0 4:0:0 5:0:0 6:1:0 7:1:0 8:0:0 9:1:1 10:1:0 11:2:2 12:2:3 13:1:0 14:1:0 15:0:0 2 1 0 1 0 0:2:r5:rotl@base_1:bijective 1:5:r6:mad@base_0:inject 2:13:r0:shfl@base_10:inject 3:15:r6:or@base_8:lossy 4:20:r3:load@base_13:inject 5:26:r7:mad@base_22:inject 6:28:r6:sub@base_25:inject 7:37:r6:mad@base_31:inject 8:39:r7:mad@base_36:inject 9:40:r5:load@base_28:inject 10:45:r4:add@base_42:inject 11:50:r2:rotl@base_48:bijective 12:53:r0:mul@base_52:lossy 13:57:r6:xor@base_54:inject 14:58:r5:mad@base_44:inject 15:59:r1:load@base_50:inject +igneum-ca3-v4-uniform/682 99a4830adf269c45 0 0:1:0 1:2:3 2:1:0 3:1:0 4:2:2 5:2:1 6:1:0 7:0:0 8:2:2 9:2:3 10:2:2 11:1:0 12:1:1 13:2:0 14:1:0 15:1:1 5 1 0 2 2 0:1:r1:add@base_0:inject 1:3:r2:mad@base_2:inject 2:12:r1:load@base_3:inject 3:16:r4:mulhi@base_14:lossy 4:21:r7:load@base_12:inject 5:26:r1:load@base_21:inject 6:27:r4:mulhi@base_25:lossy 7:30:r7:rotl@base_29:bijective 8:31:r0:xor@base_28:inject 9:37:r6:mul@base_24:lossy 10:38:r2:shfl@base_33:inject 11:44:r7:mul@base_39:lossy 12:52:r0:mad@base_48:inject 13:55:r2:add@base_45:inject 14:57:r5:or@base_41:lossy 15:59:r3:add@base_58:inject +igneum-ca3-v4-uniform/683 bc62fb6023efd290 0 0:1:0 1:1:0 2:1:1 3:2:1 4:0:0 5:0:0 6:0:0 7:2:0 8:2:0 9:2:0 10:1:1 11:2:0 12:1:1 13:2:2 14:1:1 15:1:1 3 0 0 2 1 0:6:r4:xor@base_4:inject 1:12:r1:add@base_7:inject 2:25:r3:xor@base_24:inject 3:29:r1:xor@base_19:inject 4:30:r6:xor@base_28:inject 5:35:r2:mul@base_34:lossy 6:38:r5:rotl@base_33:bijective 7:41:r6:xor@base_40:inject 8:42:r3:load@base_35:inject 9:43:r0:mul@base_16:lossy 10:46:r3:mulhi@base_44:lossy 11:48:r1:load@base_43:inject 12:50:r5:load@base_48:inject 13:51:r7:load@base_42:inject 14:55:r5:add@base_54:inject 15:62:r1:rotl@base_56:bijective +igneum-ca3-v4-uniform/684 9c8d18d5cd432d5e 0 0:2:0 1:1:1 2:0:0 3:0:0 4:2:2 5:1:1 6:0:0 7:1:1 8:1:1 9:1:1 10:0:0 11:2:2 12:2:0 13:0:0 14:0:0 15:2:1 3 1 0 1 1 0:4:r3:xor@base_3:inject 1:9:r3:shfl@base_7:inject 2:10:r5:mul@base_5:lossy 3:11:r4:rotr@base_1:bijective 4:13:r1:load@base_10:inject 5:17:r6:add@base_16:inject 6:25:r0:rotl@base_15:bijective 7:28:r3:load@base_25:inject 8:31:r2:add@base_27:inject 9:33:r7:xor@base_12:inject 10:34:r6:load@base_33:inject 11:41:r4:load@base_34:inject 12:43:r0:mulhi@base_42:lossy 13:55:r1:add@base_52:inject 14:57:r7:or@base_46:lossy 15:61:r5:add@base_50:inject +igneum-ca3-v4-uniform/685 d874689b75990c0f 0 0:0:0 1:1:0 2:0:0 3:0:0 4:0:0 5:0:0 6:1:0 7:2:0 8:0:0 9:1:0 10:2:0 11:1:1 12:2:3 13:1:1 14:0:0 15:2:0 4 1 0 1 2 0:1:r5:mulhi@shadow_254:lossy 1:3:r4:load@base_1:inject 2:7:r0:shfl@base_6:inject 3:17:r4:sub@base_11:inject 4:18:r7:xor@base_9:inject 5:19:r3:mulhi@base_15:lossy 6:25:r5:load@base_19:inject 7:32:r6:xor@base_27:inject 8:39:r7:add@base_38:inject 9:44:r1:load@base_32:inject 10:47:r0:or@base_46:lossy 11:52:r4:xor@base_49:inject 12:53:r5:load@base_52:inject 13:61:r2:mad@base_60:inject 14:62:r1:mul@base_59:lossy 15:63:r7:load@base_61:inject +igneum-ca3-v4-uniform/686 c209ddb8de36b497 0 0:0:0 1:1:1 2:0:0 3:2:0 4:1:1 5:2:1 6:2:1 7:1:0 8:0:0 9:1:0 10:0:0 11:2:0 12:2:2 13:0:0 14:2:2 15:2:1 2 0 0 0 2 0:1:r5:xor@base_0:inject 1:5:r6:rotr@base_2:bijective 2:10:r0:shfl@base_8:inject 3:17:r4:rotl@base_16:bijective 4:21:r2:mulhi@base_19:lossy 5:27:r1:rotl@base_25:bijective 6:29:r7:mad@base_15:inject 7:31:r3:rotr@base_23:bijective 8:34:r4:sub@base_33:inject 9:41:r1:sub@base_30:inject 10:47:r4:mulhi@base_45:lossy 11:48:r1:shfl@base_44:inject 12:55:r4:rotr@base_54:bijective 13:58:r0:load@base_55:inject 14:62:r0:add@base_60:inject 15:63:r6:load@base_62:inject +igneum-ca3-v4-uniform/687 37cc243d4950bda9 1 0:2:3 1:1:0 2:1:0 3:2:1 4:2:0 5:1:0 6:1:1 7:0:0 8:0:0 9:2:2 10:0:0 11:0:0 12:1:0 13:2:3 14:0:0 15:1:1 4 0 0 1 3 0:2:r1:sub@base_1:inject 1:8:r3:mulhi@base_7:lossy 2:10:r7:shfl@base_9:inject 3:13:r4:sub@base_11:inject 4:14:r3:load@base_13:inject 5:26:r5:load@base_14:inject 6:28:r7:add@base_25:inject 7:29:r4:mulhi@base_23:lossy 8:32:r3:mulhi@base_24:lossy 9:35:r2:load@base_26:inject 10:38:r4:rotl@base_37:bijective 11:46:r3:add@base_45:inject 12:51:r3:mul@base_49:lossy 13:52:r1:xor@base_40:inject 14:54:r7:add@base_44:inject 15:57:r6:rotr@base_53:bijective +igneum-ca3-v4-uniform/688 108dbbc860b0cdb4 0 0:2:2 1:1:1 2:0:0 3:0:0 4:2:2 5:0:0 6:0:0 7:0:0 8:0:0 9:1:1 10:2:0 11:1:0 12:1:1 13:2:0 14:2:2 15:0:0 2 0 0 2 0 0:1:r7:rotr@shadow_241:bijective 1:8:r5:xor@base_3:inject 2:18:r0:xor@base_5:inject 3:20:r7:xor@base_13:inject 4:24:r5:mul@base_12:lossy 5:28:r2:load@base_20:inject 6:32:r2:shfl@base_30:inject 7:33:r1:add@base_27:inject 8:37:r3:rotl@base_29:bijective 9:41:r0:sub@base_34:inject 10:47:r5:mul@base_45:lossy 11:50:r3:rotl@base_46:bijective 12:53:r2:add@base_52:inject 13:56:r4:mad@base_51:inject 14:61:r3:xor@base_60:inject 15:63:r1:load@base_61:inject +igneum-ca3-v4-uniform/689 a3d0afdebc62947f 0 0:2:3 1:1:0 2:2:3 3:2:1 4:1:0 5:2:3 6:0:0 7:0:0 8:0:0 9:1:0 10:2:2 11:0:0 12:1:1 13:1:1 14:0:0 15:0:0 1 0 0 1 0 0:3:r7:add@base_0:inject 1:4:r4:add@base_1:inject 2:5:r1:load@base_3:inject 3:6:r4:load@base_5:inject 4:9:r1:load@base_6:inject 5:16:r0:xor@base_14:inject 6:17:r1:load@base_16:inject 7:20:r7:add@base_18:inject 8:26:r0:load@base_17:inject 9:28:r3:rotl@base_24:bijective 10:34:r7:add@base_32:inject 11:42:r4:add@base_37:inject 12:49:r1:mul@base_46:lossy 13:51:r3:load@base_49:inject 14:59:r1:load@base_51:inject 15:60:r4:rotr@base_52:bijective +igneum-ca3-v4-uniform/690 24598959788be794 0 0:0:0 1:2:1 2:2:2 3:2:3 4:2:0 5:2:2 6:0:0 7:1:0 8:1:1 9:0:0 10:1:1 11:0:0 12:0:0 13:1:0 14:1:0 15:2:1 1 0 0 0 1 0:3:r2:add@base_1:inject 1:4:r0:xor@base_2:inject 2:5:r2:load@base_4:inject 3:7:r5:load@base_3:inject 4:8:r3:mulhi@base_6:lossy 5:13:r1:rotr@base_11:bijective 6:15:r4:load@base_13:inject 7:21:r3:sub@base_20:inject 8:23:r7:sub@base_17:inject 9:26:r1:add@base_22:inject 10:37:r6:rotl@base_18:bijective 11:46:r7:rotr@base_44:bijective 12:54:r3:mad@base_51:inject 13:55:r7:rotr@base_50:bijective 14:61:r4:load@base_46:inject 15:62:r2:rotr@base_59:bijective +igneum-ca3-v4-uniform/691 8463355e6bcf20df 0 0:2:3 1:1:0 2:1:0 3:1:1 4:2:1 5:2:3 6:1:1 7:1:0 8:2:1 9:0:0 10:1:0 11:1:0 12:0:0 13:2:0 14:2:3 15:1:1 3 0 0 3 0 0:4:r7:xor@base_0:inject 1:7:r7:mul@base_5:lossy 2:8:r4:rotr@base_2:bijective 3:20:r5:rotl@base_18:bijective 4:22:r2:load@base_20:inject 5:26:r4:mul@base_24:lossy 6:35:r4:rotr@base_31:bijective 7:37:r2:shfl@base_34:inject 8:38:r3:add@base_23:inject 9:41:r0:shfl@base_40:inject 10:42:r2:load@base_41:inject 11:45:r1:mad@base_33:inject 12:47:r7:xor@base_36:inject 13:48:r3:add@base_46:inject 14:54:r0:sub@base_53:inject 15:59:r4:mul@base_56:lossy +igneum-ca3-v4-uniform/692 39871fb58bfae76c 0 0:2:2 1:1:1 2:0:0 3:2:2 4:0:0 5:1:1 6:1:0 7:2:2 8:1:1 9:1:0 10:2:2 11:1:0 12:0:0 13:1:0 14:0:0 15:1:0 0 0 0 0 0 0:2:r3:mad@base_0:inject 1:5:r0:add@base_4:inject 2:6:r6:load@base_2:inject 3:7:r4:load@base_6:inject 4:8:r7:load@base_7:inject 5:10:r3:load@base_8:inject 6:12:r6:load@base_10:inject 7:18:r1:mad@base_15:inject 8:19:r4:sub@base_14:inject 9:29:r6:mad@base_26:inject 10:37:r3:mad@base_30:inject 11:43:r7:sub@base_42:inject 12:55:r3:shfl@base_50:inject 13:57:r7:rotr@base_56:bijective 14:59:r6:load@base_57:inject 15:62:r4:load@base_43:inject +igneum-ca3-v4-uniform/693 a6c7b52677c7d172 0 0:2:3 1:0:0 2:0:0 3:1:0 4:2:0 5:0:0 6:0:0 7:2:1 8:0:0 9:1:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:0 15:2:1 1 0 0 1 0 0:2:r5:xor@base_0:inject 1:6:r4:mad@base_1:inject 2:8:r1:load@base_2:inject 3:11:r7:rotl@base_7:bijective 4:15:r7:add@base_14:inject 5:22:r7:mad@base_16:inject 6:29:r4:sub@base_27:inject 7:30:r0:mad@base_28:inject 8:39:r2:add@base_10:inject 9:42:r1:xor@base_36:inject 10:43:r4:load@base_39:inject 11:44:r7:mad@base_38:inject 12:45:r5:load@base_44:inject 13:50:r6:mad@base_47:inject 14:56:r0:mul@base_55:lossy 15:57:r5:xor@base_51:inject +igneum-ca3-v4-uniform/694 1e0a3e69fa958ee0 0 0:1:0 1:2:2 2:1:0 3:0:0 4:0:0 5:0:0 6:1:1 7:2:2 8:1:0 9:2:1 10:2:3 11:0:0 12:1:1 13:0:0 14:1:0 15:0:0 2 1 0 1 0 0:12:r7:shfl@base_3:inject 1:16:r0:or@base_7:lossy 2:21:r6:shfl@base_10:inject 3:24:r0:xor@base_18:inject 4:31:r7:add@base_30:inject 5:38:r5:mad@base_28:inject 6:39:r3:rotl@base_29:bijective 7:40:r1:rotl@base_34:bijective 8:41:r4:mul@base_36:lossy 9:44:r5:load@base_41:inject 10:48:r7:sub@base_45:inject 11:54:r6:load@base_44:inject 12:56:r2:add@base_53:inject 13:57:r1:mad@base_47:inject 14:60:r1:xor@base_59:inject 15:62:r0:rotr@base_46:bijective +igneum-ca3-v4-uniform/695 4759b9c4dde03e6b 0 0:2:0 1:1:1 2:0:0 3:2:3 4:0:0 5:2:3 6:2:2 7:2:3 8:1:0 9:1:0 10:2:1 11:1:1 12:0:0 13:1:0 14:2:0 15:2:1 5 3 0 1 1 0:7:r6:mulhi@base_3:lossy 1:10:r7:add@base_4:inject 2:11:r0:or@base_6:lossy 3:12:r6:load@base_11:inject 4:20:r3:xor@base_15:inject 5:23:r5:rotr@base_21:bijective 6:26:r1:load@base_12:inject 7:31:r0:mul@base_30:lossy 8:34:r2:add@base_24:inject 9:37:r1:add@base_36:inject 10:39:r2:add@base_38:inject 11:43:r5:load@base_37:inject 12:47:r7:or@base_46:lossy 13:55:r4:or@base_50:lossy 14:56:r7:rotl@base_54:bijective 15:63:r1:rotl@base_45:bijective +igneum-ca3-v4-uniform/696 085abd99e7629c97 0 0:2:2 1:2:0 2:1:0 3:1:1 4:1:0 5:2:3 6:0:0 7:0:0 8:0:0 9:0:0 10:0:0 11:2:2 12:0:0 13:2:2 14:0:0 15:1:0 2 1 1 0 1 0:3:r7:rotl@base_0:bijective 1:4:r6:or@base_2:lossy-or-chain1 2:7:r4:load@base_4:inject 3:9:r5:add@base_8:inject 4:12:r4:mad@base_11:inject 5:16:r7:sub@base_13:inject 6:19:r1:add@base_15:inject 7:21:r1:xor@base_20:inject 8:23:r0:load@base_12:inject 9:26:r1:load@base_23:inject 10:29:r4:shfl@base_27:inject 11:31:r7:load@base_29:inject 12:46:r0:mulhi@base_44:lossy 13:49:r1:rotr@base_41:bijective 14:52:r4:xor@base_45:inject 15:61:r0:shfl@base_51:inject +igneum-ca3-v4-uniform/697 1cfb0ea061d54a05 0 0:0:0 1:2:2 2:1:0 3:1:1 4:1:1 5:0:0 6:1:1 7:0:0 8:1:0 9:0:0 10:1:0 11:1:0 12:0:0 13:2:2 14:1:0 15:2:3 2 0 0 0 2 0:3:r4:mulhi@base_0:lossy 1:12:r2:add@base_10:inject 2:13:r4:xor@base_8:inject 3:20:r7:mulhi@base_17:lossy 4:23:r3:load@base_13:inject 5:27:r6:load@base_20:inject 6:30:r3:sub@base_29:inject 7:31:r2:load@base_23:inject 8:34:r6:sub@base_28:inject 9:39:r7:xor@base_37:inject 10:42:r0:sub@base_32:inject 11:44:r1:load@base_34:inject 12:47:r4:rotl@base_45:bijective 13:49:r1:load@base_47:inject 14:53:r3:mad@base_52:inject 15:58:r0:xor@base_54:inject +igneum-ca3-v4-uniform/698 1c2b7b674ffd345d 0 0:2:3 1:1:0 2:2:0 3:0:0 4:1:0 5:2:1 6:0:0 7:2:1 8:0:0 9:2:3 10:1:0 11:0:0 12:2:3 13:1:1 14:0:0 15:0:0 2 1 0 1 0 0:10:r6:rotr@base_5:bijective 1:20:r7:shfl@base_14:inject 2:22:r4:xor@base_19:inject 3:23:r5:rotl@base_13:bijective 4:27:r2:xor@base_25:inject 5:31:r3:add@base_29:inject 6:33:r5:xor@base_32:inject 7:36:r7:add@base_28:inject 8:37:r6:or@base_34:lossy 9:40:r4:load@base_37:inject 10:46:r0:mul@base_43:lossy 11:49:r5:load@base_36:inject 12:57:r0:sub@base_51:inject 13:58:r4:add@base_52:inject 14:60:r1:xor@base_59:inject 15:63:r7:load@base_58:inject +igneum-ca3-v4-uniform/699 65b4bdb5ea7b7847 0 0:1:0 1:0:0 2:2:2 3:2:3 4:0:0 5:1:0 6:1:0 7:1:1 8:1:0 9:2:3 10:0:0 11:0:0 12:0:0 13:2:0 14:1:1 15:1:1 2 1 0 1 0 0:2:r2:add@base_1:inject 1:3:r4:load@base_2:inject 2:4:r1:load@base_3:inject 3:7:r0:sub@base_6:inject 4:8:r4:load@base_7:inject 5:12:r1:xor@base_9:inject 6:19:r5:shfl@base_10:inject 7:24:r0:add@base_13:inject 8:27:r4:load@base_24:inject 9:30:r2:mul@base_21:lossy 10:34:r6:xor@base_23:inject 11:41:r1:sub@base_39:inject 12:42:r3:mad@base_38:inject 13:55:r7:shfl@base_48:inject 14:58:r3:or@base_46:lossy 15:60:r5:xor@base_45:inject +igneum-ca3-v4-uniform/700 252fc0131c683d9d 0 0:1:1 1:2:2 2:1:1 3:2:3 4:0:0 5:2:3 6:0:0 7:0:0 8:1:1 9:1:1 10:0:0 11:0:0 12:0:0 13:0:0 14:0:0 15:0:0 2 0 0 0 2 0:4:r3:shfl@base_0:inject 1:6:r7:add@base_5:inject 2:12:r1:add@base_8:inject 3:19:r6:load@base_12:inject 4:20:r1:add@base_15:inject 5:35:r3:rotl@base_31:bijective 6:36:r2:xor@base_34:inject 7:41:r7:rotl@base_27:bijective 8:47:r0:mulhi@base_22:lossy 9:48:r2:load@base_47:inject 10:49:r1:load@base_36:inject 11:50:r4:sub@base_45:inject 12:52:r5:rotr@base_18:bijective 13:58:r0:load@base_52:inject 14:61:r7:load@base_48:inject 15:62:r1:mulhi@base_55:lossy +igneum-ca3-v4-uniform/701 d7f333b4355ab605 0 0:2:1 1:0:0 2:0:0 3:2:0 4:0:0 5:2:2 6:0:0 7:0:0 8:2:3 9:2:1 10:1:1 11:2:1 12:2:1 13:2:3 14:1:1 15:1:1 3 1 0 0 2 0:4:r4:or@base_2:lossy 1:10:r7:rotr@base_7:bijective 2:15:r6:mulhi@base_9:lossy 3:21:r4:add@base_19:inject 4:22:r6:rotr@base_17:bijective 5:23:r3:load@base_21:inject 6:34:r7:sub@base_26:inject 7:35:r4:mad@base_33:inject 8:36:r2:mulhi@base_8:lossy 9:42:r6:load@base_34:inject 10:50:r7:load@base_35:inject 11:54:r0:load@base_50:inject 12:58:r2:rotl@base_56:bijective 13:59:r5:add@base_45:inject 14:60:r6:load@base_58:inject 15:62:r4:sub@base_51:inject +igneum-ca3-v4-uniform/702 4555d0835f993540 0 0:0:0 1:0:0 2:2:2 3:2:1 4:2:1 5:2:1 6:1:1 7:2:2 8:2:2 9:0:0 10:2:0 11:0:0 12:2:3 13:0:0 14:1:0 15:2:2 3 0 0 2 1 0:2:r7:shfl@base_0:inject 1:6:r4:rotl@base_4:bijective 2:8:r1:load@base_6:inject 3:11:r0:mad@base_7:inject 4:12:r4:mul@base_9:lossy 5:18:r3:mul@base_10:lossy 6:20:r5:shfl@base_19:inject 7:21:r7:load@base_12:inject 8:22:r2:load@base_11:inject 9:25:r3:load@base_22:inject 10:28:r4:load@base_21:inject 11:30:r5:load@base_28:inject 12:31:r6:mulhi@base_29:lossy 13:43:r6:add@base_36:inject 14:53:r2:rotr@base_45:bijective 15:56:r1:xor@base_52:inject +igneum-ca3-v4-uniform/703 a62aae84f37897e2 0 0:1:1 1:1:0 2:0:0 3:2:3 4:2:2 5:0:0 6:0:0 7:2:3 8:0:0 9:2:3 10:1:0 11:0:0 12:0:0 13:2:0 14:0:0 15:2:0 3 2 0 1 0 0:3:r6:mad@base_2:inject 1:14:r1:or@base_5:lossy 2:16:r3:rotl@base_11:bijective 3:22:r4:rotr@base_21:bijective 4:24:r5:xor@base_23:inject 5:26:r6:shfl@base_19:inject 6:35:r2:shfl@base_34:inject 7:37:r4:load@base_26:inject 8:41:r7:or@base_28:lossy 9:44:r6:shfl@base_36:inject 10:50:r4:mul@base_45:lossy 11:54:r2:xor@base_48:inject 12:55:r3:rotr@base_52:bijective 13:57:r7:load@base_50:inject 14:61:r5:load@base_55:inject 15:63:r4:rotl@base_62:bijective +igneum-ca3-v4-uniform/704 4af6a02c09262497 0 0:1:0 1:0:0 2:0:0 3:1:0 4:2:2 5:2:2 6:1:1 7:1:1 8:1:0 9:2:3 10:0:0 11:0:0 12:1:0 13:2:3 14:2:3 15:0:0 2 0 0 1 1 0:4:r4:xor@base_3:inject 1:5:r1:xor@base_2:inject 2:11:r7:mul@base_9:lossy 3:13:r3:load@base_11:inject 4:18:r2:load@base_13:inject 5:21:r4:load@base_18:inject 6:25:r1:rotr@base_23:bijective 7:29:r2:rotr@base_20:bijective 8:32:r5:mad@base_22:inject 9:45:r5:sub@base_42:inject 10:48:r1:add@base_47:inject 11:54:r0:load@base_48:inject 12:57:r6:shfl@base_51:inject 13:58:r7:mulhi@base_56:lossy 14:59:r0:load@base_58:inject 15:63:r7:xor@base_62:inject +igneum-ca3-v4-uniform/705 37fd43213ca32986 0 0:1:0 1:1:0 2:2:1 3:2:3 4:2:2 5:0:0 6:1:1 7:1:0 8:1:1 9:0:0 10:1:1 11:0:0 12:1:1 13:1:1 14:1:1 15:0:0 4 0 0 2 2 0:4:r3:mul@base_3:lossy 1:6:r7:rotl@base_0:bijective 2:21:r7:add@base_18:inject 3:29:r2:shfl@base_28:inject 4:30:r5:sub@base_9:inject 5:34:r6:mulhi@base_32:lossy 6:39:r3:load@base_34:inject 7:44:r1:shfl@base_40:inject 8:45:r0:xor@base_31:inject 9:48:r6:load@base_39:inject 10:49:r4:mul@base_43:lossy 11:51:r7:sub@base_35:inject 12:55:r6:mulhi@base_52:lossy 13:56:r1:load@base_49:inject 14:59:r1:mad@base_58:inject 15:62:r3:shfl@base_54:inject +igneum-ca3-v4-uniform/706 ecd2899816cecb58 0 0:2:3 1:2:2 2:0:0 3:1:0 4:2:0 5:1:0 6:0:0 7:0:0 8:1:0 9:1:1 10:2:3 11:0:0 12:2:2 13:1:0 14:0:0 15:1:0 4 0 0 2 2 0:7:r6:mul@base_4:lossy 1:11:r7:mulhi@base_3:lossy 2:18:r1:add@base_14:inject 3:25:r2:rotl@base_8:bijective 4:28:r5:rotr@base_26:bijective 5:29:r1:load@base_25:inject 6:33:r6:add@base_23:inject 7:34:r1:rotr@base_31:bijective 8:38:r3:sub@base_35:inject 9:45:r7:mulhi@base_44:lossy 10:46:r2:load@base_45:inject 11:49:r1:shfl@base_47:inject 12:51:r3:load@base_49:inject 13:52:r4:mul@base_15:lossy 14:59:r6:add@base_54:inject 15:62:r0:load@base_52:inject +igneum-ca3-v4-uniform/707 a4585ce6b08f687f 0 0:2:0 1:1:1 2:2:3 3:0:0 4:1:1 5:1:1 6:0:0 7:2:1 8:0:0 9:2:3 10:2:3 11:0:0 12:2:1 13:0:0 14:0:0 15:2:1 4 0 0 1 3 0:3:r5:add@base_2:inject 1:5:r3:mad@base_4:inject 2:7:r7:shfl@base_6:inject 3:8:r0:load@base_7:inject 4:12:r6:add@base_9:inject 5:20:r5:mulhi@base_16:lossy 6:21:r1:shfl@base_13:inject 7:30:r1:add@base_28:inject 8:34:r0:add@base_31:inject 9:38:r4:mulhi@base_33:lossy 10:39:r6:xor@base_36:inject 11:44:r3:mad@base_43:inject 12:46:r2:mulhi@base_42:lossy 13:57:r7:add@base_49:inject 14:61:r1:mul@base_55:lossy 15:63:r5:xor@base_62:inject +igneum-ca3-v4-uniform/708 61ea1158f0535f74 0 0:0:0 1:2:1 2:1:1 3:0:0 4:2:2 5:2:2 6:0:0 7:2:1 8:0:0 9:1:1 10:0:0 11:0:0 12:1:0 13:0:0 14:1:0 15:2:3 3 1 0 2 0 0:5:r7:xor@base_3:inject 1:13:r3:rotl@base_10:bijective 2:15:r1:mul@base_4:lossy 3:16:r2:load@base_15:inject 4:23:r2:xor@base_21:inject 5:25:r5:load@base_23:inject 6:29:r6:sub@base_22:inject 7:33:r1:sub@base_30:inject 8:34:r5:mad@base_32:inject 9:41:r3:mad@base_40:inject 10:43:r6:or@base_39:lossy 11:46:r7:rotl@base_44:bijective 12:51:r0:mul@base_42:lossy 13:58:r4:shfl@base_47:inject 14:60:r7:rotl@base_56:bijective 15:62:r5:xor@base_53:inject +igneum-ca3-v4-uniform/709 ddc28dff2b1e3851 0 0:1:0 1:1:0 2:2:3 3:1:0 4:1:0 5:2:3 6:2:3 7:1:0 8:2:3 9:0:0 10:0:0 11:0:0 12:1:0 13:2:2 14:0:0 15:2:2 3 1 0 1 1 0:4:r1:mul@base_1:lossy 1:9:r0:mulhi@base_6:lossy 2:16:r1:shfl@base_12:inject 3:17:r0:load@base_16:inject 4:18:r3:or@base_13:lossy 5:19:r4:load@base_18:inject 6:23:r6:rotl@base_14:bijective 7:24:r5:add@base_21:inject 8:28:r2:load@base_23:inject 9:31:r6:rotl@base_25:bijective 10:40:r7:sub@base_10:inject 11:42:r2:add@base_34:inject 12:47:r5:xor@base_45:inject 13:50:r1:xor@base_41:inject 14:59:r5:sub@base_52:inject 15:62:r3:rotl@base_61:bijective +igneum-ca3-v4-uniform/710 0adeee64d6f6557a 0 0:2:3 1:1:1 2:0:0 3:0:0 4:1:1 5:0:0 6:2:0 7:2:2 8:2:2 9:0:0 10:2:0 11:2:2 12:0:0 13:2:1 14:0:0 15:2:3 6 2 0 4 0 0:12:r5:mul@base_5:lossy 1:18:r3:mul@base_9:lossy 2:24:r7:or@base_22:lossy 3:27:r4:mul@base_23:lossy 4:28:r0:load@base_24:inject 5:29:r2:mad@base_26:inject 6:31:r7:load@base_28:inject 7:34:r5:shfl@base_15:inject 8:35:r3:load@base_34:inject 9:41:r4:mul@base_32:lossy 10:43:r6:load@base_41:inject 11:44:r1:shfl@base_40:inject 12:45:r5:sub@base_37:inject 13:46:r0:rotl@base_42:bijective 14:48:r7:or@base_47:lossy 15:54:r2:load@base_44:inject +igneum-ca3-v4-uniform/711 bd756a7b3aa873ea 0 0:2:0 1:0:0 2:0:0 3:1:1 4:2:1 5:1:1 6:0:0 7:1:0 8:1:1 9:2:0 10:0:0 11:0:0 12:2:1 13:1:0 14:1:0 15:0:0 2 1 0 0 1 0:1:r1:sub@base_0:inject 1:12:r7:sub@base_6:inject 2:13:r1:add@base_7:inject 3:16:r3:mad@base_9:inject 4:26:r4:rotl@base_24:bijective 5:28:r2:rotl@base_20:bijective 6:30:r7:or@base_29:lossy 7:37:r5:load@base_13:inject 8:38:r1:mulhi@base_36:lossy 9:40:r0:shfl@base_39:inject 10:45:r3:load@base_30:inject 11:46:r7:load@base_45:inject 12:53:r6:mad@base_47:inject 13:57:r4:rotl@base_54:bijective 14:58:r2:load@base_53:inject 15:60:r6:sub@base_55:inject +igneum-ca3-v4-uniform/712 f87a73f57d841b1f 0 0:2:3 1:1:0 2:0:0 3:1:0 4:2:3 5:1:0 6:2:3 7:0:0 8:2:3 9:0:0 10:2:3 11:0:0 12:2:1 13:2:1 14:2:3 15:2:0 4 1 1 2 1 0:19:r0:add@base_9:inject 1:20:r2:or@base_15:lossy-or-chain1 2:22:r4:add@base_21:inject 3:29:r3:mul@base_7:lossy 4:30:r1:add@base_27:inject 5:31:r5:xor@base_26:inject 6:37:r2:load@base_29:inject 7:39:r0:load@base_37:inject 8:40:r1:add@base_32:inject 9:43:r7:rotr@base_36:bijective 10:47:r5:mul@base_41:lossy 11:50:r0:shfl@base_46:inject 12:51:r1:load@base_43:inject 13:53:r6:mulhi@base_45:lossy 14:54:r4:load@base_50:inject 15:58:r6:add@base_57:inject +igneum-ca3-v4-uniform/713 e747d80fa32f25dd 0 0:1:1 1:0:0 2:0:0 3:0:0 4:1:1 5:0:0 6:2:1 7:0:0 8:1:0 9:1:1 10:0:0 11:0:0 12:1:0 13:0:0 14:0:0 15:2:0 2 0 0 1 1 0:2:r6:shfl@base_1:inject 1:4:r7:load@base_2:inject 2:11:r2:rotr@base_7:bijective 3:12:r4:add@base_10:inject 4:17:r4:rotr@base_14:bijective 5:21:r5:load@base_11:inject 6:28:r2:mulhi@base_26:lossy 7:29:r0:mad@base_19:inject 8:30:r5:shfl@base_23:inject 9:37:r3:load@base_29:inject 10:39:r1:mul@base_27:lossy 11:42:r5:load@base_39:inject 12:43:r0:load@base_42:inject 13:44:r6:load@base_43:inject 14:48:r4:rotl@base_41:bijective 15:50:r2:mad@base_46:inject +igneum-ca3-v4-uniform/714 42a7b4ed9dceff6d 0 0:0:0 1:1:0 2:0:0 3:1:0 4:2:1 5:2:0 6:1:0 7:1:0 8:1:0 9:1:0 10:2:0 11:2:2 12:2:1 13:2:1 14:0:0 15:1:0 2 2 0 0 0 0:2:r2:or@base_1:lossy 1:5:r3:add@base_4:inject 2:9:r6:add@base_6:inject 3:22:r6:xor@base_13:inject 4:29:r6:rotl@base_26:bijective 5:30:r1:load@base_29:inject 6:31:r4:or@base_27:lossy 7:32:r1:load@base_31:inject 8:34:r5:add@base_19:inject 9:36:r0:load@base_34:inject 10:38:r7:load@base_30:inject 11:44:r2:load@base_36:inject 12:45:r1:mad@base_41:inject 13:49:r2:rotl@base_47:bijective 14:51:r7:rotl@base_48:bijective 15:55:r0:sub@base_50:inject +igneum-ca3-v4-uniform/715 efaf0cf23b376cc8 0 0:1:0 1:1:1 2:0:0 3:2:0 4:0:0 5:0:0 6:1:1 7:2:1 8:1:0 9:2:1 10:2:0 11:0:0 12:1:0 13:1:1 14:1:0 15:0:0 2 1 0 1 0 0:3:r0:mul@base_0:lossy 1:4:r7:xor@base_2:inject 2:6:r3:rotr@base_5:bijective 3:9:r1:add@base_8:inject 4:14:r2:load@base_9:inject 5:26:r7:or@base_25:lossy 6:27:r2:xor@base_21:inject 7:33:r1:shfl@base_31:inject 8:34:r5:load@base_33:inject 9:36:r3:load@base_34:inject 10:40:r3:mad@base_37:inject 11:42:r0:rotr@base_39:bijective 12:46:r2:rotr@base_32:bijective 13:48:r5:rotr@base_43:bijective 14:59:r7:rotr@base_52:bijective 15:60:r1:load@base_59:inject +igneum-ca3-v4-uniform/716 f9aaaca315771f43 0 0:0:0 1:0:0 2:2:2 3:2:0 4:0:0 5:2:3 6:1:0 7:1:0 8:2:3 9:1:1 10:2:3 11:0:0 12:2:0 13:0:0 14:1:1 15:2:3 1 0 0 1 0 0:3:r2:rotr@base_2:bijective 1:6:r1:load@base_3:inject 2:7:r3:rotl@base_1:bijective 3:9:r0:load@base_7:inject 4:13:r6:load@base_6:inject 5:15:r3:load@base_9:inject 6:18:r7:load@base_15:inject 7:27:r1:xor@base_20:inject 8:28:r4:sub@base_8:inject 9:31:r7:load@base_28:inject 10:32:r2:shfl@base_24:inject 11:36:r6:load@base_32:inject 12:49:r1:rotl@base_38:bijective 13:53:r4:xor@base_42:inject 14:57:r4:mul@base_56:lossy 15:59:r3:load@base_57:inject +igneum-ca3-v4-uniform/717 c142ea4e51651816 0 0:0:0 1:0:0 2:2:0 3:0:0 4:2:0 5:1:1 6:1:0 7:0:0 8:1:0 9:2:1 10:0:0 11:0:0 12:1:0 13:1:1 14:0:0 15:1:0 4 1 1 1 2 0:12:r0:mad@base_11:inject 1:14:r4:add@base_5:inject 2:18:r5:load@base_14:inject 3:25:r1:mulhi@base_20:lossy 4:28:r0:load@base_25:inject 5:31:r7:xor@base_24:inject 6:33:r5:rotr@base_29:bijective 7:37:r0:mulhi@base_34:lossy 8:40:r4:mad@base_39:inject 9:41:r7:add@base_36:inject 10:42:r3:load@base_41:inject 11:54:r5:load@base_37:inject 12:59:r2:or@base_58:lossy-or-chain1 13:60:r5:add@base_57:inject 14:61:r0:mul@base_56:lossy 15:63:r6:load@base_61:inject +igneum-ca3-v4-uniform/718 cd4b104877ca61d2 0 0:1:1 1:2:1 2:2:2 3:2:1 4:2:1 5:0:0 6:2:2 7:0:0 8:2:2 9:0:0 10:0:0 11:2:0 12:0:0 13:1:0 14:1:1 15:0:0 3 1 0 1 1 0:1:r1:xor@base_0:inject 1:8:r3:rotr@base_7:bijective 2:11:r5:add@base_9:inject 3:20:r7:add@base_14:inject 4:25:r0:load@base_20:inject 5:30:r6:mad@base_21:inject 6:32:r7:load@base_25:inject 7:34:r1:mul@base_28:lossy 8:36:r0:add@base_35:inject 9:44:r0:or@base_37:lossy 10:46:r5:load@base_32:inject 11:50:r3:load@base_46:inject 12:52:r6:load@base_34:inject 13:53:r4:load@base_52:inject 14:55:r2:mulhi@base_43:lossy 15:63:r6:xor@base_54:inject +igneum-ca3-v4-uniform/719 24af86ed01c04a9f 0 0:0:0 1:2:2 2:1:0 3:1:0 4:1:1 5:2:3 6:1:0 7:0:0 8:1:0 9:1:0 10:0:0 11:0:0 12:1:0 13:2:0 14:2:3 15:1:0 5 0 0 3 2 0:8:r2:sub@base_7:inject 1:14:r5:mul@base_13:lossy 2:18:r7:mulhi@base_15:lossy 3:20:r6:xor@base_9:inject 4:22:r1:mad@base_6:inject 5:27:r2:mulhi@base_25:lossy 6:28:r7:mul@base_24:lossy 7:32:r5:mul@base_23:lossy 8:35:r0:sub@base_33:inject 9:41:r2:add@base_36:inject 10:44:r6:rotr@base_42:bijective 11:45:r3:load@base_32:inject 12:50:r4:load@base_44:inject 13:55:r6:add@base_51:inject 14:56:r3:sub@base_46:inject 15:59:r0:load@base_55:inject +igneum-ca3-v4-uniform/720 d7686da0a623216d 0 0:0:0 1:0:0 2:1:0 3:2:1 4:2:0 5:0:0 6:2:1 7:2:0 8:0:0 9:1:0 10:2:3 11:0:0 12:0:0 13:1:1 14:0:0 15:1:1 3 0 0 3 0 0:7:r3:add@base_5:inject 1:16:r5:rotl@base_10:bijective 2:18:r1:xor@base_14:inject 3:27:r6:add@base_26:inject 4:37:r1:mad@base_32:inject 5:38:r2:mul@base_29:lossy 6:41:r3:rotr@base_40:bijective 7:42:r4:load@base_38:inject 8:43:r7:load@base_37:inject 9:45:r3:load@base_42:inject 10:47:r6:load@base_41:inject 11:48:r5:load@base_47:inject 12:49:r0:rotl@base_36:bijective 13:55:r4:mul@base_52:lossy 14:56:r7:mad@base_50:inject 15:61:r0:mul@base_59:lossy +igneum-ca3-v4-uniform/721 78d4f20376549c3c 0 0:1:0 1:0:0 2:0:0 3:2:0 4:1:1 5:1:0 6:1:1 7:2:3 8:1:1 9:1:0 10:1:0 11:1:1 12:0:0 13:2:3 14:2:2 15:2:3 5 3 1 1 1 0:1:r1:add@base_0:inject 1:2:r6:load@base_1:inject 2:5:r6:rotl@base_4:bijective 3:12:r6:mulhi@base_11:lossy 4:15:r7:or@base_6:lossy-or-chain1 5:21:r0:add@base_19:inject 6:28:r1:mad@base_20:inject 7:31:r6:load@base_21:inject 8:32:r7:rotr@base_29:bijective 9:34:r3:shfl@base_25:inject 10:35:r1:load@base_34:inject 11:43:r2:rotl@base_39:bijective 12:46:r7:load@base_35:inject 13:53:r3:or@base_52:lossy 14:55:r7:mul@base_49:lossy 15:63:r3:or@base_61:lossy +igneum-ca3-v4-uniform/722 6fc2c9c61e3f9a62 1 0:0:0 1:1:0 2:0:0 3:1:0 4:0:0 5:2:0 6:1:1 7:2:3 8:0:0 9:2:3 10:2:2 11:2:3 12:0:0 13:0:0 14:1:0 15:2:3 4 0 0 2 2 0:3:r0:sub@base_0:inject 1:10:r0:mulhi@base_4:lossy 2:14:r3:xor@base_11:inject 3:18:r5:add@base_17:inject 4:23:r7:rotl@base_22:bijective 5:25:r4:load@base_23:inject 6:26:r2:mul@base_20:lossy 7:36:r2:add@base_34:inject 8:37:r7:rotl@base_30:bijective 9:39:r5:load@base_36:inject 10:41:r5:mulhi@base_40:lossy 11:42:r3:mad@base_38:inject 12:47:r6:load@base_39:inject 13:49:r1:load@base_42:inject 14:59:r5:load@base_49:inject 15:61:r3:mul@base_52:lossy +igneum-ca3-v4-uniform/723 e4500391143856b7 0 0:2:0 1:2:2 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:2:1 8:1:0 9:1:1 10:0:0 11:0:0 12:1:1 13:2:1 14:1:1 15:2:2 5 0 0 1 4 0:2:r1:mad@base_0:inject 1:4:r6:add@base_1:inject 2:7:r6:sub@base_5:inject 3:9:r1:load@base_7:inject 4:12:r4:load@base_9:inject 5:26:r6:mulhi@base_20:lossy 6:27:r5:mul@base_24:lossy 7:30:r0:shfl@base_23:inject 8:32:r3:load@base_30:inject 9:41:r3:sub@base_36:inject 10:43:r7:mulhi@base_39:lossy 11:52:r2:load@base_43:inject 12:54:r1:mulhi@base_50:lossy 13:57:r6:load@base_54:inject 14:59:r5:mulhi@base_51:lossy 15:62:r6:load@base_59:inject +igneum-ca3-v4-uniform/724 b844366caa6c2858 0 0:0:0 1:1:1 2:2:3 3:1:1 4:2:2 5:2:3 6:2:2 7:0:0 8:0:0 9:2:0 10:0:0 11:0:0 12:1:0 13:0:0 14:0:0 15:0:0 2 0 0 1 1 0:5:r7:sub@base_3:inject 1:6:r4:load@base_5:inject 2:9:r2:mad@base_0:inject 3:11:r3:load@base_9:inject 4:13:r4:xor@base_12:inject 5:19:r7:load@base_6:inject 6:20:r3:sub@base_14:inject 7:37:r6:sub@base_28:inject 8:38:r5:add@base_31:inject 9:42:r2:xor@base_22:inject 10:43:r7:mul@base_40:lossy 11:47:r6:rotl@base_46:bijective 12:49:r0:load@base_43:inject 13:54:r6:add@base_50:inject 14:55:r7:mulhi@base_52:lossy 15:59:r2:load@base_55:inject +igneum-ca3-v4-uniform/725 e3f040f954d4813f 0 0:2:3 1:1:1 2:0:0 3:1:0 4:0:0 5:0:0 6:1:0 7:0:0 8:0:0 9:0:0 10:1:0 11:1:1 12:0:0 13:0:0 14:0:0 15:2:1 1 0 0 0 1 0:1:r2:rotl@base_0:bijective 1:6:r3:shfl@base_3:inject 2:7:r6:load@base_6:inject 3:8:r0:xor@base_5:inject 4:9:r2:load@base_7:inject 5:14:r3:mad@base_11:inject 6:19:r0:sub@base_17:inject 7:20:r2:mad@base_18:inject 8:22:r7:shfl@base_16:inject 9:29:r4:mad@base_12:inject 10:39:r1:mad@base_36:inject 11:40:r3:mulhi@base_33:lossy 12:42:r2:load@base_40:inject 13:45:r5:shfl@base_44:inject 14:58:r1:mad@base_55:inject 15:61:r7:xor@base_41:inject +igneum-ca3-v4-uniform/726 aa6b1380aecedc9a 0 0:2:1 1:0:0 2:1:0 3:2:3 4:2:3 5:0:0 6:2:2 7:0:0 8:1:0 9:2:2 10:2:0 11:2:0 12:1:0 13:2:3 14:2:2 15:1:1 4 2 0 0 2 0:11:r5:mulhi@base_8:lossy 1:16:r3:rotr@base_1:bijective 2:22:r3:mad@base_18:inject 3:23:r6:add@base_14:inject 4:26:r7:mad@base_20:inject 5:28:r3:mulhi@base_27:lossy 6:34:r1:rotl@base_29:bijective 7:37:r4:shfl@base_30:inject 8:42:r7:or@base_38:lossy 9:43:r0:add@base_36:inject 10:46:r4:mad@base_41:inject 11:47:r2:add@base_33:inject 12:48:r6:sub@base_45:inject 13:52:r7:mad@base_44:inject 14:53:r1:or@base_51:lossy 15:61:r5:add@base_58:inject +igneum-ca3-v4-uniform/727 b312d630cd0c26fa 0 0:1:0 1:0:0 2:1:1 3:1:1 4:1:0 5:1:1 6:0:0 7:1:0 8:1:0 9:0:0 10:2:3 11:2:3 12:1:1 13:0:0 14:1:0 15:2:0 1 0 0 0 1 0:8:r7:sub@base_5:inject 1:16:r4:shfl@base_10:inject 2:22:r1:add@base_19:inject 3:30:r0:xor@base_13:inject 4:31:r1:load@base_30:inject 5:33:r5:load@base_16:inject 6:34:r2:load@base_31:inject 7:35:r6:shfl@base_21:inject 8:36:r7:shfl@base_23:inject 9:37:r1:load@base_33:inject 10:40:r2:mad@base_38:inject 11:44:r1:sub@base_43:inject 12:47:r3:load@base_36:inject 13:52:r7:xor@base_49:inject 14:53:r0:xor@base_51:inject 15:62:r3:mulhi@base_61:lossy +igneum-ca3-v4-uniform/728 cc98672bab86bda0 0 0:0:0 1:0:0 2:0:0 3:1:1 4:2:1 5:1:0 6:2:1 7:0:0 8:1:0 9:1:0 10:0:0 11:1:1 12:1:0 13:1:1 14:2:2 15:1:1 4 1 0 2 1 0:5:r5:rotl@base_1:bijective 1:16:r1:mul@base_15:lossy 2:18:r7:mad@base_13:inject 3:24:r4:shfl@base_19:inject 4:27:r5:xor@base_22:inject 5:30:r7:add@base_20:inject 6:31:r3:mul@base_26:lossy 7:33:r2:load@base_31:inject 8:35:r4:add@base_32:inject 9:37:r5:mulhi@base_36:lossy 10:41:r1:load@base_37:inject 11:47:r2:add@base_44:inject 12:54:r7:or@base_48:lossy 13:55:r3:load@base_54:inject 14:56:r0:rotl@base_53:bijective 15:58:r2:rotr@base_57:bijective +igneum-ca3-v4-uniform/729 ea4efaf1afc0ec4e 0 0:1:1 1:0:0 2:1:1 3:0:0 4:0:0 5:1:0 6:1:1 7:2:1 8:2:3 9:2:1 10:1:1 11:2:0 12:1:0 13:2:3 14:2:2 15:0:0 4 1 0 3 0 0:4:r3:xor@base_2:inject 1:5:r7:mad@base_3:inject 2:9:r0:or@base_1:lossy 3:10:r2:xor@base_8:inject 4:14:r7:add@base_11:inject 5:21:r0:mul@base_18:lossy 6:24:r1:mul@base_6:lossy 7:28:r6:add@base_23:inject 8:29:r0:xor@base_25:inject 9:35:r5:load@base_28:inject 10:38:r2:xor@base_34:inject 11:40:r3:mad@base_36:inject 12:41:r6:mul@base_31:lossy 13:43:r4:load@base_41:inject 14:50:r0:load@base_43:inject 15:51:r3:add@base_46:inject +igneum-ca3-v4-uniform/730 ea53e0701b1e19f2 0 0:1:1 1:0:0 2:1:0 3:0:0 4:1:1 5:2:0 6:1:0 7:2:2 8:2:0 9:1:1 10:1:0 11:2:3 12:2:0 13:0:0 14:0:0 15:1:0 5 0 0 2 3 0:1:r1:xor@base_0:inject 1:5:r1:mulhi@base_4:lossy 2:8:r7:add@base_7:inject 3:9:r2:load@base_5:inject 4:11:r0:load@base_8:inject 5:13:r7:load@base_9:inject 6:14:r6:mad@base_2:inject 7:18:r6:mulhi@base_15:lossy 8:26:r1:rotl@base_22:bijective 9:30:r4:mad@base_27:inject 10:34:r0:load@base_30:inject 11:35:r6:load@base_34:inject 12:40:r7:mulhi@base_25:lossy 13:49:r5:shfl@base_48:inject 14:57:r3:mul@base_56:lossy 15:62:r5:mul@base_54:lossy +igneum-ca3-v4-uniform/731 a07a72526af5299f 0 0:0:0 1:2:2 2:2:0 3:0:0 4:1:1 5:0:0 6:1:1 7:2:2 8:1:0 9:0:0 10:2:0 11:1:1 12:1:0 13:1:0 14:1:1 15:2:3 0 0 0 0 0 0:11:r5:add@base_3:inject 1:12:r0:xor@base_10:inject 2:17:r6:rotr@base_16:bijective 3:18:r3:shfl@base_6:inject 4:22:r6:xor@base_21:inject 5:32:r5:add@base_15:inject 6:34:r4:load@base_17:inject 7:41:r1:load@base_22:inject 8:44:r0:rotl@base_43:bijective 9:50:r0:sub@base_48:inject 10:53:r6:load@base_50:inject 11:56:r7:mad@base_47:inject 12:57:r2:load@base_56:inject 13:61:r1:shfl@base_58:inject 14:62:r0:load@base_57:inject 15:63:r4:load@base_61:inject +igneum-ca3-v4-uniform/732 2237987cd1c8ed1d 0 0:0:0 1:0:0 2:1:1 3:1:1 4:1:0 5:0:0 6:1:1 7:0:0 8:1:1 9:2:2 10:2:3 11:0:0 12:2:0 13:2:0 14:2:3 15:0:0 2 1 0 1 0 0:12:r4:mad@base_2:inject 1:13:r1:shfl@base_1:inject 2:17:r5:load@base_12:inject 3:21:r2:shfl@base_7:inject 4:27:r6:sub@base_23:inject 5:30:r1:shfl@base_22:inject 6:36:r7:xor@base_32:inject 7:37:r0:load@base_36:inject 8:40:r5:rotl@base_35:bijective 9:43:r6:add@base_41:inject 10:50:r7:or@base_47:lossy 11:51:r3:sub@base_42:inject 12:53:r1:load@base_50:inject 13:56:r7:load@base_53:inject 14:60:r7:mul@base_58:lossy 15:61:r1:sub@base_55:inject +igneum-ca3-v4-uniform/733 5bbe5dd9cb3db6cf 0 0:1:0 1:2:3 2:2:1 3:2:3 4:0:0 5:0:0 6:0:0 7:2:2 8:0:0 9:1:1 10:0:0 11:0:0 12:2:2 13:2:0 14:2:3 15:1:1 2 0 0 1 1 0:3:r3:add@base_2:inject 1:4:r6:load@base_3:inject 2:5:r4:add@base_1:inject 3:26:r1:rotr@base_23:bijective 4:27:r7:rotl@base_24:bijective 5:29:r3:rotr@base_14:bijective 6:33:r0:shfl@base_32:inject 7:36:r6:mulhi@base_31:lossy 8:37:r4:load@base_27:inject 9:38:r2:sub@base_22:inject 10:45:r1:rotr@base_44:bijective 11:52:r6:add@base_50:inject 12:55:r5:shfl@base_54:inject 13:57:r1:load@base_55:inject 14:59:r4:mul@base_42:lossy 15:62:r2:rotr@base_56:bijective +igneum-ca3-v4-uniform/734 f06a15baa505e067 0 0:2:2 1:2:0 2:0:0 3:0:0 4:1:0 5:2:0 6:0:0 7:2:0 8:2:3 9:0:0 10:0:0 11:1:0 12:1:1 13:0:0 14:2:1 15:1:0 4 1 0 2 1 0:6:r1:or@base_1:lossy 1:8:r3:mad@base_5:inject 2:9:r2:load@base_6:inject 3:17:r4:mad@base_15:inject 4:18:r5:xor@base_14:inject 5:23:r5:xor@base_21:inject 6:29:r4:add@base_27:inject 7:34:r5:mad@base_24:inject 8:35:r7:mul@base_32:lossy 9:36:r1:shfl@base_22:inject 10:43:r3:sub@base_42:inject 11:44:r6:mulhi@base_33:lossy 12:48:r1:load@base_44:inject 13:49:r0:load@base_43:inject 14:62:r3:mul@base_61:lossy 15:63:r5:load@base_62:inject +igneum-ca3-v4-uniform/735 e88f7fd5aac31b27 0 0:0:0 1:0:0 2:2:1 3:1:0 4:0:0 5:2:1 6:1:1 7:1:0 8:0:0 9:1:1 10:1:1 11:0:0 12:1:1 13:0:0 14:2:3 15:1:0 5 1 0 3 1 0:2:r5:mad@base_1:inject 1:12:r6:rotl@base_11:bijective 2:16:r1:or@base_8:lossy 3:22:r5:load@base_16:inject 4:24:r2:mul@base_4:lossy 5:25:r0:mul@base_7:lossy 6:26:r7:mad@base_20:inject 7:27:r0:load@base_26:inject 8:30:r6:load@base_24:inject 9:34:r7:xor@base_32:inject 10:35:r4:mul@base_29:lossy 11:38:r6:rotl@base_33:bijective 12:41:r2:mulhi@base_39:lossy 13:44:r4:mad@base_43:inject 14:45:r0:shfl@base_37:inject 15:50:r1:load@base_44:inject +igneum-ca3-v4-uniform/736 f1e4303d0d0183d2 0 0:2:3 1:0:0 2:2:1 3:1:1 4:1:0 5:0:0 6:0:0 7:2:0 8:0:0 9:0:0 10:0:0 11:2:0 12:1:1 13:0:0 14:2:3 15:2:0 6 0 0 4 2 0:5:r4:mul@base_0:lossy 1:6:r1:mul@base_3:lossy 2:10:r7:xor@base_1:inject 3:12:r6:mul@base_11:lossy 4:27:r1:sub@base_24:inject 5:31:r7:mul@base_28:lossy 6:33:r5:rotr@base_20:bijective 7:34:r3:mulhi@base_19:lossy 8:35:r0:load@base_34:inject 9:39:r1:add@base_37:inject 10:40:r3:xor@base_38:inject 11:43:r2:rotr@base_41:bijective 12:47:r4:mad@base_45:inject 13:52:r7:mulhi@base_48:lossy 14:53:r0:add@base_51:inject 15:61:r6:add@base_56:inject +igneum-ca3-v4-uniform/737 2179a726ec51d58d 0 0:0:0 1:2:2 2:1:0 3:2:2 4:0:0 5:1:1 6:2:0 7:0:0 8:1:0 9:2:2 10:1:0 11:1:1 12:1:0 13:2:0 14:0:0 15:1:1 3 1 0 2 0 0:1:r0:xor@base_0:inject 1:3:r6:load@base_1:inject 2:5:r7:load@base_3:inject 3:13:r1:load@base_5:inject 4:14:r5:sub@base_12:inject 5:20:r2:rotl@base_8:bijective 6:25:r2:add@base_22:inject 7:33:r6:shfl@base_11:inject 8:39:r6:or@base_36:lossy 9:40:r2:mul@base_29:lossy 10:43:r5:load@base_39:inject 11:52:r2:shfl@base_51:inject 12:55:r2:shfl@base_53:inject 13:56:r1:mul@base_48:lossy 14:57:r0:load@base_52:inject 15:62:r2:load@base_57:inject +igneum-ca3-v4-uniform/738 077a96b592de6521 0 0:0:0 1:1:1 2:1:0 3:2:0 4:1:1 5:1:0 6:0:0 7:0:0 8:0:0 9:1:1 10:0:0 11:1:1 12:1:0 13:1:0 14:1:0 15:0:0 1 0 0 0 1 0:6:r6:sub@base_2:inject 1:18:r6:mulhi@base_13:lossy 2:19:r4:add@base_9:inject 3:25:r0:shfl@base_23:inject 4:26:r6:shfl@base_21:inject 5:32:r0:load@base_26:inject 6:33:r4:load@base_25:inject 7:34:r7:add@base_27:inject 8:37:r1:shfl@base_30:inject 9:38:r3:load@base_33:inject 10:43:r7:load@base_37:inject 11:45:r4:mad@base_44:inject 12:46:r6:shfl@base_41:inject 13:49:r7:sub@base_48:inject 14:55:r3:load@base_49:inject 15:58:r5:load@base_46:inject +igneum-ca3-v4-uniform/739 fa14d49c6d40f187 0 0:2:1 1:0:0 2:1:0 3:1:0 4:0:0 5:0:0 6:2:1 7:1:0 8:1:0 9:1:1 10:1:1 11:0:0 12:2:3 13:1:0 14:2:1 15:0:0 2 0 0 2 0 0:2:r4:mul@base_1:lossy 1:9:r4:rotr@base_7:bijective 2:10:r2:shfl@base_4:inject 3:14:r6:xor@base_12:inject 4:15:r3:mad@base_11:inject 5:16:r5:load@base_9:inject 6:21:r4:add@base_17:inject 7:22:r1:rotr@base_20:bijective 8:30:r4:mul@base_29:lossy 9:39:r1:load@base_30:inject 10:43:r4:add@base_42:inject 11:44:r0:rotl@base_19:bijective 12:51:r6:shfl@base_49:inject 13:55:r5:shfl@base_48:inject 14:56:r7:mad@base_35:inject 15:61:r3:sub@base_58:inject +igneum-ca3-v4-uniform/740 61f7a8b66952bdba 1 0:0:0 1:0:0 2:0:0 3:0:0 4:1:1 5:2:2 6:1:1 7:1:1 8:2:0 9:2:3 10:1:1 11:0:0 12:2:3 13:2:3 14:1:0 15:2:2 1 1 0 0 0 0:6:r1:shfl@base_1:inject 1:7:r3:xor@base_0:inject 2:9:r0:load@base_7:inject 3:14:r6:sub@base_13:inject 4:16:r7:load@base_9:inject 5:17:r6:load@base_16:inject 6:20:r4:xor@base_5:inject 7:32:r3:mad@base_25:inject 8:33:r7:xor@base_28:inject 9:39:r0:sub@base_36:inject 10:41:r4:xor@base_38:inject 11:55:r7:sub@base_54:inject 12:57:r0:or@base_53:lossy 13:59:r1:shfl@base_50:inject 14:62:r5:add@base_40:inject 15:63:r2:mad@base_58:inject +igneum-ca3-v4-uniform/741 442f597549728bc1 0 0:1:0 1:2:1 2:0:0 3:1:1 4:2:0 5:1:1 6:2:1 7:1:0 8:0:0 9:1:1 10:1:0 11:1:1 12:1:0 13:0:0 14:0:0 15:1:0 5 1 0 2 2 0:3:r2:mul@base_0:lossy 1:6:r4:rotl@base_4:bijective 2:12:r5:mad@base_8:inject 3:14:r7:sub@base_7:inject 4:16:r0:load@base_12:inject 5:20:r2:xor@base_13:inject 6:26:r5:shfl@base_23:inject 7:27:r1:load@base_14:inject 8:30:r4:rotl@base_29:bijective 9:31:r3:mul@base_22:lossy 10:35:r3:or@base_32:lossy 11:39:r5:rotr@base_33:bijective 12:41:r7:sub@base_37:inject 13:43:r0:mulhi@base_40:lossy 14:52:r6:load@base_43:inject 15:62:r7:mulhi@base_55:lossy +igneum-ca3-v4-uniform/742 72b35ba2142782d8 0 0:2:3 1:1:1 2:2:0 3:1:1 4:0:0 5:0:0 6:2:1 7:1:0 8:1:1 9:1:1 10:2:0 11:1:0 12:1:0 13:0:0 14:0:0 15:1:0 2 1 0 1 0 0:4:r5:xor@base_1:inject 1:7:r1:mul@base_2:lossy 2:11:r7:xor@base_9:inject 3:12:r1:sub@base_10:inject 4:13:r2:load@base_12:inject 5:15:r3:rotl@base_14:bijective 6:18:r3:rotl@base_16:bijective 7:23:r6:load@base_18:inject 8:30:r7:shfl@base_28:inject 9:31:r3:add@base_20:inject 10:32:r4:load@base_30:inject 11:33:r0:load@base_31:inject 12:41:r1:sub@base_39:inject 13:44:r2:rotl@base_29:bijective 14:52:r1:sub@base_49:inject 15:63:r5:or@base_58:lossy +igneum-ca3-v4-uniform/743 fa0887aceb410b11 0 0:2:0 1:1:0 2:1:1 3:0:0 4:2:2 5:2:1 6:1:1 7:1:0 8:2:0 9:0:0 10:0:0 11:2:0 12:2:1 13:1:0 14:0:0 15:2:0 1 0 0 1 0 0:2:r3:xor@base_1:inject 1:5:r4:load@base_2:inject 2:7:r7:sub@base_4:inject 3:14:r0:shfl@base_6:inject 4:15:r7:load@base_14:inject 5:16:r4:load@base_15:inject 6:23:r3:shfl@base_22:inject 7:24:r6:shfl@base_19:inject 8:27:r0:load@base_23:inject 9:29:r2:sub@base_25:inject 10:33:r5:add@base_31:inject 11:35:r0:load@base_33:inject 12:39:r3:mul@base_34:lossy 13:40:r4:rotl@base_37:bijective 14:48:r3:xor@base_44:inject 15:51:r7:load@base_29:inject +igneum-ca3-v4-uniform/744 85579798370b0171 0 0:0:0 1:2:2 2:2:1 3:0:0 4:0:0 5:1:0 6:2:2 7:2:2 8:1:0 9:2:3 10:1:1 11:0:0 12:2:0 13:1:0 14:1:1 15:1:0 2 0 0 0 2 0:3:r2:rotr@base_0:bijective 1:12:r2:xor@base_11:inject 2:13:r5:add@base_6:inject 3:20:r4:load@base_12:inject 4:23:r6:mulhi@base_15:lossy 5:25:r1:rotr@base_19:bijective 6:28:r7:add@base_21:inject 7:31:r5:load@base_23:inject 8:38:r0:mulhi@base_37:lossy 9:41:r3:add@base_26:inject 10:44:r1:load@base_38:inject 11:53:r2:xor@base_36:inject 12:56:r4:mad@base_46:inject 13:59:r5:xor@base_32:inject 14:60:r7:xor@base_42:inject 15:62:r6:load@base_56:inject +igneum-ca3-v4-uniform/745 4392e487d3702496 0 0:1:0 1:0:0 2:0:0 3:2:1 4:1:1 5:1:0 6:2:0 7:1:1 8:2:3 9:2:3 10:0:0 11:2:2 12:0:0 13:0:0 14:0:0 15:0:0 5 0 0 3 2 0:1:r7:mulhi@base_0:lossy 1:2:r3:load@base_1:inject 2:3:r7:load@base_2:inject 3:4:r0:load@base_3:inject 4:6:r4:xor@base_5:inject 5:12:r2:rotl@base_9:bijective 6:20:r4:mulhi@base_16:lossy 7:24:r1:mul@base_18:lossy 8:28:r3:mul@base_10:lossy 9:29:r6:load@base_20:inject 10:36:r1:xor@base_35:inject 11:38:r3:add@base_33:inject 12:44:r2:shfl@base_43:inject 13:50:r7:load@base_38:inject 14:52:r6:mul@base_40:lossy 15:54:r0:shfl@base_32:inject +igneum-ca3-v4-uniform/746 7f7b3cdfcbaf0ce3 0 0:2:3 1:0:0 2:2:3 3:2:3 4:2:1 5:2:1 6:1:1 7:2:3 8:0:0 9:1:1 10:0:0 11:0:0 12:0:0 13:0:0 14:2:3 15:0:0 4 1 0 3 0 0:6:r3:rotl@base_5:bijective 1:7:r4:mad@base_3:inject 2:11:r2:mul@base_10:lossy 3:21:r1:sub@base_20:inject 4:23:r3:mul@base_16:lossy 5:24:r0:load@base_11:inject 6:29:r6:rotr@base_28:bijective 7:33:r2:or@base_31:lossy 8:36:r7:mul@base_32:lossy 9:37:r5:rotl@base_19:bijective 10:42:r3:xor@base_34:inject 11:45:r2:rotr@base_43:bijective 12:49:r7:xor@base_46:inject 13:54:r5:shfl@base_50:inject 14:57:r4:load@base_54:inject 15:60:r6:shfl@base_55:inject +igneum-ca3-v4-uniform/747 7eafda46e88c37a7 0 0:0:0 1:0:0 2:2:1 3:1:1 4:2:0 5:0:0 6:2:0 7:2:1 8:0:0 9:1:0 10:0:0 11:1:0 12:1:1 13:2:0 14:1:1 15:1:1 2 1 0 0 1 0:8:r5:sub@base_5:inject 1:11:r3:xor@base_7:inject 2:19:r6:rotr@base_18:bijective 3:20:r5:load@base_19:inject 4:23:r1:load@base_20:inject 5:26:r0:xor@base_0:inject 6:28:r4:sub@base_22:inject 7:29:r1:load@base_28:inject 8:38:r1:or@base_31:lossy 9:39:r4:load@base_38:inject 10:41:r7:sub@base_40:inject 11:42:r2:shfl@base_14:inject 12:46:r5:load@base_39:inject 13:60:r1:load@base_42:inject 14:62:r4:load@base_46:inject 15:63:r0:mulhi@base_59:lossy +igneum-ca3-v4-uniform/748 e118a09aff18ba7f 0 0:0:0 1:2:1 2:1:0 3:1:0 4:2:2 5:0:0 6:1:0 7:2:3 8:1:1 9:0:0 10:1:1 11:1:1 12:1:0 13:2:1 14:2:3 15:1:0 3 1 0 2 0 0:2:r3:sub@base_0:inject 1:12:r1:xor@base_4:inject 2:18:r6:load@base_12:inject 3:24:r4:shfl@base_19:inject 4:25:r0:shfl@base_16:inject 5:26:r3:load@base_24:inject 6:27:r1:rotl@base_17:bijective 7:33:r5:mul@base_28:lossy 8:41:r3:or@base_34:lossy 9:44:r6:mul@base_39:lossy 10:46:r1:shfl@base_43:inject 11:49:r2:load@base_46:inject 12:54:r0:sub@base_53:inject 13:55:r4:rotl@base_51:bijective 14:59:r6:load@base_55:inject 15:62:r4:load@base_59:inject +igneum-ca3-v4-uniform/749 c555184743bc599e 0 0:1:0 1:0:0 2:2:0 3:2:1 4:2:3 5:0:0 6:1:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:0:0 13:0:0 14:1:1 15:2:1 4 0 0 0 4 0:5:r2:sub@base_1:inject 1:7:r4:load@base_5:inject 2:12:r4:rotr@base_10:bijective 3:20:r7:shfl@base_13:inject 4:30:r6:mulhi@base_23:lossy 5:32:r4:mulhi@base_26:lossy 6:33:r7:xor@base_24:inject 7:34:r3:rotr@base_28:bijective 8:35:r0:load@base_30:inject 9:36:r5:sub@base_11:inject 10:43:r7:rotr@base_37:bijective 11:50:r5:shfl@base_48:inject 12:55:r1:load@base_50:inject 13:57:r0:mulhi@base_45:lossy 14:58:r2:add@base_54:inject 15:62:r5:mulhi@base_51:lossy +igneum-ca3-v4-uniform/750 9d557966895baf8d 0 0:2:1 1:2:3 2:1:0 3:1:0 4:0:0 5:1:1 6:0:0 7:0:0 8:0:0 9:2:1 10:2:2 11:1:1 12:1:0 13:1:0 14:0:0 15:1:0 4 1 0 0 3 0:4:r4:sub@base_1:inject 1:5:r1:load@base_4:inject 2:11:r7:load@base_5:inject 3:17:r5:sub@base_3:inject 4:21:r3:load@base_17:inject 5:22:r0:mulhi@base_12:lossy 6:28:r7:mulhi@base_26:lossy 7:30:r5:or@base_27:lossy 8:37:r3:load@base_28:inject 9:42:r5:mad@base_40:inject 10:44:r3:mad@base_41:inject 11:47:r7:load@base_30:inject 12:48:r2:load@base_37:inject 13:49:r6:add@base_35:inject 14:53:r1:mulhi@base_24:lossy 15:57:r4:load@base_49:inject +igneum-ca3-v4-uniform/751 5efae0c792cbcdd1 0 0:1:1 1:1:1 2:0:0 3:2:3 4:1:0 5:2:3 6:2:1 7:1:1 8:0:0 9:2:3 10:1:1 11:1:1 12:1:0 13:0:0 14:2:3 15:0:0 1 1 0 0 0 0:6:r2:sub@base_5:inject 1:9:r6:load@base_6:inject 2:12:r1:rotr@base_4:bijective 3:21:r4:load@base_12:inject 4:26:r6:rotl@base_25:bijective 5:29:r2:add@base_16:inject 6:31:r0:load@base_26:inject 7:32:r1:load@base_29:inject 8:33:r3:mad@base_24:inject 9:41:r5:rotl@base_38:bijective 10:44:r7:or@base_28:lossy 11:45:r2:xor@base_42:inject 12:48:r0:sub@base_47:inject 13:50:r3:load@base_45:inject 14:59:r1:sub@base_52:inject 15:61:r7:sub@base_58:inject +igneum-ca3-v4-uniform/752 13ba1ce85b393787 0 0:1:0 1:2:2 2:0:0 3:2:0 4:2:2 5:0:0 6:1:0 7:2:0 8:0:0 9:1:1 10:2:3 11:2:0 12:1:0 13:0:0 14:2:2 15:2:0 3 0 0 3 0 0:1:r2:add@shadow_252:inject 1:3:r6:mad@base_2:inject 2:6:r5:load@base_1:inject 3:18:r3:mul@base_12:lossy 4:20:r2:add@base_17:inject 5:23:r5:add@base_21:inject 6:24:r0:shfl@base_7:inject 7:33:r1:mul@base_28:lossy 8:42:r3:xor@base_36:inject 9:44:r4:sub@base_41:inject 10:45:r5:load@base_44:inject 11:46:r7:mul@base_43:lossy 12:49:r6:load@base_42:inject 13:50:r7:add@base_48:inject 14:57:r5:rotl@base_56:bijective 15:63:r1:load@base_49:inject +igneum-ca3-v4-uniform/753 81e9defb77fe21ba 0 0:2:0 1:0:0 2:0:0 3:1:0 4:2:3 5:2:0 6:2:1 7:2:3 8:1:1 9:0:0 10:2:0 11:1:0 12:0:0 13:2:3 14:0:0 15:1:1 4 0 0 2 2 0:1:r1:mul@base_0:lossy 1:3:r6:xor@base_2:inject 2:7:r2:xor@base_6:inject 3:9:r1:add@base_5:inject 4:11:r5:mul@base_8:lossy 5:12:r7:load@base_11:inject 6:14:r4:load@base_9:inject 7:16:r1:add@base_13:inject 8:18:r3:load@base_16:inject 9:34:r6:rotl@base_23:bijective 10:37:r4:mulhi@base_30:lossy 11:44:r0:xor@base_43:inject 12:47:r2:mad@base_40:inject 13:51:r0:add@base_46:inject 14:55:r5:load@base_51:inject 15:58:r6:mulhi@base_53:lossy +igneum-ca3-v4-uniform/754 0fa64cf6daa303f8 0 0:2:1 1:1:1 2:1:0 3:0:0 4:2:0 5:1:0 6:0:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:1:0 13:2:0 14:1:0 15:0:0 4 1 0 3 0 0:2:r3:mul@base_1:lossy 1:8:r1:xor@base_6:inject 2:10:r2:xor@base_7:inject 3:11:r7:load@base_8:inject 4:12:r5:load@base_10:inject 5:15:r1:mad@base_13:inject 6:19:r5:mad@base_18:inject 7:26:r1:mul@base_16:lossy 8:27:r3:sub@base_23:inject 9:31:r0:or@base_28:lossy 10:41:r2:mul@base_37:lossy 11:43:r3:add@base_42:inject 12:46:r3:shfl@base_45:inject 13:54:r1:rotr@base_52:bijective 14:57:r2:add@base_56:inject 15:61:r5:shfl@base_40:inject +igneum-ca3-v4-uniform/755 9dc987c1fe302add 0 0:1:0 1:0:0 2:0:0 3:2:0 4:2:0 5:1:0 6:1:0 7:2:3 8:2:0 9:1:1 10:0:0 11:1:1 12:0:0 13:2:2 14:1:1 15:1:0 2 0 0 0 2 0:5:r1:mulhi@base_4:lossy 1:6:r7:shfl@base_1:inject 2:7:r4:load@base_5:inject 3:9:r0:load@base_6:inject 4:10:r2:mulhi@base_8:lossy 5:20:r3:xor@base_12:inject 6:27:r0:rotl@base_26:bijective 7:34:r1:mad@base_32:inject 8:36:r6:mad@base_30:inject 9:40:r5:sub@base_39:inject 10:46:r1:rotl@base_44:bijective 11:49:r4:add@base_45:inject 12:51:r0:rotl@base_48:bijective 13:59:r2:load@base_51:inject 14:61:r3:load@base_40:inject 15:62:r0:load@base_59:inject +igneum-ca3-v4-uniform/756 bb8ee8b35e0d05ae 0 0:0:0 1:2:0 2:1:0 3:1:1 4:0:0 5:1:1 6:1:0 7:0:0 8:1:1 9:0:0 10:2:1 11:2:3 12:1:0 13:2:1 14:1:0 15:2:1 3 0 0 1 2 0:4:r3:xor@base_3:inject 1:6:r4:mulhi@base_2:lossy 2:7:r2:add@base_5:inject 3:8:r7:load@base_4:inject 4:9:r6:load@base_7:inject 5:17:r5:shfl@base_12:inject 6:19:r1:mad@base_10:inject 7:23:r0:rotr@base_18:bijective 8:25:r3:mulhi@base_16:lossy 9:29:r5:load@base_23:inject 10:30:r6:mul@base_27:lossy 11:47:r0:mad@base_41:inject 12:53:r7:shfl@base_51:inject 13:54:r3:load@base_47:inject 14:59:r6:rotl@base_45:bijective 15:61:r1:load@base_59:inject +igneum-ca3-v4-uniform/757 3bb97596796fadec 0 0:1:1 1:1:1 2:2:1 3:2:0 4:1:0 5:0:0 6:0:0 7:1:0 8:2:2 9:1:1 10:1:1 11:2:1 12:0:0 13:2:2 14:1:1 15:1:0 0 0 0 0 0 0:7:r0:mad@base_5:inject 1:8:r7:load@base_7:inject 2:12:r0:xor@base_11:inject 3:17:r7:mad@base_14:inject 4:19:r1:load@base_17:inject 5:20:r2:load@base_8:inject 6:24:r4:add@base_23:inject 7:25:r1:load@base_24:inject 8:27:r6:load@base_12:inject 9:31:r3:load@base_20:inject 10:39:r3:add@base_35:inject 11:43:r1:shfl@base_41:inject 12:48:r5:rotr@base_30:bijective 13:49:r7:load@base_43:inject 14:57:r4:mad@base_38:inject 15:59:r2:rotl@base_46:bijective +igneum-ca3-v4-uniform/758 1c1477903daaf80f 0 0:0:0 1:1:0 2:0:0 3:0:0 4:1:0 5:2:2 6:0:0 7:1:0 8:1:1 9:2:2 10:1:1 11:1:0 12:0:0 13:0:0 14:2:3 15:0:0 2 0 0 0 2 0:4:r1:add@base_0:inject 1:5:r4:load@base_4:inject 2:10:r3:shfl@base_9:inject 3:14:r1:shfl@base_7:inject 4:15:r7:rotr@base_13:bijective 5:22:r6:shfl@base_21:inject 6:23:r2:add@base_19:inject 7:34:r1:mulhi@base_30:lossy 8:39:r1:mulhi@base_38:lossy 9:40:r5:mad@base_37:inject 10:45:r3:shfl@base_41:inject 11:48:r5:load@base_45:inject 12:50:r1:sub@base_47:inject 13:54:r4:rotr@base_46:bijective 14:58:r3:add@base_56:inject 15:60:r0:load@base_58:inject +igneum-ca3-v4-uniform/759 0a2fa1d63c103d12 0 0:2:0 1:0:0 2:2:2 3:2:2 4:0:0 5:1:1 6:0:0 7:2:2 8:2:2 9:1:1 10:0:0 11:0:0 12:0:0 13:2:3 14:2:0 15:1:0 1 0 0 0 1 0:3:r4:mulhi@base_1:lossy 1:7:r3:sub@base_4:inject 2:12:r6:xor@base_11:inject 3:16:r1:xor@base_9:inject 4:21:r3:add@base_19:inject 5:22:r0:xor@base_6:inject 6:31:r5:add@base_26:inject 7:37:r3:sub@base_23:inject 8:38:r6:add@base_14:inject 9:39:r2:rotr@base_36:bijective 10:40:r1:load@base_21:inject 11:43:r1:sub@base_42:inject 12:49:r4:load@base_40:inject 13:52:r6:rotr@base_45:bijective 14:62:r3:load@base_49:inject 15:63:r7:load@base_52:inject +igneum-ca3-v4-uniform/760 9e4667e3ef1c676f 0 0:2:1 1:1:0 2:1:0 3:0:0 4:0:0 5:1:1 6:0:0 7:1:0 8:2:1 9:1:0 10:1:0 11:0:0 12:1:1 13:2:0 14:0:0 15:2:1 4 0 0 4 0 0:3:r3:add@base_1:inject 1:8:r1:load@base_3:inject 2:11:r3:sub@base_10:inject 3:14:r7:rotr@base_2:bijective 4:15:r0:load@base_14:inject 5:22:r7:rotl@base_19:bijective 6:32:r0:xor@base_25:inject 7:34:r6:load@base_32:inject 8:35:r2:load@base_34:inject 9:42:r5:mad@base_37:inject 10:43:r7:mul@base_39:lossy 11:45:r6:mul@base_41:lossy 12:46:r3:load@base_43:inject 13:48:r4:load@base_46:inject 14:49:r2:mul@base_44:lossy 15:58:r0:mul@base_57:lossy +igneum-ca3-v4-uniform/761 88a91daac3d807d0 0 0:1:0 1:2:2 2:0:0 3:0:0 4:1:1 5:1:0 6:2:3 7:1:0 8:0:0 9:0:0 10:1:0 11:1:0 12:0:0 13:0:0 14:0:0 15:1:1 3 1 0 2 0 0:8:r0:mad@base_5:inject 1:13:r4:mul@base_1:lossy 2:14:r1:load@base_8:inject 3:18:r2:load@base_14:inject 4:20:r6:load@base_18:inject 5:26:r1:xor@base_16:inject 6:28:r5:add@base_21:inject 7:33:r1:rotl@base_30:bijective 8:36:r3:rotr@base_32:bijective 9:38:r7:load@base_36:inject 10:44:r0:mul@base_23:lossy 11:50:r5:or@base_45:lossy 12:51:r2:add@base_31:inject 13:58:r1:xor@base_55:inject 14:62:r3:add@base_61:inject 15:63:r5:shfl@base_60:inject +igneum-ca3-v4-uniform/762 928e8752405aef5e 0 0:2:0 1:0:0 2:1:0 3:1:1 4:2:2 5:2:1 6:1:1 7:0:0 8:1:1 9:2:2 10:0:0 11:1:0 12:0:0 13:0:0 14:2:1 15:0:0 1 0 0 0 1 0:2:r3:rotr@base_0:bijective 1:11:r6:sub@base_10:inject 2:24:r5:rotl@base_21:bijective 3:25:r7:load@base_24:inject 4:27:r2:sub@base_23:inject 5:28:r6:load@base_25:inject 6:34:r5:mulhi@base_29:lossy 7:35:r3:load@base_34:inject 8:41:r2:rotr@base_40:bijective 9:45:r7:add@base_44:inject 10:51:r7:rotr@base_49:bijective 11:53:r0:add@base_18:inject 12:54:r1:load@base_51:inject 13:60:r1:add@base_58:inject 14:61:r6:load@base_60:inject 15:62:r0:load@base_61:inject +igneum-ca3-v4-uniform/763 de2727c1d7ea44a7 0 0:2:1 1:2:1 2:2:0 3:1:0 4:2:0 5:0:0 6:2:0 7:2:0 8:1:1 9:2:3 10:2:2 11:1:1 12:1:0 13:1:0 14:0:0 15:1:0 2 0 0 1 1 0:3:r2:mul@base_2:lossy 1:5:r2:add@base_4:inject 2:6:r3:load@base_5:inject 3:7:r6:load@base_6:inject 4:19:r6:sub@base_14:inject 5:24:r2:rotr@base_23:bijective 6:29:r1:load@base_24:inject 7:30:r2:mulhi@base_27:lossy 8:31:r4:shfl@base_21:inject 9:33:r0:rotl@base_16:bijective 10:39:r5:add@base_37:inject 11:43:r7:xor@base_40:inject 12:49:r3:mad@base_45:inject 13:53:r7:shfl@base_51:inject 14:60:r1:add@base_55:inject 15:61:r4:rotl@base_59:bijective +igneum-ca3-v4-uniform/764 9cb1dbe7f2b7388b 0 0:0:0 1:1:0 2:2:2 3:1:1 4:0:0 5:1:0 6:0:0 7:2:0 8:0:0 9:2:0 10:2:2 11:0:0 12:0:0 13:0:0 14:1:1 15:0:0 0 0 0 0 0 0:2:r5:add@base_0:inject 1:9:r3:rotr@base_4:bijective 2:10:r1:load@base_9:inject 3:11:r0:add@base_7:inject 4:26:r2:rotl@base_24:bijective 5:30:r0:mad@base_27:inject 6:33:r1:rotl@base_29:bijective 7:36:r7:shfl@base_34:inject 8:48:r0:add@base_41:inject 9:50:r4:add@base_43:inject 10:54:r3:rotl@base_31:bijective 11:55:r5:mad@base_25:inject 12:57:r2:add@base_52:inject 13:58:r6:shfl@base_53:inject 14:61:r5:add@base_59:inject 15:62:r7:load@base_57:inject +igneum-ca3-v4-uniform/765 acd470ad77f433cf 0 0:2:2 1:1:0 2:0:0 3:0:0 4:1:0 5:0:0 6:2:1 7:1:1 8:1:0 9:0:0 10:0:0 11:2:2 12:0:0 13:1:1 14:0:0 15:1:1 3 2 0 0 1 0:2:r3:or@base_0:lossy 1:4:r5:load@base_2:inject 2:5:r1:load@base_4:inject 3:8:r7:shfl@base_3:inject 4:16:r4:or@base_12:lossy 5:18:r5:load@base_16:inject 6:21:r1:add@base_20:inject 7:22:r2:mad@base_19:inject 8:23:r0:load@base_21:inject 9:26:r4:xor@base_24:inject 10:32:r7:rotr@base_25:bijective 11:34:r6:rotl@base_29:bijective 12:39:r7:mulhi@base_38:lossy 13:52:r5:xor@base_48:inject 14:57:r3:mad@base_53:inject 15:62:r2:mad@base_56:inject +igneum-ca3-v4-uniform/766 b563240c727b7a47 0 0:1:0 1:1:1 2:1:0 3:1:0 4:0:0 5:2:1 6:0:0 7:1:0 8:1:1 9:2:1 10:2:3 11:0:0 12:1:0 13:1:1 14:2:1 15:1:1 0 0 0 0 0 0:16:r0:sub@base_11:inject 1:19:r3:add@base_6:inject 2:20:r2:load@base_16:inject 3:22:r5:rotr@base_15:bijective 4:25:r0:xor@base_24:inject 5:26:r1:load@base_25:inject 6:29:r3:load@base_20:inject 7:31:r4:load@base_26:inject 8:32:r7:mad@base_30:inject 9:41:r6:load@base_31:inject 10:45:r3:xor@base_44:inject 11:47:r0:xor@base_38:inject 12:48:r2:xor@base_35:inject 13:51:r4:add@base_50:inject 14:53:r0:rotl@base_49:bijective 15:56:r5:sub@base_55:inject +igneum-ca3-v4-uniform/767 a6f23751b10604dc 0 0:0:0 1:0:0 2:0:0 3:1:0 4:2:0 5:2:1 6:1:1 7:0:0 8:2:1 9:1:0 10:0:0 11:1:0 12:0:0 13:0:0 14:2:0 15:2:0 4 0 0 2 2 0:2:r4:xor@base_0:inject 1:6:r7:mulhi@base_4:lossy 2:8:r1:load@base_2:inject 3:9:r7:load@base_8:inject 4:10:r5:sub@base_5:inject 5:16:r6:load@base_9:inject 6:17:r3:rotr@base_14:bijective 7:25:r1:mulhi@base_23:lossy 8:30:r4:shfl@base_21:inject 9:32:r6:rotl@base_31:bijective 10:41:r2:mul@base_37:lossy 11:43:r7:sub@base_40:inject 12:53:r5:rotl@base_36:bijective 13:54:r1:xor@base_51:inject 14:59:r0:xor@base_56:inject 15:61:r6:mul@base_60:lossy +igneum-ca3-v4-uniform/768 bc5d9ee3ec375910 0 0:0:0 1:1:0 2:1:1 3:0:0 4:1:0 5:0:0 6:2:0 7:2:1 8:1:1 9:2:1 10:1:0 11:1:1 12:2:3 13:0:0 14:1:0 15:2:3 3 2 0 0 1 0:4:r5:or@base_3:lossy 1:6:r2:sub@base_2:inject 2:10:r4:xor@base_7:inject 3:11:r7:sub@base_8:inject 4:14:r2:add@base_12:inject 5:28:r4:add@base_24:inject 6:30:r6:xor@base_17:inject 7:31:r5:mad@base_23:inject 8:34:r6:rotr@base_32:bijective 9:43:r4:xor@base_40:inject 10:45:r3:load@base_28:inject 11:49:r1:rotl@base_37:bijective 12:54:r6:or@base_46:lossy 13:56:r7:load@base_49:inject 14:57:r0:sub@base_52:inject 15:63:r4:mulhi@base_59:lossy +igneum-ca3-v4-uniform/769 43079e71d061722c 0 0:1:0 1:0:0 2:2:0 3:0:0 4:2:1 5:0:0 6:2:0 7:0:0 8:1:0 9:0:0 10:0:0 11:2:2 12:2:1 13:0:0 14:0:0 15:2:1 2 0 0 2 0 0:1:r1:mul@base_0:lossy 1:7:r2:mad@base_6:inject 2:17:r3:mul@base_2:lossy 3:19:r1:load@base_17:inject 4:26:r7:mad@base_22:inject 5:27:r2:add@base_14:inject 6:28:r0:load@base_27:inject 7:32:r6:xor@base_30:inject 8:33:r3:load@base_32:inject 9:37:r2:mad@base_36:inject 10:40:r5:load@base_28:inject 11:43:r6:add@base_42:inject 12:50:r5:add@base_49:inject 13:57:r0:mad@base_39:inject 14:60:r3:shfl@base_54:inject 15:63:r1:xor@base_61:inject +igneum-ca3-v4-uniform/770 95ba83f696493236 0 0:2:3 1:0:0 2:2:2 3:1:0 4:0:0 5:1:1 6:2:1 7:0:0 8:2:2 9:1:0 10:1:0 11:2:0 12:2:2 13:1:1 14:0:0 15:2:3 3 1 0 2 0 0:2:r6:shfl@base_1:inject 1:7:r3:add@base_4:inject 2:10:r7:mul@base_9:lossy 3:16:r0:load@base_10:inject 4:22:r2:xor@base_20:inject 5:27:r1:sub@base_21:inject 6:28:r7:rotl@base_19:bijective 7:31:r1:add@base_30:inject 8:39:r7:add@base_38:inject 9:43:r4:shfl@base_37:inject 10:45:r6:load@base_31:inject 11:46:r1:load@base_43:inject 12:47:r0:xor@base_34:inject 13:48:r5:or@base_44:lossy 14:54:r2:mul@base_53:lossy 15:57:r7:sub@base_51:inject +igneum-ca3-v4-uniform/771 a1cb386c543c1e2d 0 0:2:1 1:1:1 2:2:0 3:2:0 4:2:2 5:0:0 6:2:3 7:1:0 8:2:1 9:0:0 10:2:0 11:0:0 12:2:3 13:2:2 14:0:0 15:2:3 1 0 0 1 0 0:1:r7:shfl@base_0:inject 1:9:r2:load@base_1:inject 2:12:r7:load@base_9:inject 3:14:r2:shfl@base_11:inject 4:16:r4:sub@base_13:inject 5:28:r6:shfl@base_25:inject 6:31:r1:load@base_28:inject 7:39:r5:rotr@base_18:bijective 8:40:r0:rotl@base_23:bijective 9:42:r3:xor@base_19:inject 10:44:r6:load@base_31:inject 11:49:r7:mul@base_41:lossy 12:50:r2:load@base_39:inject 13:54:r1:load@base_50:inject 14:56:r6:load@base_54:inject 15:61:r0:add@base_57:inject +igneum-ca3-v4-uniform/772 1224152c8facba58 0 0:1:0 1:0:0 2:1:1 3:0:0 4:0:0 5:1:1 6:0:0 7:1:1 8:1:0 9:2:2 10:0:0 11:1:0 12:2:0 13:2:3 14:1:1 15:0:0 6 0 0 2 4 0:3:r1:mulhi@base_0:lossy 1:14:r6:sub@base_7:inject 2:19:r7:mul@base_5:lossy 3:22:r4:shfl@base_15:inject 4:28:r4:mad@base_27:inject 5:29:r2:rotr@base_24:bijective 6:35:r6:mad@base_31:inject 7:38:r7:load@base_35:inject 8:40:r4:mulhi@base_36:lossy 9:45:r7:mul@base_42:lossy 10:47:r1:load@base_38:inject 11:55:r5:mulhi@base_26:lossy 12:57:r0:mulhi@base_52:lossy 13:58:r4:xor@base_56:inject 14:62:r5:mad@base_60:inject 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/773 c863fa27a50ff8fe 0 0:0:0 1:0:0 2:1:1 3:2:0 4:1:0 5:1:1 6:1:1 7:1:1 8:2:1 9:2:0 10:2:1 11:2:0 12:1:0 13:1:0 14:1:1 15:2:0 2 0 0 1 1 0:5:r6:xor@base_3:inject 1:8:r5:load@base_5:inject 2:9:r0:load@base_8:inject 3:10:r4:shfl@base_1:inject 4:12:r1:mul@base_0:lossy 5:13:r2:load@base_12:inject 6:21:r7:shfl@base_20:inject 7:38:r3:add@base_27:inject 8:44:r5:sub@base_37:inject 9:46:r0:xor@base_42:inject 10:48:r7:load@base_38:inject 11:49:r5:mulhi@base_47:lossy 12:51:r2:load@base_44:inject 13:54:r1:sub@base_30:inject 14:57:r4:sub@base_56:inject 15:58:r2:sub@base_55:inject +igneum-ca3-v4-uniform/774 70cb01b46a6fcee3 0 0:0:0 1:0:0 2:2:1 3:2:0 4:2:1 5:1:1 6:0:0 7:0:0 8:0:0 9:1:0 10:2:1 11:2:2 12:2:1 13:2:2 14:0:0 15:0:0 2 1 0 1 0 0:2:r0:add@base_0:inject 1:4:r6:load@base_2:inject 2:5:r4:mul@base_3:lossy 3:14:r6:or@base_13:lossy 4:21:r4:shfl@base_11:inject 5:24:r2:rotl@base_17:bijective 6:26:r5:mad@base_20:inject 7:28:r3:load@base_24:inject 8:30:r0:mad@base_27:inject 9:31:r2:load@base_28:inject 10:33:r3:load@base_30:inject 11:34:r4:add@base_32:inject 12:36:r5:load@base_31:inject 13:40:r4:rotr@base_39:bijective 14:47:r2:rotl@base_44:bijective 15:49:r4:load@base_47:inject +igneum-ca3-v4-uniform/775 05e152016fe920f5 0 0:0:0 1:2:0 2:0:0 3:0:0 4:0:0 5:0:0 6:1:0 7:2:2 8:2:0 9:0:0 10:1:1 11:2:1 12:0:0 13:1:1 14:1:1 15:1:0 3 2 2 0 1 0:6:r7:rotl@base_4:bijective 1:9:r6:add@base_8:inject 2:12:r1:shfl@base_7:inject 3:15:r3:mulhi@base_11:lossy 4:28:r2:rotr@base_25:bijective 5:29:r3:or@base_21:lossy-or-chain1 6:30:r7:add@base_20:inject 7:38:r6:add@base_33:inject 8:39:r2:add@base_36:inject 9:47:r2:mad@base_40:inject 10:52:r3:or@base_45:lossy-or-chain1 11:54:r7:load@base_47:inject 12:58:r2:xor@base_49:inject 13:59:r0:mad@base_50:inject 14:62:r2:rotl@base_61:bijective 15:63:r6:rotr@base_55:bijective +igneum-ca3-v4-uniform/776 b676749b5f0ce412 0 0:0:0 1:2:2 2:0:0 3:0:0 4:0:0 5:2:2 6:1:1 7:0:0 8:0:0 9:0:0 10:2:1 11:0:0 12:0:0 13:2:1 14:0:0 15:1:1 1 0 0 1 0 0:1:r3:rotl@base_0:bijective 1:2:r1:load@base_1:inject 2:5:r5:add@base_4:inject 3:6:r2:load@base_5:inject 4:7:r0:load@base_6:inject 5:13:r3:mul@base_8:lossy 6:15:r4:add@base_14:inject 7:16:r2:load@base_15:inject 8:29:r1:load@base_7:inject 9:52:r4:add@base_51:inject 10:55:r0:rotr@base_42:bijective 11:57:r3:shfl@base_50:inject 12:58:r6:xor@base_53:inject 13:61:r2:rotl@base_54:bijective 14:62:r6:rotl@base_60:bijective 15:63:r7:load@base_61:inject +igneum-ca3-v4-uniform/777 560745cc3543da68 0 0:2:0 1:2:1 2:0:0 3:1:0 4:1:1 5:0:0 6:0:0 7:0:0 8:2:1 9:2:1 10:2:0 11:0:0 12:1:1 13:2:0 14:0:0 15:2:3 4 1 0 3 0 0:2:r0:sub@base_0:inject 1:8:r3:mul@base_7:lossy 2:19:r5:load@base_2:inject 3:22:r0:shfl@base_16:inject 4:23:r7:sub@base_17:inject 5:25:r4:mul@base_12:lossy 6:37:r6:mul@base_21:lossy 7:39:r7:rotr@base_38:bijective 8:42:r7:or@base_40:lossy 9:44:r2:rotr@base_29:bijective 10:45:r5:load@base_42:inject 11:47:r0:shfl@base_34:inject 12:49:r1:sub@base_35:inject 13:53:r3:load@base_47:inject 14:54:r7:load@base_45:inject 15:59:r4:load@base_54:inject +igneum-ca3-v4-uniform/778 7c371159dfda0894 0 0:2:0 1:1:0 2:0:0 3:2:3 4:0:0 5:1:1 6:0:0 7:0:0 8:2:2 9:2:2 10:1:1 11:0:0 12:2:1 13:2:2 14:1:1 15:2:3 4 2 0 1 1 0:3:r2:mad@base_1:inject 1:7:r1:load@base_3:inject 2:9:r0:shfl@base_8:inject 3:11:r5:load@base_7:inject 4:12:r7:rotl@base_10:bijective 5:14:r6:or@base_2:lossy 6:16:r4:mulhi@base_15:lossy 7:17:r3:load@base_14:inject 8:18:r5:load@base_17:inject 9:19:r6:load@base_18:inject 10:28:r5:load@base_19:inject 11:29:r6:shfl@base_23:inject 12:35:r5:load@base_29:inject 13:48:r6:add@base_40:inject 14:49:r0:or@base_34:lossy 15:51:r7:mul@base_46:lossy +igneum-ca3-v4-uniform/779 f48f692fc1ce5e3d 0 0:1:0 1:2:2 2:1:1 3:2:0 4:0:0 5:1:1 6:1:0 7:1:0 8:2:1 9:0:0 10:1:1 11:0:0 12:0:0 13:2:0 14:1:0 15:2:1 4 1 0 2 1 0:7:r3:mul@base_3:lossy 1:12:r7:mad@base_9:inject 2:17:r6:shfl@base_14:inject 3:22:r4:add@base_20:inject 4:26:r0:add@base_23:inject 5:29:r1:load@base_26:inject 6:31:r4:rotl@base_30:bijective 7:40:r3:add@base_32:inject 8:43:r1:or@base_39:lossy 9:47:r2:add@base_45:inject 10:51:r6:mul@base_49:lossy 11:53:r0:mulhi@base_42:lossy 12:54:r2:load@base_51:inject 13:56:r3:mad@base_55:inject 14:59:r5:load@base_47:inject 15:63:r2:rotr@base_60:bijective +igneum-ca3-v4-uniform/780 ba6a7e2ea9e3baae 0 0:1:1 1:0:0 2:2:2 3:2:3 4:1:0 5:1:1 6:2:0 7:0:0 8:1:0 9:1:1 10:2:2 11:0:0 12:1:0 13:1:1 14:2:1 15:0:0 5 1 0 4 0 0:1:r6:or@base_0:lossy 1:19:r6:shfl@base_14:inject 2:21:r4:rotr@base_18:bijective 3:22:r5:load@base_21:inject 4:30:r0:mul@base_25:lossy 5:32:r6:load@base_30:inject 6:34:r4:rotr@base_33:bijective 7:37:r7:mul@base_31:lossy 8:43:r1:mad@base_42:inject 9:45:r5:mul@base_44:lossy 10:49:r0:sub@base_48:inject 11:50:r7:shfl@base_47:inject 12:55:r2:mul@base_53:lossy 13:56:r6:add@base_41:inject 14:57:r0:load@base_56:inject 15:61:r4:load@base_57:inject +igneum-ca3-v4-uniform/781 985cac65b0faf9a0 0 0:0:0 1:2:2 2:2:2 3:0:0 4:0:0 5:2:3 6:2:3 7:2:0 8:2:2 9:0:0 10:2:0 11:0:0 12:1:1 13:2:2 14:1:1 15:1:0 5 0 0 3 2 0:3:r4:mulhi@base_2:lossy 1:4:r3:load@base_3:inject 2:8:r6:mul@base_5:lossy 3:11:r5:load@base_4:inject 4:12:r3:load@base_11:inject 5:16:r1:load@base_12:inject 6:18:r4:rotr@base_15:bijective 7:22:r6:sub@base_19:inject 8:23:r7:add@base_9:inject 9:28:r4:mulhi@base_25:lossy 10:29:r3:load@base_22:inject 11:34:r6:mul@base_27:lossy 12:45:r6:rotl@base_43:bijective 13:47:r3:rotl@base_38:bijective 14:48:r4:mul@base_41:lossy 15:54:r2:xor@base_50:inject +igneum-ca3-v4-uniform/782 06711e61f7115d47 0 0:0:0 1:2:3 2:2:0 3:1:0 4:2:2 5:0:0 6:1:0 7:2:0 8:2:1 9:0:0 10:1:1 11:1:1 12:2:2 13:2:2 14:1:0 15:0:0 4 1 0 1 2 0:1:r5:rotr@base_0:bijective 1:6:r2:add@base_2:inject 2:9:r5:rotr@base_7:bijective 3:12:r7:sub@base_11:inject 4:15:r0:mulhi@base_13:lossy 5:24:r2:mul@base_23:lossy 6:31:r4:load@base_24:inject 7:34:r6:mulhi@base_32:lossy 8:35:r5:sub@base_30:inject 9:40:r3:xor@base_27:inject 10:45:r6:load@base_35:inject 11:51:r2:load@base_45:inject 12:56:r2:xor@base_55:inject 13:57:r5:load@base_56:inject 14:58:r3:rotr@base_43:bijective 15:60:r3:or@base_59:lossy +igneum-ca3-v4-uniform/783 116389bc0b14868c 0 0:1:0 1:2:0 2:1:0 3:0:0 4:2:1 5:1:0 6:1:1 7:1:1 8:2:1 9:0:0 10:0:0 11:1:1 12:1:1 13:2:3 14:0:0 15:1:0 4 1 0 3 0 0:1:r2:mul@base_0:lossy 1:5:r5:xor@base_2:inject 2:6:r7:load@base_5:inject 3:10:r2:mul@base_8:lossy 4:11:r0:sub@base_3:inject 5:13:r5:load@base_10:inject 6:16:r6:shfl@base_9:inject 7:22:r4:sub@base_21:inject 8:25:r3:rotl@base_23:bijective 9:29:r0:load@base_22:inject 10:36:r0:shfl@base_35:inject 11:43:r0:rotr@base_42:bijective 12:45:r3:or@base_33:lossy 13:52:r5:mul@base_40:lossy 14:56:r4:load@base_52:inject 15:58:r5:add@base_55:inject +igneum-ca3-v4-uniform/784 ec3aaed1bea9f097 0 0:0:0 1:1:0 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:1:1 8:1:1 9:1:0 10:2:2 11:1:0 12:2:3 13:1:1 14:2:1 15:2:3 4 0 0 2 2 0:4:r1:shfl@base_3:inject 1:5:r0:load@base_4:inject 2:8:r6:mul@base_7:lossy 3:9:r2:mad@base_1:inject 4:15:r2:sub@base_10:inject 5:24:r1:add@base_21:inject 6:27:r3:load@base_9:inject 7:33:r3:mad@base_31:inject 8:38:r4:load@base_33:inject 9:39:r7:add@base_28:inject 10:45:r7:mulhi@base_44:lossy 11:47:r3:add@base_36:inject 12:48:r7:mul@base_46:lossy 13:53:r6:mulhi@base_51:lossy 14:54:r3:load@base_48:inject 15:60:r7:load@base_54:inject +igneum-ca3-v4-uniform/785 79f63635286f8945 0 0:0:0 1:0:0 2:1:1 3:2:1 4:2:2 5:0:0 6:2:0 7:0:0 8:2:0 9:2:3 10:1:1 11:2:1 12:1:0 13:1:1 14:2:0 15:1:0 2 0 0 1 1 0:2:r6:add@base_0:inject 1:3:r3:load@base_2:inject 2:5:r0:load@base_3:inject 3:7:r2:add@base_1:inject 4:9:r3:mad@base_8:inject 5:14:r0:load@base_9:inject 6:18:r3:add@base_13:inject 7:22:r6:add@base_11:inject 8:28:r7:rotr@base_27:bijective 9:44:r5:mul@base_33:lossy 10:46:r4:mulhi@base_42:lossy 11:48:r1:rotl@base_41:bijective 12:51:r3:load@base_48:inject 13:53:r0:load@base_46:inject 14:58:r7:mad@base_47:inject 15:59:r2:load@base_53:inject +igneum-ca3-v4-uniform/786 018e0e8e35488885 0 0:0:0 1:0:0 2:0:0 3:2:1 4:0:0 5:0:0 6:0:0 7:0:0 8:1:0 9:2:2 10:1:1 11:0:0 12:0:0 13:0:0 14:1:1 15:2:1 3 0 0 1 2 0:1:r3:mul@base_0:lossy 1:4:r6:load@base_1:inject 2:6:r0:mulhi@base_5:lossy 3:8:r2:add@base_3:inject 4:10:r7:load@base_6:inject 5:11:r0:load@base_8:inject 6:17:r6:mulhi@base_12:lossy 7:24:r0:rotl@base_18:bijective 8:34:r2:mad@base_25:inject 9:36:r7:mad@base_31:inject 10:43:r4:add@base_26:inject 11:51:r2:add@base_46:inject 12:55:r6:shfl@base_48:inject 13:57:r7:load@base_55:inject 14:58:r5:load@base_51:inject 15:63:r0:load@base_57:inject +igneum-ca3-v4-uniform/787 1b905639bd24931d 0 0:1:0 1:0:0 2:1:1 3:0:0 4:2:3 5:2:0 6:1:0 7:0:0 8:2:0 9:2:3 10:0:0 11:0:0 12:1:0 13:2:1 14:1:1 15:2:0 3 0 0 1 2 0:1:r6:mulhi@base_0:lossy 1:6:r2:rotl@base_3:bijective 2:7:r0:load@base_1:inject 3:10:r6:mad@base_5:inject 4:16:r3:mulhi@base_14:lossy 5:18:r1:load@base_16:inject 6:24:r2:xor@base_13:inject 7:25:r0:mul@base_20:lossy 8:33:r1:shfl@base_30:inject 9:37:r6:rotr@base_34:bijective 10:39:r1:load@base_37:inject 11:44:r4:rotr@base_35:bijective 12:47:r7:xor@base_36:inject 13:48:r6:load@base_47:inject 14:49:r1:load@base_48:inject 15:60:r0:shfl@base_59:inject +igneum-ca3-v4-uniform/788 bb0320867d6df978 0 0:1:0 1:0:0 2:2:2 3:0:0 4:0:0 5:2:0 6:0:0 7:0:0 8:1:0 9:1:0 10:1:0 11:0:0 12:2:0 13:2:0 14:2:3 15:1:0 4 1 1 2 1 0:2:r4:mulhi@base_1:lossy 1:3:r1:load@base_2:inject 2:10:r4:rotl@base_4:bijective 3:12:r0:add@base_8:inject 4:17:r3:sub@base_15:inject 5:21:r6:rotr@base_20:bijective 6:26:r1:load@base_21:inject 7:43:r7:shfl@base_39:inject 8:44:r1:mad@base_35:inject 9:47:r6:rotl@base_29:bijective 10:49:r3:load@base_43:inject 11:51:r4:mad@base_48:inject 12:57:r5:load@base_47:inject 13:58:r0:or@base_56:lossy-or-chain1 14:59:r4:mul@base_54:lossy 15:60:r6:mul@base_52:lossy +igneum-ca3-v4-uniform/789 8b5de21cb1545b9a 0 0:0:0 1:2:1 2:0:0 3:1:0 4:2:3 5:2:1 6:2:1 7:1:1 8:1:1 9:1:1 10:2:2 11:0:0 12:1:1 13:0:0 14:1:1 15:2:2 0 0 0 0 0 0:4:r2:xor@base_2:inject 1:6:r1:xor@base_3:inject 2:7:r0:load@base_4:inject 3:13:r5:load@base_7:inject 4:14:r2:xor@base_12:inject 5:17:r7:xor@base_10:inject 6:20:r5:shfl@base_15:inject 7:26:r1:rotl@base_25:bijective 8:27:r4:load@base_13:inject 9:35:r3:shfl@base_31:inject 10:40:r7:load@base_26:inject 11:44:r3:mad@base_36:inject 12:56:r3:shfl@base_55:inject 13:59:r7:mad@base_57:inject 14:60:r0:shfl@base_52:inject 15:61:r4:load@base_60:inject +igneum-ca3-v4-uniform/790 bc62952da6e96122 0 0:1:1 1:0:0 2:0:0 3:0:0 4:2:3 5:0:0 6:0:0 7:0:0 8:0:0 9:0:0 10:2:2 11:2:3 12:2:0 13:1:1 14:0:0 15:1:0 3 1 0 0 2 0:2:r7:xor@base_0:inject 1:3:r0:load@base_2:inject 2:5:r0:add@base_4:inject 3:9:r4:mad@base_7:inject 4:11:r6:xor@base_10:inject 5:13:r5:mulhi@base_6:lossy 6:16:r4:add@base_14:inject 7:23:r6:load@base_13:inject 8:25:r7:rotl@base_21:bijective 9:26:r0:add@base_15:inject 10:36:r4:mulhi@base_33:lossy 11:49:r0:add@base_45:inject 12:51:r6:add@base_27:inject 13:52:r4:load@base_49:inject 14:60:r3:or@base_54:lossy 15:63:r2:add@base_48:inject +igneum-ca3-v4-uniform/791 e7ce66a8a2019d22 0 0:2:0 1:1:0 2:2:0 3:1:0 4:2:3 5:0:0 6:2:3 7:2:2 8:2:0 9:2:0 10:2:0 11:2:2 12:0:0 13:2:3 14:2:2 15:0:0 3 1 0 0 2 0:7:r1:mulhi@base_5:lossy 1:13:r3:mad@base_11:inject 2:16:r6:xor@base_4:inject 3:17:r2:load@base_16:inject 4:22:r0:or@base_21:lossy 5:25:r3:sub@base_24:inject 6:28:r5:load@base_13:inject 7:30:r3:load@base_28:inject 8:36:r0:shfl@base_26:inject 9:38:r7:xor@base_31:inject 10:41:r7:add@base_40:inject 11:43:r3:load@base_36:inject 12:48:r4:load@base_43:inject 13:58:r5:add@base_54:inject 14:59:r2:load@base_58:inject 15:63:r3:mulhi@base_61:lossy +igneum-ca3-v4-uniform/792 32219f247d7667b1 0 0:2:3 1:2:3 2:1:1 3:1:0 4:1:0 5:2:3 6:0:0 7:2:2 8:1:1 9:1:0 10:2:2 11:1:0 12:0:0 13:1:0 14:1:0 15:1:1 3 2 0 1 0 0:2:r7:shfl@base_1:inject 1:3:r0:load@base_2:inject 2:7:r0:rotr@base_4:bijective 3:15:r6:or@base_13:lossy 4:16:r1:load@base_15:inject 5:17:r6:load@base_16:inject 6:22:r4:load@base_17:inject 7:27:r6:xor@base_26:inject 8:28:r0:rotl@base_24:bijective 9:29:r2:load@base_27:inject 10:34:r7:or@base_32:lossy 11:40:r1:mul@base_33:lossy 12:41:r6:load@base_40:inject 13:51:r5:rotr@base_46:bijective 14:61:r4:xor@base_57:inject 15:63:r7:load@base_41:inject +igneum-ca3-v4-uniform/793 eb2a9d2fc9b7fea8 0 0:1:0 1:1:1 2:2:0 3:0:0 4:2:3 5:0:0 6:0:0 7:1:1 8:1:0 9:2:1 10:2:2 11:2:2 12:0:0 13:1:0 14:0:0 15:2:3 3 2 0 0 1 0:2:r0:sub@base_1:inject 1:4:r5:load@base_2:inject 2:7:r0:add@base_3:inject 3:10:r4:load@base_4:inject 4:14:r5:sub@base_11:inject 5:18:r0:mulhi@base_16:lossy 6:21:r1:mad@base_9:inject 7:24:r5:rotl@base_20:bijective 8:30:r6:xor@base_27:inject 9:42:r7:xor@base_39:inject 10:44:r0:or@base_43:lossy 11:46:r5:rotl@base_31:bijective 12:47:r0:load@base_46:inject 13:52:r7:or@base_48:lossy 14:57:r0:mad@base_53:inject 15:62:r1:sub@base_58:inject +igneum-ca3-v4-uniform/794 0ff06b988068f6a3 0 0:0:0 1:2:3 2:2:3 3:2:3 4:2:0 5:1:1 6:0:0 7:0:0 8:1:0 9:2:1 10:2:2 11:1:0 12:0:0 13:1:0 14:2:3 15:2:1 3 1 0 1 1 0:3:r2:or@base_2:lossy 1:4:r7:mul@base_1:lossy 2:5:r4:load@base_4:inject 3:10:r0:xor@base_6:inject 4:12:r1:load@base_10:inject 5:15:r5:shfl@base_9:inject 6:16:r2:load@base_15:inject 7:18:r0:load@base_12:inject 8:24:r5:xor@base_23:inject 9:26:r3:shfl@base_20:inject 10:30:r2:add@base_27:inject 11:31:r4:load@base_30:inject 12:34:r5:shfl@base_33:inject 13:49:r4:mulhi@base_40:lossy 14:55:r0:rotl@base_51:bijective 15:59:r6:rotl@base_57:bijective +igneum-ca3-v4-uniform/795 c4791b78c20e886f 0 0:0:0 1:1:0 2:2:0 3:1:1 4:0:0 5:0:0 6:2:1 7:2:3 8:1:1 9:1:0 10:2:2 11:2:3 12:1:1 13:1:0 14:1:0 15:0:0 3 1 0 0 2 0:4:r2:sub@base_3:inject 1:18:r6:add@base_6:inject 2:23:r3:rotl@base_21:bijective 3:32:r0:xor@base_27:inject 4:33:r5:mulhi@base_20:lossy 5:34:r1:or@base_30:lossy 6:35:r7:load@base_34:inject 7:40:r6:load@base_32:inject 8:42:r4:mulhi@base_39:lossy 9:44:r5:load@base_42:inject 10:45:r2:shfl@base_43:inject 11:47:r6:load@base_44:inject 12:49:r2:load@base_47:inject 13:52:r0:add@base_46:inject 14:53:r2:mad@base_50:inject 15:55:r5:load@base_53:inject +igneum-ca3-v4-uniform/796 edeb0a475962290f 0 0:1:0 1:0:0 2:0:0 3:1:0 4:2:2 5:0:0 6:0:0 7:0:0 8:1:1 9:1:0 10:0:0 11:0:0 12:2:2 13:1:1 14:1:1 15:0:0 1 1 0 0 0 0:3:r1:add@base_1:inject 1:4:r5:rotr@base_0:bijective 2:7:r6:mad@base_5:inject 3:15:r6:rotr@base_12:bijective 4:19:r0:mad@base_16:inject 5:25:r6:load@base_19:inject 6:29:r0:sub@base_23:inject 7:34:r2:load@base_25:inject 8:36:r4:add@base_24:inject 9:37:r1:add@base_35:inject 10:40:r5:mad@base_39:inject 11:51:r6:or@base_49:lossy 12:53:r4:mad@base_48:inject 13:54:r2:load@base_51:inject 14:55:r1:load@base_54:inject 15:59:r3:load@base_53:inject +igneum-ca3-v4-uniform/797 beedf4dcd07c0424 0 0:0:0 1:1:1 2:2:3 3:2:2 4:2:0 5:0:0 6:2:3 7:0:0 8:1:0 9:2:1 10:0:0 11:0:0 12:0:0 13:2:0 14:0:0 15:0:0 2 1 0 1 0 0:11:r4:xor@base_8:inject 1:12:r3:add@base_9:inject 2:17:r7:load@base_12:inject 3:22:r6:rotl@base_21:bijective 4:23:r1:shfl@base_18:inject 5:28:r3:sub@base_25:inject 6:30:r6:load@base_28:inject 7:36:r6:add@base_33:inject 8:38:r2:rotr@base_35:bijective 9:40:r6:load@base_38:inject 10:48:r6:shfl@base_42:inject 11:49:r3:add@base_37:inject 12:53:r7:mul@base_51:lossy 13:55:r3:or@base_54:lossy 14:59:r5:load@base_55:inject 15:62:r0:shfl@base_47:inject +igneum-ca3-v4-uniform/798 810d49e05dd07848 0 0:2:0 1:0:0 2:0:0 3:1:0 4:2:3 5:0:0 6:1:1 7:1:1 8:1:1 9:1:1 10:0:0 11:0:0 12:2:0 13:1:0 14:0:0 15:0:0 1 0 0 0 1 0:3:r6:rotr@base_1:bijective 1:5:r1:load@base_3:inject 2:20:r6:xor@base_13:inject 3:21:r5:shfl@base_15:inject 4:26:r6:xor@base_22:inject 5:27:r4:load@base_20:inject 6:29:r3:add@base_28:inject 7:30:r5:sub@base_23:inject 8:35:r2:load@base_30:inject 9:37:r4:load@base_35:inject 10:40:r3:mulhi@base_33:lossy 11:43:r0:rotl@base_24:bijective 12:48:r2:xor@base_44:inject 13:51:r4:xor@base_47:inject 14:54:r1:sub@base_53:inject 15:62:r7:mad@base_61:inject +igneum-ca3-v4-uniform/799 42589abc9ac84ae2 0 0:2:0 1:2:0 2:2:3 3:0:0 4:1:0 5:0:0 6:1:0 7:2:0 8:2:3 9:2:0 10:2:0 11:1:1 12:1:1 13:1:0 14:2:3 15:2:3 2 0 0 2 0 0:2:r1:add@base_0:inject 1:4:r2:shfl@base_3:inject 2:5:r0:load@base_4:inject 3:11:r5:shfl@base_10:inject 4:16:r3:add@base_15:inject 5:18:r5:load@base_16:inject 6:20:r1:sub@base_19:inject 7:23:r2:rotl@base_17:bijective 8:26:r7:xor@base_22:inject 9:34:r7:mul@base_32:lossy 10:41:r0:sub@base_33:inject 11:42:r3:mul@base_40:lossy 12:47:r1:rotl@base_29:bijective 13:49:r2:add@base_43:inject 14:62:r2:rotl@base_54:bijective 15:63:r4:shfl@base_61:inject +igneum-ca3-v4-uniform/800 63e7d3edeff3ec34 0 0:1:1 1:0:0 2:0:0 3:2:0 4:2:2 5:1:0 6:1:1 7:2:1 8:0:0 9:1:1 10:1:0 11:1:0 12:1:1 13:1:1 14:1:0 15:2:1 2 0 0 2 0 0:1:r7:add@base_0:inject 1:4:r1:add@base_2:inject 2:5:r2:add@base_3:inject 3:12:r5:rotr@base_11:bijective 4:17:r1:shfl@base_13:inject 5:18:r4:load@base_12:inject 6:25:r3:xor@base_20:inject 7:28:r6:xor@base_27:inject 8:35:r0:rotr@base_33:bijective 9:38:r1:mul@base_30:lossy 10:42:r5:mul@base_36:lossy 11:43:r1:rotr@base_39:bijective 12:49:r3:load@base_42:inject 13:51:r2:rotr@base_46:bijective 14:55:r7:add@base_53:inject 15:57:r1:shfl@base_52:inject +igneum-ca3-v4-uniform/801 ffac92346a894a0c 0 0:2:0 1:1:0 2:2:3 3:2:2 4:1:0 5:0:0 6:2:2 7:2:2 8:0:0 9:0:0 10:2:3 11:1:1 12:2:2 13:1:0 14:2:1 15:0:0 4 0 0 1 3 0:4:r5:rotr@base_0:bijective 1:6:r4:load@base_4:inject 2:8:r6:load@base_6:inject 3:14:r7:load@base_8:inject 4:15:r0:mul@base_7:lossy 5:25:r3:shfl@base_24:inject 6:28:r5:xor@base_18:inject 7:31:r4:shfl@base_19:inject 8:38:r0:mulhi@base_37:lossy 9:41:r0:mulhi@base_39:lossy 10:44:r5:add@base_40:inject 11:46:r7:mad@base_32:inject 12:49:r3:rotl@base_48:bijective 13:51:r4:mulhi@base_35:lossy 14:56:r7:rotr@base_52:bijective 15:63:r0:load@base_56:inject +igneum-ca3-v4-uniform/802 cb3729bcf40ad2e3 0 0:1:0 1:0:0 2:1:1 3:0:0 4:0:0 5:0:0 6:2:3 7:1:1 8:0:0 9:1:0 10:0:0 11:2:3 12:2:2 13:0:0 14:0:0 15:2:0 4 2 1 1 1 0:2:r6:or@base_1:lossy-or-chain1 1:11:r4:mad@base_10:inject 2:14:r1:mad@base_12:inject 3:18:r2:load@base_14:inject 4:20:r5:rotr@base_19:bijective 5:25:r6:sub@base_22:inject 6:28:r1:add@base_24:inject 7:29:r0:add@base_15:inject 8:35:r3:or@base_17:lossy 9:36:r0:load@base_35:inject 10:37:r7:rotl@base_31:bijective 11:51:r0:shfl@base_42:inject 12:55:r4:add@base_44:inject 13:56:r6:load@base_55:inject 14:61:r1:mulhi@base_41:lossy 15:62:r4:mul@base_60:lossy +igneum-ca3-v4-uniform/803 3c6e9a1912d76262 0 0:2:0 1:1:0 2:1:1 3:0:0 4:1:1 5:1:1 6:0:0 7:1:1 8:0:0 9:2:0 10:1:1 11:2:1 12:0:0 13:0:0 14:2:0 15:1:1 1 0 0 1 0 0:2:r2:shfl@base_0:inject 1:3:r3:mad@base_1:inject 2:6:r0:load@base_2:inject 3:7:r2:load@base_3:inject 4:19:r3:mad@base_13:inject 5:26:r7:sub@base_25:inject 6:28:r5:mad@base_15:inject 7:34:r3:load@base_26:inject 8:35:r0:load@base_34:inject 9:39:r4:mul@base_33:lossy 10:40:r3:xor@base_37:inject 11:51:r1:add@base_50:inject 12:58:r4:rotl@base_46:bijective 13:61:r2:sub@base_59:inject 14:62:r3:sub@base_55:inject 15:63:r6:shfl@base_60:inject +igneum-ca3-v4-uniform/804 412dd7f46cdbd46b 0 0:1:0 1:1:0 2:1:1 3:0:0 4:2:0 5:0:0 6:1:1 7:1:1 8:2:2 9:0:0 10:1:1 11:2:3 12:0:0 13:0:0 14:1:1 15:1:0 3 0 0 2 1 0:1:r5:rotl@base_0:bijective 1:9:r3:add@base_3:inject 2:14:r7:mul@base_11:lossy 3:17:r4:mul@base_6:lossy 4:18:r0:load@base_14:inject 5:19:r6:load@base_17:inject 6:21:r6:add@base_20:inject 7:24:r5:mulhi@base_15:lossy 8:28:r2:load@base_24:inject 9:29:r7:add@base_25:inject 10:31:r5:mad@base_27:inject 11:37:r3:xor@base_32:inject 12:39:r2:mad@base_36:inject 13:43:r0:load@base_39:inject 14:58:r0:sub@base_50:inject 15:60:r3:xor@base_55:inject +igneum-ca3-v4-uniform/805 b1008332b54cfe24 0 0:0:0 1:0:0 2:0:0 3:2:0 4:2:0 5:1:1 6:2:1 7:1:1 8:1:1 9:1:1 10:1:0 11:2:3 12:0:0 13:0:0 14:1:1 15:0:0 2 1 0 0 1 0:4:r3:xor@base_0:inject 1:8:r6:load@base_4:inject 2:16:r4:or@base_15:lossy 3:19:r3:rotr@base_14:bijective 4:21:r1:add@base_3:inject 5:22:r4:load@base_19:inject 6:23:r6:load@base_21:inject 7:24:r0:rotl@base_13:bijective 8:26:r2:rotr@base_17:bijective 9:29:r0:rotr@base_25:bijective 10:33:r7:add@base_32:inject 11:34:r2:mulhi@base_31:lossy 12:38:r6:load@base_26:inject 13:49:r0:shfl@base_42:inject 14:54:r5:load@base_49:inject 15:56:r3:sub@base_55:inject +igneum-ca3-v4-uniform/806 99aec11fa29fbaf6 0 0:0:0 1:2:2 2:0:0 3:1:0 4:0:0 5:0:0 6:0:0 7:1:0 8:2:1 9:2:0 10:1:1 11:1:1 12:2:0 13:0:0 14:1:1 15:1:0 1 1 0 0 0 0:4:r0:or@base_3:lossy 1:5:r5:load@base_4:inject 2:8:r1:load@base_5:inject 3:13:r2:add@base_10:inject 4:18:r1:load@base_13:inject 5:21:r2:xor@base_14:inject 6:24:r0:add@base_22:inject 7:30:r3:add@base_25:inject 8:39:r4:xor@base_37:inject 9:44:r2:sub@base_40:inject 10:45:r3:mad@base_36:inject 11:48:r4:shfl@base_46:inject 12:50:r3:load@base_48:inject 13:53:r1:load@base_50:inject 14:60:r7:xor@base_57:inject 15:61:r0:add@base_58:inject +igneum-ca3-v4-uniform/807 fc487a920f075a6e 0 0:0:0 1:0:0 2:2:3 3:0:0 4:0:0 5:2:1 6:1:1 7:2:3 8:2:0 9:0:0 10:2:1 11:2:2 12:2:1 13:0:0 14:0:0 15:2:0 3 1 0 1 1 0:3:r3:or@base_0:lossy 1:13:r6:rotl@base_9:bijective 2:16:r5:add@base_11:inject 3:20:r1:rotl@base_17:bijective 4:23:r2:mulhi@base_15:lossy 5:26:r7:shfl@base_18:inject 6:38:r6:rotr@base_29:bijective 7:41:r3:load@base_26:inject 8:44:r5:add@base_32:inject 9:45:r7:mul@base_43:lossy 10:46:r0:mad@base_36:inject 11:50:r2:load@base_45:inject 12:53:r5:mad@base_52:inject 13:57:r1:load@base_53:inject 14:60:r3:sub@base_47:inject 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/808 8d5c5e01c647bfea 0 0:2:2 1:1:1 2:1:0 3:1:1 4:0:0 5:2:1 6:2:3 7:1:1 8:0:0 9:1:0 10:1:0 11:1:0 12:0:0 13:0:0 14:0:0 15:0:0 5 2 1 2 1 0:3:r6:mul@base_0:lossy 1:4:r3:sub@base_2:inject 2:10:r7:sub@base_5:inject 3:13:r1:load@base_10:inject 4:15:r6:mulhi@base_11:lossy 5:16:r4:or@base_14:lossy 6:18:r7:load@base_15:inject 7:36:r5:rotr@base_33:bijective 8:41:r6:rotl@base_35:bijective 9:48:r1:rotr@base_45:bijective 10:49:r7:mul@base_47:lossy 11:54:r6:mad@base_52:inject 12:57:r3:add@base_53:inject 13:59:r0:shfl@base_50:inject 14:61:r2:or@base_56:lossy-or-chain1 15:63:r1:load@base_54:inject +igneum-ca3-v4-uniform/809 edb524fb6afd4e37 0 0:1:1 1:0:0 2:2:0 3:2:1 4:0:0 5:2:1 6:2:1 7:1:1 8:2:3 9:2:0 10:1:1 11:1:1 12:2:0 13:1:1 14:1:1 15:0:0 3 0 0 2 1 0:1:r3:mulhi@base_0:lossy 1:3:r1:sub@shadow_251:inject 2:8:r7:mad@base_6:inject 3:14:r6:rotr@base_13:bijective 4:15:r5:load@base_14:inject 5:17:r3:load@base_15:inject 6:18:r1:load@base_17:inject 7:22:r2:sub@base_10:inject 8:25:r7:xor@base_23:inject 9:26:r0:add@base_21:inject 10:28:r2:mul@base_27:lossy 11:33:r4:xor@base_31:inject 12:37:r1:load@base_28:inject 13:46:r1:shfl@base_42:inject 14:48:r2:mul@base_38:lossy 15:51:r5:rotl@base_44:bijective +igneum-ca3-v4-uniform/810 04a166f00b994315 0 0:0:0 1:1:1 2:0:0 3:2:0 4:2:0 5:0:0 6:0:0 7:0:0 8:0:0 9:2:2 10:2:2 11:0:0 12:1:1 13:0:0 14:1:0 15:1:0 2 1 0 1 0 0:1:r1:or@base_0:lossy 1:4:r5:rotl@base_2:bijective 2:9:r3:xor@base_6:inject 3:16:r0:mad@base_14:inject 4:17:r6:load@base_16:inject 5:21:r3:add@base_13:inject 6:26:r1:load@base_21:inject 7:27:r0:load@base_26:inject 8:32:r4:mad@base_20:inject 9:34:r5:load@base_17:inject 10:36:r3:sub@base_30:inject 11:37:r2:load@base_36:inject 12:46:r1:mul@base_40:lossy 13:52:r6:load@base_37:inject 14:55:r4:xor@base_53:inject 15:61:r3:rotl@base_56:bijective +igneum-ca3-v4-uniform/811 19d9b30d0c1d84e6 0 0:2:1 1:2:0 2:2:3 3:2:0 4:0:0 5:1:1 6:0:0 7:1:1 8:0:0 9:0:0 10:2:0 11:0:0 12:2:0 13:2:1 14:1:0 15:1:1 2 0 0 2 0 0:1:r0:mul@base_0:lossy 1:5:r1:load@base_1:inject 2:15:r4:mul@base_10:lossy 3:19:r0:load@base_15:inject 4:21:r5:mad@base_11:inject 5:28:r2:rotl@base_23:bijective 6:33:r1:rotr@base_18:bijective 7:40:r1:add@base_35:inject 8:43:r6:load@base_40:inject 9:44:r3:add@base_41:inject 10:45:r4:load@base_43:inject 11:48:r5:load@base_33:inject 12:55:r0:xor@base_42:inject 13:59:r7:shfl@base_52:inject 14:60:r6:add@base_56:inject 15:61:r7:load@base_60:inject +igneum-ca3-v4-uniform/812 278430af56366a49 0 0:2:2 1:2:2 2:2:2 3:2:2 4:0:0 5:2:0 6:0:0 7:0:0 8:1:1 9:2:0 10:1:0 11:0:0 12:2:2 13:2:2 14:1:0 15:1:0 4 0 0 3 1 0:2:r7:add@base_1:inject 1:7:r1:add@base_3:inject 2:18:r3:mad@base_14:inject 3:22:r6:shfl@base_16:inject 4:29:r2:mulhi@base_28:lossy 5:31:r3:xor@base_24:inject 6:32:r0:load@base_31:inject 7:38:r2:mul@base_36:lossy 8:39:r5:load@base_38:inject 9:40:r4:mul@base_27:lossy 10:43:r3:mul@base_37:lossy 11:44:r1:load@base_43:inject 12:47:r0:add@base_46:inject 13:50:r6:load@base_47:inject 14:54:r6:mad@base_52:inject 15:61:r0:shfl@base_59:inject +igneum-ca3-v4-uniform/813 d84cc1235e86d335 0 0:1:0 1:1:1 2:0:0 3:2:2 4:1:1 5:0:0 6:2:1 7:1:1 8:0:0 9:2:3 10:2:0 11:2:1 12:2:0 13:1:1 14:0:0 15:0:0 2 1 0 1 0 0:5:r2:add@base_2:inject 1:9:r2:rotr@base_8:bijective 2:11:r3:sub@base_10:inject 3:12:r5:or@base_1:lossy 4:16:r7:add@base_15:inject 5:17:r0:load@base_16:inject 6:21:r0:mad@base_18:inject 7:26:r3:rotl@base_23:bijective 8:28:r0:mul@base_27:lossy 9:42:r3:mad@base_38:inject 10:47:r2:mad@base_40:inject 11:48:r3:load@base_47:inject 12:52:r0:xor@base_33:inject 13:54:r7:add@base_39:inject 14:60:r3:xor@base_53:inject 15:62:r5:xor@base_57:inject +igneum-ca3-v4-uniform/814 676a13406f67eb19 0 0:2:3 1:1:0 2:2:2 3:0:0 4:1:1 5:2:3 6:0:0 7:2:2 8:1:0 9:1:0 10:1:0 11:2:2 12:1:1 13:2:2 14:2:2 15:2:2 4 3 0 1 0 0:2:r0:or@base_1:lossy 1:7:r5:add@base_6:inject 2:15:r0:mul@base_8:lossy 3:19:r7:add@base_17:inject 4:23:r1:rotr@base_16:bijective 5:29:r6:xor@base_27:inject 6:32:r5:load@base_23:inject 7:40:r0:add@base_39:inject 8:43:r5:or@base_35:lossy 9:45:r6:load@base_43:inject 10:46:r7:shfl@base_38:inject 11:49:r0:load@base_46:inject 12:52:r5:load@base_49:inject 13:59:r3:or@base_54:lossy 14:60:r7:xor@base_58:inject 15:63:r4:load@base_59:inject +igneum-ca3-v4-uniform/815 7d249f1a9fcca776 0 0:1:0 1:0:0 2:0:0 3:1:1 4:1:1 5:1:1 6:2:2 7:2:3 8:0:0 9:1:1 10:2:3 11:1:0 12:2:0 13:2:1 14:1:1 15:1:1 1 0 0 0 1 0:3:r6:mad@base_0:inject 1:5:r4:rotl@base_2:bijective 2:8:r5:add@base_4:inject 3:16:r0:shfl@base_15:inject 4:17:r7:load@base_16:inject 5:24:r4:sub@base_14:inject 6:25:r2:mad@base_9:inject 7:29:r1:mad@base_22:inject 8:34:r1:add@base_33:inject 9:35:r6:load@base_34:inject 10:39:r7:add@base_36:inject 11:43:r3:add@base_31:inject 12:51:r5:mulhi@base_47:lossy 13:52:r3:rotl@base_45:bijective 14:60:r2:rotl@base_55:bijective 15:62:r4:xor@base_58:inject +igneum-ca3-v4-uniform/816 d4175693d8da367a 0 0:0:0 1:0:0 2:0:0 3:1:0 4:0:0 5:2:2 6:1:1 7:2:1 8:2:1 9:1:0 10:0:0 11:1:0 12:0:0 13:0:0 14:0:0 15:0:0 2 1 0 0 1 0:1:r7:rotl@base_0:bijective 1:6:r2:mulhi@base_2:lossy 2:17:r6:sub@base_9:inject 3:18:r1:load@base_17:inject 4:19:r7:shfl@base_15:inject 5:25:r3:shfl@base_23:inject 6:28:r2:rotl@base_27:bijective 7:35:r1:rotr@base_24:bijective 8:36:r5:or@base_5:lossy 9:37:r7:mad@base_33:inject 10:43:r6:add@base_39:inject 11:45:r0:load@base_18:inject 12:52:r6:mad@base_50:inject 13:53:r2:shfl@base_51:inject 14:54:r7:mad@base_48:inject 15:61:r7:rotr@base_59:bijective +igneum-ca3-v4-uniform/817 12b65965bc7c2caa 0 0:0:0 1:2:3 2:2:3 3:1:0 4:1:0 5:1:1 6:2:3 7:2:2 8:0:0 9:2:3 10:1:0 11:1:1 12:2:1 13:1:0 14:1:1 15:0:0 6 1 0 1 4 0:4:r0:mulhi@base_2:lossy 1:5:r6:load@base_4:inject 2:7:r5:shfl@base_3:inject 3:9:r4:add@base_8:inject 4:21:r3:xor@base_11:inject 5:23:r0:load@base_21:inject 6:26:r5:mulhi@base_25:lossy 7:27:r2:or@base_18:lossy 8:30:r1:mad@base_22:inject 9:36:r7:mulhi@base_34:lossy 10:42:r4:mulhi@base_37:lossy 11:47:r5:mul@base_44:lossy 12:48:r3:add@base_46:inject 13:53:r5:load@base_48:inject 14:55:r0:load@base_53:inject 15:59:r7:xor@base_58:inject +igneum-ca3-v4-uniform/818 ab75c11660a52c07 0 0:0:0 1:1:1 2:0:0 3:2:0 4:2:1 5:2:0 6:1:1 7:0:0 8:0:0 9:2:1 10:0:0 11:1:0 12:1:0 13:1:1 14:0:0 15:1:0 2 1 0 1 0 0:1:r3:or@base_0:lossy 1:3:r3:shfl@base_2:inject 2:8:r6:shfl@base_6:inject 3:10:r7:load@base_3:inject 4:14:r2:load@base_8:inject 5:20:r1:rotr@base_9:bijective 6:27:r5:sub@base_25:inject 7:34:r3:mul@base_33:lossy 8:38:r6:xor@base_32:inject 9:40:r0:shfl@base_39:inject 10:44:r2:shfl@base_22:inject 11:47:r0:xor@base_41:inject 12:48:r6:add@base_43:inject 13:51:r1:sub@base_46:inject 14:61:r7:shfl@base_59:inject 15:62:r1:rotr@base_57:bijective +igneum-ca3-v4-uniform/819 2d5dd1b3fb18844b 0 0:1:0 1:1:0 2:0:0 3:0:0 4:2:0 5:2:3 6:0:0 7:2:0 8:0:0 9:0:0 10:0:0 11:2:1 12:0:0 13:2:1 14:0:0 15:0:0 2 0 0 1 1 0:1:r4:add@base_0:inject 1:10:r1:xor@base_8:inject 2:11:r5:mulhi@base_5:lossy 3:18:r2:rotr@base_13:bijective 4:19:r1:xor@base_17:inject 5:25:r7:add@base_20:inject 6:31:r1:add@base_27:inject 7:41:r0:mad@base_39:inject 8:44:r7:rotl@base_30:bijective 9:45:r3:load@base_44:inject 10:46:r4:add@base_26:inject 11:49:r1:sub@base_34:inject 12:50:r0:mul@base_48:lossy 13:53:r7:load@base_50:inject 14:54:r1:load@base_53:inject 15:57:r4:xor@base_55:inject +igneum-ca3-v4-uniform/820 9dc3fdd8024bc43c 1 0:1:0 1:0:0 2:1:0 3:1:1 4:0:0 5:1:1 6:2:2 7:1:0 8:2:1 9:0:0 10:1:0 11:2:1 12:1:0 13:2:2 14:2:3 15:2:2 3 0 0 1 2 0:5:r1:sub@base_1:inject 1:11:r6:mulhi@base_4:lossy 2:13:r1:add@base_10:inject 3:21:r3:mulhi@base_17:lossy 4:22:r1:load@base_21:inject 5:25:r0:add@base_19:inject 6:28:r6:mul@base_26:lossy 7:44:r3:sub@base_43:inject 8:46:r4:load@base_22:inject 9:49:r0:add@base_47:inject 10:50:r4:load@base_49:inject 11:52:r2:load@base_46:inject 12:56:r5:load@base_44:inject 13:58:r3:add@base_55:inject 14:62:r2:mad@base_59:inject 15:63:r7:load@base_62:inject +igneum-ca3-v4-uniform/821 35a44cd7f81ecaa0 0 0:2:2 1:0:0 2:2:2 3:2:0 4:1:1 5:2:0 6:1:1 7:1:0 8:0:0 9:1:1 10:1:1 11:1:0 12:1:0 13:1:1 14:0:0 15:1:0 5 0 0 3 2 0:10:r0:rotl@base_9:bijective 1:16:r2:mul@base_14:lossy 2:22:r2:mul@base_17:lossy 3:23:r1:shfl@base_21:inject 4:25:r0:rotr@base_19:bijective 5:29:r1:mulhi@base_28:lossy 6:32:r7:load@base_29:inject 7:33:r4:xor@base_31:inject 8:34:r0:shfl@base_30:inject 9:35:r6:load@base_33:inject 10:41:r6:rotr@base_37:bijective 11:48:r1:mulhi@base_38:lossy 12:52:r7:shfl@base_50:inject 13:55:r0:add@base_49:inject 14:56:r3:mul@base_44:lossy 15:61:r4:load@base_56:inject +igneum-ca3-v4-uniform/822 bcc1a53503927398 0 0:1:1 1:0:0 2:1:1 3:2:3 4:2:3 5:1:1 6:2:1 7:0:0 8:1:0 9:0:0 10:2:2 11:0:0 12:1:0 13:0:0 14:2:1 15:0:0 2 0 0 2 0 0:3:r3:add@base_1:inject 1:6:r5:load@base_3:inject 2:9:r7:sub@base_2:inject 3:14:r2:rotr@base_8:bijective 4:15:r4:xor@base_12:inject 5:16:r5:mad@base_11:inject 6:17:r3:load@base_14:inject 7:30:r3:rotr@base_27:bijective 8:43:r7:mul@base_40:lossy 9:52:r3:xor@base_51:inject 10:54:r4:mul@base_26:lossy 11:55:r5:load@base_52:inject 12:56:r1:load@base_30:inject 13:59:r5:shfl@base_58:inject 14:62:r7:load@base_55:inject 15:63:r0:load@base_62:inject +igneum-ca3-v4-uniform/823 dac208e704a84f73 0 0:1:0 1:2:1 2:1:0 3:0:0 4:2:2 5:0:0 6:2:3 7:2:3 8:2:0 9:0:0 10:0:0 11:1:1 12:1:1 13:0:0 14:1:0 15:1:0 0 0 0 0 0 0:5:r6:sub@base_1:inject 1:6:r4:add@base_4:inject 2:9:r6:load@base_6:inject 3:10:r4:load@base_9:inject 4:11:r2:mad@base_3:inject 5:22:r4:xor@base_20:inject 6:24:r6:rotl@base_14:bijective 7:25:r5:load@base_24:inject 8:28:r4:load@base_25:inject 9:36:r5:rotr@base_32:bijective 10:37:r2:shfl@base_34:inject 11:41:r7:rotl@base_39:bijective 12:42:r0:load@base_37:inject 13:49:r1:sub@base_48:inject 14:51:r3:add@base_45:inject 15:54:r5:rotl@base_52:bijective +igneum-ca3-v4-uniform/824 f3f10476f01dd644 0 0:1:1 1:1:1 2:2:0 3:1:1 4:1:1 5:1:0 6:2:0 7:1:0 8:1:0 9:1:1 10:2:1 11:2:1 12:2:0 13:0:0 14:0:0 15:2:2 4 2 0 0 2 0:3:r6:sub@base_2:inject 1:5:r5:load@base_3:inject 2:8:r6:load@base_5:inject 3:13:r7:mulhi@base_9:lossy 4:16:r4:rotr@base_14:bijective 5:18:r1:shfl@base_15:inject 6:20:r5:load@base_13:inject 7:27:r2:xor@base_25:inject 8:30:r3:shfl@base_11:inject 9:32:r4:mulhi@base_21:lossy 10:37:r5:or@base_36:lossy 11:48:r3:add@base_31:inject 12:52:r0:sub@base_38:inject 13:54:r2:or@base_41:lossy 14:55:r4:shfl@base_47:inject 15:61:r7:sub@base_59:inject +igneum-ca3-v4-uniform/825 7542e89a13cdb63f 0 0:2:1 1:1:0 2:2:0 3:0:0 4:1:0 5:0:0 6:2:2 7:2:1 8:2:2 9:1:1 10:1:1 11:0:0 12:2:0 13:1:1 14:0:0 15:0:0 2 0 0 1 1 0:4:r4:rotl@base_2:bijective 1:5:r7:add@base_1:inject 2:8:r2:shfl@base_7:inject 3:10:r6:load@base_4:inject 4:14:r0:mulhi@base_13:lossy 5:16:r1:add@base_12:inject 6:17:r2:load@base_14:inject 7:19:r7:load@base_17:inject 8:24:r5:load@base_8:inject 9:31:r3:rotl@base_23:bijective 10:36:r2:xor@base_33:inject 11:43:r1:load@base_31:inject 12:47:r6:mul@base_40:lossy 13:53:r3:add@base_41:inject 14:56:r1:sub@base_50:inject 15:58:r0:load@base_56:inject +igneum-ca3-v4-uniform/826 dc1546f933be9cae 0 0:1:0 1:2:1 2:1:1 3:1:0 4:1:1 5:0:0 6:1:1 7:2:0 8:1:0 9:1:1 10:0:0 11:2:3 12:0:0 13:2:2 14:0:0 15:2:0 1 0 0 0 1 0:7:r0:rotr@base_2:bijective 1:8:r2:rotl@base_6:bijective 2:9:r1:add@base_0:inject 3:21:r3:shfl@base_4:inject 4:23:r2:add@base_19:inject 5:24:r5:load@base_23:inject 6:29:r5:sub@base_28:inject 7:35:r0:add@base_33:inject 8:37:r7:xor@base_36:inject 9:41:r7:mulhi@base_40:lossy 10:44:r6:add@base_42:inject 11:46:r4:mad@base_38:inject 12:56:r4:rotr@base_54:bijective 13:61:r2:xor@base_59:inject 14:62:r3:rotl@base_49:bijective 15:63:r6:shfl@base_57:inject +igneum-ca3-v4-uniform/827 9e91a62a29e32b37 0 0:1:0 1:0:0 2:0:0 3:2:3 4:2:0 5:2:0 6:0:0 7:2:2 8:0:0 9:1:0 10:2:2 11:1:0 12:1:1 13:0:0 14:0:0 15:2:0 2 0 0 2 0 0:2:r4:xor@base_0:inject 1:4:r6:load@base_2:inject 2:14:r1:mul@base_13:lossy 3:18:r3:load@base_14:inject 4:24:r2:mul@base_17:lossy 5:36:r2:mad@base_30:inject 6:38:r3:xor@base_28:inject 7:46:r5:xor@base_45:inject 8:48:r5:add@base_47:inject 9:49:r0:load@base_48:inject 10:53:r6:sub@base_44:inject 11:54:r3:load@base_46:inject 12:56:r0:load@base_54:inject 13:58:r1:load@base_56:inject 14:60:r5:shfl@base_55:inject 15:61:r2:rotl@base_43:bijective +igneum-ca3-v4-uniform/828 1687e129461fe6e5 0 0:1:1 1:2:2 2:1:0 3:2:0 4:1:1 5:2:1 6:0:0 7:1:0 8:1:1 9:1:0 10:0:0 11:1:1 12:2:1 13:2:2 14:1:1 15:1:1 2 0 0 0 2 0:5:r5:add@base_4:inject 1:9:r3:rotl@base_6:bijective 2:16:r6:shfl@base_7:inject 3:17:r1:load@base_16:inject 4:19:r4:shfl@base_13:inject 5:29:r1:sub@base_25:inject 6:35:r3:mulhi@base_27:lossy 7:38:r1:load@base_35:inject 8:42:r4:mulhi@base_21:lossy 9:46:r3:load@base_42:inject 10:50:r1:mad@base_48:inject 11:51:r2:mad@base_49:inject 12:54:r5:shfl@base_52:inject 13:59:r5:add@base_56:inject 14:61:r4:rotl@base_60:bijective 15:63:r7:rotr@base_58:bijective +igneum-ca3-v4-uniform/829 3df6e2fce188d068 0 0:2:1 1:0:0 2:1:1 3:2:3 4:0:0 5:1:0 6:2:0 7:0:0 8:1:1 9:1:1 10:0:0 11:2:3 12:2:2 13:0:0 14:0:0 15:0:0 3 0 0 2 1 0:1:r5:rotl@base_0:bijective 1:5:r0:mulhi@base_3:lossy 2:6:r3:xor@base_4:inject 3:7:r4:load@base_6:inject 4:16:r2:rotr@base_15:bijective 5:18:r1:load@base_5:inject 6:34:r2:rotl@base_31:bijective 7:36:r0:shfl@base_29:inject 8:38:r7:mul@base_35:lossy 9:41:r4:add@base_37:inject 10:45:r7:mul@base_39:lossy 11:49:r2:xor@base_44:inject 12:50:r0:load@base_45:inject 13:54:r7:load@base_50:inject 14:56:r1:sub@base_43:inject 15:58:r3:load@base_49:inject +igneum-ca3-v4-uniform/830 6d703e98a7d2f763 0 0:2:2 1:1:1 2:0:0 3:2:0 4:2:2 5:1:0 6:0:0 7:0:0 8:2:0 9:2:2 10:1:0 11:0:0 12:1:1 13:1:1 14:2:3 15:0:0 4 0 0 3 1 0:1:r0:xor@base_0:inject 1:7:r6:load@base_1:inject 2:22:r1:shfl@base_20:inject 3:23:r6:xor@base_18:inject 4:29:r5:add@base_27:inject 5:30:r3:load@base_29:inject 6:36:r0:sub@base_35:inject 7:42:r5:shfl@base_41:inject 8:44:r7:load@base_42:inject 9:45:r2:mul@base_28:lossy 10:47:r1:mulhi@base_43:lossy 11:52:r5:load@base_45:inject 12:54:r4:load@base_52:inject 13:57:r1:mad@base_51:inject 14:60:r4:mul@base_59:lossy 15:61:r0:mul@base_58:lossy +igneum-ca3-v4-uniform/831 04b6e6958b8daa30 0 0:2:1 1:2:2 2:2:1 3:1:0 4:0:0 5:2:3 6:0:0 7:2:1 8:2:1 9:0:0 10:0:0 11:0:0 12:1:0 13:1:1 14:1:1 15:1:1 5 2 1 1 2 0:1:r4:mad@base_0:inject 1:5:r3:or@base_3:lossy 2:6:r2:load@base_5:inject 3:13:r1:mad@base_10:inject 4:16:r6:mul@base_15:lossy 5:19:r5:rotr@base_18:bijective 6:20:r7:sub@base_9:inject 7:38:r4:or@base_32:lossy-or-chain1 8:40:r1:mulhi@base_25:lossy 9:42:r0:sub@base_29:inject 10:43:r7:sub@base_33:inject 11:48:r7:add@base_46:inject 12:50:r6:load@base_42:inject 13:54:r7:add@base_52:inject 14:60:r2:add@base_56:inject 15:63:r3:mulhi@base_49:lossy +igneum-ca3-v4-uniform/832 270e65df06de9150 0 0:2:2 1:2:2 2:0:0 3:2:1 4:0:0 5:0:0 6:2:1 7:0:0 8:1:1 9:2:3 10:0:0 11:2:2 12:2:2 13:2:1 14:2:2 15:2:2 4 3 1 1 0 0:1:r1:mul@shadow_237:lossy 1:9:r1:xor@base_2:inject 2:11:r4:or@base_4:lossy 3:12:r5:load@base_9:inject 4:14:r5:add@base_13:inject 5:15:r3:load@base_11:inject 6:21:r5:sub@base_17:inject 7:34:r6:add@base_29:inject 8:36:r5:sub@base_33:inject 9:39:r7:load@base_36:inject 10:40:r2:xor@base_26:inject 11:51:r6:mad@base_44:inject 12:54:r4:or@base_50:lossy-or-chain1 13:58:r0:add@base_48:inject 14:59:r3:sub@base_57:inject 15:61:r2:or@base_60:lossy +igneum-ca3-v4-uniform/833 c68afca3b4fde655 0 0:2:0 1:2:3 2:0:0 3:1:1 4:2:0 5:0:0 6:2:2 7:2:2 8:1:0 9:2:2 10:1:0 11:2:3 12:2:2 13:2:1 14:1:1 15:0:0 2 0 0 1 1 0:3:r6:mul@base_0:lossy 1:5:r5:shfl@base_2:inject 2:10:r6:rotl@base_8:bijective 3:15:r5:sub@base_14:inject 4:16:r1:load@base_3:inject 5:17:r2:load@base_10:inject 6:24:r3:load@base_16:inject 7:28:r4:load@base_15:inject 8:32:r7:rotr@base_27:bijective 9:35:r5:load@base_32:inject 10:37:r1:mulhi@base_25:lossy 11:39:r0:add@base_31:inject 12:40:r4:load@base_39:inject 13:43:r2:add@base_36:inject 14:47:r3:rotl@base_44:bijective 15:60:r5:xor@base_55:inject +igneum-ca3-v4-uniform/834 c1b5187a9adeced2 0 0:0:0 1:0:0 2:1:1 3:1:1 4:2:1 5:1:0 6:0:0 7:1:0 8:1:0 9:1:1 10:2:3 11:1:1 12:2:2 13:1:0 14:1:0 15:2:0 2 0 0 1 1 0:1:r6:shfl@base_0:inject 1:10:r0:load@base_1:inject 2:15:r4:mulhi@base_13:lossy 3:16:r2:add@base_14:inject 4:20:r0:load@base_16:inject 5:21:r6:add@base_18:inject 6:23:r3:rotr@base_11:bijective 7:24:r1:load@base_23:inject 8:27:r5:load@base_20:inject 9:32:r7:load@base_24:inject 10:36:r1:mul@base_35:lossy 11:39:r0:add@base_26:inject 12:46:r3:load@base_36:inject 13:51:r4:sub@base_42:inject 14:55:r2:add@base_49:inject 15:62:r7:shfl@base_56:inject +igneum-ca3-v4-uniform/835 d894fe9875786391 0 0:1:1 1:2:0 2:2:1 3:0:0 4:0:0 5:1:1 6:2:0 7:1:1 8:2:3 9:2:3 10:0:0 11:2:2 12:2:2 13:1:1 14:0:0 15:2:0 2 1 0 0 1 0:2:r2:or@base_0:lossy 1:3:r4:load@base_2:inject 2:6:r2:mad@base_5:inject 3:8:r5:add@base_7:inject 4:12:r2:shfl@base_9:inject 5:18:r4:load@base_12:inject 6:20:r6:sub@base_17:inject 7:21:r3:load@base_6:inject 8:26:r4:load@base_20:inject 9:29:r5:mulhi@base_13:lossy 10:35:r7:rotl@base_32:bijective 11:38:r5:mad@base_36:inject 12:46:r3:rotl@base_33:bijective 13:48:r2:shfl@base_31:inject 14:49:r3:load@base_48:inject 15:50:r1:load@base_38:inject +igneum-ca3-v4-uniform/836 06d0558fc9cf9b78 0 0:1:0 1:2:2 2:2:1 3:0:0 4:1:1 5:1:0 6:2:3 7:0:0 8:0:0 9:2:2 10:2:2 11:1:0 12:0:0 13:2:3 14:2:3 15:0:0 3 1 0 1 1 0:2:r0:mad@base_0:inject 1:12:r2:rotr@base_10:bijective 2:15:r5:rotl@base_11:bijective 3:17:r3:rotl@base_3:bijective 4:19:r3:mad@base_18:inject 5:24:r1:or@base_22:lossy 6:28:r7:load@base_24:inject 7:33:r3:sub@base_29:inject 8:36:r2:load@base_33:inject 9:37:r0:shfl@base_31:inject 10:43:r5:xor@base_32:inject 11:46:r3:mul@base_40:lossy 12:50:r1:rotr@base_44:bijective 13:52:r4:shfl@base_47:inject 14:53:r6:mulhi@base_30:lossy 15:60:r2:load@base_50:inject +igneum-ca3-v4-uniform/837 9bf5183b2c5b4ab9 0 0:0:0 1:1:0 2:1:0 3:2:1 4:1:1 5:2:0 6:2:2 7:2:0 8:1:1 9:2:2 10:2:3 11:0:0 12:2:0 13:1:0 14:1:0 15:1:1 1 1 0 0 0 0:3:r6:or@base_0:lossy 1:6:r3:sub@base_5:inject 2:7:r0:load@base_3:inject 3:14:r4:sub@base_12:inject 4:21:r4:rotl@base_20:bijective 5:22:r5:load@base_21:inject 6:30:r0:shfl@base_28:inject 7:33:r3:load@base_30:inject 8:34:r2:add@base_25:inject 9:35:r6:sub@base_26:inject 10:38:r5:rotr@base_37:bijective 11:44:r2:xor@base_43:inject 12:47:r4:load@base_38:inject 13:49:r1:load@base_47:inject 14:50:r3:load@base_34:inject 15:51:r0:shfl@base_48:inject +igneum-ca3-v4-uniform/838 335c090d9ae78097 0 0:1:0 1:2:1 2:2:1 3:2:1 4:1:1 5:1:0 6:2:2 7:2:3 8:1:1 9:1:1 10:0:0 11:0:0 12:0:0 13:2:3 14:0:0 15:2:2 5 0 0 2 3 0:2:r2:add@base_1:inject 1:4:r2:mul@base_3:lossy 2:19:r7:load@base_4:inject 3:21:r0:mulhi@base_12:lossy 4:23:r1:mulhi@base_7:lossy 5:26:r3:add@base_18:inject 6:30:r5:shfl@base_28:inject 7:32:r0:mul@base_27:lossy 8:33:r7:mulhi@base_31:lossy 9:39:r2:load@base_26:inject 10:42:r0:rotr@base_38:bijective 11:48:r3:mad@base_43:inject 12:50:r6:load@base_39:inject 13:53:r4:add@base_51:inject 14:60:r4:xor@base_59:inject 15:63:r4:add@base_62:inject +igneum-ca3-v4-uniform/839 5184eaed7be78d17 0 0:2:2 1:1:0 2:2:0 3:1:0 4:0:0 5:1:0 6:2:2 7:1:0 8:1:1 9:2:3 10:1:1 11:2:0 12:0:0 13:1:0 14:0:0 15:1:1 5 1 0 3 1 0:1:r0:or@base_0:lossy 1:2:r5:load@base_1:inject 2:5:r0:load@base_2:inject 3:14:r3:add@base_12:inject 4:16:r1:xor@base_10:inject 5:26:r4:add@base_23:inject 6:27:r5:load@base_26:inject 7:31:r5:add@base_30:inject 8:34:r1:load@base_27:inject 9:37:r0:mul@base_29:lossy 10:40:r6:mul@base_39:lossy 11:42:r2:mul@base_36:lossy 12:44:r3:load@base_42:inject 13:46:r7:load@base_40:inject 14:58:r3:mulhi@base_57:lossy 15:61:r5:shfl@base_48:inject +igneum-ca3-v4-uniform/840 d73641ea9a2c7aae 0 0:2:0 1:1:1 2:2:1 3:2:2 4:2:3 5:0:0 6:0:0 7:0:0 8:2:3 9:1:0 10:1:0 11:2:2 12:2:0 13:2:1 14:0:0 15:1:1 4 2 0 1 1 0:12:r2:add@base_5:inject 1:19:r0:add@base_6:inject 2:20:r1:load@base_12:inject 3:21:r2:rotl@base_15:bijective 4:30:r2:sub@base_22:inject 5:36:r6:mulhi@base_26:lossy 6:39:r7:rotr@base_35:bijective 7:40:r0:shfl@base_29:inject 8:42:r5:mad@base_31:inject 9:44:r0:xor@base_41:inject 10:48:r3:load@base_39:inject 11:50:r1:load@base_44:inject 12:55:r3:or@base_52:lossy 13:58:r5:mul@base_51:lossy 14:61:r6:sub@base_54:inject 15:63:r0:or@base_49:lossy +igneum-ca3-v4-uniform/841 5cbc3c97e4484095 0 0:0:0 1:0:0 2:2:3 3:0:0 4:2:1 5:2:3 6:1:1 7:2:0 8:2:3 9:2:0 10:0:0 11:2:2 12:0:0 13:2:0 14:1:0 15:2:0 3 0 0 3 0 0:12:r5:rotl@base_8:bijective 1:15:r1:mul@base_11:lossy 2:21:r1:rotl@base_19:bijective 3:24:r7:mad@base_22:inject 4:28:r0:shfl@base_16:inject 5:34:r4:load@base_28:inject 6:36:r1:sub@base_35:inject 7:38:r2:load@base_34:inject 8:39:r3:load@base_38:inject 9:41:r5:load@base_39:inject 10:50:r0:mad@base_43:inject 11:52:r3:add@base_42:inject 12:55:r6:shfl@base_49:inject 13:60:r5:mul@base_53:lossy 14:61:r6:load@base_60:inject 15:63:r4:mul@base_62:lossy +igneum-ca3-v4-uniform/842 f0bcdccef743ed45 0 0:1:1 1:2:0 2:0:0 3:0:0 4:2:2 5:0:0 6:0:0 7:1:0 8:1:1 9:0:0 10:1:0 11:1:0 12:1:1 13:1:1 14:1:1 15:2:1 4 2 0 1 1 0:2:r5:mul@base_1:lossy 1:9:r4:add@base_7:inject 2:10:r0:rotl@base_6:bijective 3:15:r2:sub@base_13:inject 4:16:r5:load@base_15:inject 5:17:r4:sub@base_12:inject 6:30:r7:shfl@base_28:inject 7:36:r3:shfl@base_35:inject 8:38:r2:add@base_34:inject 9:39:r5:load@base_38:inject 10:43:r6:or@base_41:lossy 11:48:r6:mulhi@base_46:lossy 12:55:r4:shfl@base_53:inject 13:56:r2:or@base_51:lossy 14:57:r1:sub@base_54:inject 15:58:r4:load@base_56:inject +igneum-ca3-v4-uniform/843 4f8bed97d4875810 1 0:1:0 1:1:1 2:0:0 3:2:3 4:1:1 5:2:3 6:1:1 7:0:0 8:1:1 9:1:0 10:1:1 11:1:0 12:1:0 13:0:0 14:2:3 15:1:1 3 0 0 2 1 0:3:r5:xor@base_2:inject 1:4:r6:load@base_3:inject 2:13:r4:mad@base_11:inject 3:18:r2:xor@base_17:inject 4:21:r4:mad@base_19:inject 5:24:r4:add@base_22:inject 6:29:r7:mul@base_23:lossy 7:32:r2:load@base_29:inject 8:36:r3:mul@base_35:lossy 9:37:r4:add@base_31:inject 10:39:r1:rotl@base_30:bijective 11:43:r0:load@base_36:inject 12:45:r5:load@base_43:inject 13:49:r6:add@base_41:inject 14:57:r5:shfl@base_53:inject 15:63:r6:mulhi@base_60:lossy +igneum-ca3-v4-uniform/844 a8a0333052e48951 0 0:1:1 1:1:1 2:0:0 3:0:0 4:1:0 5:1:0 6:2:2 7:1:1 8:0:0 9:2:2 10:0:0 11:2:0 12:0:0 13:1:0 14:1:0 15:2:2 2 0 0 1 1 0:1:r0:shfl@base_0:inject 1:3:r5:add@base_2:inject 2:4:r1:load@base_1:inject 3:6:r3:load@base_3:inject 4:14:r0:load@base_4:inject 5:17:r4:mul@base_11:lossy 6:19:r3:add@base_7:inject 7:23:r1:load@base_6:inject 8:33:r6:shfl@base_22:inject 9:35:r3:add@base_32:inject 10:42:r1:mulhi@base_37:lossy 11:43:r7:load@base_33:inject 12:44:r6:load@base_43:inject 13:48:r5:load@base_44:inject 14:49:r6:load@base_48:inject 15:61:r4:load@base_49:inject +igneum-ca3-v4-uniform/845 1b35278ad119bd38 0 0:1:1 1:2:1 2:2:3 3:1:1 4:2:1 5:0:0 6:0:0 7:2:3 8:1:0 9:1:1 10:2:3 11:2:0 12:1:0 13:1:1 14:2:1 15:1:1 3 1 0 0 2 0:1:r6:xor@base_0:inject 1:2:r3:load@base_1:inject 2:5:r4:load@base_2:inject 3:14:r0:xor@base_3:inject 4:17:r7:load@base_14:inject 5:20:r6:rotl@base_16:bijective 6:21:r1:add@base_18:inject 7:24:r3:shfl@base_9:inject 8:28:r2:mulhi@base_15:lossy 9:34:r0:shfl@base_30:inject 10:44:r3:or@base_40:lossy 11:51:r6:add@base_45:inject 12:54:r5:add@base_48:inject 13:56:r2:rotl@base_55:bijective 14:60:r4:mulhi@base_59:lossy 15:62:r0:add@base_52:inject +igneum-ca3-v4-uniform/846 e501587812a99546 1 0:2:3 1:0:0 2:1:0 3:2:1 4:0:0 5:2:3 6:0:0 7:0:0 8:2:2 9:2:0 10:0:0 11:0:0 12:1:1 13:1:1 14:2:1 15:0:0 2 1 0 0 1 0:2:r1:rotl@base_0:bijective 1:9:r7:sub@base_7:inject 2:13:r0:load@base_9:inject 3:16:r3:add@base_15:inject 4:25:r6:rotr@base_24:bijective 5:26:r5:load@base_25:inject 6:28:r6:mulhi@base_27:lossy 7:32:r2:xor@base_31:inject 8:34:r3:rotl@base_29:bijective 9:40:r0:xor@base_19:inject 10:41:r2:or@base_35:lossy 11:50:r1:xor@base_38:inject 12:55:r5:add@base_51:inject 13:57:r4:xor@base_53:inject 14:59:r7:load@base_55:inject 15:61:r0:xor@base_43:inject +igneum-ca3-v4-uniform/847 6814d20a22ada879 0 0:1:1 1:0:0 2:2:1 3:1:1 4:0:0 5:0:0 6:2:3 7:0:0 8:1:0 9:0:0 10:0:0 11:1:1 12:0:0 13:0:0 14:2:3 15:1:1 2 1 0 0 1 0:1:r2:mulhi@base_0:lossy 1:2:r0:load@base_1:inject 2:10:r5:xor@base_8:inject 3:12:r2:load@base_10:inject 4:28:r1:rotr@base_22:bijective 5:29:r0:load@base_28:inject 6:31:r4:sub@base_24:inject 7:33:r0:rotl@base_30:bijective 8:34:r7:load@base_33:inject 9:46:r3:sub@base_38:inject 10:47:r5:or@base_44:lossy 11:48:r2:load@base_47:inject 12:52:r3:add@base_49:inject 13:54:r5:rotl@base_50:bijective 14:58:r2:add@base_56:inject 15:61:r6:load@base_48:inject +igneum-ca3-v4-uniform/848 083bd506e7c42ae1 0 0:1:0 1:0:0 2:1:1 3:2:3 4:2:3 5:1:0 6:0:0 7:1:1 8:1:0 9:1:0 10:0:0 11:2:3 12:2:0 13:0:0 14:2:3 15:0:0 1 0 0 1 0 0:5:r3:xor@base_2:inject 1:7:r0:xor@base_6:inject 2:10:r1:load@base_7:inject 3:11:r2:load@base_10:inject 4:17:r3:add@base_13:inject 5:18:r7:mul@base_8:lossy 6:36:r2:shfl@base_21:inject 7:39:r6:shfl@base_25:inject 8:45:r3:shfl@base_43:inject 9:49:r0:xor@base_44:inject 10:56:r5:mad@base_42:inject 11:58:r6:sub@base_54:inject 12:60:r3:shfl@base_48:inject 13:61:r4:mad@base_47:inject 14:62:r0:load@base_60:inject 15:63:r1:shfl@base_59:inject +igneum-ca3-v4-uniform/849 2c18e9fbf34abd19 0 0:2:3 1:2:2 2:0:0 3:1:1 4:0:0 5:2:1 6:1:1 7:1:1 8:1:0 9:1:0 10:0:0 11:1:0 12:0:0 13:1:1 14:1:1 15:0:0 5 1 0 3 1 0:2:r3:xor@base_1:inject 1:4:r2:mad@base_0:inject 2:9:r3:or@base_6:lossy 3:12:r2:mul@base_5:lossy 4:16:r6:mulhi@base_11:lossy 5:17:r5:load@base_4:inject 6:23:r0:xor@base_15:inject 7:29:r2:sub@base_21:inject 8:30:r4:mul@base_25:lossy 9:32:r3:mul@base_27:lossy 10:36:r2:xor@base_34:inject 11:39:r6:rotl@base_38:bijective 12:41:r5:rotl@base_28:bijective 13:43:r7:sub@base_40:inject 14:44:r0:add@base_42:inject 15:60:r0:add@base_57:inject +igneum-ca3-v4-uniform/850 2fd33005374cfc79 0 0:0:0 1:1:1 2:0:0 3:2:1 4:0:0 5:2:1 6:0:0 7:0:0 8:1:1 9:2:1 10:1:0 11:1:1 12:2:1 13:1:1 14:1:0 15:1:1 0 0 0 0 0 0:6:r5:sub@base_5:inject 1:13:r5:mad@base_9:inject 2:14:r7:add@base_4:inject 3:16:r2:rotl@base_15:bijective 4:28:r7:rotr@base_27:bijective 5:31:r1:mad@base_10:inject 6:32:r0:load@base_28:inject 7:46:r2:rotr@base_40:bijective 8:50:r5:rotl@base_25:bijective 9:53:r1:rotr@base_48:bijective 10:54:r7:rotl@base_52:bijective 11:55:r4:load@base_46:inject 12:58:r1:load@base_54:inject 13:60:r2:shfl@base_51:inject 14:61:r1:add@base_59:inject 15:62:r0:load@base_61:inject +igneum-ca3-v4-uniform/851 037d5f2aa76a5a94 0 0:1:1 1:2:2 2:2:3 3:2:0 4:1:1 5:0:0 6:0:0 7:0:0 8:2:0 9:2:0 10:0:0 11:1:0 12:0:0 13:2:3 14:1:1 15:0:0 1 0 0 1 0 0:3:r4:mad@base_1:inject 1:14:r1:sub@base_12:inject 2:17:r2:shfl@base_16:inject 3:18:r0:load@base_14:inject 4:21:r4:load@base_18:inject 5:23:r1:xor@base_22:inject 6:24:r5:rotl@base_10:bijective 7:29:r6:mad@base_26:inject 8:34:r3:load@base_24:inject 9:35:r2:add@base_31:inject 10:38:r6:load@base_34:inject 11:40:r5:shfl@base_39:inject 12:43:r0:mad@base_42:inject 13:46:r7:load@base_43:inject 14:50:r6:mul@base_48:lossy 15:56:r0:xor@base_53:inject +igneum-ca3-v4-uniform/852 23895da3a3ff45c7 0 0:0:0 1:1:0 2:1:0 3:1:0 4:0:0 5:0:0 6:0:0 7:0:0 8:1:1 9:2:3 10:2:2 11:0:0 12:0:0 13:1:1 14:1:1 15:0:0 1 0 0 0 1 0:1:r5:rotr@base_0:bijective 1:2:r1:load@base_1:inject 2:4:r6:load@base_2:inject 3:6:r5:load@base_4:inject 4:10:r7:load@base_6:inject 5:14:r5:rotl@base_13:bijective 6:19:r6:load@base_14:inject 7:20:r3:rotl@base_16:bijective 8:28:r5:add@base_17:inject 9:31:r0:shfl@base_30:inject 10:37:r4:rotr@base_21:bijective 11:38:r1:xor@base_26:inject 12:42:r3:rotr@base_36:bijective 13:45:r1:mulhi@base_40:lossy 14:47:r7:load@base_45:inject 15:56:r0:rotr@base_55:bijective +igneum-ca3-v4-uniform/853 7cd3a4abb311c740 0 0:0:0 1:1:1 2:1:0 3:0:0 4:1:1 5:0:0 6:0:0 7:0:0 8:1:0 9:0:0 10:1:0 11:2:3 12:2:2 13:0:0 14:0:0 15:2:0 2 1 0 0 1 0:6:r1:xor@base_3:inject 1:8:r5:load@base_6:inject 2:11:r4:or@base_9:lossy 3:16:r3:sub@base_2:inject 4:21:r6:sub@base_12:inject 5:24:r0:mad@base_23:inject 6:29:r3:shfl@base_27:inject 7:31:r5:mulhi@base_15:lossy 8:41:r5:shfl@base_32:inject 9:43:r0:xor@base_30:inject 10:44:r6:xor@base_42:inject 11:45:r3:mad@base_34:inject 12:50:r2:xor@base_39:inject 13:53:r1:shfl@base_40:inject 14:55:r3:add@base_48:inject 15:56:r6:load@base_55:inject +igneum-ca3-v4-uniform/854 613c4316218a38b9 0 0:2:3 1:2:1 2:0:0 3:0:0 4:1:0 5:0:0 6:2:3 7:0:0 8:0:0 9:0:0 10:0:0 11:2:2 12:2:2 13:2:3 14:1:1 15:0:0 1 0 0 0 1 0:6:r3:shfl@base_2:inject 1:9:r5:load@base_6:inject 2:13:r6:load@base_9:inject 3:20:r1:add@base_8:inject 4:23:r2:load@base_20:inject 5:24:r3:xor@base_15:inject 6:29:r4:load@base_24:inject 7:32:r4:sub@base_30:inject 8:34:r3:add@base_28:inject 9:35:r0:load@base_34:inject 10:37:r3:mad@base_36:inject 11:42:r7:sub@base_41:inject 12:46:r1:mulhi@base_45:lossy 13:50:r1:xor@base_48:inject 14:59:r3:sub@base_58:inject 15:63:r2:xor@base_51:inject +igneum-ca3-v4-uniform/855 ccab122478189831 0 0:2:0 1:2:1 2:0:0 3:0:0 4:2:2 5:2:1 6:1:0 7:0:0 8:0:0 9:0:0 10:0:0 11:1:1 12:0:0 13:1:0 14:1:0 15:0:0 5 1 0 3 1 0:4:r0:mad@base_2:inject 1:7:r7:mad@base_0:inject 2:12:r4:load@base_4:inject 3:16:r1:or@base_11:lossy 4:17:r0:mul@base_15:lossy 5:20:r7:load@base_16:inject 6:21:r2:mulhi@base_19:lossy 7:31:r6:mul@base_30:lossy 8:35:r1:mul@base_22:lossy 9:40:r4:xor@base_25:inject 10:44:r3:shfl@base_43:inject 11:46:r1:sub@base_39:inject 12:55:r4:rotr@base_54:bijective 13:56:r5:add@base_48:inject 14:57:r3:add@base_53:inject 15:58:r7:load@base_57:inject +igneum-ca3-v4-uniform/856 2bfa321c355534fb 0 0:0:0 1:0:0 2:0:0 3:1:0 4:0:0 5:2:1 6:1:1 7:1:1 8:2:3 9:0:0 10:0:0 11:0:0 12:2:1 13:0:0 14:1:0 15:0:0 7 0 0 5 2 0:4:r6:mul@base_2:lossy 1:7:r2:mulhi@base_5:lossy 2:17:r4:mad@base_14:inject 3:19:r1:mul@base_18:lossy 4:20:r5:add@base_12:inject 5:21:r3:mul@base_9:lossy 6:25:r5:mul@base_22:lossy 7:27:r4:mad@base_24:inject 8:34:r1:mad@base_32:inject 9:35:r2:rotl@base_29:bijective 10:36:r5:load@base_34:inject 11:41:r5:mulhi@base_39:lossy 12:50:r6:mul@base_43:lossy 13:54:r7:add@base_53:inject 14:55:r5:rotr@base_49:bijective 15:60:r4:load@base_54:inject +igneum-ca3-v4-uniform/857 b1ebb085ebeeb65a 0 0:2:1 1:1:0 2:2:2 3:0:0 4:2:3 5:0:0 6:0:0 7:2:0 8:1:1 9:0:0 10:1:1 11:0:0 12:0:0 13:2:0 14:2:3 15:1:1 1 0 0 1 0 0:2:r3:rotl@base_0:bijective 1:3:r0:load@base_2:inject 2:6:r2:xor@base_5:inject 3:10:r7:add@base_9:inject 4:11:r6:load@base_6:inject 5:14:r5:load@base_10:inject 6:17:r3:xor@base_12:inject 7:23:r2:shfl@base_15:inject 8:25:r2:add@base_24:inject 9:28:r4:add@base_27:inject 10:32:r3:load@base_28:inject 11:53:r1:shfl@base_40:inject 12:54:r6:add@base_52:inject 13:59:r1:mul@base_56:lossy 14:61:r6:mad@base_60:inject 15:62:r7:load@base_61:inject +igneum-ca3-v4-uniform/858 01c668967681f667 0 0:1:1 1:1:0 2:1:0 3:0:0 4:0:0 5:0:0 6:0:0 7:0:0 8:2:0 9:0:0 10:0:0 11:0:0 12:0:0 13:2:0 14:1:1 15:1:1 1 0 0 0 1 0:9:r1:add@base_4:inject 1:11:r4:rotl@base_3:bijective 2:14:r3:shfl@base_6:inject 3:17:r1:rotr@base_10:bijective 4:20:r2:mulhi@base_19:lossy 5:25:r0:rotr@base_22:bijective 6:26:r3:load@base_17:inject 7:30:r2:load@base_26:inject 8:31:r4:mad@base_29:inject 9:32:r6:load@base_31:inject 10:33:r1:xor@base_27:inject 11:40:r4:mad@base_39:inject 12:48:r7:mad@base_42:inject 13:55:r5:add@base_35:inject 14:58:r7:xor@base_50:inject 15:63:r3:mad@base_56:inject +igneum-ca3-v4-uniform/859 88ceb03300a6c268 0 0:1:0 1:0:0 2:1:1 3:1:1 4:2:1 5:1:0 6:2:2 7:2:1 8:0:0 9:0:0 10:2:3 11:2:1 12:1:1 13:0:0 14:1:0 15:0:0 6 1 0 3 2 0:3:r7:mad@base_1:inject 1:8:r5:mulhi@base_6:lossy 2:13:r6:mad@base_11:inject 3:17:r7:load@base_13:inject 4:19:r5:load@base_17:inject 5:20:r4:xor@base_18:inject 6:21:r6:rotr@base_16:bijective 7:24:r3:mulhi@base_23:lossy 8:25:r2:mad@base_22:inject 9:27:r1:load@base_8:inject 10:42:r4:or@base_35:lossy 11:44:r6:add@base_40:inject 12:45:r1:mul@base_38:lossy 13:51:r5:mul@base_41:lossy 14:52:r0:load@base_45:inject 15:62:r4:mul@base_47:lossy +igneum-ca3-v4-uniform/860 b04664403ccd062f 0 0:2:1 1:1:0 2:2:2 3:1:1 4:0:0 5:0:0 6:0:0 7:1:1 8:2:3 9:2:3 10:0:0 11:0:0 12:1:1 13:2:2 14:2:1 15:0:0 3 0 0 1 2 0:8:r2:rotr@base_7:bijective 1:9:r4:load@base_8:inject 2:15:r5:add@base_12:inject 3:16:r7:load@base_15:inject 4:18:r0:mul@base_17:lossy 5:19:r1:rotl@base_3:bijective 6:21:r2:mulhi@base_20:lossy 7:23:r3:mad@base_22:inject 8:30:r5:mulhi@base_24:lossy 9:36:r2:add@base_33:inject 10:40:r3:mad@base_35:inject 11:45:r1:mad@base_42:inject 12:46:r6:shfl@base_31:inject 13:49:r1:load@base_46:inject 14:58:r6:shfl@base_54:inject 15:60:r1:mad@base_59:inject +igneum-ca3-v4-uniform/861 3d540c0a524f81d9 0 0:1:0 1:1:0 2:1:0 3:0:0 4:1:1 5:2:3 6:0:0 7:1:1 8:1:1 9:2:1 10:0:0 11:0:0 12:0:0 13:1:1 14:1:0 15:0:0 4 1 0 3 0 0:1:r2:rotl@base_0:bijective 1:5:r1:mul@base_2:lossy 2:14:r0:load@base_5:inject 3:15:r4:sub@base_9:inject 4:19:r5:load@base_14:inject 5:29:r1:mul@base_28:lossy 6:30:r3:xor@base_26:inject 7:34:r2:mul@base_16:lossy 8:45:r4:xor@base_40:inject 9:46:r3:add@base_43:inject 10:50:r5:or@base_31:lossy 11:53:r1:xor@base_52:inject 12:59:r6:shfl@base_51:inject 13:60:r7:shfl@base_55:inject 14:61:r2:add@base_58:inject 15:62:r3:shfl@base_48:inject +igneum-ca3-v4-uniform/862 041e2d59dc443819 0 0:0:0 1:1:1 2:2:3 3:2:2 4:0:0 5:1:1 6:1:0 7:0:0 8:0:0 9:1:1 10:1:1 11:1:0 12:0:0 13:2:3 14:1:0 15:2:0 2 0 0 1 1 0:4:r3:xor@base_3:inject 1:7:r2:load@base_4:inject 2:10:r3:load@base_7:inject 3:16:r6:xor@base_13:inject 4:20:r1:load@base_16:inject 5:25:r5:shfl@base_23:inject 6:28:r4:mul@base_19:lossy 7:29:r1:load@base_28:inject 8:31:r0:xor@base_30:inject 9:35:r4:xor@base_34:inject 10:36:r6:load@base_35:inject 11:39:r2:add@base_38:inject 12:47:r6:add@base_46:inject 13:51:r0:mad@base_41:inject 14:54:r2:mulhi@base_52:lossy 15:62:r0:xor@base_59:inject +igneum-ca3-v4-uniform/863 ca14fe83d664f142 0 0:0:0 1:1:1 2:0:0 3:0:0 4:1:1 5:2:2 6:1:0 7:2:3 8:1:0 9:2:0 10:0:0 11:2:1 12:1:0 13:2:3 14:2:3 15:0:0 3 0 0 1 2 0:2:r4:xor@base_0:inject 1:7:r3:add@base_3:inject 2:8:r4:load@base_7:inject 3:19:r0:mad@base_18:inject 4:20:r5:mulhi@base_15:lossy 5:35:r6:xor@base_28:inject 6:38:r5:mulhi@base_30:lossy 7:45:r7:sub@base_44:inject 8:47:r2:xor@base_34:inject 9:51:r3:mul@base_32:lossy 10:52:r2:shfl@base_50:inject 11:55:r2:mad@base_54:inject 12:58:r7:load@base_55:inject 13:59:r0:add@base_57:inject 14:62:r2:xor@base_56:inject 15:63:r7:xor@base_61:inject +igneum-ca3-v4-uniform/864 8f85a59b12a71e36 0 0:2:2 1:0:0 2:1:0 3:2:0 4:2:3 5:2:0 6:0:0 7:1:0 8:1:0 9:0:0 10:0:0 11:0:0 12:0:0 13:2:2 14:0:0 15:1:0 6 2 0 2 2 0:4:r5:or@base_3:lossy 1:6:r6:xor@base_2:inject 2:7:r4:mad@base_0:inject 3:11:r0:mulhi@base_8:lossy 4:12:r3:load@base_11:inject 5:13:r6:mul@base_10:lossy 6:25:r7:mulhi@base_20:lossy 7:35:r1:rotl@base_24:bijective 8:40:r0:mul@base_37:lossy 9:43:r2:or@base_19:lossy 10:47:r0:xor@base_45:inject 11:49:r1:load@base_47:inject 12:52:r5:xor@base_50:inject 13:56:r4:sub@base_51:inject 14:59:r2:sub@base_53:inject 15:61:r7:mad@base_60:inject +igneum-ca3-v4-uniform/865 0d251c0d5c0d6b46 0 0:0:0 1:2:0 2:1:0 3:2:2 4:0:0 5:2:1 6:1:1 7:1:1 8:1:0 9:1:1 10:0:0 11:2:1 12:2:2 13:0:0 14:1:0 15:0:0 2 1 0 0 1 0:8:r5:mad@base_4:inject 1:11:r1:xor@base_10:inject 2:17:r4:xor@base_12:inject 3:20:r6:rotr@base_15:bijective 4:23:r0:shfl@base_19:inject 5:24:r1:sub@base_14:inject 6:26:r3:load@base_23:inject 7:34:r7:mulhi@base_30:lossy 8:35:r3:load@base_34:inject 9:36:r0:sub@base_32:inject 10:37:r5:load@base_35:inject 11:40:r3:add@base_39:inject 12:43:r1:load@base_37:inject 13:54:r2:xor@base_45:inject 14:56:r5:or@base_49:lossy 15:59:r7:sub@base_51:inject +igneum-ca3-v4-uniform/866 a54b0da20a15b14c 0 0:2:1 1:0:0 2:1:1 3:0:0 4:2:0 5:2:3 6:0:0 7:2:3 8:2:3 9:1:1 10:1:0 11:1:1 12:2:3 13:2:2 14:2:3 15:2:2 2 0 0 2 0 0:1:r5:shfl@base_0:inject 1:7:r2:add@base_6:inject 2:21:r0:load@base_7:inject 3:22:r5:xor@base_19:inject 4:26:r1:rotl@base_17:bijective 5:33:r1:rotr@base_29:bijective 6:35:r4:shfl@base_9:inject 7:39:r6:mul@base_32:lossy 8:41:r5:mul@base_38:lossy 9:43:r2:add@base_42:inject 10:47:r7:load@base_43:inject 11:52:r4:rotr@base_36:bijective 12:55:r2:shfl@base_51:inject 13:57:r4:load@base_55:inject 14:61:r0:mad@base_58:inject 15:63:r1:xor@base_62:inject +igneum-ca3-v4-uniform/867 f091f228c64af164 0 0:2:2 1:0:0 2:2:1 3:0:0 4:0:0 5:0:0 6:1:1 7:2:2 8:1:0 9:1:0 10:1:0 11:1:0 12:1:1 13:1:1 14:2:3 15:1:1 5 1 0 2 2 0:4:r6:mad@base_3:inject 1:6:r0:xor@base_2:inject 2:8:r1:load@base_6:inject 3:10:r5:load@base_4:inject 4:20:r2:mul@base_19:lossy 5:26:r7:mulhi@base_22:lossy 6:28:r4:mulhi@base_21:lossy 7:32:r5:add@base_31:inject 8:41:r1:mad@base_37:inject 9:44:r3:sub@base_40:inject 10:48:r6:or@base_46:lossy 11:49:r5:load@base_44:inject 12:52:r2:mul@base_39:lossy 13:55:r7:add@base_51:inject 14:59:r7:mad@base_58:inject 15:60:r3:xor@base_54:inject +igneum-ca3-v4-uniform/868 9cebab608a44a8c2 0 0:2:3 1:0:0 2:0:0 3:2:2 4:2:2 5:0:0 6:2:3 7:2:1 8:2:2 9:2:1 10:0:0 11:1:1 12:1:0 13:2:3 14:2:1 15:1:0 1 0 0 1 0 0:4:r7:xor@base_3:inject 1:5:r3:add@base_1:inject 2:8:r0:mad@base_7:inject 3:9:r1:load@base_4:inject 4:25:r5:shfl@base_18:inject 5:27:r5:sub@base_26:inject 6:41:r0:shfl@base_12:inject 7:45:r7:xor@base_40:inject 8:48:r6:shfl@base_39:inject 9:50:r6:xor@base_49:inject 10:54:r0:add@base_46:inject 11:55:r4:mul@base_42:lossy 12:56:r5:add@base_51:inject 13:57:r3:load@base_55:inject 14:58:r4:load@base_56:inject 15:63:r2:load@base_57:inject +igneum-ca3-v4-uniform/869 d6e2fed126ab3812 0 0:0:0 1:0:0 2:1:0 3:0:0 4:1:1 5:2:1 6:0:0 7:1:0 8:2:3 9:2:2 10:0:0 11:1:0 12:2:2 13:1:1 14:2:3 15:2:1 3 0 0 1 2 0:3:r3:shfl@base_1:inject 1:4:r5:load@base_3:inject 2:5:r4:load@base_4:inject 3:8:r6:load@base_5:inject 4:11:r7:mulhi@base_6:lossy 5:12:r2:rotr@base_9:bijective 6:13:r4:load@base_11:inject 7:26:r4:xor@base_25:inject 8:42:r0:add@base_39:inject 9:48:r3:shfl@base_33:inject 10:49:r6:load@base_26:inject 11:54:r7:mulhi@base_35:lossy 12:55:r4:mad@base_52:inject 13:58:r3:mul@base_53:lossy 14:60:r4:shfl@base_57:inject 15:62:r5:load@base_54:inject +igneum-ca3-v4-uniform/870 974606a0f503d3e8 0 0:0:0 1:0:0 2:0:0 3:2:2 4:2:2 5:1:0 6:1:1 7:0:0 8:0:0 9:0:0 10:1:1 11:0:0 12:0:0 13:2:0 14:2:3 15:0:0 5 0 0 1 4 0:1:r0:mulhi@base_0:lossy 1:6:r4:mul@base_5:lossy 2:7:r5:xor@base_4:inject 3:8:r1:load@base_7:inject 4:10:r3:mulhi@base_9:lossy 5:15:r6:rotr@base_13:bijective 6:22:r0:load@base_15:inject 7:27:r1:mulhi@base_16:lossy 8:31:r3:load@base_27:inject 9:33:r4:xor@base_29:inject 10:37:r6:add@base_35:inject 11:40:r3:rotl@base_38:bijective 12:46:r3:mulhi@base_45:lossy 13:48:r5:load@base_46:inject 14:51:r7:rotr@base_41:bijective 15:59:r7:xor@base_58:inject +igneum-ca3-v4-uniform/871 e83a78dedea7b6ff 0 0:1:1 1:1:0 2:0:0 3:2:1 4:2:1 5:1:1 6:0:0 7:2:3 8:0:0 9:1:0 10:1:1 11:1:1 12:1:1 13:0:0 14:0:0 15:1:1 2 0 0 1 1 0:1:r6:mad@base_0:inject 1:5:r2:rotr@base_3:bijective 2:7:r3:mulhi@base_6:lossy 3:8:r7:load@base_5:inject 4:12:r4:rotr@base_9:bijective 5:14:r1:load@base_12:inject 6:18:r4:load@base_14:inject 7:27:r0:shfl@base_21:inject 8:30:r1:mul@base_19:lossy 9:36:r6:xor@base_34:inject 10:37:r7:shfl@base_35:inject 11:38:r5:xor@base_33:inject 12:41:r2:load@base_36:inject 13:44:r3:load@base_38:inject 14:53:r3:sub@base_52:inject 15:61:r4:rotl@base_55:bijective +igneum-ca3-v4-uniform/872 dc5dce3427d40d61 0 0:2:2 1:2:0 2:0:0 3:1:1 4:2:0 5:0:0 6:1:1 7:0:0 8:2:2 9:0:0 10:1:1 11:1:0 12:2:0 13:1:1 14:0:0 15:0:0 2 1 0 0 1 0:5:r3:or@base_4:lossy 1:6:r4:load@base_5:inject 2:8:r5:rotr@base_7:bijective 3:13:r7:sub@base_10:inject 4:21:r0:sub@base_17:inject 5:25:r3:mad@base_23:inject 6:30:r3:sub@base_27:inject 7:33:r4:sub@base_29:inject 8:35:r5:rotr@base_31:bijective 9:37:r4:shfl@base_36:inject 10:45:r4:add@base_43:inject 11:46:r0:mulhi@base_22:lossy 12:52:r3:shfl@base_48:inject 13:57:r0:shfl@base_49:inject 14:58:r1:rotl@base_55:bijective 15:59:r5:load@base_52:inject +igneum-ca3-v4-uniform/873 e7df08db2484ea3a 0 0:2:0 1:0:0 2:2:2 3:2:0 4:0:0 5:0:0 6:2:3 7:2:2 8:2:0 9:1:0 10:1:1 11:0:0 12:0:0 13:2:3 14:2:0 15:2:1 4 0 0 4 0 0:10:r3:add@base_7:inject 1:11:r2:rotl@base_9:bijective 2:12:r5:load@base_10:inject 3:14:r1:mul@base_13:lossy 4:17:r0:load@base_11:inject 5:19:r5:rotl@base_15:bijective 6:21:r6:mul@base_18:lossy 7:22:r2:load@base_21:inject 8:26:r1:rotl@base_16:bijective 9:33:r7:mul@base_23:lossy 10:35:r0:mad@base_27:inject 11:49:r4:rotl@base_47:bijective 12:51:r0:xor@base_48:inject 13:54:r3:load@base_51:inject 14:61:r2:add@base_57:inject 15:63:r1:mul@base_44:lossy +igneum-ca3-v4-uniform/874 c03c3a96e0ba2d7a 0 0:0:0 1:0:0 2:2:0 3:1:0 4:0:0 5:0:0 6:2:2 7:1:1 8:2:2 9:0:0 10:2:3 11:0:0 12:1:1 13:2:2 14:0:0 15:2:2 1 0 0 0 1 0:2:r5:mad@base_0:inject 1:13:r0:load@base_2:inject 2:14:r5:mad@base_8:inject 3:15:r2:add@base_10:inject 4:18:r7:add@base_17:inject 5:22:r4:load@base_18:inject 6:25:r5:shfl@base_19:inject 7:26:r1:xor@base_24:inject 8:27:r3:shfl@base_23:inject 9:29:r0:load@base_25:inject 10:38:r7:shfl@base_36:inject 11:41:r4:xor@base_39:inject 12:50:r7:sub@base_44:inject 13:53:r6:rotr@base_46:bijective 14:58:r3:mulhi@base_52:lossy 15:62:r4:add@base_56:inject +igneum-ca3-v4-uniform/875 c2481d597b16c3f5 0 0:1:1 1:2:0 2:1:0 3:2:3 4:0:0 5:1:0 6:2:3 7:2:1 8:1:1 9:0:0 10:0:0 11:1:0 12:1:0 13:2:0 14:1:0 15:2:1 4 1 0 2 1 0:1:r1:mul@base_0:lossy 1:2:r0:load@base_1:inject 2:8:r5:mul@base_4:lossy 3:10:r1:or@base_9:lossy 4:16:r1:xor@base_13:inject 5:17:r5:shfl@base_15:inject 6:18:r7:load@base_17:inject 7:29:r6:add@base_26:inject 8:33:r3:sub@base_19:inject 9:37:r7:shfl@base_35:inject 10:38:r2:add@base_32:inject 11:41:r4:load@base_38:inject 12:43:r5:load@base_37:inject 13:46:r5:mulhi@base_44:lossy 14:56:r5:shfl@base_54:inject 15:60:r2:load@base_56:inject +igneum-ca3-v4-uniform/876 4e16158d4c2931fe 0 0:2:3 1:0:0 2:2:3 3:2:3 4:1:1 5:1:1 6:0:0 7:2:1 8:1:0 9:2:2 10:0:0 11:2:3 12:2:0 13:1:0 14:0:0 15:0:0 5 2 0 1 2 0:5:r1:shfl@base_3:inject 1:11:r1:rotl@base_10:bijective 2:19:r0:or@base_15:lossy 3:20:r6:mul@base_16:lossy 4:25:r4:load@base_19:inject 5:30:r2:mad@base_27:inject 6:31:r6:load@base_25:inject 7:33:r1:mulhi@base_12:lossy 8:40:r5:xor@base_36:inject 9:42:r7:load@base_40:inject 10:46:r0:or@base_44:lossy 11:50:r3:rotl@base_28:bijective 12:52:r2:rotl@base_48:bijective 13:56:r4:mulhi@base_38:lossy 14:58:r0:load@base_50:inject 15:62:r5:load@base_58:inject +igneum-ca3-v4-uniform/877 e683d6a3d21ee14d 0 0:1:0 1:0:0 2:2:2 3:1:0 4:1:1 5:2:0 6:1:0 7:1:0 8:2:1 9:0:0 10:0:0 11:1:0 12:0:0 13:0:0 14:0:0 15:1:1 4 0 0 2 2 0:2:r6:mad@base_1:inject 1:3:r3:load@base_2:inject 2:8:r5:sub@base_5:inject 3:15:r4:mul@base_9:lossy 4:18:r2:mul@base_16:lossy 5:23:r1:mulhi@base_22:lossy 6:27:r2:mad@base_20:inject 7:34:r3:load@base_18:inject 8:38:r7:load@base_34:inject 9:39:r3:add@base_35:inject 10:40:r6:load@base_39:inject 11:43:r1:load@base_40:inject 12:48:r5:load@base_43:inject 13:51:r3:mad@base_46:inject 14:56:r1:add@base_52:inject 15:57:r6:mulhi@base_55:lossy +igneum-ca3-v4-uniform/878 553c4900d67d054d 0 0:2:3 1:2:3 2:2:2 3:0:0 4:2:3 5:2:0 6:2:1 7:2:0 8:2:3 9:0:0 10:1:0 11:1:0 12:1:1 13:0:0 14:1:1 15:0:0 3 0 0 3 0 0:14:r5:mul@base_13:lossy 1:15:r6:mul@base_11:lossy 2:17:r7:load@base_14:inject 3:26:r6:load@base_17:inject 4:27:r0:load@base_26:inject 5:29:r6:load@base_27:inject 6:30:r3:shfl@base_22:inject 7:34:r4:mul@base_18:lossy 8:35:r1:load@base_29:inject 9:36:r7:load@base_35:inject 10:42:r2:load@base_34:inject 11:43:r0:load@base_36:inject 12:47:r2:shfl@base_46:inject 13:52:r6:rotr@base_37:bijective 14:55:r1:mad@base_44:inject 15:56:r3:rotl@base_54:bijective +igneum-ca3-v4-uniform/879 f1832e83b946a3b6 0 0:1:0 1:1:1 2:0:0 3:0:0 4:1:1 5:1:0 6:1:0 7:1:0 8:2:2 9:2:1 10:2:1 11:2:2 12:2:1 13:2:3 14:2:0 15:0:0 3 0 0 3 0 0:1:r1:add@base_0:inject 1:6:r1:add@base_2:inject 2:9:r7:sub@base_4:inject 3:15:r5:mul@base_12:lossy 4:26:r1:rotl@base_7:bijective 5:30:r3:sub@base_14:inject 6:36:r7:rotr@base_34:bijective 7:39:r4:mul@base_38:lossy 8:41:r1:add@base_37:inject 9:42:r0:load@base_41:inject 10:43:r6:load@base_39:inject 11:50:r7:load@base_42:inject 12:51:r0:load@base_43:inject 13:56:r2:load@base_50:inject 14:58:r6:xor@base_52:inject 15:62:r1:mul@base_59:lossy +igneum-ca3-v4-uniform/880 8adc0cfbf452331d 0 0:1:0 1:1:0 2:0:0 3:2:3 4:2:2 5:1:1 6:2:2 7:1:0 8:2:0 9:1:1 10:0:0 11:0:0 12:2:0 13:0:0 14:0:0 15:2:3 3 1 0 2 0 0:3:r3:shfl@base_1:inject 1:7:r1:sub@base_0:inject 2:9:r4:rotl@base_6:bijective 3:16:r3:add@base_8:inject 4:18:r0:mul@base_14:lossy 5:24:r0:add@base_22:inject 6:26:r2:load@base_18:inject 7:29:r3:add@base_27:inject 8:31:r7:rotl@base_4:bijective 9:38:r6:mul@base_30:lossy 10:43:r0:rotr@base_42:bijective 11:49:r1:or@base_45:lossy 12:54:r7:mad@base_51:inject 13:55:r6:mad@base_50:inject 14:56:r2:sub@base_52:inject 15:57:r1:load@base_55:inject +igneum-ca3-v4-uniform/881 a756a05014a633c0 0 0:1:0 1:0:0 2:0:0 3:1:0 4:0:0 5:2:0 6:2:3 7:1:1 8:0:0 9:0:0 10:1:0 11:1:0 12:1:1 13:0:0 14:1:0 15:1:1 4 0 0 4 0 0:6:r7:shfl@base_2:inject 1:9:r4:mul@base_7:lossy 2:15:r3:add@base_11:inject 3:28:r0:sub@base_25:inject 4:29:r4:load@base_28:inject 5:32:r0:mul@base_30:lossy 6:34:r6:xor@base_23:inject 7:39:r5:sub@base_37:inject 8:41:r7:add@base_35:inject 9:45:r0:load@base_41:inject 10:47:r2:load@base_34:inject 11:53:r6:xor@base_51:inject 12:55:r5:xor@base_49:inject 13:59:r1:mul@base_38:lossy 14:61:r4:shfl@base_57:inject 15:63:r2:mul@base_58:lossy +igneum-ca3-v4-uniform/882 9cb327c96def87d4 0 0:1:0 1:2:1 2:0:0 3:1:0 4:0:0 5:0:0 6:2:2 7:0:0 8:2:1 9:0:0 10:1:0 11:1:1 12:1:1 13:2:2 14:2:2 15:1:0 5 0 0 4 1 0:9:r3:mul@base_4:lossy 1:15:r4:mul@base_8:lossy 2:23:r0:xor@base_19:inject 3:28:r5:mul@base_22:lossy 4:31:r7:load@base_23:inject 5:36:r2:load@base_28:inject 6:37:r5:load@base_36:inject 7:38:r1:mad@base_30:inject 8:41:r6:load@base_38:inject 9:42:r3:mul@base_39:lossy 10:46:r1:add@base_44:inject 11:49:r6:mad@base_43:inject 12:50:r0:add@base_48:inject 13:55:r5:load@base_50:inject 14:58:r1:load@base_55:inject 15:59:r5:mulhi@base_56:lossy +igneum-ca3-v4-uniform/883 3f7a4206404bf714 0 0:1:1 1:2:0 2:0:0 3:2:1 4:2:2 5:1:1 6:1:1 7:1:1 8:2:1 9:1:0 10:0:0 11:0:0 12:1:1 13:2:0 14:2:2 15:2:2 4 0 0 3 1 0:8:r3:add@base_4:inject 1:9:r0:load@base_8:inject 2:13:r2:xor@base_5:inject 3:16:r1:mulhi@base_12:lossy 4:17:r6:mul@base_14:lossy 5:19:r5:rotl@base_7:bijective 6:30:r1:rotl@base_22:bijective 7:36:r0:xor@base_32:inject 8:43:r2:mul@base_34:lossy 9:46:r7:mul@base_44:lossy 10:47:r4:sub@base_37:inject 11:52:r6:load@base_46:inject 12:54:r4:add@base_48:inject 13:57:r5:add@base_50:inject 14:58:r0:load@base_54:inject 15:60:r5:add@base_59:inject +igneum-ca3-v4-uniform/884 d1a00855dcd47ba4 0 0:0:0 1:1:1 2:1:0 3:1:1 4:2:1 5:1:0 6:2:3 7:2:0 8:1:1 9:1:1 10:2:2 11:1:0 12:2:3 13:2:0 14:1:1 15:2:3 5 1 0 2 2 0:5:r5:add@base_3:inject 1:7:r1:xor@base_4:inject 2:10:r7:mul@base_8:lossy 3:13:r5:load@base_10:inject 4:18:r7:mad@base_14:inject 5:19:r6:mul@base_17:lossy 6:22:r2:mulhi@base_15:lossy 7:24:r3:load@base_22:inject 8:35:r3:or@base_29:lossy 9:41:r2:sub@base_38:inject 10:43:r3:mulhi@base_42:lossy 11:45:r4:mad@base_44:inject 12:50:r6:mad@base_49:inject 13:51:r5:add@base_48:inject 14:59:r0:rotl@base_55:bijective 15:62:r2:rotl@base_58:bijective +igneum-ca3-v4-uniform/885 c56ca363db4a346b 0 0:2:1 1:2:2 2:1:0 3:2:2 4:1:0 5:2:1 6:0:0 7:0:0 8:1:1 9:1:1 10:1:1 11:2:3 12:1:1 13:0:0 14:2:0 15:0:0 2 1 0 1 0 0:18:r3:rotl@base_2:bijective 1:20:r2:load@base_18:inject 2:24:r7:xor@base_22:inject 3:25:r0:shfl@base_23:inject 4:27:r1:load@base_25:inject 5:30:r0:add@base_28:inject 6:36:r4:load@base_30:inject 7:38:r6:rotr@base_37:bijective 8:39:r0:load@base_38:inject 9:40:r2:load@base_36:inject 10:42:r7:or@base_34:lossy 11:44:r5:rotr@base_43:bijective 12:46:r1:load@base_44:inject 13:55:r5:mul@base_54:lossy 14:57:r1:rotl@base_49:bijective 15:59:r4:rotl@base_47:bijective +igneum-ca3-v4-uniform/886 82821aba76a598b7 0 0:2:3 1:1:0 2:0:0 3:0:0 4:1:1 5:2:2 6:1:1 7:2:1 8:2:1 9:0:0 10:1:1 11:0:0 12:1:1 13:1:1 14:0:0 15:0:0 5 4 2 1 0 0:5:r0:or@base_4:lossy-or-chain1 1:9:r6:rotr@base_0:bijective 2:16:r5:mul@base_15:lossy 3:21:r0:add@base_18:inject 4:23:r3:or@base_20:lossy 5:28:r7:add@base_27:inject 6:31:r2:shfl@base_30:inject 7:35:r7:mad@base_34:inject 8:41:r7:or@base_36:lossy-or-chain1 9:49:r6:xor@base_48:inject 10:50:r4:load@base_49:inject 11:54:r7:sub@base_52:inject 12:57:r3:xor@base_56:inject 13:59:r6:load@base_50:inject 14:60:r0:or@base_47:lossy 15:62:r1:load@base_60:inject +igneum-ca3-v4-uniform/887 d154f2dcac722038 0 0:0:0 1:2:2 2:0:0 3:2:3 4:2:1 5:1:0 6:0:0 7:2:2 8:2:0 9:2:2 10:0:0 11:0:0 12:2:1 13:1:1 14:0:0 15:1:1 1 0 0 0 1 0:4:r0:sub@base_2:inject 1:7:r7:shfl@base_5:inject 2:8:r3:xor@base_3:inject 3:15:r5:sub@base_13:inject 4:24:r0:rotr@base_16:bijective 5:29:r3:mulhi@base_28:lossy 6:31:r1:add@base_21:inject 7:33:r3:shfl@base_30:inject 8:34:r5:load@base_29:inject 9:38:r7:mad@base_37:inject 10:42:r7:xor@base_40:inject 11:48:r4:add@base_46:inject 12:50:r6:rotl@base_49:bijective 13:53:r0:xor@base_43:inject 14:54:r4:load@base_53:inject 15:57:r5:add@base_47:inject +igneum-ca3-v4-uniform/888 c9a2804c68f093d1 0 0:0:0 1:1:0 2:2:2 3:1:0 4:0:0 5:1:0 6:0:0 7:1:1 8:2:0 9:1:1 10:0:0 11:2:2 12:1:1 13:2:0 14:0:0 15:0:0 1 0 0 0 1 0:2:r0:sub@base_1:inject 1:20:r7:mad@base_15:inject 2:23:r1:rotl@base_9:bijective 3:25:r5:mulhi@base_18:lossy 4:31:r6:load@base_23:inject 5:34:r7:xor@base_30:inject 6:36:r4:add@base_24:inject 7:39:r0:mad@base_19:inject 8:44:r3:load@base_39:inject 9:50:r2:add@base_32:inject 10:52:r1:sub@base_47:inject 11:54:r7:mad@base_43:inject 12:55:r5:load@base_52:inject 13:58:r7:load@base_55:inject 14:60:r0:sub@base_59:inject 15:61:r6:load@base_50:inject +igneum-ca3-v4-uniform/889 4bb878dc74a5ab0f 0 0:1:1 1:1:0 2:1:0 3:2:2 4:0:0 5:0:0 6:1:1 7:2:1 8:0:0 9:2:3 10:0:0 11:2:0 12:0:0 13:2:0 14:1:1 15:0:0 6 2 0 3 1 0:2:r3:mul@base_1:lossy 1:3:r2:mad@base_0:inject 2:7:r0:mulhi@base_6:lossy 3:8:r4:mul@base_5:lossy 4:9:r6:load@base_7:inject 5:13:r6:rotl@base_11:bijective 6:15:r0:rotl@base_14:bijective 7:18:r3:load@base_9:inject 8:27:r2:or@base_26:lossy 9:28:r3:load@base_27:inject 10:36:r5:mad@base_33:inject 11:38:r5:xor@base_37:inject 12:47:r3:xor@base_41:inject 13:56:r2:mul@base_53:lossy 14:59:r4:or@base_58:lossy 15:63:r7:load@base_56:inject +igneum-ca3-v4-uniform/890 3fb3f0e1390ff3e3 0 0:2:1 1:1:0 2:2:3 3:1:0 4:0:0 5:0:0 6:2:2 7:1:0 8:2:2 9:1:1 10:2:3 11:2:0 12:1:0 13:0:0 14:1:0 15:0:0 4 0 0 3 1 0:3:r1:sub@base_1:inject 1:9:r2:mad@base_8:inject 2:11:r0:mulhi@base_5:lossy 3:12:r7:mul@base_10:lossy 4:13:r4:shfl@base_4:inject 5:14:r6:load@base_11:inject 6:23:r4:xor@base_22:inject 7:24:r0:xor@base_21:inject 8:29:r3:shfl@base_26:inject 9:36:r5:mad@base_34:inject 10:40:r7:xor@base_33:inject 11:42:r2:mul@base_39:lossy 12:43:r4:add@base_32:inject 13:52:r0:mul@base_50:lossy 14:57:r0:add@base_53:inject 15:59:r2:load@base_52:inject +igneum-ca3-v4-uniform/891 b5d1bf04fb72f210 0 0:2:0 1:1:1 2:0:0 3:2:0 4:1:0 5:0:0 6:1:0 7:1:1 8:0:0 9:2:3 10:1:1 11:2:0 12:0:0 13:1:0 14:1:1 15:1:0 3 0 0 1 2 0:2:r7:xor@base_1:inject 1:6:r4:load@base_2:inject 2:10:r1:mulhi@base_5:lossy 3:11:r2:load@base_10:inject 4:13:r4:load@base_11:inject 5:15:r0:mad@base_9:inject 6:21:r5:sub@base_19:inject 7:26:r3:mad@base_23:inject 8:27:r1:rotr@base_18:bijective 9:32:r1:xor@base_30:inject 10:36:r4:mulhi@base_28:lossy 11:43:r6:mad@base_35:inject 12:46:r1:rotl@base_45:bijective 13:50:r0:mul@base_29:lossy 14:52:r4:sub@base_51:inject 15:55:r5:load@base_46:inject +igneum-ca3-v4-uniform/892 5b35491f3038e9cf 0 0:2:3 1:0:0 2:0:0 3:1:0 4:2:0 5:1:0 6:0:0 7:1:0 8:0:0 9:1:1 10:0:0 11:2:2 12:0:0 13:0:0 14:0:0 15:0:0 4 0 0 2 2 0:1:r3:sub@base_0:inject 1:5:r7:xor@base_4:inject 2:7:r1:load@base_5:inject 3:12:r7:add@base_6:inject 4:13:r6:load@base_12:inject 5:16:r4:xor@base_14:inject 6:19:r1:shfl@base_18:inject 7:20:r0:mad@base_15:inject 8:27:r3:mul@base_21:lossy 9:32:r7:mad@base_30:inject 10:35:r0:mul@base_34:lossy 11:41:r6:mulhi@base_36:lossy 12:44:r4:load@base_41:inject 13:49:r2:rotr@base_39:bijective 14:56:r5:rotl@base_54:bijective 15:61:r7:mulhi@base_45:lossy +igneum-ca3-v4-uniform/893 d2eeac715903fb65 0 0:1:0 1:0:0 2:0:0 3:1:0 4:1:0 5:1:0 6:2:3 7:0:0 8:2:0 9:2:1 10:2:0 11:0:0 12:2:2 13:2:1 14:1:1 15:2:2 2 0 0 1 1 0:1:r2:rotl@base_0:bijective 1:3:r1:load@base_1:inject 2:13:r5:mad@base_4:inject 3:27:r1:sub@base_24:inject 4:28:r5:mul@base_25:lossy 5:39:r5:rotl@base_31:bijective 6:40:r1:add@base_32:inject 7:43:r7:xor@base_41:inject 8:44:r3:xor@base_37:inject 9:46:r3:mulhi@base_45:lossy 10:47:r2:load@base_43:inject 11:54:r2:add@base_53:inject 12:55:r0:shfl@base_42:inject 13:57:r5:add@base_56:inject 14:58:r2:load@base_55:inject 15:62:r2:shfl@base_61:inject +igneum-ca3-v4-uniform/894 0b1e9e71144506df 0 0:2:0 1:0:0 2:2:0 3:1:1 4:1:1 5:1:0 6:0:0 7:0:0 8:0:0 9:1:0 10:2:2 11:2:0 12:2:2 13:1:0 14:1:0 15:0:0 3 0 0 2 1 0:6:r4:rotl@base_5:bijective 1:7:r1:load@base_6:inject 2:8:r2:mad@base_4:inject 3:11:r7:rotr@base_3:bijective 4:14:r1:mul@base_12:lossy 5:16:r1:mad@base_15:inject 6:20:r5:load@base_16:inject 7:33:r1:shfl@base_29:inject 8:35:r4:mad@base_28:inject 9:36:r7:rotl@base_32:bijective 10:38:r5:shfl@base_37:inject 11:40:r0:load@base_38:inject 12:41:r6:xor@base_39:inject 13:42:r2:load@base_41:inject 14:46:r6:mul@base_45:lossy 15:59:r0:mulhi@base_57:lossy +igneum-ca3-v4-uniform/895 fb4987e4c60466d4 0 0:0:0 1:1:1 2:1:0 3:2:3 4:1:0 5:1:0 6:2:3 7:2:1 8:2:2 9:0:0 10:0:0 11:0:0 12:1:0 13:1:1 14:0:0 15:0:0 1 0 0 1 0 0:2:r6:rotr@base_1:bijective 1:6:r7:add@base_5:inject 2:9:r4:rotr@base_7:bijective 3:10:r2:add@base_8:inject 4:11:r5:rotl@base_4:bijective 5:20:r0:sub@base_14:inject 6:21:r2:load@base_20:inject 7:22:r5:sub@base_18:inject 8:24:r4:load@base_22:inject 9:25:r7:load@base_21:inject 10:28:r4:shfl@base_26:inject 11:47:r6:add@base_39:inject 12:52:r7:mul@base_50:lossy 13:54:r1:xor@base_53:inject 14:59:r5:load@base_47:inject 15:62:r1:mad@base_60:inject +igneum-ca3-v4-uniform/896 c06e637f56f79833 0 0:2:2 1:0:0 2:1:1 3:2:1 4:2:0 5:2:2 6:1:0 7:0:0 8:0:0 9:1:0 10:2:1 11:0:0 12:1:1 13:2:3 14:2:1 15:1:1 3 1 0 1 1 0:3:r6:add@base_2:inject 1:7:r2:load@base_3:inject 2:9:r4:or@base_1:lossy 3:15:r7:load@base_9:inject 4:18:r6:add@base_12:inject 5:22:r2:rotl@base_14:bijective 6:23:r4:load@base_22:inject 7:30:r7:load@base_18:inject 8:33:r4:mul@base_29:lossy 9:36:r2:xor@base_32:inject 10:40:r1:xor@base_39:inject 11:42:r2:load@base_40:inject 12:46:r0:mulhi@base_35:lossy 13:52:r7:mad@base_48:inject 14:60:r2:shfl@base_58:inject 15:62:r6:rotl@base_55:bijective +igneum-ca3-v4-uniform/897 618f627a9dc51324 0 0:2:3 1:2:3 2:0:0 3:1:1 4:0:0 5:0:0 6:2:3 7:0:0 8:0:0 9:0:0 10:2:2 11:2:3 12:1:0 13:2:3 14:2:3 15:2:2 3 0 0 1 2 0:2:r6:shfl@base_1:inject 1:4:r2:load@base_2:inject 2:17:r4:add@base_13:inject 3:18:r6:mul@base_12:lossy 4:21:r1:rotr@base_19:bijective 5:23:r3:mulhi@base_14:lossy 6:24:r4:xor@base_22:inject 7:38:r4:shfl@base_32:inject 8:40:r2:rotl@base_30:bijective 9:43:r6:xor@base_41:inject 10:45:r7:mulhi@base_42:lossy 11:47:r3:load@base_40:inject 12:51:r4:load@base_47:inject 13:53:r1:shfl@base_44:inject 14:56:r5:add@base_49:inject 15:63:r7:xor@base_58:inject +igneum-ca3-v4-uniform/898 902c314fee5d0b9a 1 0:1:0 1:2:3 2:0:0 3:0:0 4:0:0 5:2:1 6:0:0 7:1:0 8:1:0 9:0:0 10:0:0 11:2:1 12:0:0 13:0:0 14:0:0 15:0:0 1 0 0 0 1 0:4:r1:xor@base_3:inject 1:9:r4:mulhi@base_7:lossy 2:10:r6:add@base_5:inject 3:15:r0:add@base_12:inject 4:23:r1:sub@base_13:inject 5:25:r0:add@base_22:inject 6:26:r7:add@base_21:inject 7:35:r6:sub@base_32:inject 8:39:r7:shfl@base_36:inject 9:41:r1:shfl@base_38:inject 10:44:r7:shfl@base_40:inject 11:45:r5:mad@base_33:inject 12:52:r7:rotl@base_48:bijective 13:53:r4:shfl@base_50:inject 14:56:r5:xor@base_49:inject 15:58:r3:load@base_44:inject +igneum-ca3-v4-uniform/899 5f345f0bda8fa41b 0 0:0:0 1:0:0 2:0:0 3:0:0 4:2:0 5:0:0 6:2:2 7:0:0 8:2:3 9:0:0 10:1:1 11:2:1 12:2:3 13:2:3 14:0:0 15:2:0 2 0 0 1 1 0:1:r2:mad@base_0:inject 1:4:r0:load@base_1:inject 2:6:r5:add@base_5:inject 3:11:r4:load@base_6:inject 4:12:r6:add@base_7:inject 5:14:r1:load@base_11:inject 6:24:r2:mul@base_22:lossy 7:25:r3:rotr@base_8:bijective 8:26:r6:shfl@base_20:inject 9:31:r7:rotl@base_18:bijective 10:41:r7:add@base_40:inject 11:43:r4:rotr@base_42:bijective 12:51:r5:mulhi@base_50:lossy 13:53:r1:xor@base_52:inject 14:59:r0:xor@base_58:inject 15:62:r1:load@base_59:inject +igneum-ca3-v4-uniform/900 a23cb1c0a7f77887 0 0:1:0 1:2:3 2:0:0 3:0:0 4:0:0 5:1:1 6:2:3 7:2:1 8:1:1 9:1:1 10:1:0 11:2:2 12:1:1 13:0:0 14:2:2 15:1:0 2 1 0 1 0 0:1:r5:rotl@shadow_238:bijective 1:2:r3:load@base_1:inject 2:8:r4:rotl@base_7:bijective 3:10:r1:sub@base_3:inject 4:20:r0:rotr@base_16:bijective 5:27:r3:rotr@base_19:bijective 6:29:r6:rotl@base_23:bijective 7:31:r1:mul@base_26:lossy 8:33:r5:add@base_30:inject 9:40:r1:mad@base_34:inject 10:42:r3:xor@base_41:inject 11:45:r2:load@base_20:inject 12:48:r1:shfl@base_43:inject 13:50:r6:or@base_44:lossy 14:54:r3:load@base_50:inject 15:59:r4:mad@base_53:inject +igneum-ca3-v4-uniform/901 f732768d0ae41536 0 0:1:0 1:2:2 2:2:1 3:1:0 4:2:3 5:2:3 6:0:0 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:0:0 13:2:0 14:1:1 15:1:1 2 1 0 1 0 0:2:r7:or@base_0:lossy 1:6:r4:rotl@base_3:bijective 2:8:r6:mul@base_5:lossy 3:9:r7:shfl@base_7:inject 4:12:r0:rotr@base_1:bijective 5:18:r2:xor@base_17:inject 6:25:r2:sub@base_24:inject 7:33:r6:mad@base_28:inject 8:35:r5:xor@base_27:inject 9:39:r1:add@base_37:inject 10:40:r3:shfl@base_38:inject 11:41:r4:load@base_35:inject 12:49:r0:add@base_47:inject 13:56:r0:rotl@base_50:bijective 14:57:r2:add@base_48:inject 15:63:r0:add@base_62:inject +igneum-ca3-v4-uniform/902 a1ee4b7bf29a3620 0 0:1:0 1:0:0 2:2:3 3:2:2 4:2:2 5:2:2 6:2:1 7:1:1 8:2:0 9:2:1 10:0:0 11:0:0 12:2:2 13:0:0 14:0:0 15:1:0 2 1 0 1 0 0:2:r3:rotl@base_0:bijective 1:5:r1:or@base_1:lossy 2:9:r7:load@base_2:inject 3:11:r4:mad@base_7:inject 4:16:r2:add@base_14:inject 5:19:r1:add@base_6:inject 6:20:r7:add@base_12:inject 7:22:r0:load@base_19:inject 8:26:r5:xor@base_4:inject 9:28:r2:shfl@base_27:inject 10:33:r3:load@base_28:inject 11:35:r1:load@base_33:inject 12:54:r4:mad@base_44:inject 13:55:r7:add@base_48:inject 14:56:r2:rotl@base_52:bijective 15:60:r1:mul@base_45:lossy +igneum-ca3-v4-uniform/903 57158d43fa68aebf 0 0:1:0 1:2:3 2:2:2 3:1:1 4:2:1 5:1:0 6:1:1 7:2:0 8:2:2 9:0:0 10:1:1 11:2:2 12:2:2 13:0:0 14:1:0 15:0:0 4 1 0 1 2 0:3:r3:rotl@base_0:bijective 1:4:r7:or@base_2:lossy 2:6:r6:load@base_4:inject 3:7:r3:mul@base_5:lossy 4:12:r5:mad@base_11:inject 5:15:r1:load@base_12:inject 6:22:r1:mad@base_21:inject 7:30:r7:xor@base_29:inject 8:33:r0:load@base_30:inject 9:38:r1:mulhi@base_37:lossy 10:40:r2:xor@base_36:inject 11:41:r5:load@base_38:inject 12:47:r7:sub@base_46:inject 13:52:r5:xor@base_51:inject 14:56:r6:xor@base_53:inject 15:61:r0:mulhi@base_60:lossy +igneum-ca3-v4-uniform/904 a125720b8b9ee394 0 0:2:0 1:2:0 2:2:0 3:2:0 4:1:1 5:0:0 6:1:1 7:0:0 8:1:1 9:1:1 10:1:1 11:1:1 12:0:0 13:1:0 14:0:0 15:2:1 1 0 0 1 0 0:8:r2:mad@base_6:inject 1:11:r3:add@base_7:inject 2:12:r1:shfl@base_5:inject 3:14:r0:load@base_11:inject 4:30:r1:shfl@base_27:inject 5:31:r7:add@base_22:inject 6:32:r0:xor@base_23:inject 7:35:r2:load@base_31:inject 8:36:r4:add@base_33:inject 9:41:r7:mul@base_40:lossy 10:44:r0:shfl@base_43:inject 11:45:r2:xor@base_38:inject 12:51:r4:rotl@base_42:bijective 13:55:r2:load@base_51:inject 14:56:r3:shfl@base_49:inject 15:58:r2:mad@base_57:inject +igneum-ca3-v4-uniform/905 a0f3e677970a407b 1 0:1:0 1:2:1 2:1:0 3:1:1 4:1:0 5:0:0 6:1:1 7:2:3 8:1:1 9:2:3 10:0:0 11:1:1 12:1:1 13:1:0 14:2:2 15:0:0 0 0 0 0 0 0:2:r3:rotl@base_1:bijective 1:5:r0:load@base_2:inject 2:8:r2:add@base_7:inject 3:15:r5:load@base_8:inject 4:24:r6:load@base_15:inject 5:25:r4:shfl@base_13:inject 6:29:r3:add@base_16:inject 7:32:r4:add@base_31:inject 8:37:r0:shfl@base_17:inject 9:42:r1:add@base_22:inject 10:43:r5:load@base_37:inject 11:45:r2:load@base_32:inject 12:46:r0:rotr@base_44:bijective 13:48:r6:load@base_42:inject 14:58:r6:shfl@base_52:inject 15:60:r1:xor@base_50:inject +igneum-ca3-v4-uniform/906 9cdbf855c272f973 0 0:2:3 1:2:0 2:2:1 3:0:0 4:2:1 5:0:0 6:2:0 7:2:0 8:1:1 9:0:0 10:0:0 11:0:0 12:2:2 13:1:1 14:0:0 15:2:3 0 0 0 0 0 0:4:r3:rotr@base_3:bijective 1:5:r2:shfl@base_1:inject 2:10:r6:load@base_5:inject 3:16:r3:shfl@base_15:inject 4:35:r0:mad@base_31:inject 5:40:r2:load@base_35:inject 6:41:r6:load@base_40:inject 7:42:r4:rotr@base_38:bijective 8:43:r7:load@base_42:inject 9:44:r5:sub@base_28:inject 10:45:r1:load@base_43:inject 11:48:r3:rotl@base_47:bijective 12:49:r2:load@base_44:inject 13:52:r4:load@base_45:inject 14:56:r1:rotr@base_51:bijective 15:57:r2:load@base_56:inject +igneum-ca3-v4-uniform/907 91cc6a1f117b10a5 0 0:2:0 1:1:0 2:0:0 3:1:0 4:2:1 5:2:3 6:0:0 7:1:0 8:0:0 9:0:0 10:1:1 11:2:1 12:0:0 13:0:0 14:1:1 15:1:0 3 1 0 2 0 0:7:r6:mad@base_1:inject 1:8:r0:mul@base_4:lossy 2:15:r7:xor@base_10:inject 3:17:r7:mul@base_16:lossy 4:21:r2:or@base_18:lossy 5:27:r0:rotl@base_23:bijective 6:28:r1:load@base_21:inject 7:30:r4:load@base_28:inject 8:32:r6:mad@base_29:inject 9:34:r7:shfl@base_31:inject 10:39:r2:load@base_30:inject 11:41:r6:sub@base_36:inject 12:42:r3:load@base_32:inject 13:52:r7:mad@base_44:inject 14:58:r7:rotr@base_55:bijective 15:59:r2:shfl@base_49:inject +igneum-ca3-v4-uniform/908 71a784ca87d600be 0 0:0:0 1:2:0 2:2:1 3:1:1 4:0:0 5:2:3 6:0:0 7:2:3 8:2:3 9:0:0 10:1:0 11:2:0 12:1:1 13:0:0 14:0:0 15:0:0 2 1 0 1 0 0:6:r1:shfl@base_5:inject 1:7:r0:or@base_4:lossy 2:10:r5:mul@base_9:lossy 3:19:r6:xor@base_15:inject 4:23:r7:add@base_17:inject 5:24:r4:load@base_23:inject 6:31:r0:mad@base_28:inject 7:32:r4:load@base_31:inject 8:33:r5:load@base_32:inject 9:37:r6:load@base_33:inject 10:39:r3:load@base_37:inject 11:40:r2:rotr@base_35:bijective 12:43:r7:load@base_39:inject 13:47:r4:add@base_44:inject 14:56:r7:rotl@base_51:bijective 15:61:r4:add@base_53:inject +igneum-ca3-v4-uniform/909 36fdd81608143f89 0 0:1:1 1:0:0 2:1:0 3:0:0 4:2:3 5:2:2 6:2:0 7:2:0 8:0:0 9:2:2 10:2:3 11:0:0 12:0:0 13:1:1 14:2:1 15:2:3 5 1 1 3 1 0:2:r3:or@base_1:lossy-or-chain1 1:3:r7:add@base_0:inject 2:4:r4:load@base_3:inject 3:7:r6:shfl@base_6:inject 4:10:r1:load@base_4:inject 5:12:r0:load@base_10:inject 6:20:r5:mulhi@base_19:lossy 7:22:r6:mul@base_17:lossy 8:24:r1:mul@base_18:lossy 9:30:r0:sub@base_29:inject 10:31:r2:xor@base_27:inject 11:32:r1:load@base_30:inject 12:43:r5:load@base_24:inject 13:52:r0:sub@base_41:inject 14:55:r5:mul@base_45:lossy 15:61:r3:add@base_60:inject +igneum-ca3-v4-uniform/910 dd33264f743cc7cb 1 0:2:1 1:0:0 2:2:2 3:1:1 4:1:1 5:2:2 6:2:3 7:1:1 8:1:1 9:2:2 10:2:0 11:2:0 12:1:0 13:2:3 14:0:0 15:0:0 2 1 0 1 0 0:1:r6:rotl@base_0:bijective 1:3:r5:load@base_1:inject 2:5:r1:load@base_3:inject 3:11:r6:add@base_7:inject 4:13:r5:sub@base_10:inject 5:18:r4:shfl@base_16:inject 6:20:r5:shfl@base_15:inject 7:21:r3:sub@base_19:inject 8:23:r0:load@base_18:inject 9:32:r4:add@base_27:inject 10:35:r1:or@base_26:lossy 11:36:r7:rotr@base_28:bijective 12:44:r2:rotr@base_31:bijective 13:45:r1:load@base_36:inject 14:52:r5:rotr@base_42:bijective 15:62:r2:mul@base_59:lossy +igneum-ca3-v4-uniform/911 a8a7a002f7f4f496 0 0:1:0 1:2:1 2:0:0 3:1:0 4:2:2 5:0:0 6:1:0 7:1:0 8:2:2 9:2:1 10:0:0 11:0:0 12:1:0 13:1:0 14:1:1 15:0:0 1 0 0 1 0 0:5:r6:add@base_4:inject 1:12:r1:sub@base_10:inject 2:15:r2:sub@base_13:inject 3:16:r4:add@base_0:inject 4:17:r3:add@base_9:inject 5:23:r5:mul@base_18:lossy 6:24:r4:sub@base_20:inject 7:29:r5:add@base_27:inject 8:37:r4:xor@base_34:inject 9:44:r6:rotl@base_40:bijective 10:52:r0:load@base_16:inject 11:55:r4:add@base_53:inject 12:57:r7:add@base_56:inject 13:60:r5:add@base_39:inject 14:61:r2:sub@base_45:inject 15:63:r4:load@base_60:inject +igneum-ca3-v4-uniform/912 b3d1a708a7b91c25 0 0:2:2 1:0:0 2:2:0 3:0:0 4:0:0 5:1:0 6:2:3 7:0:0 8:1:1 9:2:0 10:2:1 11:2:3 12:2:3 13:2:0 14:2:3 15:0:0 0 0 0 0 0 0:5:r5:rotr@base_1:bijective 1:6:r7:load@base_5:inject 2:14:r2:mad@base_12:inject 3:15:r3:xor@base_8:inject 4:18:r5:shfl@base_17:inject 5:19:r2:load@base_18:inject 6:27:r5:add@base_22:inject 7:34:r0:rotr@base_28:bijective 8:36:r0:shfl@base_35:inject 9:41:r6:rotr@base_32:bijective 10:42:r2:sub@base_33:inject 11:45:r0:rotl@base_40:bijective 12:46:r7:load@base_27:inject 13:55:r7:rotl@base_51:bijective 14:56:r1:load@base_46:inject 15:63:r5:load@base_55:inject +igneum-ca3-v4-uniform/913 067767130a58d37e 0 0:2:0 1:0:0 2:1:1 3:2:1 4:1:0 5:0:0 6:2:1 7:1:0 8:0:0 9:2:3 10:0:0 11:1:1 12:2:1 13:2:2 14:1:1 15:2:1 4 3 1 0 1 0:4:r6:rotr@base_0:bijective 1:11:r7:xor@base_10:inject 2:15:r0:rotl@base_12:bijective 3:22:r3:mulhi@base_19:lossy 4:23:r5:mad@base_21:inject 5:32:r7:or@base_18:lossy 6:33:r5:add@base_29:inject 7:35:r3:shfl@base_30:inject 8:41:r6:load@base_32:inject 9:42:r7:load@base_35:inject 10:44:r5:or@base_38:lossy 11:45:r0:mad@base_40:inject 12:59:r0:add@base_57:inject 13:61:r2:shfl@base_60:inject 14:62:r5:or@base_53:lossy-or-chain1 15:63:r4:load@base_59:inject +igneum-ca3-v4-uniform/914 ee0610b01b91eba4 0 0:2:3 1:0:0 2:1:0 3:1:0 4:0:0 5:2:0 6:0:0 7:1:0 8:1:0 9:2:2 10:0:0 11:0:0 12:0:0 13:2:3 14:0:0 15:0:0 2 1 0 1 0 0:4:r3:shfl@base_2:inject 1:11:r5:rotr@base_5:bijective 2:16:r1:shfl@base_1:inject 3:19:r4:mul@base_18:lossy 4:21:r3:add@base_6:inject 5:29:r3:sub@base_26:inject 6:36:r5:load@base_21:inject 7:41:r3:xor@base_39:inject 8:43:r4:load@base_41:inject 9:47:r6:rotr@base_45:bijective 10:51:r3:load@base_47:inject 11:57:r4:or@base_54:lossy 12:58:r0:rotl@base_42:bijective 13:59:r3:add@base_52:inject 14:60:r5:load@base_58:inject 15:62:r6:load@base_60:inject +igneum-ca3-v4-uniform/915 315da8248910e62a 0 0:2:1 1:0:0 2:0:0 3:1:0 4:0:0 5:0:0 6:1:1 7:2:2 8:1:0 9:2:2 10:2:3 11:2:3 12:0:0 13:2:0 14:0:0 15:1:0 1 0 0 0 1 0:3:r2:xor@base_1:inject 1:7:r5:rotl@base_5:bijective 2:13:r0:add@base_12:inject 3:15:r4:rotr@base_6:bijective 4:16:r5:load@base_13:inject 5:25:r1:load@base_15:inject 6:29:r0:mulhi@base_28:lossy 7:33:r3:load@base_25:inject 8:39:r2:add@base_36:inject 9:40:r4:shfl@base_37:inject 10:48:r6:rotr@base_47:bijective 11:49:r0:add@base_46:inject 12:51:r7:load@base_49:inject 13:52:r2:mad@base_43:inject 14:54:r5:load@base_52:inject 15:62:r0:rotr@base_60:bijective +igneum-ca3-v4-uniform/916 8b2a78d72ca29a86 0 0:2:2 1:0:0 2:1:0 3:0:0 4:1:1 5:2:1 6:2:1 7:1:1 8:0:0 9:1:0 10:2:3 11:0:0 12:0:0 13:1:0 14:2:3 15:2:2 2 1 0 1 0 0:12:r1:rotl@base_4:bijective 1:15:r0:mad@base_2:inject 2:21:r3:shfl@base_18:inject 3:25:r7:mul@base_22:lossy 4:26:r4:load@base_21:inject 5:33:r1:load@base_25:inject 6:34:r3:load@base_33:inject 7:35:r7:mad@base_29:inject 8:44:r5:xor@base_37:inject 9:45:r1:mad@base_40:inject 10:49:r2:load@base_45:inject 11:51:r4:xor@base_46:inject 12:53:r0:or@base_50:lossy 13:54:r3:load@base_53:inject 14:57:r1:rotl@base_56:bijective 15:61:r7:rotl@base_58:bijective +igneum-ca3-v4-uniform/917 fa7aed4a72612e58 0 0:2:2 1:0:0 2:0:0 3:2:0 4:2:3 5:2:3 6:0:0 7:2:0 8:0:0 9:2:2 10:1:1 11:0:0 12:2:0 13:0:0 14:0:0 15:1:1 2 0 0 0 2 0:3:r2:rotr@base_1:bijective 1:4:r7:rotr@base_2:bijective 2:8:r2:shfl@base_7:inject 3:9:r5:load@base_4:inject 4:18:r0:mad@base_14:inject 5:27:r5:sub@base_23:inject 6:30:r4:load@base_27:inject 7:37:r2:mulhi@base_28:lossy 8:38:r3:mulhi@base_36:lossy 9:39:r0:load@base_37:inject 10:41:r6:load@base_39:inject 11:45:r1:rotr@base_29:bijective 12:46:r2:load@base_45:inject 13:47:r5:mad@base_43:inject 14:53:r6:shfl@base_44:inject 15:58:r1:add@base_55:inject +igneum-ca3-v4-uniform/918 ead56345899f1599 0 0:0:0 1:1:0 2:0:0 3:2:2 4:2:2 5:1:1 6:0:0 7:2:1 8:0:0 9:1:0 10:1:1 11:1:0 12:2:0 13:0:0 14:2:1 15:2:2 4 1 0 3 0 0:2:r5:mul@base_1:lossy 1:5:r4:mul@base_4:lossy 2:8:r1:xor@base_7:inject 3:10:r4:load@base_8:inject 4:12:r3:sub@base_9:inject 5:14:r1:rotr@base_11:bijective 6:17:r6:mul@base_16:lossy 7:23:r4:or@base_21:lossy 8:24:r7:load@base_23:inject 9:29:r0:mad@base_28:inject 10:32:r1:rotr@base_26:bijective 11:35:r6:load@base_32:inject 12:36:r4:load@base_29:inject 13:46:r0:mad@base_42:inject 14:50:r5:xor@base_38:inject 15:58:r3:shfl@base_57:inject +igneum-ca3-v4-uniform/919 ca72dede7ed1c579 1 0:1:0 1:2:0 2:0:0 3:0:0 4:0:0 5:0:0 6:2:0 7:2:2 8:1:0 9:1:0 10:1:0 11:1:0 12:0:0 13:2:1 14:0:0 15:1:1 2 0 0 1 1 0:9:r2:mul@base_3:lossy 1:11:r6:load@base_9:inject 2:12:r5:mulhi@base_6:lossy 3:18:r7:rotr@base_4:bijective 4:23:r5:load@base_18:inject 5:27:r5:rotl@base_25:bijective 6:29:r3:load@base_23:inject 7:30:r7:load@base_29:inject 8:33:r5:load@base_30:inject 9:35:r6:shfl@base_34:inject 10:37:r7:load@base_35:inject 11:48:r6:xor@base_47:inject 12:49:r2:add@base_45:inject 13:57:r3:xor@base_55:inject 14:59:r0:sub@base_51:inject 15:61:r5:add@base_46:inject +igneum-ca3-v4-uniform/920 4e0abc5108e9653a 0 0:2:1 1:2:1 2:1:0 3:0:0 4:1:0 5:2:3 6:1:0 7:1:1 8:1:0 9:2:2 10:1:1 11:1:1 12:2:2 13:2:1 14:1:0 15:2:3 4 1 0 2 1 0:1:r2:mad@base_0:inject 1:2:r0:load@base_1:inject 2:3:r5:load@base_2:inject 3:4:r1:load@base_3:inject 4:5:r2:load@base_4:inject 5:6:r3:load@base_5:inject 6:12:r1:mul@base_9:lossy 7:17:r6:or@base_10:lossy 8:26:r2:mulhi@base_22:lossy 9:29:r1:rotl@base_23:bijective 10:49:r1:rotl@base_34:bijective 11:51:r6:mul@base_50:lossy 12:52:r2:rotl@base_47:bijective 13:57:r5:add@base_35:inject 14:58:r4:mad@base_56:inject 15:62:r4:add@base_60:inject +igneum-ca3-v4-uniform/921 0281f511e782f997 0 0:2:2 1:2:1 2:2:0 3:1:1 4:0:0 5:0:0 6:1:1 7:1:0 8:0:0 9:0:0 10:2:1 11:2:3 12:0:0 13:0:0 14:2:1 15:0:0 0 0 0 0 0 0:1:r7:sub@base_0:inject 1:5:r5:add@base_3:inject 2:6:r6:load@base_5:inject 3:15:r4:sub@base_8:inject 4:20:r6:sub@base_16:inject 5:22:r3:rotr@base_19:bijective 6:28:r1:mad@base_12:inject 7:31:r1:shfl@base_29:inject 8:35:r6:sub@base_30:inject 9:39:r0:load@base_28:inject 10:42:r1:load@base_39:inject 11:51:r2:xor@base_49:inject 12:59:r2:rotr@base_56:bijective 13:61:r1:rotl@base_48:bijective 14:62:r0:xor@base_50:inject 15:63:r4:load@base_59:inject +igneum-ca3-v4-uniform/922 b21f10b81f6ef504 0 0:0:0 1:0:0 2:0:0 3:2:0 4:2:0 5:2:3 6:2:3 7:0:0 8:1:0 9:0:0 10:1:0 11:1:1 12:1:1 13:0:0 14:0:0 15:1:0 4 0 0 2 2 0:1:r7:add@base_0:inject 1:9:r1:xor@base_8:inject 2:11:r3:load@base_9:inject 3:12:r2:mul@base_7:lossy 4:13:r6:load@base_12:inject 5:14:r7:rotr@base_10:bijective 6:15:r0:load@base_14:inject 7:22:r4:add@base_17:inject 8:23:r1:mul@base_19:lossy 9:26:r7:load@base_23:inject 10:28:r0:mulhi@base_25:lossy 11:29:r2:load@base_26:inject 12:34:r3:shfl@base_31:inject 13:41:r4:mulhi@base_33:lossy 14:45:r0:xor@base_38:inject 15:61:r7:mad@base_54:inject +igneum-ca3-v4-uniform/923 15c077c5d5a35dc4 0 0:0:0 1:1:0 2:2:2 3:1:0 4:2:3 5:2:2 6:0:0 7:1:1 8:0:0 9:2:1 10:2:1 11:2:3 12:0:0 13:2:2 14:2:3 15:0:0 4 2 0 2 0 0:1:r4:rotr@base_0:bijective 1:2:r2:load@base_1:inject 2:4:r3:or@base_3:lossy 3:6:r0:xor@base_5:inject 4:7:r4:load@base_2:inject 5:13:r0:rotl@base_9:bijective 6:18:r4:mul@base_10:lossy 7:23:r7:or@base_17:lossy 8:25:r2:add@base_20:inject 9:29:r5:load@base_25:inject 10:34:r2:rotr@base_32:bijective 11:39:r6:rotl@base_33:bijective 12:41:r1:load@base_29:inject 13:45:r7:load@base_39:inject 14:46:r5:mul@base_43:lossy 15:51:r1:xor@base_50:inject +igneum-ca3-v4-uniform/924 0a6f1cb23ede4c0d 0 0:1:0 1:0:0 2:1:0 3:2:2 4:0:0 5:1:1 6:0:0 7:0:0 8:1:0 9:1:1 10:2:0 11:1:1 12:1:1 13:1:0 14:1:0 15:0:0 5 2 0 3 0 0:2:r5:or@base_1:lossy 1:4:r0:sub@base_0:inject 2:7:r4:mad@base_6:inject 3:10:r1:mad@base_5:inject 4:19:r7:xor@base_11:inject 5:22:r4:mul@base_13:lossy 6:24:r3:or@base_21:lossy 7:32:r2:xor@base_17:inject 8:38:r6:mul@base_28:lossy 9:44:r3:add@base_36:inject 10:47:r4:mad@base_42:inject 11:50:r6:rotr@base_48:bijective 12:55:r3:load@base_47:inject 13:60:r5:add@base_57:inject 14:62:r6:mul@base_59:lossy 15:63:r1:add@base_35:inject +igneum-ca3-v4-uniform/925 a8a53a7334c54741 0 0:0:0 1:2:1 2:0:0 3:2:2 4:0:0 5:1:1 6:1:0 7:0:0 8:1:0 9:0:0 10:1:1 11:0:0 12:2:0 13:2:0 14:1:1 15:2:1 3 1 0 0 2 0:1:r1:mulhi@base_0:lossy 1:9:r6:sub@base_2:inject 2:14:r0:mulhi@base_10:lossy 3:20:r6:rotl@base_19:bijective 4:37:r3:xor@base_28:inject 5:40:r2:mad@base_39:inject 6:43:r6:rotr@base_42:bijective 7:44:r0:add@base_36:inject 8:46:r4:load@base_40:inject 9:49:r7:or@base_48:lossy 10:51:r0:load@base_49:inject 11:52:r1:load@base_51:inject 12:56:r5:add@base_32:inject 13:58:r3:load@base_56:inject 14:59:r2:load@base_46:inject 15:60:r6:shfl@base_54:inject +igneum-ca3-v4-uniform/926 c627bec5ffec2f04 0 0:2:3 1:2:1 2:1:1 3:1:0 4:0:0 5:0:0 6:2:2 7:2:1 8:0:0 9:0:0 10:1:1 11:2:1 12:1:1 13:1:1 14:2:0 15:1:0 4 1 0 3 0 0:3:r6:rotr@base_0:bijective 1:7:r0:load@base_3:inject 2:8:r5:sub@base_6:inject 3:9:r4:load@base_8:inject 4:11:r4:mul@base_10:lossy 5:14:r7:load@base_9:inject 6:23:r0:rotr@base_12:bijective 7:30:r1:add@base_25:inject 8:37:r4:or@base_36:lossy 9:40:r7:rotl@base_38:bijective 10:48:r2:rotr@base_47:bijective 11:51:r1:xor@base_46:inject 12:54:r5:sub@base_50:inject 13:57:r4:mul@base_44:lossy 14:60:r2:shfl@base_52:inject 15:61:r1:mul@base_56:lossy +igneum-ca3-v4-uniform/927 3a7387f431373cad 0 0:1:0 1:1:0 2:1:1 3:0:0 4:1:0 5:0:0 6:1:0 7:0:0 8:1:1 9:1:1 10:0:0 11:0:0 12:0:0 13:1:0 14:1:1 15:2:0 1 0 0 0 1 0:1:r6:add@base_0:inject 1:4:r1:add@base_2:inject 2:11:r1:xor@base_9:inject 3:17:r4:mulhi@base_10:lossy 4:22:r2:load@base_17:inject 5:23:r7:shfl@base_21:inject 6:25:r4:shfl@base_18:inject 7:30:r0:rotr@base_28:bijective 8:34:r1:add@base_31:inject 9:37:r0:shfl@base_32:inject 10:41:r4:rotl@base_38:bijective 11:47:r3:xor@base_39:inject 12:53:r0:xor@base_52:inject 13:55:r1:load@base_47:inject 14:60:r3:rotl@base_57:bijective 15:61:r2:xor@base_51:inject +igneum-ca3-v4-uniform/928 4af4e545506a7184 0 0:1:1 1:2:1 2:2:3 3:2:1 4:1:0 5:2:1 6:0:0 7:0:0 8:2:0 9:2:3 10:1:0 11:0:0 12:1:0 13:2:3 14:2:1 15:2:1 7 1 0 4 2 0:1:r4:mul@base_0:lossy 1:3:r6:load@base_1:inject 2:9:r2:mad@base_5:inject 3:13:r7:add@base_10:inject 4:18:r2:mulhi@base_14:lossy 5:24:r5:load@base_13:inject 6:25:r3:sub@base_7:inject 7:26:r7:load@base_24:inject 8:32:r7:rotr@base_31:bijective 9:40:r1:or@base_38:lossy 10:42:r5:mul@base_37:lossy 11:54:r2:rotr@base_46:bijective 12:55:r6:mul@base_53:lossy 13:56:r4:sub@base_52:inject 14:57:r7:mul@base_39:lossy 15:61:r2:mulhi@base_58:lossy +igneum-ca3-v4-uniform/929 e991d49177e0bbf7 0 0:1:0 1:0:0 2:2:1 3:2:2 4:1:1 5:1:0 6:0:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:0:0 13:2:0 14:2:3 15:2:2 5 1 0 2 2 0:7:r5:mul@base_4:lossy 1:15:r5:shfl@base_8:inject 2:16:r2:or@base_3:lossy 3:20:r7:load@base_15:inject 4:22:r0:xor@base_21:inject 5:23:r4:mad@base_18:inject 6:25:r1:load@base_22:inject 7:28:r5:load@base_16:inject 8:29:r3:add@base_9:inject 9:34:r6:mad@base_26:inject 10:35:r7:mul@base_33:lossy 11:37:r4:mulhi@base_36:lossy 12:48:r4:sub@base_47:inject 13:55:r5:rotl@base_53:bijective 14:59:r4:mulhi@base_56:lossy 15:63:r6:load@base_59:inject +igneum-ca3-v4-uniform/930 2046c920900be646 0 0:0:0 1:1:1 2:0:0 3:2:1 4:0:0 5:2:0 6:1:0 7:1:1 8:1:0 9:0:0 10:0:0 11:0:0 12:1:1 13:2:2 14:0:0 15:2:1 4 1 0 1 2 0:5:r2:mulhi@base_4:lossy 1:7:r4:mad@base_6:inject 2:13:r7:load@base_5:inject 3:17:r2:add@base_12:inject 4:19:r0:mad@base_18:inject 5:22:r3:load@base_13:inject 6:26:r1:mul@base_23:lossy 7:27:r4:load@base_26:inject 8:37:r0:xor@base_36:inject 9:38:r6:shfl@base_31:inject 10:40:r5:mulhi@base_25:lossy 11:43:r4:add@base_42:inject 12:45:r6:load@base_43:inject 13:50:r2:shfl@base_46:inject 14:58:r0:rotr@base_54:bijective 15:59:r3:or@base_52:lossy +igneum-ca3-v4-uniform/931 df45c6c2356e2173 0 0:1:1 1:1:0 2:0:0 3:2:3 4:1:1 5:1:0 6:2:1 7:0:0 8:0:0 9:2:1 10:1:0 11:1:1 12:0:0 13:2:3 14:2:1 15:1:1 2 0 0 0 2 0:1:r5:sub@base_0:inject 1:6:r1:sub@base_5:inject 2:11:r5:mulhi@base_3:lossy 3:19:r0:mad@base_2:inject 4:23:r5:load@base_19:inject 5:29:r6:mad@base_28:inject 6:30:r2:mulhi@base_18:lossy 7:32:r2:add@base_31:inject 8:37:r7:shfl@base_26:inject 9:40:r0:load@base_37:inject 10:42:r5:load@base_32:inject 11:47:r0:xor@base_41:inject 12:50:r0:sub@base_48:inject 13:51:r1:load@base_50:inject 14:57:r3:rotr@base_56:bijective 15:58:r7:sub@base_52:inject +igneum-ca3-v4-uniform/932 10e571f1b14599d5 1 0:1:1 1:0:0 2:1:1 3:0:0 4:1:1 5:1:1 6:0:0 7:1:0 8:0:0 9:1:1 10:1:1 11:2:0 12:0:0 13:0:0 14:1:0 15:0:0 2 0 0 2 0 0:1:r1:shfl@base_0:inject 1:2:r5:load@base_1:inject 2:4:r7:load@base_2:inject 3:14:r1:rotr@base_13:bijective 4:22:r6:mad@base_17:inject 5:23:r2:xor@base_21:inject 6:31:r7:add@base_28:inject 7:33:r0:rotl@base_7:bijective 8:35:r6:shfl@base_32:inject 9:37:r4:mul@base_18:lossy 10:40:r5:xor@base_39:inject 11:51:r1:rotl@base_24:bijective 12:53:r2:rotl@base_36:bijective 13:58:r1:mul@base_57:lossy 14:59:r5:mad@base_41:inject 15:63:r1:shfl@base_61:inject +igneum-ca3-v4-uniform/933 9b2fbc9dfc9ec8f2 0 0:2:1 1:2:0 2:0:0 3:1:1 4:2:1 5:0:0 6:1:0 7:1:0 8:2:0 9:2:3 10:1:0 11:2:1 12:2:1 13:1:0 14:0:0 15:0:0 4 2 0 1 1 0:5:r6:mad@base_1:inject 1:6:r2:mulhi@base_4:lossy 2:7:r7:load@base_5:inject 3:12:r2:or@base_11:lossy 4:14:r3:or@base_10:lossy 5:16:r6:mul@base_9:lossy 6:22:r0:add@base_21:inject 7:25:r3:rotl@base_17:bijective 8:32:r1:xor@base_27:inject 9:40:r0:xor@base_39:inject 10:43:r3:sub@base_41:inject 11:51:r5:mad@base_48:inject 12:54:r2:add@base_46:inject 13:55:r5:add@base_52:inject 14:58:r4:sub@base_31:inject 15:63:r3:mad@base_61:inject +igneum-ca3-v4-uniform/934 808fca092ccbfcb7 0 0:2:1 1:1:1 2:2:0 3:1:0 4:2:2 5:0:0 6:1:0 7:1:1 8:1:0 9:0:0 10:2:1 11:2:0 12:2:2 13:1:1 14:1:1 15:2:2 0 0 0 0 0 0:3:r0:rotr@base_2:bijective 1:6:r6:add@base_4:inject 2:19:r0:load@base_6:inject 3:22:r7:add@base_8:inject 4:23:r3:add@base_17:inject 5:24:r4:rotl@base_20:bijective 6:37:r2:shfl@base_26:inject 7:38:r5:xor@base_29:inject 8:41:r1:mad@base_40:inject 9:47:r6:load@base_38:inject 10:48:r2:load@base_41:inject 11:50:r0:rotr@base_45:bijective 12:51:r2:add@base_49:inject 13:58:r2:rotr@base_57:bijective 14:60:r1:load@base_58:inject 15:61:r3:xor@base_56:inject +igneum-ca3-v4-uniform/935 e875b8bbcbe09819 0 0:1:0 1:1:0 2:2:1 3:1:0 4:2:2 5:1:1 6:0:0 7:1:0 8:1:0 9:0:0 10:1:0 11:1:0 12:1:0 13:0:0 14:1:0 15:2:1 3 1 0 0 2 0:3:r6:xor@base_1:inject 1:6:r5:mad@base_4:inject 2:13:r4:xor@base_10:inject 3:14:r0:load@base_13:inject 4:15:r6:sub@base_7:inject 5:19:r3:load@base_15:inject 6:22:r3:xor@base_21:inject 7:26:r1:mulhi@base_17:lossy 8:32:r6:shfl@base_29:inject 9:33:r3:load@base_32:inject 10:34:r7:shfl@base_30:inject 11:40:r3:load@base_34:inject 12:45:r0:rotr@base_38:bijective 13:51:r4:xor@base_43:inject 14:53:r6:or@base_50:lossy 15:58:r7:mulhi@base_57:lossy +igneum-ca3-v4-uniform/936 d651ed656f8da90e 0 0:0:0 1:2:0 2:2:0 3:1:0 4:1:0 5:2:2 6:1:0 7:0:0 8:0:0 9:0:0 10:2:1 11:2:1 12:0:0 13:2:3 14:2:1 15:1:0 4 1 0 3 0 0:7:r6:shfl@base_5:inject 1:10:r4:rotr@base_8:bijective 2:12:r1:mul@base_1:lossy 3:15:r0:shfl@base_11:inject 4:16:r3:mad@base_3:inject 5:17:r0:load@base_16:inject 6:21:r4:load@base_15:inject 7:24:r5:or@base_20:lossy 8:28:r5:xor@base_25:inject 9:29:r4:load@base_28:inject 10:30:r3:load@base_17:inject 11:32:r1:mad@base_23:inject 12:38:r5:rotl@base_31:bijective 13:40:r1:load@base_38:inject 14:47:r6:mul@base_44:lossy 15:53:r0:mul@base_52:lossy +igneum-ca3-v4-uniform/937 80fe0730d45d0609 0 0:0:0 1:2:0 2:0:0 3:1:1 4:0:0 5:1:0 6:2:1 7:0:0 8:1:0 9:0:0 10:2:3 11:2:3 12:0:0 13:1:1 14:1:1 15:1:0 1 1 0 0 0 0:3:r1:shfl@base_0:inject 1:11:r1:add@base_6:inject 2:12:r5:rotr@base_2:bijective 3:19:r0:xor@base_17:inject 4:21:r4:or@base_13:lossy 5:22:r5:load@base_21:inject 6:27:r2:load@base_19:inject 7:28:r0:load@base_27:inject 8:29:r6:rotr@base_9:bijective 9:32:r1:rotr@base_24:bijective 10:39:r4:load@base_28:inject 11:44:r2:rotl@base_40:bijective 12:45:r3:mad@base_37:inject 13:51:r7:shfl@base_47:inject 14:54:r5:shfl@base_42:inject 15:57:r2:shfl@base_52:inject +igneum-ca3-v4-uniform/938 730072a1a95c8731 0 0:2:3 1:2:1 2:0:0 3:1:1 4:0:0 5:2:2 6:0:0 7:2:0 8:0:0 9:1:0 10:1:1 11:2:0 12:2:2 13:1:0 14:2:1 15:2:1 3 1 0 1 1 0:10:r4:sub@base_7:inject 1:11:r1:rotr@base_5:bijective 2:22:r0:mul@base_20:lossy 3:23:r1:shfl@base_14:inject 4:24:r4:mulhi@base_16:lossy 5:29:r2:rotl@base_28:bijective 6:30:r5:rotr@base_27:bijective 7:35:r3:load@base_22:inject 8:38:r3:add@base_36:inject 9:43:r6:load@base_35:inject 10:47:r7:xor@base_46:inject 11:48:r0:or@base_33:lossy 12:56:r4:mad@base_55:inject 13:59:r6:add@base_53:inject 14:60:r3:mad@base_52:inject 15:61:r1:load@base_60:inject +igneum-ca3-v4-uniform/939 7c425858667e0be2 0 0:0:0 1:1:0 2:2:3 3:0:0 4:2:3 5:1:0 6:0:0 7:1:0 8:2:0 9:0:0 10:2:3 11:0:0 12:0:0 13:1:1 14:2:2 15:2:0 2 0 0 2 0 0:1:r4:rotr@base_0:bijective 1:3:r4:rotl@base_2:bijective 2:7:r5:xor@base_6:inject 3:8:r0:load@base_3:inject 4:13:r7:xor@base_4:inject 5:17:r5:sub@base_10:inject 6:18:r4:add@base_16:inject 7:25:r2:mul@base_21:lossy 8:28:r4:xor@base_27:inject 9:36:r7:rotl@base_32:bijective 10:41:r2:mul@base_39:lossy 11:45:r3:load@base_36:inject 12:46:r5:load@base_41:inject 13:51:r3:load@base_46:inject 14:52:r6:sub@base_49:inject 15:59:r7:add@base_50:inject +igneum-ca3-v4-uniform/940 438a7b532e45a042 0 0:1:1 1:2:1 2:1:0 3:2:3 4:0:0 5:1:0 6:1:1 7:1:0 8:2:0 9:0:0 10:2:3 11:0:0 12:2:0 13:1:0 14:2:1 15:0:0 2 1 0 1 0 0:2:r7:sub@base_1:inject 1:3:r5:load@base_2:inject 2:7:r0:or@base_6:lossy 3:16:r7:mul@base_10:lossy 4:18:r5:mad@base_15:inject 5:20:r4:rotr@base_19:bijective 6:27:r1:sub@base_23:inject 7:31:r0:mad@base_25:inject 8:33:r5:sub@base_29:inject 9:38:r3:add@base_37:inject 10:40:r0:shfl@base_34:inject 11:42:r2:xor@base_39:inject 12:48:r7:rotl@base_36:bijective 13:55:r6:sub@base_51:inject 14:58:r6:shfl@base_57:inject 15:63:r0:load@base_58:inject +igneum-ca3-v4-uniform/941 641dbac9073bd70f 0 0:0:0 1:1:1 2:1:0 3:1:1 4:1:0 5:2:0 6:2:0 7:0:0 8:1:1 9:1:0 10:2:3 11:1:0 12:1:0 13:2:0 14:0:0 15:1:0 2 0 0 2 0 0:3:r1:mul@base_1:lossy 1:4:r2:load@base_3:inject 2:5:r4:add@base_2:inject 3:9:r0:load@base_5:inject 4:17:r5:mul@base_16:lossy 5:18:r6:mad@base_8:inject 6:24:r4:mad@base_15:inject 7:29:r2:mad@base_27:inject 8:38:r2:shfl@base_32:inject 9:39:r4:xor@base_34:inject 10:41:r5:load@base_39:inject 11:44:r5:rotl@base_43:bijective 12:45:r0:rotl@base_42:bijective 13:47:r1:rotl@base_35:bijective 14:52:r6:load@base_47:inject 15:57:r3:xor@base_54:inject +igneum-ca3-v4-uniform/942 3c1fc55ece08ec99 0 0:1:1 1:1:0 2:0:0 3:2:3 4:2:3 5:0:0 6:1:1 7:0:0 8:0:0 9:1:1 10:2:0 11:1:1 12:0:0 13:2:0 14:2:0 15:2:0 3 1 0 1 1 0:8:r2:sub@base_6:inject 1:12:r6:or@base_3:lossy 2:13:r5:mad@base_9:inject 3:16:r5:rotl@base_15:bijective 4:18:r7:load@base_13:inject 5:23:r0:shfl@base_2:inject 6:31:r4:mulhi@base_21:lossy 7:36:r6:shfl@base_32:inject 8:37:r3:rotl@base_34:bijective 9:39:r7:xor@base_30:inject 10:49:r6:load@base_37:inject 11:51:r5:rotl@base_45:bijective 12:52:r3:mul@base_48:lossy 13:56:r4:load@base_51:inject 14:59:r6:rotr@base_57:bijective 15:63:r5:sub@base_60:inject +igneum-ca3-v4-uniform/943 74538f3d1f39de96 0 0:1:0 1:2:2 2:0:0 3:2:1 4:2:0 5:1:0 6:0:0 7:1:1 8:0:0 9:0:0 10:1:0 11:1:0 12:1:1 13:1:1 14:0:0 15:1:0 4 2 0 1 1 0:1:r3:xor@base_0:inject 1:7:r2:mulhi@base_4:lossy 2:11:r1:rotr@base_6:bijective 3:17:r4:xor@base_13:inject 4:24:r7:xor@base_18:inject 5:26:r6:load@base_24:inject 6:35:r7:xor@base_28:inject 7:37:r3:mad@base_25:inject 8:38:r4:or@base_34:lossy 9:39:r1:load@base_38:inject 10:43:r7:mul@base_41:lossy 11:44:r3:load@base_43:inject 12:52:r1:rotl@base_45:bijective 13:55:r6:load@base_39:inject 14:57:r2:shfl@base_47:inject 15:63:r1:or@base_62:lossy +igneum-ca3-v4-uniform/944 3c6988e5f89788f6 0 0:2:3 1:2:3 2:0:0 3:0:0 4:2:0 5:0:0 6:0:0 7:0:0 8:2:2 9:0:0 10:2:3 11:1:0 12:0:0 13:2:1 14:0:0 15:2:3 5 0 0 2 3 0:1:r3:mul@base_0:lossy 1:2:r0:load@base_1:inject 2:14:r2:mulhi@base_12:lossy 3:20:r5:xor@base_15:inject 4:22:r3:mulhi@base_7:lossy 5:23:r1:xor@base_17:inject 6:25:r7:add@base_24:inject 7:30:r3:add@base_27:inject 8:34:r6:add@base_18:inject 9:35:r1:load@base_34:inject 10:51:r6:mul@base_50:lossy 11:55:r6:mulhi@base_54:lossy 12:58:r6:xor@base_57:inject 13:59:r2:xor@base_46:inject 14:60:r3:rotr@base_49:bijective 15:63:r1:shfl@base_36:inject +igneum-ca3-v4-uniform/945 1f828f8f8d65982a 0 0:0:0 1:2:3 2:1:0 3:1:1 4:2:2 5:2:1 6:1:1 7:0:0 8:1:1 9:0:0 10:0:0 11:2:3 12:1:0 13:0:0 14:1:1 15:0:0 3 1 0 1 1 0:4:r5:add@base_3:inject 1:8:r7:mulhi@base_2:lossy 2:12:r2:load@base_8:inject 3:16:r6:mul@base_13:lossy 4:20:r2:xor@base_17:inject 5:32:r1:rotl@base_23:bijective 6:37:r0:add@base_33:inject 7:38:r2:load@base_37:inject 8:39:r6:xor@base_36:inject 9:41:r4:load@base_38:inject 10:47:r0:shfl@base_44:inject 11:52:r2:load@base_47:inject 12:54:r0:or@base_53:lossy 13:58:r4:mad@base_56:inject 14:60:r4:sub@base_59:inject 15:63:r1:rotr@base_62:bijective +igneum-ca3-v4-uniform/946 f31f997530ec7fbe 0 0:0:0 1:0:0 2:2:0 3:0:0 4:0:0 5:1:0 6:2:0 7:2:2 8:0:0 9:0:0 10:0:0 11:1:1 12:2:2 13:2:2 14:1:1 15:2:0 5 1 0 2 2 0:4:r1:rotl@base_3:bijective 1:6:r3:mul@base_0:lossy 2:9:r5:rotl@base_5:bijective 3:17:r4:mulhi@base_8:lossy 4:19:r2:mul@base_13:lossy 5:22:r1:mulhi@base_10:lossy 6:23:r5:or@base_15:lossy 7:24:r7:add@base_21:inject 8:36:r1:mad@base_34:inject 9:38:r3:load@base_36:inject 10:44:r2:rotl@base_33:bijective 11:45:r6:load@base_44:inject 12:49:r5:load@base_45:inject 13:52:r7:rotr@base_51:bijective 14:62:r4:load@base_38:inject 15:63:r2:rotl@base_56:bijective +igneum-ca3-v4-uniform/947 75e3eb4eb86fc6dd 0 0:1:0 1:2:1 2:0:0 3:2:2 4:2:2 5:2:0 6:1:0 7:2:0 8:0:0 9:1:0 10:2:0 11:1:1 12:1:1 13:0:0 14:1:0 15:2:2 2 0 0 1 1 0:1:r4:sub@shadow_252:inject 1:2:r2:load@base_1:inject 2:21:r0:xor@base_18:inject 3:25:r1:load@base_21:inject 4:26:r5:shfl@base_17:inject 5:27:r2:shfl@base_9:inject 6:28:r3:load@base_26:inject 7:30:r6:load@base_28:inject 8:33:r5:mulhi@base_29:lossy 9:34:r7:xor@base_32:inject 10:42:r6:mul@base_35:lossy 11:51:r4:shfl@base_43:inject 12:56:r2:shfl@base_46:inject 13:60:r0:load@base_56:inject 14:61:r3:rotr@base_49:bijective 15:62:r7:xor@base_58:inject +igneum-ca3-v4-uniform/948 e0a7dc0deda5cc9e 0 0:0:0 1:1:0 2:1:0 3:2:0 4:1:0 5:0:0 6:1:1 7:0:0 8:1:0 9:1:1 10:0:0 11:2:3 12:1:0 13:1:1 14:0:0 15:2:1 1 0 0 1 0 0:2:r6:rotr@base_0:bijective 1:5:r2:load@base_2:inject 2:6:r4:add@base_3:inject 3:8:r0:load@base_5:inject 4:13:r1:mad@base_10:inject 5:17:r5:sub@base_9:inject 6:22:r2:add@base_15:inject 7:24:r7:load@base_22:inject 8:25:r0:load@base_24:inject 9:26:r3:rotl@base_18:bijective 10:28:r7:load@base_26:inject 11:29:r6:mul@base_16:lossy 12:33:r3:xor@base_30:inject 13:49:r6:add@base_37:inject 14:51:r0:mad@base_46:inject 15:58:r0:rotr@base_55:bijective +igneum-ca3-v4-uniform/949 af5ed1f8e5f74f4b 0 0:1:0 1:1:1 2:1:0 3:1:1 4:0:0 5:0:0 6:1:1 7:1:0 8:1:0 9:0:0 10:0:0 11:2:1 12:0:0 13:2:3 14:0:0 15:2:3 1 0 0 0 1 0:4:r1:rotl@base_3:bijective 1:11:r1:mulhi@base_7:lossy 2:12:r0:xor@base_8:inject 3:15:r6:xor@base_2:inject 4:16:r3:load@base_15:inject 5:18:r7:add@base_9:inject 6:30:r3:shfl@base_25:inject 7:31:r0:shfl@base_20:inject 8:37:r5:load@base_30:inject 9:40:r4:sub@base_38:inject 10:44:r0:shfl@base_35:inject 11:49:r4:add@base_48:inject 12:50:r7:rotr@base_39:bijective 13:52:r0:load@base_49:inject 14:59:r0:rotl@base_58:bijective 15:62:r6:load@base_50:inject +igneum-ca3-v4-uniform/950 0f39ac4c53344db8 0 0:2:0 1:0:0 2:2:0 3:1:1 4:2:0 5:1:0 6:0:0 7:1:1 8:0:0 9:1:0 10:0:0 11:1:0 12:2:1 13:1:0 14:2:1 15:1:1 3 1 0 2 0 0:3:r2:shfl@base_0:inject 1:7:r2:mad@base_6:inject 2:16:r5:add@base_12:inject 3:17:r2:add@base_11:inject 4:23:r6:load@base_16:inject 5:34:r4:or@base_31:lossy 6:36:r0:mul@base_24:lossy 7:38:r4:load@base_36:inject 8:41:r0:rotl@base_39:bijective 9:43:r5:load@base_41:inject 10:51:r2:mad@base_50:inject 11:52:r1:load@base_51:inject 12:55:r7:mad@base_42:inject 13:56:r2:mul@base_54:lossy 14:58:r1:rotl@base_53:bijective 15:63:r6:load@base_55:inject +igneum-ca3-v4-uniform/951 a360d2d0bcaff8e7 0 0:2:1 1:0:0 2:1:1 3:1:0 4:2:0 5:2:1 6:0:0 7:0:0 8:2:1 9:2:1 10:0:0 11:2:0 12:0:0 13:2:1 14:2:3 15:1:1 1 0 0 0 1 0:3:r1:shfl@base_2:inject 1:5:r4:xor@base_1:inject 2:6:r7:load@base_5:inject 3:17:r1:rotr@base_9:bijective 4:18:r5:mulhi@base_12:lossy 5:19:r2:add@base_15:inject 6:22:r4:xor@base_21:inject 7:29:r3:load@base_22:inject 8:32:r7:xor@base_14:inject 9:36:r7:add@base_33:inject 10:37:r0:add@base_27:inject 11:38:r2:load@base_36:inject 12:41:r6:rotr@base_16:bijective 13:45:r2:add@base_39:inject 14:59:r0:rotr@base_47:bijective 15:63:r2:xor@base_62:inject +igneum-ca3-v4-uniform/952 d7fc5c629c223415 0 0:0:0 1:0:0 2:2:0 3:1:1 4:2:1 5:1:0 6:0:0 7:0:0 8:1:0 9:2:0 10:1:1 11:2:3 12:1:1 13:0:0 14:2:1 15:0:0 2 0 0 1 1 0:15:r2:xor@base_11:inject 1:16:r0:mulhi@base_8:lossy 2:19:r2:shfl@base_18:inject 3:21:r6:load@base_19:inject 4:28:r3:sub@base_22:inject 5:30:r4:xor@base_27:inject 6:31:r5:shfl@base_12:inject 7:34:r6:rotr@base_32:bijective 8:35:r1:load@base_28:inject 9:36:r5:load@base_35:inject 10:39:r7:mul@base_38:lossy 11:40:r4:mad@base_33:inject 12:43:r1:load@base_39:inject 13:47:r7:load@base_40:inject 14:60:r6:mad@base_59:inject 15:61:r2:sub@base_50:inject +igneum-ca3-v4-uniform/953 048dc48aa5829005 0 0:1:0 1:0:0 2:1:0 3:1:1 4:2:3 5:1:0 6:0:0 7:1:0 8:1:0 9:0:0 10:2:1 11:1:0 12:1:0 13:0:0 14:0:0 15:0:0 2 0 0 0 2 0:3:r5:add@base_0:inject 1:8:r2:rotr@base_7:bijective 2:11:r1:rotl@base_9:bijective 3:12:r6:shfl@base_5:inject 4:13:r7:load@base_11:inject 5:15:r7:mulhi@base_14:lossy 6:17:r0:load@base_15:inject 7:26:r4:xor@base_23:inject 8:34:r2:sub@base_24:inject 9:36:r4:mad@base_33:inject 10:40:r1:mulhi@base_30:lossy 11:41:r3:load@base_40:inject 12:46:r0:load@base_41:inject 13:52:r6:sub@base_44:inject 14:62:r3:xor@base_61:inject 15:63:r5:shfl@base_59:inject +igneum-ca3-v4-uniform/954 dc4852eadbb7857c 1 0:2:2 1:1:1 2:2:2 3:0:0 4:1:0 5:2:0 6:1:0 7:1:0 8:2:2 9:0:0 10:1:1 11:2:0 12:2:0 13:0:0 14:1:0 15:1:0 4 1 0 2 1 0:3:r3:xor@base_1:inject 1:4:r2:mul@base_2:lossy 2:6:r6:load@base_4:inject 3:8:r6:rotl@base_7:bijective 4:9:r7:load@base_8:inject 5:11:r4:or@base_10:lossy 6:12:r6:load@base_11:inject 7:23:r7:rotl@base_22:bijective 8:25:r4:load@base_23:inject 9:26:r5:load@base_25:inject 10:30:r1:sub@base_29:inject 11:31:r6:load@base_26:inject 12:36:r2:rotl@base_35:bijective 13:39:r0:load@base_31:inject 14:43:r1:mulhi@base_37:lossy 15:53:r4:mul@base_50:lossy +igneum-ca3-v4-uniform/955 8624a6b33a0f3051 0 0:0:0 1:2:2 2:0:0 3:1:0 4:1:0 5:2:2 6:2:1 7:2:1 8:0:0 9:0:0 10:0:0 11:2:1 12:1:0 13:0:0 14:0:0 15:2:0 2 1 0 1 0 0:1:r4:mad@base_0:inject 1:4:r7:xor@base_2:inject 2:6:r4:add@base_5:inject 3:8:r0:sub@base_7:inject 4:9:r6:load@base_4:inject 5:15:r6:add@base_10:inject 6:16:r2:load@base_9:inject 7:21:r4:xor@base_20:inject 8:24:r6:xor@base_23:inject 9:26:r3:rotr@base_17:bijective 10:29:r2:load@base_21:inject 11:30:r4:add@base_28:inject 12:37:r0:load@base_30:inject 13:43:r3:or@base_42:lossy 14:49:r5:mul@base_36:lossy 15:62:r1:mad@base_56:inject +igneum-ca3-v4-uniform/956 45dff785b0517c0d 1 0:0:0 1:0:0 2:0:0 3:0:0 4:0:0 5:1:0 6:1:1 7:2:2 8:2:0 9:2:0 10:0:0 11:2:1 12:1:0 13:0:0 14:1:1 15:0:0 2 0 0 0 2 0:1:r2:rotl@base_0:bijective 1:7:r6:rotl@base_4:bijective 2:12:r0:rotl@base_6:bijective 3:14:r7:shfl@base_9:inject 4:15:r5:load@base_14:inject 5:18:r2:xor@base_3:inject 6:21:r0:load@base_18:inject 7:22:r1:mulhi@base_17:lossy 8:32:r1:shfl@base_27:inject 9:38:r0:add@base_25:inject 10:43:r1:xor@base_34:inject 11:46:r7:add@base_42:inject 12:49:r4:mulhi@base_44:lossy 13:50:r6:load@base_49:inject 14:52:r4:load@base_50:inject 15:54:r0:load@base_52:inject +igneum-ca3-v4-uniform/957 e03cbe0dc07f6714 0 0:2:2 1:1:1 2:0:0 3:0:0 4:2:1 5:0:0 6:0:0 7:1:0 8:2:0 9:1:1 10:0:0 11:2:1 12:0:0 13:1:0 14:1:1 15:2:2 2 1 0 0 1 0:3:r7:mulhi@base_2:lossy 1:5:r0:load@base_3:inject 2:9:r7:xor@base_7:inject 3:15:r4:sub@base_12:inject 4:19:r2:mad@base_16:inject 5:22:r5:sub@base_13:inject 6:32:r3:mad@base_27:inject 7:35:r7:add@base_28:inject 8:44:r2:shfl@base_42:inject 9:45:r3:xor@base_37:inject 10:46:r6:rotr@base_41:bijective 11:49:r0:load@base_22:inject 12:51:r3:load@base_49:inject 13:53:r7:load@base_51:inject 14:54:r4:or@base_52:lossy 15:55:r1:mad@base_48:inject +igneum-ca3-v4-uniform/958 973efa435e4c969b 1 0:0:0 1:0:0 2:2:0 3:2:1 4:1:0 5:1:0 6:1:1 7:0:0 8:1:1 9:0:0 10:0:0 11:1:0 12:2:0 13:1:0 14:0:0 15:2:2 1 0 0 1 0 0:2:r3:rotl@base_1:bijective 1:5:r7:load@base_2:inject 2:9:r5:load@base_5:inject 3:13:r7:rotr@base_6:bijective 4:15:r0:load@base_13:inject 5:16:r3:mad@base_14:inject 6:17:r2:load@base_16:inject 7:32:r7:xor@base_29:inject 8:44:r1:xor@base_42:inject 9:45:r6:xor@base_43:inject 10:50:r4:rotr@base_48:bijective 11:51:r0:mul@base_46:lossy 12:53:r0:mad@base_52:inject 13:55:r5:add@base_26:inject 14:57:r6:load@base_51:inject 15:58:r4:mad@base_54:inject +igneum-ca3-v4-uniform/959 e815bbf8a6d5f8bc 0 0:0:0 1:1:0 2:1:0 3:1:1 4:0:0 5:1:1 6:1:0 7:1:0 8:1:1 9:0:0 10:2:3 11:2:2 12:0:0 13:1:1 14:0:0 15:0:0 4 1 0 2 1 0:6:r1:add@base_2:inject 1:7:r5:load@base_6:inject 2:10:r7:rotl@base_8:bijective 3:13:r0:or@base_3:lossy 4:16:r3:load@base_13:inject 5:18:r2:load@base_16:inject 6:24:r5:shfl@base_23:inject 7:30:r4:load@base_18:inject 8:37:r7:mulhi@base_32:lossy 9:39:r0:mad@base_26:inject 10:40:r1:load@base_37:inject 11:54:r1:xor@base_53:inject 12:55:r4:mul@base_51:lossy 13:57:r7:mul@base_38:lossy 14:59:r4:load@base_57:inject 15:60:r2:sub@base_58:inject +igneum-ca3-v4-uniform/960 7599ccf51389147e 0 0:2:3 1:1:0 2:0:0 3:2:0 4:1:1 5:0:0 6:2:0 7:0:0 8:1:0 9:1:1 10:0:0 11:0:0 12:1:1 13:2:3 14:1:0 15:1:1 1 0 0 1 0 0:6:r4:shfl@base_2:inject 1:9:r6:mad@base_5:inject 2:14:r6:mad@base_13:inject 3:16:r2:add@base_4:inject 4:19:r4:sub@base_17:inject 5:21:r0:load@base_14:inject 6:23:r1:add@base_20:inject 7:29:r6:load@base_21:inject 8:31:r0:add@base_30:inject 9:40:r7:mul@base_36:lossy 10:53:r6:sub@base_41:inject 11:55:r1:rotr@base_51:bijective 12:57:r3:shfl@base_43:inject 13:58:r5:xor@base_54:inject 14:59:r2:load@base_57:inject 15:63:r6:load@base_58:inject +igneum-ca3-v4-uniform/961 736c0cfae98a232d 0 0:2:3 1:1:1 2:2:1 3:1:1 4:0:0 5:2:0 6:2:3 7:1:0 8:0:0 9:0:0 10:1:1 11:2:3 12:0:0 13:0:0 14:0:0 15:0:0 2 1 0 1 0 0:10:r0:shfl@base_0:inject 1:14:r7:rotl@base_9:bijective 2:18:r6:add@base_12:inject 3:19:r0:mad@base_15:inject 4:20:r1:mad@base_8:inject 5:27:r5:load@base_18:inject 6:32:r7:xor@base_31:inject 7:40:r1:or@base_28:lossy 8:42:r2:xor@base_39:inject 9:47:r5:sub@base_46:inject 10:50:r4:load@base_47:inject 11:54:r0:mad@base_38:inject 12:55:r7:rotr@base_43:bijective 13:59:r2:mul@base_58:lossy 14:61:r1:shfl@base_49:inject 15:63:r7:load@base_61:inject +igneum-ca3-v4-uniform/962 9a9cf4552d360d45 0 0:1:0 1:2:1 2:2:2 3:2:2 4:2:3 5:1:1 6:1:1 7:1:1 8:2:2 9:0:0 10:1:0 11:1:1 12:2:2 13:1:1 14:0:0 15:2:2 4 1 0 2 1 0:5:r1:mul@base_3:lossy 1:6:r6:add@base_2:inject 2:13:r2:shfl@base_12:inject 3:22:r0:mad@base_10:inject 4:30:r4:mul@base_25:lossy 5:32:r3:rotr@base_28:bijective 6:33:r1:load@base_32:inject 7:37:r1:mulhi@base_36:lossy 8:38:r6:rotr@base_31:bijective 9:43:r7:rotl@base_40:bijective 10:50:r2:rotr@base_35:bijective 11:51:r3:or@base_47:lossy 12:52:r6:load@base_50:inject 13:55:r1:add@base_46:inject 14:57:r4:load@base_55:inject 15:63:r0:mad@base_56:inject +igneum-ca3-v4-uniform/963 0cc4e826c6b9a05c 0 0:1:0 1:2:1 2:2:2 3:0:0 4:2:2 5:1:0 6:2:0 7:1:1 8:0:0 9:0:0 10:1:1 11:0:0 12:1:1 13:2:1 14:1:1 15:2:3 2 0 0 1 1 0:3:r6:sub@base_0:inject 1:10:r1:mad@base_9:inject 2:13:r7:add@base_11:inject 3:16:r7:xor@base_14:inject 4:21:r4:load@base_13:inject 5:23:r1:shfl@base_22:inject 6:34:r3:rotl@base_24:bijective 7:35:r1:shfl@base_28:inject 8:36:r6:shfl@base_27:inject 9:40:r2:rotr@base_33:bijective 10:46:r6:mul@base_44:lossy 11:47:r0:add@base_38:inject 12:53:r3:mulhi@base_50:lossy 13:57:r5:load@base_34:inject 14:62:r7:add@base_31:inject 15:63:r2:rotl@base_60:bijective +igneum-ca3-v4-uniform/964 61e946dd88461093 0 0:0:0 1:2:3 2:2:2 3:0:0 4:1:1 5:1:0 6:0:0 7:0:0 8:1:1 9:2:3 10:2:2 11:2:1 12:1:0 13:1:0 14:0:0 15:0:0 1 0 0 0 1 0:4:r1:shfl@base_2:inject 1:10:r0:mulhi@base_6:lossy 2:11:r5:sub@base_8:inject 3:12:r2:load@base_11:inject 4:13:r6:xor@base_5:inject 5:16:r1:rotr@base_9:bijective 6:19:r4:rotl@base_18:bijective 7:21:r3:sub@base_20:inject 8:40:r1:shfl@base_30:inject 9:49:r5:add@base_45:inject 10:51:r0:xor@base_46:inject 11:52:r6:load@base_49:inject 12:56:r2:xor@base_54:inject 13:57:r0:load@base_56:inject 14:58:r3:xor@base_37:inject 15:60:r7:load@base_58:inject +igneum-ca3-v4-uniform/965 622e577013b0f701 0 0:0:0 1:0:0 2:0:0 3:1:1 4:0:0 5:0:0 6:0:0 7:2:2 8:0:0 9:2:1 10:0:0 11:1:1 12:0:0 13:0:0 14:1:0 15:0:0 3 1 0 0 2 0:4:r0:mulhi@base_2:lossy 1:6:r5:xor@base_0:inject 2:7:r1:load@base_6:inject 3:13:r2:xor@base_9:inject 4:15:r3:shfl@base_10:inject 5:17:r7:xor@base_5:inject 6:18:r0:load@base_13:inject 7:22:r5:xor@base_19:inject 8:32:r7:or@base_31:lossy 9:39:r2:sub@base_36:inject 10:40:r3:load@base_32:inject 11:42:r3:mulhi@base_41:lossy 12:43:r6:load@base_39:inject 13:54:r5:add@base_29:inject 14:59:r4:shfl@base_51:inject 15:61:r3:rotr@base_57:bijective +igneum-ca3-v4-uniform/966 027dae68f9e84394 0 0:2:0 1:0:0 2:1:0 3:2:3 4:0:0 5:0:0 6:2:0 7:2:2 8:2:2 9:0:0 10:0:0 11:1:0 12:0:0 13:1:0 14:2:1 15:1:1 2 1 0 1 0 0:7:r4:mad@base_2:inject 1:10:r2:rotl@base_8:bijective 2:14:r3:load@base_10:inject 3:21:r2:load@base_14:inject 4:23:r7:mul@base_22:lossy 5:33:r4:or@base_31:lossy 6:34:r3:sub@base_28:inject 7:36:r4:load@base_34:inject 8:37:r0:load@base_33:inject 9:41:r0:mad@base_38:inject 10:43:r6:load@base_21:inject 11:48:r5:xor@base_47:inject 12:49:r7:rotl@base_42:bijective 13:50:r6:load@base_48:inject 14:52:r4:rotr@base_46:bijective 15:59:r7:load@base_52:inject +igneum-ca3-v4-uniform/967 8b0b1f1b991514f9 0 0:2:1 1:0:0 2:1:0 3:0:0 4:2:2 5:0:0 6:2:1 7:2:1 8:2:1 9:2:2 10:0:0 11:0:0 12:2:1 13:1:0 14:2:2 15:2:2 4 3 2 1 0 0:4:r0:xor@base_3:inject 1:7:r1:xor@base_6:inject 2:17:r0:sub@base_14:inject 3:18:r1:or@base_8:lossy-or-chain1 4:20:r0:load@base_18:inject 5:26:r2:xor@base_2:inject 6:32:r2:add@base_27:inject 7:35:r0:shfl@base_30:inject 8:40:r7:load@base_35:inject 9:41:r4:mul@base_19:lossy 10:43:r5:load@base_41:inject 11:44:r1:or@base_23:lossy-or-chain1 12:50:r4:load@base_43:inject 13:55:r3:or@base_47:lossy 14:62:r5:load@base_55:inject 15:63:r2:xor@base_58:inject +igneum-ca3-v4-uniform/968 06ec37a7d89dc8a3 0 0:2:2 1:0:0 2:0:0 3:2:2 4:2:3 5:2:3 6:2:0 7:0:0 8:1:0 9:2:2 10:1:1 11:2:2 12:0:0 13:1:0 14:1:0 15:1:0 4 0 0 1 3 0:5:r1:mulhi@base_4:lossy 1:16:r0:mulhi@base_12:lossy 2:18:r5:xor@base_17:inject 3:20:r4:rotr@base_6:bijective 4:21:r2:load@base_18:inject 5:22:r3:add@base_15:inject 6:23:r6:load@base_22:inject 7:30:r6:mul@base_28:lossy 8:32:r2:shfl@base_25:inject 9:34:r3:load@base_32:inject 10:39:r7:shfl@base_38:inject 11:42:r5:load@base_20:inject 12:43:r4:sub@base_37:inject 13:44:r1:sub@base_40:inject 14:47:r4:add@base_46:inject 15:57:r6:mulhi@base_48:lossy +igneum-ca3-v4-uniform/969 6b2fb9646acdae98 0 0:2:3 1:2:1 2:2:2 3:1:0 4:1:0 5:1:1 6:1:0 7:2:3 8:2:1 9:2:0 10:0:0 11:0:0 12:1:0 13:0:0 14:2:3 15:2:2 3 0 0 2 1 0:7:r4:add@base_1:inject 1:15:r1:mul@base_10:lossy 2:16:r4:mulhi@base_13:lossy 3:17:r6:load@base_16:inject 4:20:r4:load@base_17:inject 5:31:r3:mad@base_30:inject 6:35:r4:rotl@base_33:bijective 7:36:r2:shfl@base_29:inject 8:39:r4:sub@base_37:inject 9:42:r2:xor@base_38:inject 10:46:r4:load@base_42:inject 11:48:r7:mul@base_47:lossy 12:52:r5:rotl@base_45:bijective 13:56:r7:xor@base_51:inject 14:58:r0:add@base_57:inject 15:63:r6:load@base_52:inject +igneum-ca3-v4-uniform/970 22f6822cebf777d8 0 0:1:0 1:2:1 2:1:0 3:1:1 4:1:1 5:0:0 6:0:0 7:1:0 8:1:0 9:2:2 10:1:1 11:2:1 12:0:0 13:1:1 14:0:0 15:0:0 1 0 0 1 0 0:6:r6:mul@base_2:lossy 1:13:r5:shfl@base_9:inject 2:18:r4:rotl@base_16:bijective 3:21:r7:load@base_18:inject 4:26:r0:add@base_19:inject 5:28:r1:sub@base_24:inject 6:40:r6:load@base_28:inject 7:44:r5:shfl@base_34:inject 8:45:r4:rotr@base_35:bijective 9:49:r6:mad@base_48:inject 10:51:r0:add@base_36:inject 11:55:r3:rotl@base_43:bijective 12:58:r5:add@base_57:inject 13:59:r7:xor@base_56:inject 14:61:r2:load@base_59:inject 15:62:r4:load@base_61:inject +igneum-ca3-v4-uniform/971 0e015c6d770ddeaa 0 0:0:0 1:2:0 2:2:0 3:0:0 4:2:3 5:2:2 6:0:0 7:1:0 8:2:2 9:0:0 10:2:1 11:2:1 12:2:2 13:0:0 14:2:1 15:2:1 2 1 0 0 1 0:5:r6:mad@base_0:inject 1:12:r7:mad@base_10:inject 2:14:r3:add@base_8:inject 3:20:r3:xor@base_15:inject 4:26:r7:load@base_20:inject 5:35:r2:xor@base_34:inject 6:39:r1:load@base_35:inject 7:41:r5:mulhi@base_36:lossy 8:43:r2:load@base_41:inject 9:46:r0:shfl@base_33:inject 10:47:r3:or@base_45:lossy 11:50:r1:add@base_48:inject 12:52:r3:load@base_50:inject 13:55:r2:rotr@base_53:bijective 14:57:r5:sub@base_54:inject 15:58:r7:sub@base_49:inject +igneum-ca3-v4-uniform/972 58175b867519a2ac 0 0:2:2 1:1:0 2:1:1 3:2:2 4:0:0 5:1:0 6:1:0 7:2:3 8:1:1 9:2:3 10:1:0 11:0:0 12:0:0 13:2:0 14:1:0 15:0:0 4 2 0 0 2 0:1:r7:mad@base_0:inject 1:9:r0:or@base_8:lossy 2:10:r6:load@base_9:inject 3:12:r1:add@base_7:inject 4:15:r7:shfl@base_6:inject 5:31:r3:shfl@base_28:inject 6:33:r7:xor@base_29:inject 7:37:r0:or@base_32:lossy 8:39:r7:shfl@base_35:inject 9:47:r1:mulhi@base_22:lossy 10:49:r2:xor@base_46:inject 11:52:r6:mad@base_50:inject 12:54:r0:load@base_52:inject 13:59:r4:sub@base_53:inject 14:60:r7:mulhi@base_58:lossy 15:63:r6:sub@base_62:inject +igneum-ca3-v4-uniform/973 39276817aba779df 0 0:1:0 1:2:3 2:2:3 3:1:1 4:1:0 5:0:0 6:1:0 7:1:1 8:2:3 9:0:0 10:0:0 11:0:0 12:2:3 13:0:0 14:0:0 15:2:1 2 0 0 0 2 0:4:r2:xor@base_0:inject 1:5:r1:mad@base_2:inject 2:7:r7:load@base_5:inject 3:8:r1:load@base_7:inject 4:19:r0:xor@base_17:inject 5:21:r5:load@base_19:inject 6:23:r3:load@base_21:inject 7:30:r4:add@base_13:inject 8:35:r3:xor@base_32:inject 9:36:r6:load@base_35:inject 10:40:r5:mad@base_34:inject 11:47:r2:xor@base_46:inject 12:51:r7:mulhi@base_31:lossy 13:59:r6:mulhi@base_57:lossy 14:60:r0:shfl@base_54:inject 15:62:r4:load@base_59:inject +igneum-ca3-v4-uniform/974 7f5cb68b407bce07 0 0:0:0 1:0:0 2:0:0 3:2:2 4:2:3 5:0:0 6:2:1 7:0:0 8:2:3 9:0:0 10:0:0 11:2:2 12:1:0 13:0:0 14:0:0 15:0:0 3 0 0 2 1 0:3:r0:shfl@base_0:inject 1:6:r7:sub@base_2:inject 2:7:r6:load@base_6:inject 3:13:r0:load@base_7:inject 4:16:r1:rotr@base_15:bijective 5:19:r3:add@base_10:inject 6:20:r6:mul@base_17:lossy 7:21:r2:mul@base_18:lossy 8:23:r5:load@base_20:inject 9:26:r1:load@base_23:inject 10:37:r5:mad@base_35:inject 11:41:r3:sub@base_38:inject 12:47:r4:add@base_39:inject 13:54:r2:add@base_52:inject 14:58:r6:mulhi@base_48:lossy 15:59:r4:shfl@base_57:inject +igneum-ca3-v4-uniform/975 6c86f90f81ccdbca 0 0:2:1 1:1:1 2:1:0 3:2:2 4:0:0 5:1:0 6:0:0 7:1:1 8:2:2 9:1:1 10:2:1 11:0:0 12:1:0 13:1:1 14:2:3 15:1:1 2 1 0 1 0 0:6:r6:sub@base_4:inject 1:10:r5:xor@base_9:inject 2:12:r1:mad@base_8:inject 3:13:r2:or@base_3:lossy 4:17:r7:load@base_13:inject 5:20:r3:mad@base_15:inject 6:22:r0:mul@base_19:lossy 7:29:r5:add@base_14:inject 8:30:r6:load@base_20:inject 9:36:r2:mad@base_27:inject 10:39:r7:mad@base_32:inject 11:43:r5:xor@base_40:inject 12:45:r7:rotl@base_42:bijective 13:48:r1:load@base_39:inject 14:58:r0:add@base_57:inject 15:59:r7:rotr@base_55:bijective +igneum-ca3-v4-uniform/976 9d7ee0d11211288b 0 0:1:1 1:0:0 2:2:0 3:1:1 4:1:0 5:0:0 6:0:0 7:1:1 8:2:0 9:2:3 10:0:0 11:2:3 12:1:0 13:1:1 14:2:3 15:0:0 3 1 0 2 0 0:2:r1:sub@base_0:inject 1:4:r4:mul@base_3:lossy 2:6:r2:rotl@base_5:bijective 3:10:r0:load@base_6:inject 4:13:r6:add@base_11:inject 5:18:r1:mad@base_14:inject 6:22:r6:add@base_20:inject 7:26:r1:rotr@base_21:bijective 8:28:r4:add@base_27:inject 9:30:r0:xor@base_25:inject 10:33:r7:shfl@base_23:inject 11:39:r2:load@base_30:inject 12:58:r6:or@base_47:lossy 13:61:r1:mul@base_59:lossy 14:62:r5:load@base_58:inject 15:63:r6:load@base_61:inject +igneum-ca3-v4-uniform/977 526d7ef3635c5447 0 0:1:0 1:1:1 2:1:1 3:2:0 4:2:0 5:1:0 6:0:0 7:1:1 8:2:3 9:1:1 10:0:0 11:2:1 12:2:3 13:2:3 14:0:0 15:2:0 4 0 0 1 3 0:2:r3:rotr@base_1:bijective 1:13:r2:mul@base_8:lossy 2:16:r3:mulhi@base_12:lossy 3:17:r7:load@base_16:inject 4:29:r2:mulhi@base_27:lossy 5:30:r4:rotl@base_19:bijective 6:31:r6:mad@base_28:inject 7:33:r7:load@base_30:inject 8:38:r2:xor@base_34:inject 9:42:r6:rotl@base_36:bijective 10:43:r4:sub@base_32:inject 11:44:r1:load@base_38:inject 12:51:r6:mad@base_47:inject 13:52:r7:mulhi@base_50:lossy 14:53:r5:shfl@base_49:inject 15:57:r6:xor@base_55:inject +igneum-ca3-v4-uniform/978 09f237c4a1b311a0 0 0:2:3 1:2:3 2:1:1 3:0:0 4:1:1 5:2:0 6:0:0 7:2:2 8:2:3 9:2:0 10:0:0 11:0:0 12:2:3 13:2:0 14:1:0 15:2:1 6 2 0 3 1 0:3:r6:or@base_2:lossy 1:10:r5:load@base_3:inject 2:11:r7:mul@base_7:lossy 3:13:r4:load@base_10:inject 4:16:r1:mulhi@base_5:lossy 5:19:r0:mad@base_14:inject 6:22:r5:load@base_19:inject 7:24:r6:load@base_22:inject 8:28:r5:or@base_27:lossy 9:30:r2:load@base_28:inject 10:37:r2:xor@base_31:inject 11:38:r4:load@base_30:inject 12:45:r5:mul@base_42:lossy 13:53:r4:add@base_48:inject 14:56:r0:rotl@base_51:bijective 15:60:r6:mul@base_52:lossy +igneum-ca3-v4-uniform/979 42668d8dfef066ec 0 0:0:0 1:2:3 2:1:1 3:0:0 4:1:0 5:0:0 6:1:0 7:0:0 8:0:0 9:2:3 10:2:3 11:0:0 12:1:0 13:0:0 14:2:0 15:1:0 3 2 1 1 0 0:1:r6:xor@base_0:inject 1:15:r1:rotl@base_12:bijective 2:17:r7:or@base_4:lossy-or-chain1 3:19:r3:shfl@base_9:inject 4:24:r5:load@base_17:inject 5:25:r2:load@base_24:inject 6:29:r4:rotl@base_27:bijective 7:31:r1:load@base_25:inject 8:34:r3:load@base_31:inject 9:41:r4:or@base_39:lossy 10:45:r5:mad@base_35:inject 11:47:r3:mad@base_46:inject 12:50:r0:load@base_34:inject 13:51:r3:rotr@base_48:bijective 14:56:r4:mul@base_43:lossy 15:63:r1:add@base_62:inject +igneum-ca3-v4-uniform/980 2637591114885ddb 0 0:0:0 1:2:2 2:1:1 3:0:0 4:0:0 5:2:0 6:1:1 7:1:1 8:2:0 9:0:0 10:1:1 11:2:3 12:1:1 13:1:0 14:2:1 15:0:0 3 1 0 2 0 0:2:r7:sub@base_1:inject 1:3:r6:add@base_0:inject 2:11:r0:mul@base_4:lossy 3:12:r5:add@base_10:inject 4:17:r1:load@base_11:inject 5:21:r3:xor@base_19:inject 6:23:r4:xor@base_22:inject 7:24:r1:load@base_21:inject 8:27:r7:rotl@base_20:bijective 9:36:r1:add@base_35:inject 10:38:r5:load@base_36:inject 11:41:r0:load@base_38:inject 12:44:r4:mul@base_43:lossy 13:59:r4:or@base_53:lossy 14:62:r3:shfl@base_46:inject 15:63:r6:add@base_61:inject +igneum-ca3-v4-uniform/981 5c2acc6a8460d172 0 0:2:0 1:1:0 2:2:3 3:0:0 4:0:0 5:0:0 6:1:0 7:1:0 8:1:1 9:0:0 10:2:2 11:0:0 12:0:0 13:1:1 14:0:0 15:0:0 3 0 0 0 3 0:7:r2:mulhi@base_2:lossy 1:9:r4:rotl@base_4:bijective 2:10:r7:load@base_9:inject 3:11:r5:load@base_10:inject 4:12:r0:load@base_11:inject 5:13:r1:mulhi@base_6:lossy 6:15:r6:load@base_12:inject 7:17:r6:shfl@base_16:inject 8:24:r5:sub@base_20:inject 9:27:r2:mulhi@base_26:lossy 10:32:r4:xor@base_28:inject 11:36:r1:xor@base_30:inject 12:52:r0:load@base_27:inject 13:57:r2:rotr@base_48:bijective 14:60:r0:sub@base_56:inject 15:61:r7:load@base_57:inject +igneum-ca3-v4-uniform/982 8ce1fd91dbae36bf 0 0:1:0 1:1:1 2:2:2 3:1:1 4:2:3 5:1:1 6:0:0 7:1:0 8:0:0 9:1:0 10:0:0 11:0:0 12:1:1 13:2:0 14:1:1 15:0:0 4 1 1 2 1 0:3:r4:add@base_0:inject 1:5:r6:mul@base_4:lossy 2:6:r0:load@base_3:inject 3:11:r5:rotl@base_9:bijective 4:19:r3:load@base_5:inject 5:21:r1:load@base_19:inject 6:29:r3:add@base_27:inject 7:35:r4:xor@base_30:inject 8:43:r5:mul@base_31:lossy 9:47:r2:or@base_36:lossy-or-chain1 10:49:r4:rotr@base_46:bijective 11:51:r1:xor@base_45:inject 12:54:r5:load@base_51:inject 13:60:r7:shfl@base_57:inject 14:61:r3:mulhi@base_53:lossy 15:63:r1:load@base_61:inject +igneum-ca3-v4-uniform/983 e39967b09c652f2e 0 0:2:3 1:2:2 2:2:1 3:2:0 4:2:0 5:0:0 6:0:0 7:1:1 8:0:0 9:0:0 10:0:0 11:0:0 12:1:1 13:2:0 14:1:0 15:1:0 5 0 0 3 2 0:12:r2:mulhi@base_5:lossy 1:14:r4:mul@base_11:lossy 2:16:r7:mul@base_13:lossy 3:21:r3:mulhi@base_4:lossy 4:22:r2:sub@base_19:inject 5:23:r6:load@base_22:inject 6:28:r7:xor@base_27:inject 7:34:r5:add@base_26:inject 8:35:r3:xor@base_30:inject 9:40:r0:load@base_34:inject 10:46:r5:sub@base_44:inject 11:52:r5:rotl@base_51:bijective 12:53:r3:rotl@base_47:bijective 13:55:r4:add@base_45:inject 14:57:r2:add@base_56:inject 15:60:r1:mul@base_49:lossy +igneum-ca3-v4-uniform/984 ad1878d1d95e6b49 0 0:0:0 1:0:0 2:0:0 3:2:0 4:1:1 5:1:0 6:2:2 7:1:1 8:1:0 9:1:0 10:1:1 11:2:1 12:0:0 13:0:0 14:2:1 15:0:0 3 1 0 1 1 0:4:r3:shfl@base_2:inject 1:8:r6:mad@base_5:inject 2:12:r4:rotr@base_7:bijective 3:15:r5:rotr@base_6:bijective 4:17:r5:add@base_16:inject 5:20:r3:load@base_17:inject 6:21:r2:mul@base_19:lossy 7:23:r0:mulhi@base_13:lossy 8:24:r1:load@base_15:inject 9:32:r4:load@base_24:inject 10:37:r6:sub@base_35:inject 11:46:r7:or@base_45:lossy 12:50:r3:sub@base_36:inject 13:53:r3:mad@base_52:inject 14:54:r2:rotl@base_47:bijective 15:61:r7:rotr@base_51:bijective +igneum-ca3-v4-uniform/985 3cbafd1f3a64cccc 0 0:2:0 1:2:0 2:1:0 3:0:0 4:2:2 5:0:0 6:1:0 7:1:1 8:2:0 9:0:0 10:2:3 11:0:0 12:2:1 13:0:0 14:0:0 15:1:0 1 1 0 0 0 0:2:r7:rotl@base_0:bijective 1:4:r4:sub@base_3:inject 2:6:r6:load@base_4:inject 3:8:r3:load@base_6:inject 4:9:r6:load@base_8:inject 5:19:r6:mad@base_17:inject 6:21:r4:sub@base_13:inject 7:32:r3:load@base_19:inject 8:35:r7:xor@base_33:inject 9:39:r4:xor@base_30:inject 10:42:r1:xor@base_40:inject 11:48:r7:load@base_42:inject 12:49:r2:rotl@base_46:bijective 13:54:r3:add@base_52:inject 14:56:r7:load@base_54:inject 15:63:r0:or@base_45:lossy +igneum-ca3-v4-uniform/986 30d002b6b47fd13e 0 0:1:0 1:0:0 2:1:1 3:0:0 4:0:0 5:0:0 6:0:0 7:0:0 8:2:3 9:2:1 10:1:0 11:1:0 12:1:1 13:0:0 14:2:3 15:1:0 5 2 0 2 1 0:9:r5:add@base_0:inject 1:14:r1:xor@base_11:inject 2:19:r1:xor@base_15:inject 3:22:r6:or@base_21:lossy 4:23:r7:rotr@base_13:bijective 5:25:r3:or@base_17:lossy 6:29:r2:load@base_22:inject 7:31:r4:load@base_25:inject 8:32:r7:mul@base_28:lossy 9:33:r5:load@base_23:inject 10:48:r2:sub@base_35:inject 11:49:r6:rotr@base_38:bijective 12:50:r1:mulhi@base_43:lossy 13:55:r6:mad@base_52:inject 14:58:r5:rotr@base_57:bijective 15:60:r4:mul@base_54:lossy +igneum-ca3-v4-uniform/987 a9bb71687ad6e808 0 0:2:3 1:1:1 2:0:0 3:2:0 4:0:0 5:1:1 6:2:0 7:0:0 8:0:0 9:0:0 10:0:0 11:1:1 12:1:0 13:2:1 14:2:1 15:1:1 2 1 0 1 0 0:6:r7:xor@base_5:inject 1:9:r5:rotr@base_2:bijective 2:14:r3:mul@base_8:lossy 3:15:r6:add@base_7:inject 4:17:r5:load@base_15:inject 5:22:r0:mad@base_19:inject 6:25:r3:or@base_21:lossy 7:27:r2:mad@base_20:inject 8:33:r2:rotl@base_29:bijective 9:39:r4:shfl@base_37:inject 10:44:r6:rotr@base_43:bijective 11:46:r3:load@base_44:inject 12:47:r0:add@base_32:inject 13:52:r1:rotr@base_51:bijective 14:57:r2:xor@base_45:inject 15:63:r4:load@base_47:inject +igneum-ca3-v4-uniform/988 290757699f478c64 0 0:0:0 1:1:0 2:1:1 3:0:0 4:0:0 5:2:0 6:1:0 7:1:1 8:1:0 9:1:0 10:1:1 11:1:0 12:0:0 13:1:0 14:2:2 15:2:0 5 0 0 4 1 0:3:r2:mul@base_1:lossy 1:6:r0:mulhi@base_5:lossy 2:10:r3:rotl@base_4:bijective 3:11:r0:mul@base_9:lossy 4:17:r4:rotr@base_15:bijective 5:24:r7:xor@base_23:inject 6:28:r7:mul@base_25:lossy 7:30:r2:mul@base_26:lossy 8:33:r0:shfl@base_31:inject 9:34:r6:load@base_33:inject 10:44:r6:shfl@base_43:inject 11:45:r1:add@base_20:inject 12:46:r3:load@base_44:inject 13:51:r6:mad@base_50:inject 14:52:r2:load@base_51:inject 15:59:r6:rotl@base_58:bijective +igneum-ca3-v4-uniform/989 a8abed17147caba4 0 0:1:1 1:0:0 2:1:1 3:2:2 4:0:0 5:0:0 6:2:0 7:0:0 8:1:1 9:0:0 10:2:0 11:0:0 12:0:0 13:1:0 14:0:0 15:1:1 4 0 0 2 2 0:1:r5:rotl@base_0:bijective 1:3:r6:mul@base_2:lossy 2:9:r2:load@base_3:inject 3:10:r7:load@base_9:inject 4:11:r4:mulhi@base_4:lossy 5:13:r4:mul@base_12:lossy 6:15:r5:load@base_13:inject 7:18:r7:shfl@base_17:inject 8:24:r7:add@base_22:inject 9:25:r6:load@base_18:inject 10:29:r7:mad@base_28:inject 11:32:r2:rotr@base_26:bijective 12:41:r2:sub@base_38:inject 13:48:r4:mulhi@base_42:lossy 14:50:r7:rotl@base_46:bijective 15:62:r1:rotr@base_58:bijective +igneum-ca3-v4-uniform/990 4ff5243f0678dbfa 0 0:1:1 1:1:1 2:2:0 3:0:0 4:2:2 5:2:0 6:1:0 7:2:3 8:0:0 9:2:2 10:2:0 11:0:0 12:2:1 13:0:0 14:1:0 15:2:3 1 0 0 1 0 0:3:r1:xor@base_2:inject 1:7:r5:sub@base_0:inject 2:8:r7:load@base_7:inject 3:13:r0:load@base_8:inject 4:20:r4:add@base_19:inject 5:22:r2:mad@base_14:inject 6:24:r1:xor@base_4:inject 7:25:r5:load@base_20:inject 8:28:r0:sub@base_23:inject 9:29:r6:load@base_25:inject 10:39:r4:rotr@base_38:bijective 11:48:r1:xor@base_41:inject 12:49:r2:mad@base_46:inject 13:50:r3:add@base_26:inject 14:59:r6:add@base_47:inject 15:63:r7:mul@base_54:lossy +igneum-ca3-v4-uniform/991 c76592552e364453 0 0:1:1 1:2:2 2:0:0 3:1:0 4:1:0 5:2:2 6:2:3 7:1:0 8:1:1 9:1:0 10:0:0 11:2:3 12:0:0 13:0:0 14:0:0 15:2:1 4 1 0 2 1 0:1:r3:rotl@base_0:bijective 1:4:r3:mul@base_3:lossy 2:7:r6:or@base_5:lossy 3:9:r7:load@base_1:inject 4:14:r3:load@base_7:inject 5:25:r1:mulhi@base_24:lossy 6:26:r2:load@base_25:inject 7:27:r7:rotl@base_16:bijective 8:37:r3:mad@base_23:inject 9:43:r1:mul@base_39:lossy 10:46:r5:shfl@base_42:inject 11:51:r2:load@base_43:inject 12:53:r7:load@base_51:inject 13:56:r2:xor@base_52:inject 14:58:r4:load@base_53:inject 15:63:r6:mad@base_60:inject +igneum-ca3-v4-uniform/992 c2349761e65eb957 0 0:2:2 1:1:1 2:0:0 3:0:0 4:1:0 5:1:0 6:2:2 7:1:1 8:1:0 9:0:0 10:1:1 11:0:0 12:1:1 13:2:3 14:2:3 15:1:0 6 0 0 3 3 0:2:r4:mad@base_1:inject 1:3:r7:load@base_2:inject 2:10:r4:mulhi@base_4:lossy 3:17:r3:mul@base_14:lossy 4:19:r0:add@base_18:inject 5:23:r5:xor@base_22:inject 6:33:r7:mul@base_31:lossy 7:36:r6:add@base_20:inject 8:43:r1:rotl@base_37:bijective 9:48:r3:add@base_42:inject 10:49:r2:mulhi@base_32:lossy 11:51:r0:rotl@base_45:bijective 12:53:r4:mul@base_50:lossy 13:55:r5:rotl@base_52:bijective 14:58:r0:xor@base_54:inject 15:63:r6:mulhi@base_47:lossy +igneum-ca3-v4-uniform/993 e8900c9406db1223 0 0:1:0 1:0:0 2:0:0 3:0:0 4:1:1 5:0:0 6:0:0 7:2:0 8:0:0 9:2:1 10:2:0 11:2:2 12:1:1 13:0:0 14:1:1 15:2:0 4 1 0 1 2 0:1:r0:shfl@base_0:inject 1:10:r3:mad@base_8:inject 2:14:r2:shfl@base_6:inject 3:17:r7:shfl@base_7:inject 4:22:r0:load@base_17:inject 5:28:r5:or@base_25:lossy 6:32:r4:mad@base_29:inject 7:35:r6:mulhi@base_31:lossy 8:36:r1:mul@base_34:lossy 9:37:r4:load@base_36:inject 10:41:r3:load@base_37:inject 11:50:r5:add@base_49:inject 12:56:r5:mad@base_54:inject 13:59:r2:mulhi@base_57:lossy 14:60:r4:load@base_56:inject 15:63:r2:xor@base_61:inject +igneum-ca3-v4-uniform/994 e950dbc922565c60 0 0:1:1 1:1:0 2:1:0 3:1:1 4:2:0 5:2:2 6:1:0 7:2:0 8:0:0 9:1:0 10:2:1 11:0:0 12:1:1 13:2:2 14:2:2 15:0:0 5 0 0 4 1 0:4:r6:rotr@base_2:bijective 1:11:r5:rotr@base_6:bijective 2:12:r4:xor@base_9:inject 3:20:r5:rotr@base_17:bijective 4:23:r6:mul@base_21:lossy 5:25:r1:load@base_23:inject 6:26:r7:rotl@base_19:bijective 7:30:r3:mulhi@base_22:lossy 8:33:r7:xor@base_31:inject 9:34:r6:load@base_30:inject 10:40:r3:mul@base_38:lossy 11:41:r5:mul@base_28:lossy 12:45:r2:load@base_41:inject 13:53:r3:shfl@base_49:inject 14:55:r3:rotl@base_54:bijective 15:61:r0:mul@base_59:lossy +igneum-ca3-v4-uniform/995 d38f1eb98014836c 0 0:1:0 1:0:0 2:0:0 3:0:0 4:0:0 5:0:0 6:0:0 7:2:0 8:0:0 9:2:3 10:1:0 11:2:0 12:2:2 13:1:1 14:0:0 15:1:1 2 0 0 2 0 0:2:r5:mad@base_1:inject 1:3:r1:mul@base_0:lossy 2:11:r6:load@base_2:inject 3:12:r1:mul@base_6:lossy 4:19:r5:xor@base_8:inject 5:20:r0:xor@base_10:inject 6:30:r5:shfl@base_28:inject 7:31:r0:mad@base_26:inject 8:36:r3:load@base_30:inject 9:37:r7:load@base_12:inject 10:47:r0:xor@base_46:inject 11:52:r7:sub@base_44:inject 12:57:r0:mad@base_55:inject 13:58:r2:add@base_56:inject 14:60:r6:add@base_43:inject 15:63:r5:load@base_58:inject +igneum-ca3-v4-uniform/996 af4b5e177ab55048 0 0:0:0 1:0:0 2:2:2 3:0:0 4:2:0 5:1:1 6:2:3 7:0:0 8:2:0 9:2:2 10:0:0 11:1:1 12:1:0 13:2:3 14:1:1 15:1:0 4 1 0 2 1 0:2:r4:add@base_1:inject 1:4:r5:mad@base_3:inject 2:22:r2:mad@base_19:inject 3:27:r6:shfl@base_18:inject 4:29:r0:add@base_14:inject 5:32:r5:mul@base_17:lossy 6:37:r1:shfl@base_36:inject 7:39:r4:mul@base_38:lossy 8:41:r2:load@base_29:inject 9:42:r5:shfl@base_35:inject 10:43:r1:load@base_42:inject 11:46:r6:load@base_37:inject 12:47:r5:or@base_44:lossy 13:53:r4:mulhi@base_51:lossy 14:58:r2:mad@base_49:inject 15:59:r5:add@base_52:inject +igneum-ca3-v4-uniform/997 630c523a682a1dd0 0 0:1:0 1:2:1 2:2:0 3:2:0 4:2:3 5:0:0 6:2:0 7:2:3 8:1:1 9:0:0 10:0:0 11:0:0 12:0:0 13:0:0 14:1:1 15:2:2 2 0 0 1 1 0:1:r3:shfl@base_0:inject 1:4:r3:shfl@base_2:inject 2:5:r5:load@base_4:inject 3:6:r7:load@base_5:inject 4:10:r6:rotr@base_3:bijective 5:12:r5:rotr@base_11:bijective 6:21:r1:xor@base_14:inject 7:23:r4:mad@base_16:inject 8:25:r6:xor@base_24:inject 9:26:r3:load@base_12:inject 10:35:r6:mul@base_30:lossy 11:37:r5:load@base_25:inject 12:38:r0:xor@base_18:inject 13:50:r3:add@base_48:inject 14:58:r2:mad@base_55:inject 15:61:r4:mulhi@base_53:lossy +igneum-ca3-v4-uniform/998 a96b62cbd00ac371 0 0:0:0 1:1:0 2:0:0 3:1:0 4:1:0 5:2:3 6:1:0 7:0:0 8:0:0 9:0:0 10:1:1 11:2:0 12:0:0 13:0:0 14:2:3 15:2:0 6 3 0 3 0 0:1:r7:xor@base_0:inject 1:4:r4:mul@base_2:lossy 2:8:r5:load@base_4:inject 3:10:r3:rotl@base_5:bijective 4:11:r6:rotr@base_9:bijective 5:14:r5:or@base_12:lossy 6:17:r3:rotl@base_13:bijective 7:19:r1:load@base_17:inject 8:26:r2:or@base_25:lossy 9:30:r2:mul@base_28:lossy 10:31:r0:or@base_21:lossy 11:32:r7:load@base_30:inject 12:43:r4:xor@base_40:inject 13:48:r2:load@base_43:inject 14:49:r1:mul@base_46:lossy 15:52:r4:rotr@base_51:bijective +igneum-ca3-v4-uniform/999 a0f14df370ca39b7 0 0:1:1 1:2:1 2:0:0 3:1:0 4:1:0 5:2:2 6:1:1 7:1:0 8:1:1 9:0:0 10:0:0 11:0:0 12:2:0 13:2:2 14:0:0 15:1:0 1 0 0 1 0 0:4:r3:shfl@base_3:inject 1:7:r4:mad@base_6:inject 2:11:r7:rotr@base_9:bijective 3:13:r3:rotl@base_10:bijective 4:20:r3:add@base_19:inject 5:22:r0:load@base_20:inject 6:24:r7:shfl@base_18:inject 7:26:r2:mul@base_14:lossy 8:30:r2:xor@base_27:inject 9:43:r6:xor@base_39:inject 10:48:r2:xor@base_36:inject 11:49:r5:add@base_45:inject 12:52:r3:load@base_48:inject 13:53:r0:xor@base_46:inject 14:55:r2:load@base_52:inject 15:62:r6:mad@base_61:inject +igneum-ca3-v4-uniform/1000 2fad686e34d5c8e6 0 0:2:2 1:0:0 2:2:0 3:2:0 4:1:0 5:0:0 6:2:2 7:2:2 8:2:2 9:0:0 10:1:0 11:2:0 12:0:0 13:1:0 14:1:1 15:1:0 7 0 0 5 2 0:5:r3:mulhi@base_2:lossy 1:13:r2:mul@base_11:lossy 2:16:r5:load@base_13:inject 3:22:r4:xor@base_9:inject 4:24:r5:mad@base_23:inject 5:27:r0:mul@base_19:lossy 6:29:r3:xor@base_25:inject 7:34:r7:rotr@base_26:bijective 8:35:r1:mul@base_30:lossy 9:37:r0:load@base_35:inject 10:40:r3:mul@base_32:lossy 11:41:r7:load@base_37:inject 12:45:r5:mulhi@base_39:lossy 13:53:r7:mad@base_50:inject 14:60:r0:rotr@base_49:bijective 15:61:r2:mul@base_59:lossy +igneum-ca3-v4-uniform/1001 70fccbbcad562ba3 0 0:2:2 1:0:0 2:1:0 3:0:0 4:1:0 5:0:0 6:2:3 7:0:0 8:2:1 9:0:0 10:0:0 11:1:0 12:1:0 13:1:0 14:1:1 15:2:3 5 0 0 3 2 0:1:r2:mulhi@base_0:lossy 1:5:r3:load@base_1:inject 2:6:r4:load@base_5:inject 3:15:r1:load@base_6:inject 4:22:r0:rotl@base_9:bijective 5:23:r7:load@base_15:inject 6:25:r4:rotr@base_14:bijective 7:26:r6:load@base_25:inject 8:27:r3:mul@base_18:lossy 9:30:r5:mad@base_29:inject 10:34:r6:mul@base_31:lossy 11:35:r0:load@base_27:inject 12:41:r4:add@base_32:inject 13:45:r7:mulhi@base_44:lossy 14:57:r4:mul@base_49:lossy 15:63:r1:rotr@base_52:bijective +igneum-ca3-v4-uniform/1002 2a0a76d993fbe6ec 0 0:0:0 1:1:1 2:0:0 3:2:0 4:0:0 5:0:0 6:1:1 7:1:0 8:1:0 9:2:2 10:1:0 11:2:3 12:1:0 13:2:2 14:1:1 15:1:0 3 1 0 2 0 0:15:r5:mul@base_8:lossy 1:18:r4:mad@base_16:inject 2:20:r3:xor@base_4:inject 3:21:r0:mul@base_19:lossy 4:25:r1:xor@base_10:inject 5:28:r5:shfl@base_27:inject 6:39:r4:or@base_32:lossy 7:40:r0:mad@base_34:inject 8:41:r5:add@base_36:inject 9:44:r7:load@base_41:inject 10:45:r0:xor@base_42:inject 11:49:r4:add@base_48:inject 12:53:r1:xor@base_46:inject 13:54:r7:xor@base_52:inject 14:55:r4:load@base_53:inject 15:61:r0:sub@base_50:inject +igneum-ca3-v4-uniform/1003 4302c71a8f745baa 0 0:1:0 1:1:0 2:2:0 3:0:0 4:1:1 5:1:0 6:1:0 7:2:3 8:1:1 9:2:2 10:0:0 11:1:1 12:2:1 13:0:0 14:0:0 15:1:0 7 3 2 3 1 0:4:r5:rotl@base_1:bijective 1:5:r0:mulhi@base_3:lossy 2:18:r7:shfl@base_17:inject 3:19:r3:load@base_18:inject 4:28:r4:or@base_21:lossy-or-chain1 5:32:r3:shfl@base_27:inject 6:34:r1:rotl@base_33:bijective 7:35:r4:or@base_30:lossy-or-chain1 8:42:r7:mul@base_31:lossy 9:46:r0:or@base_45:lossy 10:47:r2:mul@base_36:lossy 11:52:r3:load@base_47:inject 12:57:r5:mul@base_54:lossy 13:59:r6:load@base_52:inject 14:60:r2:load@base_59:inject 15:62:r7:shfl@base_61:inject +igneum-ca3-v4-uniform/1004 55873189dfcd804c 0 0:1:1 1:2:0 2:2:0 3:0:0 4:2:3 5:1:1 6:1:1 7:2:0 8:1:1 9:1:1 10:0:0 11:2:0 12:0:0 13:1:0 14:2:1 15:0:0 2 1 0 1 0 0:5:r3:or@base_4:lossy 1:6:r5:add@base_0:inject 2:9:r6:mul@base_8:lossy 3:13:r2:mad@base_7:inject 4:14:r4:sub@base_12:inject 5:15:r1:shfl@base_11:inject 6:19:r0:add@base_16:inject 7:27:r3:xor@base_22:inject 8:33:r7:shfl@base_25:inject 9:34:r2:sub@base_32:inject 10:36:r3:load@base_34:inject 11:44:r5:rotl@base_40:bijective 12:45:r7:rotl@base_43:bijective 13:50:r4:mad@base_49:inject 14:52:r0:load@base_33:inject 15:59:r4:rotr@base_53:bijective +igneum-ca3-v4-uniform/1005 82a5a6c50ec8ba8e 0 0:0:0 1:2:1 2:1:1 3:1:0 4:2:0 5:1:0 6:0:0 7:0:0 8:0:0 9:0:0 10:1:0 11:0:0 12:2:0 13:0:0 14:0:0 15:2:2 3 1 0 0 2 0:3:r1:xor@base_1:inject 1:5:r7:shfl@base_4:inject 2:18:r0:sub@base_17:inject 3:22:r6:shfl@base_14:inject 4:25:r2:mulhi@base_23:lossy 5:27:r1:load@base_25:inject 6:28:r4:xor@base_16:inject 7:30:r3:rotl@base_0:bijective 8:32:r0:add@base_31:inject 9:42:r5:or@base_41:lossy 10:46:r2:sub@base_43:inject 11:50:r3:add@base_48:inject 12:51:r0:load@base_50:inject 13:58:r0:xor@base_55:inject 14:59:r7:mulhi@base_52:lossy 15:61:r3:load@base_59:inject +igneum-ca3-v4-uniform/1006 ae0f4f269221f25a 0 0:2:2 1:0:0 2:0:0 3:0:0 4:2:1 5:0:0 6:1:1 7:2:3 8:0:0 9:2:3 10:2:2 11:2:2 12:0:0 13:1:0 14:0:0 15:0:0 1 0 0 0 1 0:2:r1:rotl@base_1:bijective 1:4:r0:rotr@base_3:bijective 2:6:r2:load@base_2:inject 3:8:r3:shfl@base_5:inject 4:10:r0:sub@base_9:inject 5:17:r0:xor@base_11:inject 6:20:r4:mulhi@base_15:lossy 7:22:r6:load@base_20:inject 8:35:r4:shfl@base_31:inject 9:36:r1:load@base_22:inject 10:39:r5:shfl@base_34:inject 11:43:r7:rotr@base_32:bijective 12:48:r1:load@base_39:inject 13:54:r7:shfl@base_52:inject 14:60:r2:load@base_54:inject 15:63:r3:add@base_58:inject +igneum-ca3-v4-uniform/1007 bb991431c9b1cc22 0 0:2:3 1:0:0 2:0:0 3:0:0 4:2:0 5:2:1 6:0:0 7:2:0 8:1:1 9:1:0 10:2:0 11:2:2 12:0:0 13:1:1 14:0:0 15:2:0 3 1 0 0 2 0:5:r0:add@base_1:inject 1:6:r6:mad@base_4:inject 2:13:r3:load@base_6:inject 3:16:r1:load@base_13:inject 4:17:r0:rotl@base_14:bijective 5:18:r2:rotr@base_9:bijective 6:20:r5:load@base_17:inject 7:21:r7:load@base_18:inject 8:22:r2:sub@base_19:inject 9:26:r4:load@base_21:inject 10:28:r6:or@base_24:lossy 11:42:r5:add@base_27:inject 12:43:r6:add@base_41:inject 13:50:r3:mulhi@base_32:lossy 14:57:r7:mulhi@base_52:lossy 15:58:r0:add@base_56:inject +igneum-ca3-v4-uniform/1008 bbde291462c8a0e1 0 0:0:0 1:2:1 2:0:0 3:0:0 4:1:1 5:0:0 6:2:3 7:1:0 8:2:3 9:2:1 10:1:1 11:2:1 12:1:1 13:0:0 14:0:0 15:2:2 5 1 0 4 0 0:2:r2:xor@base_1:inject 1:3:r4:xor@base_0:inject 2:11:r3:load@base_3:inject 3:12:r6:add@base_8:inject 4:16:r1:load@base_11:inject 5:21:r3:rotr@base_14:bijective 6:28:r6:add@base_25:inject 7:36:r6:mul@base_32:lossy 8:37:r7:mul@base_31:lossy 9:39:r5:mul@base_27:lossy 10:41:r0:load@base_36:inject 11:46:r3:mul@base_45:lossy 12:49:r2:sub@base_38:inject 13:50:r7:load@base_49:inject 14:55:r2:or@base_54:lossy 15:56:r6:xor@base_51:inject +igneum-ca3-v4-uniform/1009 6527af84bf799e7d 0 0:2:2 1:0:0 2:2:3 3:1:1 4:2:0 5:2:2 6:2:0 7:1:1 8:0:0 9:0:0 10:2:3 11:1:0 12:2:3 13:1:0 14:0:0 15:0:0 2 2 0 0 0 0:3:r2:rotl@base_1:bijective 1:6:r2:mad@base_5:inject 2:9:r4:rotl@base_4:bijective 3:15:r5:shfl@base_11:inject 4:27:r1:mad@base_20:inject 5:31:r6:xor@base_12:inject 6:37:r6:add@base_35:inject 7:38:r4:or@base_24:lossy 8:39:r1:add@base_36:inject 9:40:r3:load@base_37:inject 10:44:r5:xor@base_41:inject 11:46:r7:load@base_38:inject 12:49:r0:rotl@base_42:bijective 13:53:r4:mad@base_50:inject 14:54:r5:load@base_53:inject 15:56:r1:or@base_45:lossy +igneum-ca3-v4-uniform/1010 80e9d6ce9567b4a4 0 0:1:1 1:1:0 2:1:0 3:1:0 4:0:0 5:2:0 6:0:0 7:0:0 8:1:1 9:0:0 10:1:0 11:2:0 12:1:0 13:2:3 14:0:0 15:0:0 2 1 0 1 0 0:3:r7:xor@base_2:inject 1:7:r7:add@base_4:inject 2:8:r0:add@base_5:inject 3:14:r7:or@base_9:lossy 4:17:r0:mad@base_16:inject 5:18:r3:mad@base_13:inject 6:20:r5:load@base_3:inject 7:24:r0:load@base_18:inject 8:27:r2:rotl@base_25:bijective 9:32:r4:sub@base_28:inject 10:35:r6:sub@base_26:inject 11:50:r6:mul@base_44:lossy 12:54:r7:xor@base_43:inject 13:57:r2:load@base_54:inject 14:61:r4:rotl@base_60:bijective 15:62:r0:add@base_56:inject +igneum-ca3-v4-uniform/1011 d8be5b1203567686 1 0:0:0 1:2:3 2:2:2 3:1:0 4:0:0 5:1:1 6:0:0 7:0:0 8:1:1 9:1:0 10:2:1 11:2:1 12:0:0 13:1:1 14:2:1 15:0:0 2 2 0 0 0 0:8:r6:sub@base_6:inject 1:15:r5:add@base_12:inject 2:16:r1:or@base_11:lossy 3:25:r2:add@base_20:inject 4:26:r7:shfl@base_23:inject 5:28:r5:rotl@base_22:bijective 6:30:r6:or@base_27:lossy 7:36:r3:shfl@base_33:inject 8:39:r6:xor@base_37:inject 9:40:r5:xor@base_35:inject 10:41:r7:load@base_40:inject 11:44:r6:mad@base_43:inject 12:50:r1:add@base_48:inject 13:60:r3:xor@base_54:inject 14:61:r6:rotl@base_56:bijective 15:63:r2:add@base_52:inject +igneum-ca3-v4-uniform/1012 fa018bb41f29a6fb 0 0:1:1 1:1:0 2:2:2 3:1:0 4:1:1 5:1:1 6:0:0 7:2:1 8:0:0 9:0:0 10:1:1 11:2:0 12:0:0 13:1:1 14:1:1 15:1:1 3 0 0 2 1 0:9:r4:shfl@base_7:inject 1:10:r1:sub@base_1:inject 2:11:r0:add@base_8:inject 3:12:r4:load@base_10:inject 4:13:r7:mad@base_0:inject 5:18:r5:add@base_14:inject 6:22:r6:load@base_18:inject 7:28:r1:mulhi@base_25:lossy 8:32:r5:mul@base_30:lossy 9:34:r2:mad@base_27:inject 10:36:r3:add@base_29:inject 11:39:r2:add@base_38:inject 12:41:r1:load@base_34:inject 13:45:r4:load@base_41:inject 14:60:r5:mul@base_50:lossy 15:63:r2:load@base_60:inject +igneum-ca3-v4-uniform/1013 098f114d5df6b6ba 0 0:2:1 1:0:0 2:1:1 3:0:0 4:2:3 5:2:0 6:0:0 7:2:1 8:1:0 9:0:0 10:0:0 11:0:0 12:1:0 13:2:1 14:2:3 15:2:0 5 2 0 2 1 0:8:r6:rotl@base_5:bijective 1:11:r1:xor@base_7:inject 2:13:r7:add@base_12:inject 3:19:r5:add@base_9:inject 4:23:r3:sub@base_22:inject 5:24:r6:sub@base_15:inject 6:29:r1:or@base_21:lossy 7:38:r2:rotl@base_34:bijective 8:39:r0:mulhi@base_30:lossy 9:42:r2:mul@base_40:lossy 10:44:r2:rotr@base_43:bijective 11:45:r6:rotl@base_36:bijective 12:47:r3:load@base_42:inject 13:49:r3:mul@base_48:lossy 14:56:r4:xor@base_53:inject 15:59:r2:or@base_51:lossy +igneum-ca3-v4-uniform/1014 8c187071549db4d5 0 0:2:0 1:2:1 2:0:0 3:1:1 4:2:0 5:1:1 6:0:0 7:1:0 8:2:0 9:2:2 10:1:0 11:0:0 12:0:0 13:0:0 14:0:0 15:1:0 0 0 0 0 0 0:5:r6:add@base_1:inject 1:11:r4:load@base_5:inject 2:12:r7:mad@base_9:inject 3:13:r5:load@base_12:inject 4:14:r2:rotl@base_6:bijective 5:22:r6:load@base_11:inject 6:23:r1:shfl@base_19:inject 7:38:r1:add@base_35:inject 8:40:r4:xor@base_39:inject 9:43:r0:rotr@base_41:bijective 10:49:r3:xor@base_48:inject 11:54:r4:sub@base_50:inject 12:55:r1:load@base_49:inject 13:56:r6:load@base_55:inject 14:57:r2:load@base_54:inject 15:59:r3:load@base_56:inject +igneum-ca3-v4-uniform/1015 2fdf6a5a12eb6e8a 0 0:0:0 1:1:0 2:1:1 3:0:0 4:0:0 5:0:0 6:2:2 7:2:0 8:2:1 9:0:0 10:0:0 11:0:0 12:0:0 13:1:1 14:2:0 15:0:0 3 1 0 1 1 0:1:r6:shfl@base_0:inject 1:7:r1:mul@base_4:lossy 2:8:r2:load@base_7:inject 3:12:r7:load@base_8:inject 4:15:r0:or@base_14:lossy 5:29:r5:shfl@base_28:inject 6:33:r6:mulhi@base_30:lossy 7:37:r6:rotr@base_35:bijective 8:39:r5:load@base_37:inject 9:43:r0:xor@base_38:inject 10:46:r5:rotr@base_44:bijective 11:47:r4:xor@base_45:inject 12:49:r7:load@base_46:inject 13:52:r0:load@base_47:inject 14:54:r6:xor@base_50:inject 15:56:r4:load@base_54:inject +igneum-ca3-v4-uniform/1016 0759bb81f06b013d 0 0:0:0 1:1:0 2:2:3 3:0:0 4:2:0 5:2:1 6:1:0 7:0:0 8:1:0 9:1:1 10:1:1 11:1:1 12:0:0 13:2:0 14:0:0 15:0:0 3 0 0 2 1 0:1:r6:mul@base_0:lossy 1:4:r5:mul@base_3:lossy 2:12:r1:rotr@base_7:bijective 3:15:r4:sub@base_2:inject 4:17:r2:mad@base_11:inject 5:18:r7:xor@base_13:inject 6:20:r0:shfl@base_16:inject 7:23:r6:xor@base_21:inject 8:25:r6:mad@base_24:inject 9:46:r3:shfl@base_38:inject 10:47:r6:add@base_42:inject 11:48:r4:sub@base_45:inject 12:56:r1:add@base_49:inject 13:57:r0:mulhi@base_37:lossy 14:58:r7:rotl@base_55:bijective 15:61:r5:shfl@base_52:inject +igneum-ca3-v4-uniform/1017 259d53f225b8a1ae 0 0:1:1 1:0:0 2:2:2 3:0:0 4:2:1 5:2:2 6:1:1 7:2:0 8:2:2 9:2:2 10:0:0 11:2:0 12:0:0 13:1:0 14:1:1 15:0:0 3 1 0 2 0 0:3:r1:or@base_1:lossy 1:4:r4:shfl@base_2:inject 2:10:r7:load@base_3:inject 3:13:r1:load@base_4:inject 4:15:r6:load@base_13:inject 5:17:r7:sub@base_12:inject 6:20:r7:mul@base_18:lossy 7:36:r3:mad@base_32:inject 8:47:r6:load@base_36:inject 9:52:r0:rotl@base_48:bijective 10:56:r5:mad@base_51:inject 11:59:r1:add@base_58:inject 12:60:r4:add@base_57:inject 13:61:r0:load@base_59:inject 14:62:r3:mul@base_42:lossy 15:63:r7:sub@base_50:inject +igneum-ca3-v4-uniform/1018 8157eb96f7376bbc 0 0:2:0 1:1:1 2:2:0 3:0:0 4:2:0 5:0:0 6:0:0 7:2:2 8:1:1 9:1:1 10:1:1 11:2:0 12:2:1 13:1:1 14:0:0 15:2:2 5 1 0 1 3 0:5:r6:mulhi@base_1:lossy 1:15:r0:rotl@base_2:bijective 2:17:r3:rotl@base_16:bijective 3:18:r1:mulhi@base_13:lossy 4:24:r4:rotr@base_12:bijective 5:25:r5:load@base_18:inject 6:28:r7:load@base_24:inject 7:29:r6:load@base_25:inject 8:30:r3:xor@base_22:inject 9:32:r1:load@base_28:inject 10:37:r6:mulhi@base_35:lossy 11:38:r5:or@base_31:lossy 12:43:r0:shfl@base_36:inject 13:53:r5:mul@base_48:lossy 14:54:r3:load@base_43:inject 15:61:r2:add@base_58:inject +igneum-ca3-v4-uniform/1019 4455826385d77fc3 0 0:0:0 1:1:0 2:2:3 3:0:0 4:1:0 5:0:0 6:0:0 7:0:0 8:0:0 9:0:0 10:0:0 11:2:2 12:0:0 13:0:0 14:0:0 15:0:0 3 1 0 2 0 0:1:r6:rotr@base_0:bijective 1:3:r5:or@base_2:lossy 2:5:r3:mul@base_4:lossy 3:6:r2:load@base_5:inject 4:11:r4:add@base_7:inject 5:16:r4:mad@base_15:inject 6:20:r6:sub@base_13:inject 7:31:r2:mad@base_28:inject 8:41:r0:sub@base_35:inject 9:47:r2:shfl@base_44:inject 10:49:r3:mul@base_45:lossy 11:50:r4:rotl@base_46:bijective 12:53:r2:load@base_49:inject 13:58:r6:shfl@base_51:inject 14:59:r3:sub@base_54:inject 15:63:r5:shfl@base_56:inject +igneum-ca3-v4-uniform/1020 8bd79c9dca3afad9 0 0:0:0 1:2:3 2:1:0 3:1:0 4:2:1 5:1:0 6:0:0 7:1:0 8:0:0 9:1:0 10:2:1 11:0:0 12:1:1 13:0:0 14:2:2 15:1:0 1 0 0 0 1 0:2:r7:sub@base_1:inject 1:11:r5:rotr@base_9:bijective 2:12:r6:mad@base_10:inject 3:22:r7:mad@base_20:inject 4:24:r0:mulhi@base_21:lossy 5:29:r4:rotr@base_28:bijective 6:31:r2:rotl@base_23:bijective 7:32:r5:add@base_26:inject 8:35:r6:load@base_24:inject 9:38:r4:load@base_32:inject 10:40:r3:sub@base_36:inject 11:44:r5:load@base_38:inject 12:45:r7:load@base_40:inject 13:47:r1:load@base_45:inject 14:48:r6:load@base_44:inject 15:63:r2:shfl@base_49:inject +igneum-ca3-v4-uniform/1021 b659562e37d7489e 0 0:2:0 1:2:1 2:1:0 3:2:3 4:2:2 5:0:0 6:1:1 7:1:0 8:2:2 9:1:1 10:1:1 11:2:0 12:0:0 13:0:0 14:1:1 15:2:2 2 0 0 1 1 0:1:r4:mad@base_0:inject 1:7:r5:shfl@base_3:inject 2:9:r7:mulhi@base_4:lossy 3:10:r1:load@base_9:inject 4:12:r2:mad@base_11:inject 5:13:r3:add@base_6:inject 6:19:r1:load@base_13:inject 7:20:r4:rotr@base_5:bijective 8:26:r6:load@base_20:inject 9:42:r0:sub@base_41:inject 10:44:r3:shfl@base_39:inject 11:51:r1:add@base_24:inject 12:54:r0:load@base_51:inject 13:57:r1:mul@base_56:lossy 14:62:r2:xor@base_53:inject 15:63:r6:add@base_59:inject +igneum-ca3-v4-uniform/1022 e7c0402a5b98181b 0 0:2:2 1:1:0 2:2:2 3:2:3 4:0:0 5:2:0 6:2:2 7:2:3 8:1:0 9:2:2 10:0:0 11:1:1 12:0:0 13:1:1 14:2:1 15:1:1 3 2 0 0 1 0:6:r0:add@base_5:inject 1:12:r5:xor@base_11:inject 2:21:r6:rotr@base_17:bijective 3:25:r3:mulhi@base_18:lossy 4:31:r2:or@base_30:lossy 5:33:r0:xor@base_28:inject 6:35:r7:xor@base_23:inject 7:36:r0:rotl@base_34:bijective 8:38:r1:load@base_31:inject 9:41:r6:shfl@base_39:inject 10:44:r7:load@base_41:inject 11:51:r2:rotl@base_49:bijective 12:53:r3:sub@base_50:inject 13:57:r5:mad@base_55:inject 14:60:r0:or@base_47:lossy 15:61:r7:load@base_60:inject +igneum-ca3-v4-uniform/1023 1091d120a847156a 1 0:1:0 1:0:0 2:2:2 3:0:0 4:1:0 5:2:0 6:0:0 7:2:0 8:2:0 9:2:0 10:1:1 11:2:0 12:1:1 13:1:0 14:0:0 15:1:1 2 0 0 2 0 0:1:r5:rotr@base_0:bijective 1:2:r4:load@base_1:inject 2:6:r7:rotl@base_5:bijective 3:8:r1:load@base_6:inject 4:12:r4:add@base_11:inject 5:17:r7:load@base_8:inject 6:22:r0:load@base_12:inject 7:27:r3:sub@base_21:inject 8:32:r1:rotr@base_18:bijective 9:38:r4:mul@base_37:lossy 10:41:r3:load@base_32:inject 11:43:r5:sub@base_36:inject 12:45:r7:add@base_39:inject 13:57:r1:sub@base_56:inject 14:59:r2:load@base_43:inject 15:60:r7:mul@base_55:lossy +CENSUS: 1027 chain-shaped class v4 programs; sites by last-writer kind inject 11368 bijective 2121 lossy 2943 init 0; lossy sites per program 2.866; programs with >=1 lossy-sourced load 992 (96.6%), >=1 or-sourced 498 (48.5%), >=1 or-chain-sourced 50 (4.9%), >=1 mul-sourced 751 (73.1%), >=1 mulhi-sourced 661 (64.4%); mean attempt 0.048 diff --git a/tools/ca3-v4-uniform/uniform-model.txt b/tools/ca3-v4-uniform/uniform-model.txt new file mode 100644 index 000000000..4d9105039 --- /dev/null +++ b/tools/ca3-v4-uniform/uniform-model.txt @@ -0,0 +1,6 @@ +flat Poisson top-0.1% share at 2^26: 0.115% (F8 control 0.115%); window model over 1027 programs: min 0.115% median 0.146% max 0.251% (densest quarter 1.00x to 2.31x flat) +p1: window model W_0.1% 0.159%, lossy sites ['mul', 'mulhi', 'or'], predicted S_0.1% 0.579% (F8 measured 0.520% at 2^26) +p2: window model W_0.1% 0.140%, lossy sites ['mul', 'mul', 'mulhi'], predicted S_0.1% 0.323% (F8 measured 0.272% at 10^6, flat control 0.243%) +p3: window model W_0.1% 0.153%, lossy sites ['mul', 'or-chain'], predicted S_0.1% 4.720% (F8 measured 4.595% at 10^6) +gates over the 1,024 census programs: F8's 1.2x-of-window: 96.6% fail; 1.2x-of-flat: 99.3%; 2x-of-window: 69.7%; 3x: 48.9%; S_0.1% <= 1% of reads: 6.9%; no or-sourced load (static): 48.4%; no lossy-sourced load (static): 96.6% +predicted S_0.1% over the census: median 0.45%, 90th pct 0.88%, 99th 5.29%, max 9.82% (or-chain programs 4.9%) diff --git a/tools/ci/ledger-text-check.mjs b/tools/ci/ledger-text-check.mjs index cf24b8a19..09a97fae7 100644 --- a/tools/ci/ledger-text-check.mjs +++ b/tools/ci/ledger-text-check.mjs @@ -14,8 +14,8 @@ const REQUIRED = { ['X2', 'Public testnet: not yet open; the devnet build is here for people who want to look'], ['X7', 'hello@igneum.network'], ['X31', 'The public testnet is weeks away: three seed nodes and the public RPC are up, and it opens when the go checklist closes.'], - // 7 Oct 2026, 14:3x: the chip line of docs/plans/counter-asic-3-public-text-2026-10-07.md (the X9 label now lives on the litepaper) - ['X35', 'class v4, now on the vote, brings that to 2.1x to 3.9x'], + // 7 Oct 2026, 18:3x: the launch-first chip line of docs/plans/counter-asic-3-public-text-2026-10-07.md section 1 + ['X35', 'At launch the strongest chip in our public model reaches 2.1x to 3.9x per joule against an RTX 5090, under class v4 from the first block'], ], 'litepaper.html': [ ['X3', 'Live rows arrive with the public testnet.'], @@ -25,7 +25,7 @@ const REQUIRED = { ['C2', '2019 (approximate)'], ['X34', 'was withdrawn in mid-May 2026 before any unit shipped; RandomX 2.0 shipped on 25 March 2026'], ['X36', 'Bitmain opened Antminer X9 pre-orders on 26 December 2025 for July 2026 delivery, then withdrew the product in mid-May 2026 and refunded buyers before any unit shipped; none has been independently benchmarked.'], - ['X35', 'class v4, now on the vote, brings that to 2.1x to 3.9x'], + ['X35', 'so the launch number is the class v4 row'], ['X35', '3.9x with the core Bitmain claimed for its Antminer X9 (k about 0.33), a product withdrawn before any unit shipped'], ['X36', 'the X9 figure claimed, never measured'], ['M34', 'The work that waits can grow.'], diff --git a/tools/ci/padding-check.mjs b/tools/ci/padding-check.mjs new file mode 100644 index 000000000..ec34e4076 --- /dev/null +++ b/tools/ci/padding-check.mjs @@ -0,0 +1,170 @@ +#!/usr/bin/env node +// The padding and visuals sweep (site-ui-5, 7 October 2026; the project lead's /wallet band whose heading touched the band's top edge and +// whose button touched its bottom). Renders every served page at five widths in both themes and flags what a reader sees as +// cramped or broken, five classes: +// TIGHT text or a control closer than 24 px to the edge of the filled band, card or section that holds it +// SCALE a section whose vertical padding is off the design system's scale (0, or a multiple of 4 from 24 up) +// TOUCH two controls (buttons, links styled as buttons, inputs, selects) that touch or nearly touch (under 6 px apart) +// OVERRUN an image or canvas that runs out of its frame (the nearest .frame, .app-window, .scene, .panel or figure) +// UNDER-BAR a heading that renders under the sticky bar on load, or an anchor target the bar would cover on arrival +// The things that are small and filled by design (buttons, pills, badges, chips, tabs, table cells, the bar, tooltips) are +// containers whose own padding is theirs, so they are never the container of a TIGHT finding; segmented controls (.tabs, +// .theme-group, .zoom, [role=tablist]) are exempt from TOUCH. +// +// node tools/ci/padding-check.mjs --self-test the fixture (the exact /wallet band with its padding lost, a +// touching pair, an image over its frame, a heading under the bar) +// must fail with one finding of each class; the clean fixture passes +// node tools/ci/padding-check.mjs --site [dir] every *.html of the site (default site/) +// options: --widths 390,768,1024,1440,1600 --themes dark,light --only --json --jobs 3 +// +// Needs a browser: Playwright from $IGNEUM_PLAYWRIGHT_DIR, /srv/builds/_bin/overlap (the box) or this tree's node_modules. +// Without one it says so and exits 0 (CI installs Playwright; the box has it; the Mac renders nothing). Pages are served by +// tools/site/serve.mjs with /api answering 502, so every page renders its rest state; ?theme= and ?motion=off are passed. +import { readdirSync, readFileSync, writeFileSync, mkdtempSync, rmSync, existsSync } from 'node:fs'; +import { createRequire } from 'node:module'; +import { join, dirname } from 'node:path'; +import { tmpdir } from 'node:os'; +import { fileURLToPath } from 'node:url'; +import { spawn } from 'node:child_process'; +import http from 'node:http'; +const here = dirname(fileURLToPath(import.meta.url)), repo = join(here, '..', '..'); +const args = process.argv.slice(2); +const opt = (k, d) => { const i = args.indexOf(k); return i >= 0 && args[i + 1] ? args[i + 1] : d; }; +const WIDTHS = opt('--widths', '390,768,1024,1440,1600').split(',').map(Number); +const THEMES = opt('--themes', 'dark,light').split(','); +const ONLY = opt('--only', ''), JSON_OUT = opt('--json', ''), JOBS = Number(opt('--jobs', '3')); +function playwright() { + for (const root of [process.env.IGNEUM_PLAYWRIGHT_DIR, '/srv/builds/_bin/overlap', repo].filter(Boolean)) { + try { return createRequire(join(root, 'package.json'))('playwright'); } catch (e) { /* next */ } + } + return null; +} +const pw = playwright(); +if (!pw) { console.log('padding-check: no Playwright here (the box and CI have it); nothing checked'); process.exit(0); } + +// what runs inside the page: returns the findings for this render +const INSPECT = `(() => { + const MIN = 24, GAP = 6, out = []; + const vis = el => { const r = el.getBoundingClientRect(); const cs = getComputedStyle(el); return r.width > 0 && r.height > 0 && cs.visibility !== 'hidden' && cs.display !== 'none' && Number(cs.opacity) > 0.05; }; + const txt = el => (el.textContent || '').replace(/\\s+/g, ' ').trim().slice(0, 60); + const path = el => { const parts = []; for (let e = el; e && e !== document.body && parts.length < 4; e = e.parentElement) parts.unshift(e.tagName.toLowerCase() + (e.id ? '#' + e.id : '') + (e.classList.length ? '.' + [...e.classList].slice(0, 2).join('.') : '')); return parts.join(' > '); }; + const alpha = c => { const m = /rgba?\\(([^)]+)\\)/.exec(c); if (!m) return c === 'transparent' ? 0 : 1; const p = m[1].split(',').map(s => parseFloat(s)); return p.length > 3 ? p[3] : 1; }; + // a filled container has a background, or a border on every side (a framed box); a rule above or below a block is not a box + const filled = el => { const cs = getComputedStyle(el); const bordered = ['Top','Right','Bottom','Left'].every(s => parseFloat(cs['border' + s + 'Width']) > 0 && alpha(cs['border' + s + 'Color']) > 0.02); return alpha(cs.backgroundColor) > 0.02 || cs.backgroundImage !== 'none' || bordered; }; + const SMALL = el => el.matches('a,button,input,select,textarea,label,td,th,.pill,.badge,.osmark,.chip,.tag,.tab,.tb,.state,.kind,.st,.sw,.lgi,.dot,code,kbd,summary,[role=tab],.nav,nav,.tip,.chip-zoom,.gen,.step-index,.n,.number,.num,.dev-label,.devnet,.hash-btn,.linkish,.switch,.track,.record-top .badge,.mini'); + // 1. TIGHT: the nearest filled, sizeable container of each text or control, and the distance to its edges + const containerOf = el => { for (let e = el.parentElement; e && e !== document.body; e = e.parentElement) { if (SMALL(e)) return null; if (filled(e)) { const r = e.getBoundingClientRect(); const radius = parseFloat(getComputedStyle(e).borderTopLeftRadius) || 0; /* a row (radius 12 or under) is the app's compact row, its own padding is its own; a card is 14 and up */ if (r.height >= 72 && r.width >= 200 && !(radius > 0 && radius <= 12)) return e; return null; } } return null; }; + const seen = new Set(); + for (const el of document.querySelectorAll('h1,h2,h3,h4,p,li,a.btn,button,input,select,.eyebrow,.lead,figcaption,dt,dd,.k,.v,.d,.mk,.mv,.mf,.key,strong.v')) { + if (!vis(el) || !txt(el) && !el.matches('a,button,input,select')) continue; + if (el.closest('.nav,.tip,.chip-zoom,table,.tabs,.theme-group,.zoom,.mode,.nav-sheet,.panels,figcaption,.frame .bar,.window-top,.hive-sheet,.footer-dl,.sheet-social,.social')) continue; + if (el.matches('figcaption')) continue; + const c = containerOf(el); if (!c) continue; + const r = el.getBoundingClientRect(), cr = c.getBoundingClientRect(), cs = getComputedStyle(c); + const inset = { top: r.top - cr.top, bottom: cr.bottom - r.bottom, left: r.left - cr.left, right: cr.right - r.right }; + // a container that scrolls or clips (a table frame, a window) is judged by what is inside its padding box only + const bad = Object.entries(inset).filter(([k, v]) => v >= -1 && v < MIN).map(([k, v]) => k + ' ' + Math.round(v) + 'px'); + if (bad.length) { const key = path(c) + '|' + bad.join(','); if (!seen.has(key)) { seen.add(key); out.push({ kind: 'TIGHT', what: txt(el) || el.tagName.toLowerCase(), where: path(el), container: path(c), detail: bad.join(', ') }); } } + } + // 2. SCALE: section paddings on the scale + for (const el of document.querySelectorAll('section,.sec,.band,.page-hero,.fold,.site-footer,.cta-band,main > .obs-head')) { + if (!vis(el)) continue; const cs = getComputedStyle(el); + for (const side of ['paddingTop', 'paddingBottom']) { const v = Math.round(parseFloat(cs[side])); if (v !== 0 && (v < 24 || v % 4 !== 0)) out.push({ kind: 'SCALE', what: side + ' ' + v + 'px', where: path(el), detail: 'not 0 and not a multiple of 4 from 24 up' }); } + } + // 3. TOUCH: controls that touch + const ctrls = [...document.querySelectorAll('a.btn,button,input,select,.community a,.dl-list a,.dl-row a,.footer-dl a')].filter(e => vis(e) && !e.closest('.tabs,.theme-group,.zoom,.mode,[role=tablist],.nav,.nav-sheet,.panels,table')); + for (let i = 0; i < ctrls.length; i++) for (let j = i + 1; j < ctrls.length; j++) { + const a = ctrls[i].getBoundingClientRect(), b = ctrls[j].getBoundingClientRect(); if (ctrls[i].contains(ctrls[j]) || ctrls[j].contains(ctrls[i])) continue; + const dx = Math.max(a.left, b.left) - Math.min(a.right, b.right), dy = Math.max(a.top, b.top) - Math.min(a.bottom, b.bottom); + if ((dx < GAP && dy < 0) || (dy < GAP && dx < 0)) out.push({ kind: 'TOUCH', what: (txt(ctrls[i]) || ctrls[i].tagName) + ' / ' + (txt(ctrls[j]) || ctrls[j].tagName), where: path(ctrls[i]), detail: 'gap ' + Math.round(Math.max(dx, dy)) + 'px' }); + } + // 4. OVERRUN: media out of its frame + for (const el of document.querySelectorAll('img,canvas,video')) { + if (!vis(el)) continue; const f = el.closest('.frame,.app-window,.scene,.panel,.fold-scene,.proof-scene,figure,.wallet-card'); if (!f) continue; + const r = el.getBoundingClientRect(), fr = f.getBoundingClientRect(), over = Math.max(r.right - fr.right, r.bottom - fr.bottom, fr.left - r.left, fr.top - r.top); + if (over > 2 && getComputedStyle(f).overflow === 'visible') out.push({ kind: 'OVERRUN', what: el.tagName.toLowerCase() + ' ' + (el.getAttribute('src') || el.id || '').split('/').pop(), where: path(f), detail: Math.round(over) + 'px past the frame' }); + } + // 5. UNDER-BAR: the bar covers a heading on load, or an anchor the bar would cover on arrival + const nav = document.querySelector('.nav'); const navH = nav ? nav.getBoundingClientRect().height : 0; + const h1 = [...document.querySelectorAll('h1')].find(vis); + if (h1 && navH && h1.getBoundingClientRect().top < navH - 1) out.push({ kind: 'UNDER-BAR', what: txt(h1), where: path(h1), detail: 'top ' + Math.round(h1.getBoundingClientRect().top) + 'px under a ' + Math.round(navH) + 'px bar' }); + const sp = parseFloat(getComputedStyle(document.documentElement).scrollPaddingTop) || 0; + for (const el of document.querySelectorAll('section[id],h2[id],h3[id],article[id],div[id].doc-section')) { const sm = parseFloat(getComputedStyle(el).scrollMarginTop) || 0; if (navH && Math.max(sp, sm) < navH) { out.push({ kind: 'UNDER-BAR', what: '#' + el.id, where: path(el), detail: 'scroll padding ' + Math.round(Math.max(sp, sm)) + 'px under a ' + Math.round(navH) + 'px bar' }); break; } } + return out; +})()`; + +async function serve(dir) { + const port = 4800 + Math.floor(Math.random() * 200); + const child = spawn(process.execPath, [join(repo, 'tools', 'site', 'serve.mjs'), String(port), dir, 'http://127.0.0.1:1'], { stdio: 'ignore' }); + await new Promise((res, rej) => { let n = 0; const t = setInterval(() => { http.get(`http://127.0.0.1:${port}/`, () => { clearInterval(t); res(); }).on('error', () => { if (++n > 80) { clearInterval(t); rej(new Error('serve.mjs did not answer')); } }); }, 100); }); + return { port, stop: () => child.kill() }; +} +async function sweep(dir, pages, browser) { + const { port, stop } = await serve(dir); + const findings = []; let renders = 0; + const jobs = []; for (const p of pages) for (const w of WIDTHS) for (const t of THEMES) jobs.push({ p, w, t }); + async function one({ p, w, t }) { + const ctx = await browser.newContext({ viewport: { width: w, height: w < 500 ? 844 : 900 }, deviceScaleFactor: 1, reducedMotion: 'reduce' }); + const page = await ctx.newPage(); + const route = p === 'index' ? '/' : '/' + p; + try { + await page.goto(`http://127.0.0.1:${port}${route}?theme=${t}&motion=off`, { waitUntil: 'load', timeout: 30000 }); + await page.waitForTimeout(250); + const found = await page.evaluate(INSPECT); + renders++; + for (const f of found) findings.push({ page: p, width: w, theme: t, ...f }); + } catch (e) { findings.push({ page: p, width: w, theme: t, kind: 'RENDER', what: e.message.split('\n')[0].slice(0, 120), where: route, detail: '' }); } + await ctx.close(); + } + let i = 0; await Promise.all(Array.from({ length: Math.max(1, JOBS) }, async () => { while (i < jobs.length) await one(jobs[i++]); })); + stop(); + return { renders, findings }; +} +const fmt = f => ` FAIL ${f.page} ${f.width}px ${f.theme}: ${f.kind} "${f.what}" in ${f.where}${f.container ? ' (container ' + f.container + ')' : ''}${f.detail ? ': ' + f.detail : ''}`; + +const browser = await pw.chromium.launch({ headless: true, args: ['--no-sandbox'] }); +try { + if (args.includes('--self-test')) { + // the fixture: the site's own stylesheet and bar, the exact /wallet band with its padding lost, a touching pair, an image over + // its frame, a heading under the bar; then the same page with each fixed + const site = join(repo, 'site'); + const fx = mkdtempSync(join(tmpdir(), 'padding-check-')); + const nav = readFileSync(join(site, 'partials', 'nav.html'), 'utf8'), head = readFileSync(join(site, 'partials', 'head.html'), 'utf8'); + const css = readFileSync(join(site, 'site.css'), 'utf8'); + writeFileSync(join(fx, 'site.css'), css); + const page = (broken) => `fixture${head.replace(/href="\/fonts\//g, 'href="/nofonts/').replace(/url\(\/fonts\//g, 'url(/nofonts/')} + +${nav} +

Fixture.

A page for the padding check.

+
+

The miner pays this wallet.

Install the miner, press Start, and the address it makes is the one this wallet imports with one click.

The miner
+`; + writeFileSync(join(fx, 'broken.html'), page(true)); writeFileSync(join(fx, 'clean.html'), page(false)); + writeFileSync(join(fx, '404.html'), '404'); writeFileSync(join(fx, 'icon-192.png'), readFileSync(join(site, 'icon-192.png'))); + const saveW = WIDTHS.splice(0, WIDTHS.length, 1440), saveT = THEMES.splice(0, THEMES.length, 'dark'); + const r = await sweep(fx, ['broken', 'clean'], browser); + rmSync(fx, { recursive: true, force: true }); + const broken = r.findings.filter(f => f.page === 'broken'), clean = r.findings.filter(f => f.page === 'clean'); + const kinds = new Set(broken.map(f => f.kind)); + const band = broken.find(f => f.kind === 'TIGHT' && /band/.test(f.container || '')); + let ok = true; + for (const k of ['TIGHT', 'TOUCH', 'OVERRUN', 'UNDER-BAR']) if (!kinds.has(k)) { console.error('self-test: the broken fixture did not raise ' + k); ok = false; } + if (!band) { console.error('self-test: the /wallet band with its padding lost was not flagged TIGHT'); ok = false; } + if (clean.length) { console.error('self-test: the clean fixture should pass\n' + clean.map(fmt).join('\n')); ok = false; } + if (!ok) process.exit(1); + console.log(`self-test passed: the band with no padding (${band.detail}), a touching pair, an image over its frame and a heading under the bar are caught; the clean fixture passes`); + WIDTHS.push(...saveW); THEMES.push(...saveT); + } + if (args.includes('--site')) { + const dir = opt('--site', '').startsWith('--') || !opt('--site', '') ? join(repo, 'site') : opt('--site'); + const pages = readdirSync(dir).filter(f => f.endsWith('.html')).map(f => f.replace(/\.html$/, '')).filter(p => !ONLY || p.includes(ONLY)); + const t0 = Date.now(); + const r = await sweep(dir, pages, browser); + if (JSON_OUT) writeFileSync(JSON_OUT, JSON.stringify(r.findings, null, 1)); + for (const f of r.findings) console.log(fmt(f)); + const byKind = {}; for (const f of r.findings) byKind[f.kind] = (byKind[f.kind] || 0) + 1; + console.log(`padding-check (site): ${r.renders} renders, ${r.findings.length} findings${r.findings.length ? ' (' + Object.entries(byKind).map(([k, n]) => k + ' ' + n).join(', ') + ')' : ''} in ${((Date.now() - t0) / 1000).toFixed(1)} s`); + if (r.findings.length) process.exitCode = 1; + } +} finally { await browser.close(); } diff --git a/tools/ci/pre-push.sh b/tools/ci/pre-push.sh index a79d12630..3549091f2 100755 --- a/tools/ci/pre-push.sh +++ b/tools/ci/pre-push.sh @@ -87,6 +87,7 @@ tree_checks() { run "every served page carries the slim bar (mark, Mine, Network, Learn, Download) with every route in its panels and the sheet (self-test, then the tree)" bash -c 'node tools/ci/site-nav-check.mjs --self-test && node tools/ci/site-nav-check.mjs' run "vendor marks: site/lib/marks.mjs is brand/marks/vendor-marks.mjs byte for byte (the app and the site draw one set)" cmp brand/marks/vendor-marks.mjs site/lib/marks.mjs run "the phone menu opens and is seen at 390 px on every page (self-test first; needs the box or CI browser, says so without one)" node tools/site/sheet-test.mjs --self-test + run "padding and visuals: text 24 px from every band, card and section edge, section padding on the scale, no touching controls, media inside its frame, no heading under the bar, at 390 to 1600 px both themes (known-failed fixture first)" bash -c 'node tools/ci/padding-check.mjs --self-test && node tools/ci/padding-check.mjs --site "${SITE_TMP:-.}/site"' run "ledger sentences present verbatim on their public pages" node tools/ci/ledger-text-check.mjs never_push_checks run "shell inside .github/workflows parses (bash -n, the PowerShell 5.1 rule)" node tools/ci/check-workflow-shell.mjs @@ -125,7 +126,7 @@ tree_checks() { run "chain scene: the live feed contract (the recorded reply validates; a rewritten miner, a float now, a stray key refused)" node --test tools/scene/feed-contract.test.mjs run "chain scene parity: one recorded feed through the home fold, /live and the app's Inspect view on build-2, three frames each pixel-equal apart from the app's own-key overlay (a changed token fails first; skipped with no box and no Playwright; one retry)" bash tools/ci/retry-once.sh scene-parity bash tools/scene/parity-remote.sh run "no text overlaps: every served page at 390 to 1600 px, light and dark, the hero at each step (self-test first; IGNEUM_OVERLAP_APPS=1 adds the miner and wallet UIs)" overlap_sweep - run "explorer, emission and public stats unit tests" node --test site/lib/explorer.test.mjs site/lib/emission.test.mjs site/api/public-stats.test.mjs + run "explorer, emission and public stats unit tests" node --test site/lib/explorer.test.mjs site/lib/emission.test.mjs site/lib/money.test.mjs site/api/public-stats.test.mjs run "ship tool self-test" node tools/ship-app.mjs --self-test run "relay unit tests" node --test relay/test/parse.test.mjs relay/test/auth.test.mjs relay/test/wake.test.mjs relay/test/ember.test.mjs run "miner app notice strip and update card tests" node --test app/igneum-app/ui/notices.test.mjs app/igneum-app/ui/update-card.test.mjs app/igneum-app/ui/view.test.mjs app/igneum-app/ui/tune-line.test.mjs