[llvm] [DAG] Re-add transitive users when FREEZE folds away (PR #193945)

Paweł Bylica via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 24 04:32:19 PDT 2026


https://github.com/chfast created https://github.com/llvm/llvm-project/pull/193945

When DAGCombiner::visitFREEZE folds a FREEZE of a guaranteed-non-poison value away, it returns the underlying value and relies on the combine framework to re-add the FREEZE's direct users. That is enough when the chain cascades: each re-visited user either simplifies (triggering ReplaceAllUsesWith on its own, which re-adds _its_ users) or is the consumer that cares.

It is not enough when an intermediate node in the chain is "transparent" to a peephole combine that lives on its users. The driving case is X86's checkBoolTestSetCCCombine, which is invoked from combineCMov, combineBrCond and combineSetCC and looks through

  CMOV/BRCOND/SETCC(E, CMP(AND(FREEZE(X86ISD::SETCC(COND, EFLAGS)), 1), 0))

Short-circuit AND lowering turns `select a, b, false` into `select a, freeze(b), 0` (foldBoolSelectToLogic), and a multi-word usub-with-carry chain ends up in that exact shape. On the first CMOV visit the combine stops at the FREEZE. visitFREEZE later folds the FREEZE (X86ISD::SETCC is marked unconditionally non-poison), AND simplifies to SETCC, and CMP's operand is updated — but CMP itself does not change identity, so CMP's users (the CMOV) are never re-added. The redundant setb+testb+cmove triple after the final SBB survives to codegen.

Fix: when visitFREEZE returns N0, walk the use chain of the freeze for up to 32 nodes and re-add them to the combine worklist. Worklist deduplication makes the cost on nodes that have nothing new to do negligible.

>From 635332c8841ab490977f1cc771b00dcb7119127a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20Bylica?= <pawel at hepcolgum.band>
Date: Thu, 23 Apr 2026 23:51:34 +0200
Subject: [PATCH] [DAG] Re-add transitive users when FREEZE folds away
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When DAGCombiner::visitFREEZE folds a FREEZE of a guaranteed-non-poison
value away, it returns the underlying value and relies on the combine
framework to re-add the FREEZE's direct users. That is enough when the
chain cascades: each re-visited user either simplifies (triggering
ReplaceAllUsesWith on its own, which re-adds _its_ users) or is the
consumer that cares.

It is not enough when an intermediate node in the chain is "transparent"
to a peephole combine that lives on its users. The driving case is X86's
checkBoolTestSetCCCombine, which is invoked from combineCMov,
combineBrCond and combineSetCC and looks through

  CMOV/BRCOND/SETCC(E, CMP(AND(FREEZE(X86ISD::SETCC(COND, EFLAGS)), 1), 0))

Short-circuit AND lowering turns `select a, b, false` into
`select a, freeze(b), 0` (foldBoolSelectToLogic), and a multi-word
usub-with-carry chain ends up in that exact shape. On the first CMOV
visit the combine stops at the FREEZE. visitFREEZE later folds the
FREEZE (X86ISD::SETCC is marked unconditionally non-poison), AND
simplifies to SETCC, and CMP's operand is updated — but CMP itself does
not change identity, so CMP's users (the CMOV) are never re-added.
The redundant setb+testb+cmove triple after the final SBB survives to
codegen.

Fix: when visitFREEZE returns N0, walk the use chain of the freeze for
up to 32 nodes and re-add them to the combine worklist. Worklist
deduplication makes the cost on nodes that have nothing new to do
negligible.

Measured on evmone (heavy user of multi-word BN254 modular arithmetic
on X86): the redundant setb+testb+cmov triple after the final SBB of
a carry chain drops from 66 occurrences to 0 in
libevmone_precompiles.a, and to 0 in libevmone.so.

Auto-regenerated test expectations in four files capture combine
ordering shuffles that this unlocks. All four show small net
instruction-count reductions (freeze-binary.ll -6, clmul.ll -4,
clmulh.ll -5, clmulr.ll -24); the bulk of the diff is register
renames from a different combine-visit order.
---
 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |    18 +-
 llvm/test/CodeGen/RISCV/clmul.ll              | 10488 ++++++-----
 llvm/test/CodeGen/RISCV/clmulh.ll             | 15120 ++++++++--------
 llvm/test/CodeGen/RISCV/clmulr.ll             | 14592 ++++++++-------
 .../CodeGen/X86/cmp-setcc-cmov-reworklist.ll  |    75 +
 llvm/test/CodeGen/X86/freeze-binary.ll        |    20 +-
 6 files changed, 20163 insertions(+), 20150 deletions(-)
 create mode 100644 llvm/test/CodeGen/X86/cmp-setcc-cmov-reworklist.ll

diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index 20ff48789152b..2c5a454364db5 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -17641,8 +17641,24 @@ SDValue DAGCombiner::visitBUILD_PAIR(SDNode *N) {
 SDValue DAGCombiner::visitFREEZE(SDNode *N) {
   SDValue N0 = N->getOperand(0);
 
-  if (DAG.isGuaranteedNotToBeUndefOrPoison(N0, /*PoisonOnly*/ false))
+  if (DAG.isGuaranteedNotToBeUndefOrPoison(N0, /*PoisonOnly*/ false)) {
+    // Eliminating a freeze can unlock combines on nodes farther up the use
+    // chain — e.g., peephole combines that peek through intermediate nodes
+    // (CMP/AND/ZEXT) to reach a SETCC under the freeze. Normal worklist
+    // propagation only re-adds the direct users of the replaced node, which
+    // is not enough when those intermediate nodes do not themselves
+    // simplify. Re-add a bounded transitive user set (the set is for BFS
+    // dedup, separate from the worklist's own dedup).
+    // TODO: Not needed under -combiner-topological-sorting, which already
+    // visits operands before users. Remove when topo order is the default.
+    constexpr unsigned Limit = 32;
+    SmallSetVector<SDNode *, Limit> Users(N->users().begin(), N->users().end());
+    for (unsigned I = 0; I != Users.size() && Users.size() < Limit; ++I)
+      Users.insert_range(Users[I]->users());
+    for (SDNode *U : Users)
+      AddToWorklist(U);
     return N0;
+  }
 
   // If we have frozen and unfrozen users of N0, update so everything uses N.
   if (!N0.isUndef() && !N0.hasOneUse()) {
diff --git a/llvm/test/CodeGen/RISCV/clmul.ll b/llvm/test/CodeGen/RISCV/clmul.ll
index d9bbe20b8730d..5545fff6c9e60 100644
--- a/llvm/test/CodeGen/RISCV/clmul.ll
+++ b/llvm/test/CodeGen/RISCV/clmul.ll
@@ -2749,7 +2749,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    xor s1, a0, s1
 ; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor ra, a0, ra
-; RV32I-NEXT:    xor s8, s8, s6
+; RV32I-NEXT:    xor s6, s8, s6
 ; RV32I-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t6, a2, a0
 ; RV32I-NEXT:    lw a0, 288(sp) # 4-byte Folded Reload
@@ -2760,10 +2760,10 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    xor a5, a5, a0
 ; RV32I-NEXT:    slli a2, a3, 11
 ; RV32I-NEXT:    slli s2, s2, 11
-; RV32I-NEXT:    li s6, 1
-; RV32I-NEXT:    slli s6, s6, 11
-; RV32I-NEXT:    and a0, t3, s6
-; RV32I-NEXT:    and a1, t0, s6
+; RV32I-NEXT:    li s8, 1
+; RV32I-NEXT:    slli s8, s8, 11
+; RV32I-NEXT:    and a0, t3, s8
+; RV32I-NEXT:    and a1, t0, s8
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
@@ -2799,7 +2799,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s0, ra, s0
 ; RV32I-NEXT:    lw s1, 12(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s1
+; RV32I-NEXT:    xor s6, s6, s1
 ; RV32I-NEXT:    xor a4, t6, a4
 ; RV32I-NEXT:    lw t6, 272(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, t6
@@ -2828,7 +2828,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    lw t4, 80(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t4, s0, t4
 ; RV32I-NEXT:    lw t5, 20(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, s8, t5
+; RV32I-NEXT:    xor t5, s6, t5
 ; RV32I-NEXT:    xor a4, a4, a5
 ; RV32I-NEXT:    lw a5, 252(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a0, a5
@@ -2897,271 +2897,271 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    xor a0, a5, a0
 ; RV32I-NEXT:    sw a0, 304(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 209715
-; RV32I-NEXT:    addi t6, a1, 819
+; RV32I-NEXT:    addi t5, a1, 819
 ; RV32I-NEXT:    srli a3, s1, 2
-; RV32I-NEXT:    and s1, s1, t6
-; RV32I-NEXT:    and a3, a3, t6
+; RV32I-NEXT:    and s1, s1, t5
+; RV32I-NEXT:    and a3, a3, t5
 ; RV32I-NEXT:    slli s1, s1, 2
 ; RV32I-NEXT:    or a3, a3, s1
 ; RV32I-NEXT:    srli a4, s2, 2
-; RV32I-NEXT:    and a5, s2, t6
-; RV32I-NEXT:    and a4, a4, t6
+; RV32I-NEXT:    and a5, s2, t5
+; RV32I-NEXT:    and a4, a4, t5
 ; RV32I-NEXT:    slli a5, a5, 2
 ; RV32I-NEXT:    or a4, a4, a5
 ; RV32I-NEXT:    xor a2, a2, a6
 ; RV32I-NEXT:    xor a5, a7, t0
 ; RV32I-NEXT:    xor a2, a5, a2
 ; RV32I-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s2, 349525
-; RV32I-NEXT:    addi s2, s2, 1365
+; RV32I-NEXT:    lui t6, 349525
+; RV32I-NEXT:    addi t6, t6, 1365
 ; RV32I-NEXT:    srli a2, a3, 1
-; RV32I-NEXT:    and a3, a3, s2
-; RV32I-NEXT:    and a2, a2, s2
+; RV32I-NEXT:    and a3, a3, t6
+; RV32I-NEXT:    and a2, a2, t6
 ; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or t5, a2, a3
+; RV32I-NEXT:    or t4, a2, a3
 ; RV32I-NEXT:    srli a2, a4, 1
-; RV32I-NEXT:    and a3, a4, s2
-; RV32I-NEXT:    and a2, a2, s2
+; RV32I-NEXT:    and a3, a4, t6
+; RV32I-NEXT:    and a2, a2, t6
 ; RV32I-NEXT:    slli a3, a3, 1
 ; RV32I-NEXT:    or t2, a2, a3
 ; RV32I-NEXT:    srli a3, a3, 31
 ; RV32I-NEXT:    seqz a2, a3
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 31
+; RV32I-NEXT:    slli a3, t4, 31
 ; RV32I-NEXT:    and a2, a2, a3
 ; RV32I-NEXT:    sw a2, 296(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 1
+; RV32I-NEXT:    slli a3, t4, 1
 ; RV32I-NEXT:    and a2, a2, a3
 ; RV32I-NEXT:    sw a2, 292(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 4
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 2
+; RV32I-NEXT:    slli a3, t4, 2
 ; RV32I-NEXT:    and a2, a2, a3
 ; RV32I-NEXT:    sw a2, 288(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 8
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 3
+; RV32I-NEXT:    slli a3, t4, 3
 ; RV32I-NEXT:    and a2, a2, a3
 ; RV32I-NEXT:    sw a2, 284(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 16
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 4
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s0, t4, 4
+; RV32I-NEXT:    and a2, a2, s0
+; RV32I-NEXT:    sw a2, 276(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 32
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli s1, t5, 5
-; RV32I-NEXT:    and a2, a2, s1
-; RV32I-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, t4, 5
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 64
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli s0, t5, 6
-; RV32I-NEXT:    and a2, a2, s0
-; RV32I-NEXT:    sw a2, 276(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s1, t4, 6
+; RV32I-NEXT:    and a2, a2, s1
+; RV32I-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 128
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 7
+; RV32I-NEXT:    slli a3, t4, 7
 ; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 256
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 8
-; RV32I-NEXT:    and s5, a2, a3
+; RV32I-NEXT:    slli a3, t4, 8
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 264(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a2, t2, 512
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 9
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, t4, 9
+; RV32I-NEXT:    and s6, a2, a3
 ; RV32I-NEXT:    andi a2, t2, 1024
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 10
+; RV32I-NEXT:    slli a3, t4, 10
 ; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 264(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a2, t2, s6
+; RV32I-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a2, t2, s8
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 11
-; RV32I-NEXT:    and s1, a2, a3
+; RV32I-NEXT:    slli a3, t4, 11
+; RV32I-NEXT:    and s3, a2, a3
 ; RV32I-NEXT:    lui a0, 1
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 12
-; RV32I-NEXT:    and s9, a2, a3
+; RV32I-NEXT:    slli a3, t4, 12
+; RV32I-NEXT:    and s5, a2, a3
 ; RV32I-NEXT:    lui a0, 2
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 13
+; RV32I-NEXT:    slli a3, t4, 13
 ; RV32I-NEXT:    and s7, a2, a3
 ; RV32I-NEXT:    lui a0, 4
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 14
-; RV32I-NEXT:    and s6, a2, a3
+; RV32I-NEXT:    slli a3, t4, 14
+; RV32I-NEXT:    and s11, a2, a3
 ; RV32I-NEXT:    lui a0, 8
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 15
+; RV32I-NEXT:    slli a3, t4, 15
 ; RV32I-NEXT:    and s8, a2, a3
 ; RV32I-NEXT:    lui a0, 16
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 16
-; RV32I-NEXT:    and s10, a2, a3
+; RV32I-NEXT:    slli a3, t4, 16
+; RV32I-NEXT:    and s9, a2, a3
 ; RV32I-NEXT:    lui a0, 32
 ; RV32I-NEXT:    and a2, t2, a0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t5, 17
-; RV32I-NEXT:    and s0, a2, a3
+; RV32I-NEXT:    slli a3, t4, 17
+; RV32I-NEXT:    and s10, a2, a3
 ; RV32I-NEXT:    lui a0, 64
-; RV32I-NEXT:    and a3, t2, a0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, t5, 18
-; RV32I-NEXT:    and ra, a3, a4
+; RV32I-NEXT:    and a2, t2, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t4, 18
+; RV32I-NEXT:    and ra, a2, a3
 ; RV32I-NEXT:    lui a0, 128
-; RV32I-NEXT:    and a3, t2, a0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, t5, 19
-; RV32I-NEXT:    and s11, a3, a4
+; RV32I-NEXT:    and a2, t2, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t4, 19
+; RV32I-NEXT:    and s1, a2, a3
 ; RV32I-NEXT:    lui a0, 256
+; RV32I-NEXT:    and a2, t2, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t4, 20
+; RV32I-NEXT:    and s0, a2, a3
+; RV32I-NEXT:    lui a0, 512
 ; RV32I-NEXT:    and a3, t2, a0
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, t5, 20
-; RV32I-NEXT:    and a4, a3, a4
-; RV32I-NEXT:    lui a0, 512
+; RV32I-NEXT:    slli a5, t4, 21
+; RV32I-NEXT:    and a5, a3, a5
+; RV32I-NEXT:    lui a0, 1024
 ; RV32I-NEXT:    and a3, t2, a0
 ; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a0, a3, -1
-; RV32I-NEXT:    slli a3, t5, 21
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    lui a0, 1024
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    slli a4, t4, 22
+; RV32I-NEXT:    and a3, a3, a4
+; RV32I-NEXT:    lui a0, 2048
+; RV32I-NEXT:    and a4, t2, a0
+; RV32I-NEXT:    seqz a4, a4
+; RV32I-NEXT:    addi a0, a4, -1
+; RV32I-NEXT:    slli a4, t4, 23
+; RV32I-NEXT:    and a4, a0, a4
+; RV32I-NEXT:    lui a0, 4096
 ; RV32I-NEXT:    and a0, t2, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli t0, t5, 22
+; RV32I-NEXT:    slli t0, t4, 24
 ; RV32I-NEXT:    and a2, a0, t0
-; RV32I-NEXT:    lui a0, 2048
+; RV32I-NEXT:    lui a0, 8192
 ; RV32I-NEXT:    and t0, t2, a0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a1, t5, 23
+; RV32I-NEXT:    slli a1, t4, 25
 ; RV32I-NEXT:    and a1, t0, a1
-; RV32I-NEXT:    lui a0, 4096
-; RV32I-NEXT:    and t0, t2, a0
-; RV32I-NEXT:    seqz t0, t0
-; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a5, t5, 24
-; RV32I-NEXT:    and a5, t0, a5
-; RV32I-NEXT:    lui a0, 8192
+; RV32I-NEXT:    lui a0, 16384
 ; RV32I-NEXT:    and t0, t2, a0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a6, t5, 25
+; RV32I-NEXT:    slli a6, t4, 26
 ; RV32I-NEXT:    and a6, t0, a6
-; RV32I-NEXT:    lui a0, 16384
+; RV32I-NEXT:    lui a0, 32768
 ; RV32I-NEXT:    and t0, t2, a0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a7, t5, 26
+; RV32I-NEXT:    slli a7, t4, 27
 ; RV32I-NEXT:    and a7, t0, a7
-; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    lui a0, 65536
 ; RV32I-NEXT:    and t0, t2, a0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli t1, t5, 27
+; RV32I-NEXT:    slli t1, t4, 28
 ; RV32I-NEXT:    and t0, t0, t1
-; RV32I-NEXT:    lui a0, 65536
+; RV32I-NEXT:    lui a0, 131072
 ; RV32I-NEXT:    and t1, t2, a0
 ; RV32I-NEXT:    seqz t1, t1
 ; RV32I-NEXT:    addi t1, t1, -1
-; RV32I-NEXT:    slli t3, t5, 28
+; RV32I-NEXT:    slli t3, t4, 29
 ; RV32I-NEXT:    and t1, t1, t3
-; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and t3, t2, a0
-; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    addi t3, t3, -1
-; RV32I-NEXT:    slli t4, t5, 29
-; RV32I-NEXT:    and t3, t3, t4
 ; RV32I-NEXT:    lui a0, 262144
-; RV32I-NEXT:    and t4, t2, a0
+; RV32I-NEXT:    and t3, t2, a0
 ; RV32I-NEXT:    andi t2, t2, 1
 ; RV32I-NEXT:    seqz t2, t2
 ; RV32I-NEXT:    addi t2, t2, -1
-; RV32I-NEXT:    and t2, t2, t5
-; RV32I-NEXT:    slli t5, t5, 30
-; RV32I-NEXT:    seqz t4, t4
-; RV32I-NEXT:    addi t4, t4, -1
-; RV32I-NEXT:    and t4, t4, t5
+; RV32I-NEXT:    and t2, t2, t4
+; RV32I-NEXT:    slli t4, t4, 30
+; RV32I-NEXT:    seqz t3, t3
+; RV32I-NEXT:    addi t3, t3, -1
+; RV32I-NEXT:    and t3, t3, t4
 ; RV32I-NEXT:    lw a0, 292(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t2, t2, a0
 ; RV32I-NEXT:    lw a0, 288(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw t5, 284(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a0, t5
-; RV32I-NEXT:    lw a0, 280(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s3, 272(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s3
-; RV32I-NEXT:    lw s3, 268(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s5, s3, s5
-; RV32I-NEXT:    xor s1, s1, s9
-; RV32I-NEXT:    xor s0, s10, s0
+; RV32I-NEXT:    lw t4, 284(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, a0, t4
+; RV32I-NEXT:    lw a0, 276(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s2, 268(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, s2
+; RV32I-NEXT:    lw s2, 264(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s2, s6
+; RV32I-NEXT:    xor s7, s7, s11
+; RV32I-NEXT:    xor s0, s1, s0
 ; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, t3, t4
-; RV32I-NEXT:    xor t2, t2, t5
-; RV32I-NEXT:    lw t3, 276(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, t3
-; RV32I-NEXT:    lw t3, 260(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, s5, t3
-; RV32I-NEXT:    xor t4, s1, s7
-; RV32I-NEXT:    xor t5, s0, ra
-; RV32I-NEXT:    xor a1, a1, a5
-; RV32I-NEXT:    lw a5, 296(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a5
-; RV32I-NEXT:    xor a0, t2, a0
-; RV32I-NEXT:    lw a5, 264(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, t3, a5
-; RV32I-NEXT:    xor t2, t4, s6
-; RV32I-NEXT:    xor t3, t5, s11
+; RV32I-NEXT:    xor a2, t2, t4
+; RV32I-NEXT:    lw t2, 272(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t2
+; RV32I-NEXT:    lw t2, 260(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, s6, t2
+; RV32I-NEXT:    xor t4, s7, s8
+; RV32I-NEXT:    xor a5, s0, a5
 ; RV32I-NEXT:    xor a1, a1, a6
-; RV32I-NEXT:    xor a0, a0, a5
-; RV32I-NEXT:    xor a5, t2, s8
-; RV32I-NEXT:    xor a4, t3, a4
+; RV32I-NEXT:    xor a0, a2, a0
+; RV32I-NEXT:    xor a2, t2, s3
+; RV32I-NEXT:    xor a6, t4, s9
+; RV32I-NEXT:    xor a3, a5, a3
 ; RV32I-NEXT:    xor a1, a1, a7
+; RV32I-NEXT:    lw a5, 280(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a5
-; RV32I-NEXT:    xor a3, a4, a3
+; RV32I-NEXT:    xor a2, a2, s5
+; RV32I-NEXT:    xor a5, a6, s10
+; RV32I-NEXT:    xor a3, a3, a4
 ; RV32I-NEXT:    xor a1, a1, t0
-; RV32I-NEXT:    xor a0, a0, a3
+; RV32I-NEXT:    xor a4, a5, ra
 ; RV32I-NEXT:    xor a1, a1, t1
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    srli a1, a0, 8
-; RV32I-NEXT:    srli a2, a0, 24
-; RV32I-NEXT:    lw a3, 312(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a1, a1, a3
-; RV32I-NEXT:    or a1, a1, a2
-; RV32I-NEXT:    and a2, a0, a3
+; RV32I-NEXT:    xor a2, a0, a2
+; RV32I-NEXT:    xor a2, a2, a4
+; RV32I-NEXT:    xor a1, a1, t3
+; RV32I-NEXT:    xor a2, a2, a3
+; RV32I-NEXT:    lw a3, 296(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a3
+; RV32I-NEXT:    lw a4, 312(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a3, a2, a4
+; RV32I-NEXT:    xor a1, a2, a1
+; RV32I-NEXT:    srli a2, a2, 8
+; RV32I-NEXT:    and a2, a2, a4
 ; RV32I-NEXT:    slli a0, a0, 24
-; RV32I-NEXT:    slli a2, a2, 8
-; RV32I-NEXT:    or a0, a0, a2
+; RV32I-NEXT:    slli a3, a3, 8
+; RV32I-NEXT:    or a0, a0, a3
+; RV32I-NEXT:    srli a1, a1, 24
+; RV32I-NEXT:    or a1, a2, a1
 ; RV32I-NEXT:    or a0, a0, a1
 ; RV32I-NEXT:    srli a1, a0, 4
 ; RV32I-NEXT:    and a0, a0, s4
@@ -3169,13 +3169,13 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a1, a0, 2
-; RV32I-NEXT:    and a0, a0, t6
-; RV32I-NEXT:    and a1, a1, t6
+; RV32I-NEXT:    and a0, a0, t5
+; RV32I-NEXT:    and a1, a1, t5
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    lui a1, 349525
 ; RV32I-NEXT:    addi a1, a1, 1364
-; RV32I-NEXT:    and a2, a0, s2
+; RV32I-NEXT:    and a2, a0, t6
 ; RV32I-NEXT:    srli a0, a0, 1
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    slli a2, a2, 1
@@ -3870,16 +3870,16 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    mv s4, a2
 ; RV32IM-NEXT:    mv s7, a1
 ; RV32IM-NEXT:    mv a1, a0
-; RV32IM-NEXT:    srli t0, a0, 8
+; RV32IM-NEXT:    srli t4, a0, 8
 ; RV32IM-NEXT:    srli t1, a0, 24
 ; RV32IM-NEXT:    srli t3, a2, 8
 ; RV32IM-NEXT:    srli t2, a2, 24
 ; RV32IM-NEXT:    slli a4, s7, 1
 ; RV32IM-NEXT:    andi a5, a2, 2
-; RV32IM-NEXT:    slli a7, s7, 2
+; RV32IM-NEXT:    slli a6, s7, 2
 ; RV32IM-NEXT:    andi s0, a2, 4
-; RV32IM-NEXT:    slli a6, s7, 3
-; RV32IM-NEXT:    andi t4, a2, 8
+; RV32IM-NEXT:    slli t5, s7, 3
+; RV32IM-NEXT:    andi a7, a2, 8
 ; RV32IM-NEXT:    slli t6, a0, 1
 ; RV32IM-NEXT:    andi s1, a3, 2
 ; RV32IM-NEXT:    lui a0, 16
@@ -3889,44 +3889,44 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lui a0, 32
 ; RV32IM-NEXT:    and a2, a2, a0
 ; RV32IM-NEXT:    lui s8, 2048
-; RV32IM-NEXT:    and s2, s4, s8
+; RV32IM-NEXT:    and t0, s4, s8
 ; RV32IM-NEXT:    lui s9, 4096
-; RV32IM-NEXT:    and t5, s4, s9
+; RV32IM-NEXT:    and s2, s4, s9
 ; RV32IM-NEXT:    and s3, a3, s3
 ; RV32IM-NEXT:    and a0, a3, a0
 ; RV32IM-NEXT:    sw s5, 312(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, t0, s5
+; RV32IM-NEXT:    and t4, t4, s5
 ; RV32IM-NEXT:    and t3, t3, s5
 ; RV32IM-NEXT:    mul s5, s7, s6
-; RV32IM-NEXT:    or t0, t0, t1
-; RV32IM-NEXT:    sw t0, 308(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t0, s7, a2
-; RV32IM-NEXT:    or t1, t3, t2
-; RV32IM-NEXT:    sw t1, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    or t1, t4, t1
+; RV32IM-NEXT:    sw t1, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t1, s7, a2
+; RV32IM-NEXT:    or t2, t3, t2
+; RV32IM-NEXT:    sw t2, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t2, s7, t0
+; RV32IM-NEXT:    xor t1, s5, t1
+; RV32IM-NEXT:    sw t1, 300(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul t1, s7, s2
-; RV32IM-NEXT:    xor t0, s5, t0
-; RV32IM-NEXT:    sw t0, 300(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t0, s7, t5
-; RV32IM-NEXT:    xor t0, t1, t0
-; RV32IM-NEXT:    sw t0, 296(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, a3, s8
-; RV32IM-NEXT:    mul t1, a1, s3
-; RV32IM-NEXT:    mul t2, a1, a0
-; RV32IM-NEXT:    xor a0, t1, t2
+; RV32IM-NEXT:    xor t1, t2, t1
+; RV32IM-NEXT:    sw t1, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t1, a3, s8
+; RV32IM-NEXT:    mul t2, a1, s3
+; RV32IM-NEXT:    mul t3, a1, a0
+; RV32IM-NEXT:    xor a0, t2, t3
 ; RV32IM-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a3, s9
-; RV32IM-NEXT:    mul t0, a1, t0
+; RV32IM-NEXT:    and t2, a3, s9
 ; RV32IM-NEXT:    mul t1, a1, t1
-; RV32IM-NEXT:    xor a0, t0, t1
+; RV32IM-NEXT:    mul t2, a1, t2
+; RV32IM-NEXT:    xor a0, t1, t2
 ; RV32IM-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t0, a1, 2
+; RV32IM-NEXT:    slli t1, a1, 2
 ; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    seqz t1, s1
+; RV32IM-NEXT:    seqz t2, s1
 ; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    addi t2, t2, -1
 ; RV32IM-NEXT:    and a4, a5, a4
 ; RV32IM-NEXT:    sw a4, 276(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t1, t6
+; RV32IM-NEXT:    and a0, t2, t6
 ; RV32IM-NEXT:    sw a0, 280(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a5, t6
 ; RV32IM-NEXT:    sw a0, 272(sp) # 4-byte Folded Spill
@@ -3935,18 +3935,18 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    seqz a4, a4
 ; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    addi a4, a4, -1
-; RV32IM-NEXT:    and a0, a5, a7
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 256(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a4, t0
+; RV32IM-NEXT:    and a0, a4, t1
 ; RV32IM-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a5, t0
+; RV32IM-NEXT:    and a0, a5, t1
 ; RV32IM-NEXT:    sw a0, 268(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a4, a3, 8
-; RV32IM-NEXT:    seqz a5, t4
+; RV32IM-NEXT:    seqz a5, a7
 ; RV32IM-NEXT:    seqz a4, a4
 ; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    addi a4, a4, -1
-; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    and a0, a5, t5
 ; RV32IM-NEXT:    sw a0, 248(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, a1, 3
 ; RV32IM-NEXT:    and a0, a4, a6
@@ -4017,12 +4017,12 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s7, 8
 ; RV32IM-NEXT:    and a0, a4, a6
-; RV32IM-NEXT:    sw a0, 164(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 160(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, a1, 8
 ; RV32IM-NEXT:    and a0, a5, a6
-; RV32IM-NEXT:    sw a0, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 164(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a4, a6
-; RV32IM-NEXT:    sw a0, 172(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 168(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a4, s4, 512
 ; RV32IM-NEXT:    seqz a4, a4
 ; RV32IM-NEXT:    andi a5, a3, 512
@@ -4031,7 +4031,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s7, 9
 ; RV32IM-NEXT:    and a0, a4, a6
-; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 172(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, a1, 9
 ; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
@@ -4054,11 +4054,11 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    mul a4, a1, s6
 ; RV32IM-NEXT:    mul a5, a1, a2
 ; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 148(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, a1, s2
-; RV32IM-NEXT:    mul a5, a1, t5
+; RV32IM-NEXT:    sw a4, 144(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a1, t0
+; RV32IM-NEXT:    mul a5, a1, s2
 ; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 140(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a4, 136(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    li a4, 1
 ; RV32IM-NEXT:    slli a0, a4, 11
 ; RV32IM-NEXT:    andi a4, s4, 1
@@ -4070,10 +4070,10 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    sw ra, 52(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a4, 1
 ; RV32IM-NEXT:    lui a6, 2
-; RV32IM-NEXT:    lui a2, 4
-; RV32IM-NEXT:    lui a5, 8
-; RV32IM-NEXT:    lui t2, 64
-; RV32IM-NEXT:    lui t3, 128
+; RV32IM-NEXT:    lui a7, 4
+; RV32IM-NEXT:    lui t0, 8
+; RV32IM-NEXT:    lui a2, 64
+; RV32IM-NEXT:    lui a5, 128
 ; RV32IM-NEXT:    lui t4, 256
 ; RV32IM-NEXT:    lui t5, 512
 ; RV32IM-NEXT:    lui t6, 1024
@@ -4088,10 +4088,10 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lui s10, 1
 ; RV32IM-NEXT:    and a6, a3, a6
 ; RV32IM-NEXT:    lui s11, 2
-; RV32IM-NEXT:    and a7, a3, a2
-; RV32IM-NEXT:    and t0, a3, a5
-; RV32IM-NEXT:    and t2, a3, t2
-; RV32IM-NEXT:    and t3, a3, t3
+; RV32IM-NEXT:    and a7, a3, a7
+; RV32IM-NEXT:    and t0, a3, t0
+; RV32IM-NEXT:    and t2, a3, a2
+; RV32IM-NEXT:    and t3, a3, a5
 ; RV32IM-NEXT:    and t4, a3, t4
 ; RV32IM-NEXT:    and t5, a3, t5
 ; RV32IM-NEXT:    and t6, a3, t6
@@ -4104,7 +4104,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    and s8, a3, s8
 ; RV32IM-NEXT:    and s9, a3, a0
 ; RV32IM-NEXT:    mv a2, a0
-; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, a4
 ; RV32IM-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, a6
@@ -4112,7 +4112,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    mul a0, a1, a7
 ; RV32IM-NEXT:    sw a0, 120(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, t0
-; RV32IM-NEXT:    sw a0, 136(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, t2
 ; RV32IM-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, t3
@@ -4120,9 +4120,9 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    mul a0, a1, t4
 ; RV32IM-NEXT:    sw a0, 108(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, t5
-; RV32IM-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, t6
-; RV32IM-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 148(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul ra, a1, s0
 ; RV32IM-NEXT:    mul a0, a1, s1
 ; RV32IM-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
@@ -4131,11 +4131,11 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    mul a0, a1, s3
 ; RV32IM-NEXT:    sw a0, 124(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, s5
-; RV32IM-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 140(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, s6
-; RV32IM-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, s8
-; RV32IM-NEXT:    sw a0, 160(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a3, s4, s10
 ; RV32IM-NEXT:    mul t5, s7, a3
 ; RV32IM-NEXT:    mul a0, a1, a3
@@ -4151,7 +4151,8 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, a3
 ; RV32IM-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, s4, a5
+; RV32IM-NEXT:    lui a0, 8
+; RV32IM-NEXT:    and a3, s4, a0
 ; RV32IM-NEXT:    mul a0, s7, a3
 ; RV32IM-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, a3
@@ -4160,8 +4161,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    and a3, s4, a0
 ; RV32IM-NEXT:    mul t3, s7, a3
 ; RV32IM-NEXT:    mul s5, a1, a3
-; RV32IM-NEXT:    lui a0, 128
-; RV32IM-NEXT:    and a3, s4, a0
+; RV32IM-NEXT:    and a3, s4, a5
 ; RV32IM-NEXT:    mul a0, s7, a3
 ; RV32IM-NEXT:    sw a0, 0(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, a1, a3
@@ -4246,7 +4246,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, a0, a1
 ; RV32IM-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 164(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 160(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a0, a1
 ; RV32IM-NEXT:    xor t5, s7, t5
 ; RV32IM-NEXT:    lw a0, 300(sp) # 4-byte Folded Reload
@@ -4262,7 +4262,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw a3, 216(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a0, a3
 ; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 164(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a0, a4
 ; RV32IM-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s9, s9, a0
@@ -4280,13 +4280,13 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw a2, 220(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
 ; RV32IM-NEXT:    lw a2, 208(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 172(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 168(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, s0
 ; RV32IM-NEXT:    lw s0, 4(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, s1, s0
-; RV32IM-NEXT:    lw s0, 148(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 144(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s5, s0, s5
-; RV32IM-NEXT:    lw s0, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 136(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s2, s0, s2
 ; RV32IM-NEXT:    lw s0, 308(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    or s0, s3, s0
@@ -4295,7 +4295,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    xor t4, t4, s4
 ; RV32IM-NEXT:    lw s3, 224(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, t2, s3
-; RV32IM-NEXT:    lw s3, 176(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 172(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, t0, s3
 ; RV32IM-NEXT:    lw s3, 20(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, t5, s3
@@ -4357,9 +4357,9 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw t4, 12(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a7, t4
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lw a4, 136(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 132(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a6, a4
-; RV32IM-NEXT:    lw a6, 132(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 128(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a6
 ; RV32IM-NEXT:    lw a6, 124(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a6, t5, a6
@@ -4388,9 +4388,9 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a7, a0
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lw a4, 152(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 148(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    lw a0, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a6, a0
 ; RV32IM-NEXT:    xor a1, a1, a2
 ; RV32IM-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
@@ -4401,7 +4401,7 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a7, a0
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lw a4, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 152(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a5, a4
 ; RV32IM-NEXT:    xor a1, a1, a2
 ; RV32IM-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
@@ -4417,102 +4417,102 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    and a6, t5, a1
 ; RV32IM-NEXT:    and a4, a4, a1
 ; RV32IM-NEXT:    slli a6, a6, 2
-; RV32IM-NEXT:    or a4, a4, a6
-; RV32IM-NEXT:    srli a6, t6, 2
+; RV32IM-NEXT:    or a6, a4, a6
+; RV32IM-NEXT:    srli a4, t6, 2
 ; RV32IM-NEXT:    and a7, t6, a1
-; RV32IM-NEXT:    and a6, a6, a1
+; RV32IM-NEXT:    and a4, a4, a1
 ; RV32IM-NEXT:    slli a7, a7, 2
-; RV32IM-NEXT:    or a7, a6, a7
-; RV32IM-NEXT:    lw a0, 112(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a7, a4, a7
+; RV32IM-NEXT:    lw a4, 112(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a5, a4
+; RV32IM-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    xor a3, a3, a5
+; RV32IM-NEXT:    xor a3, a3, a4
 ; RV32IM-NEXT:    sw a3, 300(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 349525
 ; RV32IM-NEXT:    addi a0, a0, 1365
 ; RV32IM-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli t0, a4, 1
-; RV32IM-NEXT:    and a4, a4, a0
+; RV32IM-NEXT:    srli t0, a6, 1
+; RV32IM-NEXT:    and a6, a6, a0
 ; RV32IM-NEXT:    and t0, t0, a0
-; RV32IM-NEXT:    slli a4, a4, 1
-; RV32IM-NEXT:    or a4, t0, a4
+; RV32IM-NEXT:    slli a6, a6, 1
+; RV32IM-NEXT:    or a6, t0, a6
 ; RV32IM-NEXT:    srli t0, a7, 1
 ; RV32IM-NEXT:    and a7, a7, a0
 ; RV32IM-NEXT:    and t0, t0, a0
 ; RV32IM-NEXT:    slli a7, a7, 1
 ; RV32IM-NEXT:    or a7, t0, a7
-; RV32IM-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lui a0, 2
 ; RV32IM-NEXT:    and t0, a7, a0
-; RV32IM-NEXT:    lui a0, 1
+; RV32IM-NEXT:    lui a0, 4
 ; RV32IM-NEXT:    and t1, a7, a0
-; RV32IM-NEXT:    mul t0, a4, t0
-; RV32IM-NEXT:    mul t1, a4, t1
+; RV32IM-NEXT:    mul t0, a6, t0
+; RV32IM-NEXT:    mul t1, a6, t1
 ; RV32IM-NEXT:    xor a0, t0, t1
 ; RV32IM-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 64
+; RV32IM-NEXT:    lui a0, 512
 ; RV32IM-NEXT:    and t1, a7, a0
-; RV32IM-NEXT:    lui a0, 128
+; RV32IM-NEXT:    lui a0, 1024
 ; RV32IM-NEXT:    and t2, a7, a0
-; RV32IM-NEXT:    mul t1, a4, t1
-; RV32IM-NEXT:    mul t2, a4, t2
+; RV32IM-NEXT:    mul t1, a6, t1
+; RV32IM-NEXT:    mul t2, a6, t2
 ; RV32IM-NEXT:    xor a0, t1, t2
 ; RV32IM-NEXT:    sw a0, 280(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 4096
 ; RV32IM-NEXT:    and t2, a7, a0
 ; RV32IM-NEXT:    lui a0, 8192
 ; RV32IM-NEXT:    and t3, a7, a0
-; RV32IM-NEXT:    mul t2, a4, t2
-; RV32IM-NEXT:    mul t3, a4, t3
+; RV32IM-NEXT:    mul t2, a6, t2
+; RV32IM-NEXT:    mul t3, a6, t3
 ; RV32IM-NEXT:    xor t2, t2, t3
 ; RV32IM-NEXT:    andi t3, a7, 2
 ; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a4, 1
+; RV32IM-NEXT:    slli t4, a6, 1
 ; RV32IM-NEXT:    and t3, t3, t4
 ; RV32IM-NEXT:    andi t4, a7, 4
 ; RV32IM-NEXT:    seqz t4, t4
 ; RV32IM-NEXT:    addi t4, t4, -1
-; RV32IM-NEXT:    slli t5, a4, 2
+; RV32IM-NEXT:    slli t5, a6, 2
 ; RV32IM-NEXT:    and t4, t4, t5
 ; RV32IM-NEXT:    andi t5, a7, 8
 ; RV32IM-NEXT:    seqz t5, t5
 ; RV32IM-NEXT:    addi t5, t5, -1
-; RV32IM-NEXT:    slli t6, a4, 3
+; RV32IM-NEXT:    slli t6, a6, 3
 ; RV32IM-NEXT:    and t5, t5, t6
 ; RV32IM-NEXT:    andi t6, a7, 16
 ; RV32IM-NEXT:    seqz t6, t6
 ; RV32IM-NEXT:    addi t6, t6, -1
-; RV32IM-NEXT:    slli s0, a4, 4
+; RV32IM-NEXT:    slli s0, a6, 4
 ; RV32IM-NEXT:    and t6, t6, s0
 ; RV32IM-NEXT:    andi s0, a7, 32
 ; RV32IM-NEXT:    seqz s0, s0
 ; RV32IM-NEXT:    addi s0, s0, -1
-; RV32IM-NEXT:    slli s1, a4, 5
+; RV32IM-NEXT:    slli s1, a6, 5
 ; RV32IM-NEXT:    and s1, s0, s1
 ; RV32IM-NEXT:    andi s0, a7, 64
 ; RV32IM-NEXT:    seqz s0, s0
 ; RV32IM-NEXT:    addi s0, s0, -1
-; RV32IM-NEXT:    slli s2, a4, 6
-; RV32IM-NEXT:    and s0, s0, s2
-; RV32IM-NEXT:    andi s2, a7, 128
-; RV32IM-NEXT:    seqz s2, s2
-; RV32IM-NEXT:    addi s2, s2, -1
-; RV32IM-NEXT:    slli s3, a4, 7
-; RV32IM-NEXT:    and s2, s2, s3
+; RV32IM-NEXT:    slli s2, a6, 6
+; RV32IM-NEXT:    and s2, s0, s2
+; RV32IM-NEXT:    andi s0, a7, 128
+; RV32IM-NEXT:    seqz s0, s0
+; RV32IM-NEXT:    addi s0, s0, -1
+; RV32IM-NEXT:    slli s3, a6, 7
+; RV32IM-NEXT:    and s0, s0, s3
 ; RV32IM-NEXT:    andi s3, a7, 256
 ; RV32IM-NEXT:    seqz s3, s3
 ; RV32IM-NEXT:    addi s3, s3, -1
-; RV32IM-NEXT:    slli s4, a4, 8
+; RV32IM-NEXT:    slli s4, a6, 8
 ; RV32IM-NEXT:    and s3, s3, s4
 ; RV32IM-NEXT:    andi s4, a7, 512
 ; RV32IM-NEXT:    seqz s4, s4
 ; RV32IM-NEXT:    addi s4, s4, -1
-; RV32IM-NEXT:    slli s5, a4, 9
+; RV32IM-NEXT:    slli s5, a6, 9
 ; RV32IM-NEXT:    and s4, s4, s5
-; RV32IM-NEXT:    lui a0, 2
+; RV32IM-NEXT:    lw a0, 176(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    and s5, a7, a0
-; RV32IM-NEXT:    lui a0, 4
+; RV32IM-NEXT:    lui a0, 1
 ; RV32IM-NEXT:    and s6, a7, a0
 ; RV32IM-NEXT:    lui a0, 8
 ; RV32IM-NEXT:    and s7, a7, a0
@@ -4520,11 +4520,11 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    and s8, a7, a0
 ; RV32IM-NEXT:    lui a0, 32
 ; RV32IM-NEXT:    and s9, a7, a0
-; RV32IM-NEXT:    lui a0, 256
+; RV32IM-NEXT:    lui a0, 64
 ; RV32IM-NEXT:    and s10, a7, a0
-; RV32IM-NEXT:    lui a0, 512
+; RV32IM-NEXT:    lui a0, 128
 ; RV32IM-NEXT:    and s11, a7, a0
-; RV32IM-NEXT:    lui a0, 1024
+; RV32IM-NEXT:    lui a0, 256
 ; RV32IM-NEXT:    and ra, a7, a0
 ; RV32IM-NEXT:    lui a0, 2048
 ; RV32IM-NEXT:    and a0, a7, a0
@@ -4534,64 +4534,64 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IM-NEXT:    and a2, a7, a2
 ; RV32IM-NEXT:    lui a3, 65536
 ; RV32IM-NEXT:    and a3, a7, a3
-; RV32IM-NEXT:    lui a5, 131072
+; RV32IM-NEXT:    lui a4, 131072
+; RV32IM-NEXT:    and a4, a7, a4
+; RV32IM-NEXT:    lui a5, 262144
 ; RV32IM-NEXT:    and a5, a7, a5
-; RV32IM-NEXT:    lui a6, 262144
-; RV32IM-NEXT:    and a6, a7, a6
 ; RV32IM-NEXT:    lui t0, 524288
 ; RV32IM-NEXT:    and t0, a7, t0
 ; RV32IM-NEXT:    andi t1, a7, 1
 ; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    mul s5, a4, s5
-; RV32IM-NEXT:    mul s6, a4, s6
-; RV32IM-NEXT:    mul s7, a4, s7
-; RV32IM-NEXT:    mul s8, a4, s8
-; RV32IM-NEXT:    mul s9, a4, s9
-; RV32IM-NEXT:    mul s10, a4, s10
-; RV32IM-NEXT:    mul s11, a4, s11
-; RV32IM-NEXT:    mul ra, a4, ra
-; RV32IM-NEXT:    mul a0, a4, a0
-; RV32IM-NEXT:    mul a1, a4, a1
-; RV32IM-NEXT:    mul a2, a4, a2
-; RV32IM-NEXT:    mul a3, a4, a3
-; RV32IM-NEXT:    mul a5, a4, a5
-; RV32IM-NEXT:    mul a6, a4, a6
-; RV32IM-NEXT:    mul t0, a4, t0
+; RV32IM-NEXT:    mul s5, a6, s5
+; RV32IM-NEXT:    mul s6, a6, s6
+; RV32IM-NEXT:    mul s7, a6, s7
+; RV32IM-NEXT:    mul s8, a6, s8
+; RV32IM-NEXT:    mul s9, a6, s9
+; RV32IM-NEXT:    mul s10, a6, s10
+; RV32IM-NEXT:    mul s11, a6, s11
+; RV32IM-NEXT:    mul ra, a6, ra
+; RV32IM-NEXT:    mul a0, a6, a0
+; RV32IM-NEXT:    mul a1, a6, a1
+; RV32IM-NEXT:    mul a2, a6, a2
+; RV32IM-NEXT:    mul a3, a6, a3
+; RV32IM-NEXT:    mul a4, a6, a4
+; RV32IM-NEXT:    mul a5, a6, a5
+; RV32IM-NEXT:    mul t0, a6, t0
 ; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    and t1, t1, a4
-; RV32IM-NEXT:    slli a4, a4, 10
+; RV32IM-NEXT:    and t1, t1, a6
+; RV32IM-NEXT:    slli a6, a6, 10
 ; RV32IM-NEXT:    andi a7, a7, 1024
 ; RV32IM-NEXT:    seqz a7, a7
 ; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    and a4, a7, a4
+; RV32IM-NEXT:    and a6, a7, a6
 ; RV32IM-NEXT:    lw a7, 288(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, s5
-; RV32IM-NEXT:    lw s5, 280(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, s5, s10
+; RV32IM-NEXT:    xor a7, a7, s7
+; RV32IM-NEXT:    lw s7, 280(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, s7, a0
 ; RV32IM-NEXT:    xor a1, t2, a1
 ; RV32IM-NEXT:    xor t1, t1, t3
 ; RV32IM-NEXT:    xor t2, t4, t5
 ; RV32IM-NEXT:    xor t3, t6, s1
-; RV32IM-NEXT:    xor t4, s2, s3
-; RV32IM-NEXT:    xor a7, a7, s6
-; RV32IM-NEXT:    xor t5, s5, s11
+; RV32IM-NEXT:    xor t4, s3, s4
+; RV32IM-NEXT:    xor a7, a7, s8
 ; RV32IM-NEXT:    xor a1, a1, a2
 ; RV32IM-NEXT:    xor a2, t1, t2
-; RV32IM-NEXT:    xor t1, t3, s0
-; RV32IM-NEXT:    xor t2, t4, s4
-; RV32IM-NEXT:    xor a7, a7, s7
-; RV32IM-NEXT:    xor t3, t5, ra
+; RV32IM-NEXT:    xor t1, t3, s2
+; RV32IM-NEXT:    xor a6, t4, a6
+; RV32IM-NEXT:    xor a7, a7, s9
 ; RV32IM-NEXT:    xor a1, a1, a3
 ; RV32IM-NEXT:    xor a2, a2, t1
-; RV32IM-NEXT:    xor a3, t2, a4
-; RV32IM-NEXT:    xor a4, a7, s8
-; RV32IM-NEXT:    xor a0, t3, a0
+; RV32IM-NEXT:    xor a3, a6, s5
+; RV32IM-NEXT:    xor a6, a7, s10
+; RV32IM-NEXT:    xor a1, a1, a4
+; RV32IM-NEXT:    xor a2, a2, s0
+; RV32IM-NEXT:    xor a3, a3, s6
+; RV32IM-NEXT:    xor a4, a6, s11
 ; RV32IM-NEXT:    xor a1, a1, a5
-; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    xor a3, a4, s9
-; RV32IM-NEXT:    xor a1, a1, a6
+; RV32IM-NEXT:    xor a4, a4, ra
 ; RV32IM-NEXT:    xor a1, a1, t0
 ; RV32IM-NEXT:    xor a3, a2, a3
+; RV32IM-NEXT:    xor a3, a3, a4
 ; RV32IM-NEXT:    xor a0, a3, a0
 ; RV32IM-NEXT:    lw a4, 312(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    and a3, a0, a4
@@ -5648,334 +5648,334 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IMZBS-NEXT:    lw t5, 260(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, t5
 ; RV32IMZBS-NEXT:    lw t5, 200(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, t5
-; RV32IMZBS-NEXT:    lw t5, 128(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t5
-; RV32IMZBS-NEXT:    lw t5, 12(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t5
-; RV32IMZBS-NEXT:    lw t5, 32(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, t5
-; RV32IMZBS-NEXT:    sw a5, 340(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor t5, a2, t5
+; RV32IMZBS-NEXT:    lw a2, 128(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, a2
+; RV32IMZBS-NEXT:    lw a2, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a2
+; RV32IMZBS-NEXT:    lw a2, 32(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a5, a2
+; RV32IMZBS-NEXT:    sw a2, 340(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    xor a5, s3, s6
-; RV32IMZBS-NEXT:    lw t5, 256(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, s0, t5
-; RV32IMZBS-NEXT:    lw s0, 204(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s1, s0
-; RV32IMZBS-NEXT:    lw s1, 132(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s2, s1
-; RV32IMZBS-NEXT:    lw s2, 48(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, s5, s2
+; RV32IMZBS-NEXT:    lw a2, 256(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, a2
+; RV32IMZBS-NEXT:    lw a2, 204(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, a2
+; RV32IMZBS-NEXT:    lw a2, 132(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, s2, a2
+; RV32IMZBS-NEXT:    lw a2, 48(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, s5, a2
 ; RV32IMZBS-NEXT:    xor t1, t4, t1
-; RV32IMZBS-NEXT:    lw t4, 268(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t4
-; RV32IMZBS-NEXT:    lw t4, 208(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t4
-; RV32IMZBS-NEXT:    lw t4, 136(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t6, t4
-; RV32IMZBS-NEXT:    lw t6, 56(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, s7, t6
+; RV32IMZBS-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, a2
+; RV32IMZBS-NEXT:    lw a2, 208(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t0, a2
+; RV32IMZBS-NEXT:    lw a2, 136(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t4, t6, a2
+; RV32IMZBS-NEXT:    lw a2, 56(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, s7, a2
 ; RV32IMZBS-NEXT:    xor a0, t3, a0
-; RV32IMZBS-NEXT:    lw t3, 272(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, t3
-; RV32IMZBS-NEXT:    lw t3, 216(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, t3
-; RV32IMZBS-NEXT:    lw t3, 144(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t3
-; RV32IMZBS-NEXT:    lw t3, 60(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t3
-; RV32IMZBS-NEXT:    xor a5, a5, t5
-; RV32IMZBS-NEXT:    lw t3, 212(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, s0, t3
-; RV32IMZBS-NEXT:    lw t5, 140(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, s1, t5
-; RV32IMZBS-NEXT:    lw s0, 52(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s2, s0
+; RV32IMZBS-NEXT:    lw a2, 272(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    lw a2, 216(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t5, a2
+; RV32IMZBS-NEXT:    lw a2, 144(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, a2
+; RV32IMZBS-NEXT:    lw a2, 60(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a2
+; RV32IMZBS-NEXT:    xor a5, a5, s0
+; RV32IMZBS-NEXT:    lw a2, 212(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, s1, a2
+; RV32IMZBS-NEXT:    lw a2, 140(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s2, a2
+; RV32IMZBS-NEXT:    lw a2, 52(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s3, a2
 ; RV32IMZBS-NEXT:    xor a7, t1, a7
-; RV32IMZBS-NEXT:    lw t1, 220(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t1
-; RV32IMZBS-NEXT:    lw t1, 148(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t4, t1
-; RV32IMZBS-NEXT:    lw t4, 64(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t6, t4
+; RV32IMZBS-NEXT:    lw a2, 220(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t0, a2
+; RV32IMZBS-NEXT:    lw a2, 148(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t4, a2
+; RV32IMZBS-NEXT:    lw a2, 64(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t4, t6, a2
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
 ; RV32IMZBS-NEXT:    lw a1, 224(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a1
+; RV32IMZBS-NEXT:    xor t3, t3, a1
 ; RV32IMZBS-NEXT:    lw a1, 152(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, a3, a1
 ; RV32IMZBS-NEXT:    lw a1, 68(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a1
 ; RV32IMZBS-NEXT:    lui a1, 61681
 ; RV32IMZBS-NEXT:    addi a1, a1, -241
+; RV32IMZBS-NEXT:    sw a1, 336(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    srli a3, s8, 4
-; RV32IMZBS-NEXT:    and s1, s8, a1
-; RV32IMZBS-NEXT:    and a3, a3, a1
-; RV32IMZBS-NEXT:    slli s1, s1, 4
-; RV32IMZBS-NEXT:    or s1, a3, s1
-; RV32IMZBS-NEXT:    srli a3, s9, 4
-; RV32IMZBS-NEXT:    and s2, s9, a1
+; RV32IMZBS-NEXT:    and s2, s8, a1
 ; RV32IMZBS-NEXT:    and a3, a3, a1
 ; RV32IMZBS-NEXT:    slli s2, s2, 4
 ; RV32IMZBS-NEXT:    or s2, a3, s2
-; RV32IMZBS-NEXT:    xor t3, a5, t3
+; RV32IMZBS-NEXT:    srli a3, s9, 4
+; RV32IMZBS-NEXT:    and s3, s9, a1
+; RV32IMZBS-NEXT:    and a3, a3, a1
+; RV32IMZBS-NEXT:    slli s3, s3, 4
+; RV32IMZBS-NEXT:    or s3, a3, s3
+; RV32IMZBS-NEXT:    xor t5, a5, t5
 ; RV32IMZBS-NEXT:    lui a3, 209715
-; RV32IMZBS-NEXT:    lw a5, 156(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, a5
-; RV32IMZBS-NEXT:    lui s3, 349525
+; RV32IMZBS-NEXT:    lw a1, 156(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, a1
+; RV32IMZBS-NEXT:    lui a1, 349525
 ; RV32IMZBS-NEXT:    addi a5, a3, 819
-; RV32IMZBS-NEXT:    lw a3, 72(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s0, a3
-; RV32IMZBS-NEXT:    addi a3, s3, 1365
+; RV32IMZBS-NEXT:    lw a2, 72(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, a2
+; RV32IMZBS-NEXT:    addi a3, a1, 1365
 ; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    lw t0, 160(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t1, t0
-; RV32IMZBS-NEXT:    lw t1, 76(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t4, t1
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    lw a2, 164(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, t6, a2
-; RV32IMZBS-NEXT:    lw t4, 84(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t4
-; RV32IMZBS-NEXT:    srli t4, s1, 2
-; RV32IMZBS-NEXT:    and s1, s1, a5
-; RV32IMZBS-NEXT:    srli t6, s2, 2
-; RV32IMZBS-NEXT:    and s2, s2, a5
-; RV32IMZBS-NEXT:    xor t3, t3, t5
-; RV32IMZBS-NEXT:    lw t5, 92(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, s0, t5
+; RV32IMZBS-NEXT:    lw a1, 160(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t1, a1
+; RV32IMZBS-NEXT:    lw a1, 76(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t4, a1
+; RV32IMZBS-NEXT:    xor a0, a0, t3
+; RV32IMZBS-NEXT:    lw a1, 164(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t6, a1
+; RV32IMZBS-NEXT:    lw a1, 84(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a1
+; RV32IMZBS-NEXT:    srli t4, s2, 2
+; RV32IMZBS-NEXT:    and t6, s2, a5
+; RV32IMZBS-NEXT:    srli s2, s3, 2
+; RV32IMZBS-NEXT:    and s3, s3, a5
+; RV32IMZBS-NEXT:    xor t5, t5, s0
+; RV32IMZBS-NEXT:    lw s0, 92(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s1, s0
 ; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    lw t0, 88(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t1, t0
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    lw a2, 80(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a4, a2
-; RV32IMZBS-NEXT:    and a4, t4, a5
-; RV32IMZBS-NEXT:    slli s1, s1, 2
-; RV32IMZBS-NEXT:    and t1, t6, a5
-; RV32IMZBS-NEXT:    slli s2, s2, 2
-; RV32IMZBS-NEXT:    xor t3, t3, t5
+; RV32IMZBS-NEXT:    lw a1, 88(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t1, a1
+; RV32IMZBS-NEXT:    xor a0, a0, t3
+; RV32IMZBS-NEXT:    lw a1, 80(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a1
+; RV32IMZBS-NEXT:    and t1, t4, a5
+; RV32IMZBS-NEXT:    slli t6, t6, 2
+; RV32IMZBS-NEXT:    and t3, s2, a5
+; RV32IMZBS-NEXT:    slli s3, s3, 2
+; RV32IMZBS-NEXT:    xor t4, t5, s0
 ; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a4, a4, s1
-; RV32IMZBS-NEXT:    or a0, t1, s2
-; RV32IMZBS-NEXT:    xor a2, t3, t2
+; RV32IMZBS-NEXT:    xor a0, a0, a4
+; RV32IMZBS-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a0, t1, t6
+; RV32IMZBS-NEXT:    or t0, t3, s3
+; RV32IMZBS-NEXT:    xor t1, t4, t2
 ; RV32IMZBS-NEXT:    xor a6, a7, a6
-; RV32IMZBS-NEXT:    srli a7, a4, 1
-; RV32IMZBS-NEXT:    and a4, a4, a3
-; RV32IMZBS-NEXT:    srli t0, a0, 1
+; RV32IMZBS-NEXT:    srli t2, a0, 1
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    xor a2, a6, a2
-; RV32IMZBS-NEXT:    sw a2, 332(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a7, a3
-; RV32IMZBS-NEXT:    slli a4, a4, 1
-; RV32IMZBS-NEXT:    and a7, t0, a3
+; RV32IMZBS-NEXT:    srli t3, t0, 1
+; RV32IMZBS-NEXT:    and t0, t0, a3
+; RV32IMZBS-NEXT:    xor a1, a6, t1
+; RV32IMZBS-NEXT:    sw a1, 328(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, t2, a3
 ; RV32IMZBS-NEXT:    slli a0, a0, 1
-; RV32IMZBS-NEXT:    or t3, a2, a4
-; RV32IMZBS-NEXT:    or t1, a7, a0
-; RV32IMZBS-NEXT:    srli a0, a0, 31
-; RV32IMZBS-NEXT:    slli a2, t3, 1
-; RV32IMZBS-NEXT:    andi a4, t1, 2
-; RV32IMZBS-NEXT:    slli a7, t3, 2
-; RV32IMZBS-NEXT:    andi s6, t1, 4
-; RV32IMZBS-NEXT:    slli t0, t3, 3
-; RV32IMZBS-NEXT:    andi t5, t1, 8
-; RV32IMZBS-NEXT:    slli t6, t3, 4
-; RV32IMZBS-NEXT:    andi s0, t1, 16
-; RV32IMZBS-NEXT:    slli s1, t3, 5
-; RV32IMZBS-NEXT:    andi s2, t1, 32
-; RV32IMZBS-NEXT:    slli t4, t3, 6
-; RV32IMZBS-NEXT:    andi s4, t1, 64
-; RV32IMZBS-NEXT:    slli t2, t3, 7
-; RV32IMZBS-NEXT:    andi s3, t1, 128
-; RV32IMZBS-NEXT:    slli s5, t3, 8
-; RV32IMZBS-NEXT:    andi s8, t1, 256
-; RV32IMZBS-NEXT:    slli a6, t3, 31
+; RV32IMZBS-NEXT:    and t1, t3, a3
+; RV32IMZBS-NEXT:    slli t0, t0, 1
+; RV32IMZBS-NEXT:    or s9, a6, a0
+; RV32IMZBS-NEXT:    or t1, t1, t0
+; RV32IMZBS-NEXT:    srli a0, t0, 31
+; RV32IMZBS-NEXT:    slli a4, s9, 1
+; RV32IMZBS-NEXT:    andi t3, t1, 2
+; RV32IMZBS-NEXT:    slli t4, s9, 2
+; RV32IMZBS-NEXT:    andi t5, t1, 4
+; RV32IMZBS-NEXT:    slli a6, s9, 3
+; RV32IMZBS-NEXT:    andi s0, t1, 8
+; RV32IMZBS-NEXT:    slli t0, s9, 4
+; RV32IMZBS-NEXT:    andi s2, t1, 16
+; RV32IMZBS-NEXT:    slli a7, s9, 5
+; RV32IMZBS-NEXT:    andi s4, t1, 32
+; RV32IMZBS-NEXT:    slli s5, s9, 6
+; RV32IMZBS-NEXT:    andi s6, t1, 64
+; RV32IMZBS-NEXT:    slli t2, s9, 7
+; RV32IMZBS-NEXT:    andi t6, t1, 128
+; RV32IMZBS-NEXT:    slli s1, s9, 8
+; RV32IMZBS-NEXT:    andi s10, t1, 256
+; RV32IMZBS-NEXT:    slli a1, s9, 31
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and a0, a0, a6
-; RV32IMZBS-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a0, t3, 9
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, a2
-; RV32IMZBS-NEXT:    sw a2, 324(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a2, t1, 512
-; RV32IMZBS-NEXT:    seqz a4, s6
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a4, a4, a7
-; RV32IMZBS-NEXT:    sw a4, 320(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, t3, 10
-; RV32IMZBS-NEXT:    seqz a7, t5
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and a6, a7, t0
-; RV32IMZBS-NEXT:    sw a6, 316(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a7, t1, 1024
-; RV32IMZBS-NEXT:    seqz t5, s0
-; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    and a6, t5, t6
-; RV32IMZBS-NEXT:    sw a6, 312(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t5, t3, 11
-; RV32IMZBS-NEXT:    seqz t6, s2
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and a6, t6, s1
-; RV32IMZBS-NEXT:    sw a6, 304(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not s2, t1
-; RV32IMZBS-NEXT:    seqz t6, s4
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and a6, t6, t4
-; RV32IMZBS-NEXT:    sw a6, 308(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s10, t3, 12
-; RV32IMZBS-NEXT:    seqz s1, s3
-; RV32IMZBS-NEXT:    addi s1, s1, -1
-; RV32IMZBS-NEXT:    and a6, s1, t2
-; RV32IMZBS-NEXT:    sw a6, 296(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t3, 13
-; RV32IMZBS-NEXT:    seqz s1, s8
-; RV32IMZBS-NEXT:    addi s1, s1, -1
-; RV32IMZBS-NEXT:    and s1, s1, s5
-; RV32IMZBS-NEXT:    slli t0, t3, 14
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a0, a2, a0
+; RV32IMZBS-NEXT:    and a0, a0, a1
+; RV32IMZBS-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, s9, 9
+; RV32IMZBS-NEXT:    seqz t3, t3
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    and a0, t3, a4
+; RV32IMZBS-NEXT:    sw a0, 320(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi s11, t1, 512
+; RV32IMZBS-NEXT:    seqz t3, t5
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    and a0, t3, t4
+; RV32IMZBS-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli ra, s9, 10
+; RV32IMZBS-NEXT:    seqz t4, s0
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and a0, t4, a6
+; RV32IMZBS-NEXT:    sw a0, 308(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t1, 1024
+; RV32IMZBS-NEXT:    seqz t4, s2
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and a1, t4, t0
+; RV32IMZBS-NEXT:    sw a1, 304(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, s9, 11
+; RV32IMZBS-NEXT:    seqz t4, s4
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and a4, t4, a7
+; RV32IMZBS-NEXT:    sw a4, 296(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not s2, t1
+; RV32IMZBS-NEXT:    seqz t4, s6
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and a4, t4, s5
+; RV32IMZBS-NEXT:    sw a4, 300(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s9, 12
+; RV32IMZBS-NEXT:    seqz t4, t6
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and a6, t4, t2
+; RV32IMZBS-NEXT:    sw a6, 312(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, s9, 13
+; RV32IMZBS-NEXT:    seqz s4, s10
+; RV32IMZBS-NEXT:    addi s4, s4, -1
+; RV32IMZBS-NEXT:    and s4, s4, s1
+; RV32IMZBS-NEXT:    slli a7, s9, 14
+; RV32IMZBS-NEXT:    seqz s5, s11
+; RV32IMZBS-NEXT:    addi s5, s5, -1
+; RV32IMZBS-NEXT:    and t5, s5, a2
+; RV32IMZBS-NEXT:    slli a2, s9, 15
+; RV32IMZBS-NEXT:    seqz a0, a0
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and s6, a0, ra
+; RV32IMZBS-NEXT:    bexti a0, s2, 11
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and s5, a0, a1
+; RV32IMZBS-NEXT:    bexti a0, s2, 12
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, a4
 ; RV32IMZBS-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a0, t3, 15
-; RV32IMZBS-NEXT:    seqz a2, a7
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a2, s2, 11
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and t5, a2, t5
-; RV32IMZBS-NEXT:    bexti a2, s2, 12
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and s10, a2, s10
-; RV32IMZBS-NEXT:    bexti a2, s2, 13
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and s8, a2, a6
-; RV32IMZBS-NEXT:    bexti a2, s2, 14
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and t6, a2, t0
-; RV32IMZBS-NEXT:    bexti a2, s2, 15
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and s0, a2, a0
-; RV32IMZBS-NEXT:    bexti a0, s2, 16
+; RV32IMZBS-NEXT:    bexti a0, s2, 13
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a4, t3, 16
-; RV32IMZBS-NEXT:    and a4, a0, a4
-; RV32IMZBS-NEXT:    bexti a0, s2, 17
+; RV32IMZBS-NEXT:    and s11, a0, a6
+; RV32IMZBS-NEXT:    bexti a0, s2, 14
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a2, t3, 17
-; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    bexti a2, s2, 18
+; RV32IMZBS-NEXT:    and a0, a0, a7
+; RV32IMZBS-NEXT:    bexti a1, s2, 15
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    and ra, a1, a2
+; RV32IMZBS-NEXT:    bexti a1, s2, 16
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a2, s9, 16
+; RV32IMZBS-NEXT:    and t3, a1, a2
+; RV32IMZBS-NEXT:    bexti a1, s2, 17
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a2, s9, 17
+; RV32IMZBS-NEXT:    and t4, a1, a2
+; RV32IMZBS-NEXT:    bexti a1, s2, 18
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a2, s9, 18
+; RV32IMZBS-NEXT:    and s10, a1, a2
+; RV32IMZBS-NEXT:    bexti a1, s2, 19
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a2, s9, 19
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    bexti a2, s2, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a7, t3, 18
-; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    bexti a7, s2, 19
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli s11, t3, 19
-; RV32IMZBS-NEXT:    and s11, a7, s11
-; RV32IMZBS-NEXT:    bexti a7, s2, 20
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli ra, t3, 20
-; RV32IMZBS-NEXT:    and ra, a7, ra
-; RV32IMZBS-NEXT:    bexti a7, s2, 21
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli a6, t3, 21
-; RV32IMZBS-NEXT:    and a7, a7, a6
-; RV32IMZBS-NEXT:    bexti a6, s2, 22
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    slli t0, t3, 22
-; RV32IMZBS-NEXT:    and a6, a6, t0
+; RV32IMZBS-NEXT:    slli t0, s9, 20
+; RV32IMZBS-NEXT:    and a2, a2, t0
+; RV32IMZBS-NEXT:    bexti t0, s2, 21
+; RV32IMZBS-NEXT:    addi t0, t0, -1
+; RV32IMZBS-NEXT:    slli a6, s9, 21
+; RV32IMZBS-NEXT:    and a6, t0, a6
+; RV32IMZBS-NEXT:    bexti t0, s2, 22
+; RV32IMZBS-NEXT:    addi t0, t0, -1
+; RV32IMZBS-NEXT:    slli a4, s9, 22
+; RV32IMZBS-NEXT:    and a4, t0, a4
 ; RV32IMZBS-NEXT:    bexti t0, s2, 23
 ; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    slli t4, t3, 23
-; RV32IMZBS-NEXT:    and t0, t0, t4
-; RV32IMZBS-NEXT:    bexti t4, s2, 24
-; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    slli s3, t3, 24
-; RV32IMZBS-NEXT:    and t4, t4, s3
-; RV32IMZBS-NEXT:    bexti s3, s2, 25
-; RV32IMZBS-NEXT:    addi s3, s3, -1
-; RV32IMZBS-NEXT:    slli t2, t3, 25
-; RV32IMZBS-NEXT:    and t2, s3, t2
-; RV32IMZBS-NEXT:    bexti s3, s2, 26
+; RV32IMZBS-NEXT:    slli t2, s9, 23
+; RV32IMZBS-NEXT:    and t0, t0, t2
+; RV32IMZBS-NEXT:    bexti t2, s2, 24
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    slli t6, s9, 24
+; RV32IMZBS-NEXT:    and t2, t2, t6
+; RV32IMZBS-NEXT:    bexti t6, s2, 25
+; RV32IMZBS-NEXT:    addi t6, t6, -1
+; RV32IMZBS-NEXT:    slli s1, s9, 25
+; RV32IMZBS-NEXT:    and t6, t6, s1
+; RV32IMZBS-NEXT:    bexti s1, s2, 26
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    slli a7, s9, 26
+; RV32IMZBS-NEXT:    and a7, s1, a7
+; RV32IMZBS-NEXT:    bexti s1, s2, 27
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    slli s3, s9, 27
+; RV32IMZBS-NEXT:    and s1, s1, s3
+; RV32IMZBS-NEXT:    bexti s3, s2, 28
 ; RV32IMZBS-NEXT:    addi s3, s3, -1
-; RV32IMZBS-NEXT:    slli s5, t3, 26
-; RV32IMZBS-NEXT:    and s3, s3, s5
-; RV32IMZBS-NEXT:    bexti s5, s2, 27
-; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    slli s6, t3, 27
-; RV32IMZBS-NEXT:    and s5, s5, s6
-; RV32IMZBS-NEXT:    bexti s6, s2, 28
-; RV32IMZBS-NEXT:    addi s6, s6, -1
-; RV32IMZBS-NEXT:    slli s7, t3, 28
-; RV32IMZBS-NEXT:    and s6, s6, s7
+; RV32IMZBS-NEXT:    slli s7, s9, 28
+; RV32IMZBS-NEXT:    and s3, s3, s7
 ; RV32IMZBS-NEXT:    bexti s7, s2, 29
 ; RV32IMZBS-NEXT:    addi s7, s7, -1
-; RV32IMZBS-NEXT:    slli s9, t3, 29
-; RV32IMZBS-NEXT:    and s7, s7, s9
+; RV32IMZBS-NEXT:    slli s8, s9, 29
+; RV32IMZBS-NEXT:    and s7, s7, s8
 ; RV32IMZBS-NEXT:    andi t1, t1, 1
 ; RV32IMZBS-NEXT:    seqz t1, t1
 ; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    and t1, t1, t3
-; RV32IMZBS-NEXT:    slli t3, t3, 30
+; RV32IMZBS-NEXT:    and t1, t1, s9
+; RV32IMZBS-NEXT:    slli s9, s9, 30
 ; RV32IMZBS-NEXT:    bexti s2, s2, 30
 ; RV32IMZBS-NEXT:    addi s2, s2, -1
-; RV32IMZBS-NEXT:    and t3, s2, t3
-; RV32IMZBS-NEXT:    lw s2, 324(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t1, s2
-; RV32IMZBS-NEXT:    lw s2, 320(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 316(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, s2, s9
-; RV32IMZBS-NEXT:    lw s9, 312(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s4, 304(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, s9, s4
-; RV32IMZBS-NEXT:    lw s4, 296(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s4, s1
-; RV32IMZBS-NEXT:    xor t5, t5, s10
-; RV32IMZBS-NEXT:    xor a0, a4, a0
-; RV32IMZBS-NEXT:    xor a4, a6, t0
-; RV32IMZBS-NEXT:    xor a6, s7, t3
-; RV32IMZBS-NEXT:    xor t0, t1, s2
-; RV32IMZBS-NEXT:    lw t1, 308(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, s9, t1
-; RV32IMZBS-NEXT:    lw t3, 292(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, s1, t3
-; RV32IMZBS-NEXT:    xor t5, t5, s8
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    xor a2, a4, t4
-; RV32IMZBS-NEXT:    lw a4, 328(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a6, a4
-; RV32IMZBS-NEXT:    xor a6, t0, t1
-; RV32IMZBS-NEXT:    lw t0, 300(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t3, t0
-; RV32IMZBS-NEXT:    xor t1, t5, t6
-; RV32IMZBS-NEXT:    xor a0, a0, s11
-; RV32IMZBS-NEXT:    xor a2, a2, t2
-; RV32IMZBS-NEXT:    xor a6, a6, t0
-; RV32IMZBS-NEXT:    xor t0, t1, s0
+; RV32IMZBS-NEXT:    and s2, s2, s9
+; RV32IMZBS-NEXT:    lw s8, 320(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t1, s8
+; RV32IMZBS-NEXT:    lw s8, 316(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 308(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, s8, s9
+; RV32IMZBS-NEXT:    lw s9, 304(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s0, 296(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, s9, s0
+; RV32IMZBS-NEXT:    xor t5, s4, t5
+; RV32IMZBS-NEXT:    xor a0, s11, a0
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    xor a2, t2, t6
+; RV32IMZBS-NEXT:    xor t1, t1, s8
+; RV32IMZBS-NEXT:    lw t2, 300(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, s9, t2
+; RV32IMZBS-NEXT:    xor t5, t5, s6
 ; RV32IMZBS-NEXT:    xor a0, a0, ra
+; RV32IMZBS-NEXT:    xor a1, a1, a6
+; RV32IMZBS-NEXT:    xor a2, a2, a7
+; RV32IMZBS-NEXT:    xor a6, t1, t2
+; RV32IMZBS-NEXT:    xor a7, t5, s5
+; RV32IMZBS-NEXT:    xor a0, a0, t3
+; RV32IMZBS-NEXT:    xor a1, a1, a4
+; RV32IMZBS-NEXT:    xor a2, a2, s1
+; RV32IMZBS-NEXT:    lw a4, 312(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a6, a4
+; RV32IMZBS-NEXT:    lw a6, 292(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a7, a6
+; RV32IMZBS-NEXT:    xor a0, a0, t4
+; RV32IMZBS-NEXT:    xor a1, a1, t0
 ; RV32IMZBS-NEXT:    xor a2, a2, s3
-; RV32IMZBS-NEXT:    xor a6, a6, t0
-; RV32IMZBS-NEXT:    xor a0, a0, a7
-; RV32IMZBS-NEXT:    xor a2, a2, s5
+; RV32IMZBS-NEXT:    xor a0, a0, s10
+; RV32IMZBS-NEXT:    xor a2, a2, s7
+; RV32IMZBS-NEXT:    xor a6, a4, a6
 ; RV32IMZBS-NEXT:    xor a0, a6, a0
-; RV32IMZBS-NEXT:    xor a2, a2, s6
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    xor a0, a0, a4
-; RV32IMZBS-NEXT:    srli a2, a0, 8
-; RV32IMZBS-NEXT:    srli a4, a0, 24
+; RV32IMZBS-NEXT:    xor a2, a2, s2
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a1, 324(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a2, a1
 ; RV32IMZBS-NEXT:    lw a6, 344(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a2, a2, a6
-; RV32IMZBS-NEXT:    or a2, a2, a4
-; RV32IMZBS-NEXT:    and a4, a0, a6
-; RV32IMZBS-NEXT:    slli a0, a0, 24
-; RV32IMZBS-NEXT:    slli a4, a4, 8
-; RV32IMZBS-NEXT:    or a0, a0, a4
-; RV32IMZBS-NEXT:    or a0, a0, a2
-; RV32IMZBS-NEXT:    srli a2, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    and a1, a2, a1
+; RV32IMZBS-NEXT:    and a2, a0, a6
+; RV32IMZBS-NEXT:    xor a1, a0, a1
+; RV32IMZBS-NEXT:    srli a0, a0, 8
+; RV32IMZBS-NEXT:    and a0, a0, a6
+; RV32IMZBS-NEXT:    slli a4, a4, 24
+; RV32IMZBS-NEXT:    slli a2, a2, 8
+; RV32IMZBS-NEXT:    or a2, a4, a2
+; RV32IMZBS-NEXT:    srli a1, a1, 24
+; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    or a0, a2, a0
+; RV32IMZBS-NEXT:    srli a1, a0, 4
+; RV32IMZBS-NEXT:    lw a2, 336(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a0, a0, a2
+; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
 ; RV32IMZBS-NEXT:    or a0, a1, a0
 ; RV32IMZBS-NEXT:    srli a1, a0, 2
@@ -5991,10 +5991,10 @@ define i64 @clmul_i64(i64 %a, i64 %b) nounwind {
 ; RV32IMZBS-NEXT:    slli a3, a3, 1
 ; RV32IMZBS-NEXT:    or a0, a0, a3
 ; RV32IMZBS-NEXT:    srli a0, a0, 1
-; RV32IMZBS-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 328(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 336(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 332(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    lw ra, 396(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s0, 392(sp) # 4-byte Folded Reload
@@ -8830,663 +8830,662 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32I-NEXT:    lw t6, 576(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, t6
 ; RV32I-NEXT:    lw t6, 480(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t6
-; RV32I-NEXT:    xor t6, s7, s8
-; RV32I-NEXT:    lw s4, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s9, s4
-; RV32I-NEXT:    lw s6, 488(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s10, s6
+; RV32I-NEXT:    xor t6, a1, t6
+; RV32I-NEXT:    xor s4, s7, s8
+; RV32I-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s9, a1
+; RV32I-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s10, a1
 ; RV32I-NEXT:    xor s1, s5, s1
-; RV32I-NEXT:    lw s5, 208(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s2, s5
-; RV32I-NEXT:    lw s5, 124(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, s5
+; RV32I-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s2, a1
+; RV32I-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s3, a1
 ; RV32I-NEXT:    xor t3, s0, t3
-; RV32I-NEXT:    lw s0, 212(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, s0
-; RV32I-NEXT:    lw s0, 128(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, s0
+; RV32I-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, a1
+; RV32I-NEXT:    lw a1, 128(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t5, a1
 ; RV32I-NEXT:    xor a6, t2, a6
-; RV32I-NEXT:    lw t2, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, t2
-; RV32I-NEXT:    lw t2, 504(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t2
+; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, a1
+; RV32I-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, a1
 ; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a5, 220(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a2, a5
-; RV32I-NEXT:    lw a2, 136(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a2
-; RV32I-NEXT:    lui a2, 209715
-; RV32I-NEXT:    addi s7, a2, 819
-; RV32I-NEXT:    lw a2, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli t2, a2, 2
-; RV32I-NEXT:    and s0, a2, s7
-; RV32I-NEXT:    and t2, t2, s7
+; RV32I-NEXT:    lw a1, 220(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a1
+; RV32I-NEXT:    lw a1, 136(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a1
+; RV32I-NEXT:    lui a1, 209715
+; RV32I-NEXT:    addi s8, a1, 819
+; RV32I-NEXT:    lw a1, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a5, a1, 2
+; RV32I-NEXT:    and t2, a1, s8
+; RV32I-NEXT:    and a5, a5, s8
+; RV32I-NEXT:    slli t2, t2, 2
+; RV32I-NEXT:    or a5, a5, t2
+; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli t2, a1, 2
+; RV32I-NEXT:    and s0, a1, s8
+; RV32I-NEXT:    and t2, t2, s8
 ; RV32I-NEXT:    slli s0, s0, 2
-; RV32I-NEXT:    or t2, t2, s0
-; RV32I-NEXT:    lw a2, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s0, a2, 2
-; RV32I-NEXT:    and s5, a2, s7
-; RV32I-NEXT:    and s0, s0, s7
-; RV32I-NEXT:    slli s5, s5, 2
-; RV32I-NEXT:    or s0, s0, s5
+; RV32I-NEXT:    or s0, t2, s0
 ; RV32I-NEXT:    xor a0, t1, a0
-; RV32I-NEXT:    lw a2, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    xor t1, t6, s4
-; RV32I-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, s6, a2
-; RV32I-NEXT:    lw a2, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s4, a2, 2
-; RV32I-NEXT:    and s5, a2, s7
-; RV32I-NEXT:    and s4, s4, s7
+; RV32I-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t6, a1
+; RV32I-NEXT:    xor t2, s4, s6
+; RV32I-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s7, a1
+; RV32I-NEXT:    lw a1, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s4, a1, 2
+; RV32I-NEXT:    and s5, a1, s8
+; RV32I-NEXT:    and s4, s4, s8
 ; RV32I-NEXT:    slli s5, s5, 2
 ; RV32I-NEXT:    or s4, s4, s5
-; RV32I-NEXT:    lw a2, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s5, a2, 2
-; RV32I-NEXT:    and s6, a2, s7
-; RV32I-NEXT:    and s5, s5, s7
+; RV32I-NEXT:    lw a1, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s5, a1, 2
+; RV32I-NEXT:    and s6, a1, s8
+; RV32I-NEXT:    and s5, s5, s8
 ; RV32I-NEXT:    slli s6, s6, 2
 ; RV32I-NEXT:    or s5, s5, s6
 ; RV32I-NEXT:    xor s1, s1, s2
-; RV32I-NEXT:    lw a2, 152(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s3, a2
+; RV32I-NEXT:    lw a1, 152(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s3, a1
 ; RV32I-NEXT:    xor t3, t3, t4
-; RV32I-NEXT:    lw a2, 148(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t5, a2
+; RV32I-NEXT:    lw a1, 148(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t5, a1
 ; RV32I-NEXT:    xor a6, a6, a7
-; RV32I-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, t0, a2
-; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a2, 156(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a2
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, t1, t6
-; RV32I-NEXT:    xor a5, s1, s2
-; RV32I-NEXT:    xor t0, t3, t4
+; RV32I-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t0, a1
+; RV32I-NEXT:    xor a2, a4, a2
+; RV32I-NEXT:    lw a1, 156(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a1
+; RV32I-NEXT:    xor a0, a0, t1
+; RV32I-NEXT:    xor a4, t2, t6
+; RV32I-NEXT:    xor t0, s1, s2
+; RV32I-NEXT:    xor t1, t3, t4
 ; RV32I-NEXT:    xor a6, a6, a7
+; RV32I-NEXT:    xor a2, a2, a3
+; RV32I-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    lw a3, 680(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a3, a4, a3
-; RV32I-NEXT:    lw a2, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    lw a4, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a1, a4
 ; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a1
+; RV32I-NEXT:    xor a4, t0, a1
 ; RV32I-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, t0, a1
+; RV32I-NEXT:    xor t0, t1, a1
 ; RV32I-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a6, a1
 ; RV32I-NEXT:    sw a1, 712(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a3, a1
+; RV32I-NEXT:    xor a1, a2, a1
 ; RV32I-NEXT:    sw a1, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s2, 349525
-; RV32I-NEXT:    addi s2, s2, 1365
-; RV32I-NEXT:    srli a1, t2, 1
-; RV32I-NEXT:    and a3, t2, s2
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a1, a1, a3
-; RV32I-NEXT:    xor a0, a4, a0
+; RV32I-NEXT:    lui s3, 349525
+; RV32I-NEXT:    addi s3, s3, 1365
+; RV32I-NEXT:    srli a2, a5, 1
+; RV32I-NEXT:    and a5, a5, s3
+; RV32I-NEXT:    and a2, a2, s3
+; RV32I-NEXT:    slli a5, a5, 1
+; RV32I-NEXT:    or a7, a2, a5
+; RV32I-NEXT:    xor a0, a3, a0
 ; RV32I-NEXT:    sw a0, 708(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli a0, s4, 1
-; RV32I-NEXT:    and a3, s4, s2
-; RV32I-NEXT:    and a0, a0, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a2, a0, a3
-; RV32I-NEXT:    xor a0, a7, a5
+; RV32I-NEXT:    and a2, s4, s3
+; RV32I-NEXT:    and a0, a0, s3
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or t2, a0, a2
+; RV32I-NEXT:    xor a0, t0, a4
 ; RV32I-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli a0, s0, 1
-; RV32I-NEXT:    and a3, s0, s2
-; RV32I-NEXT:    and a0, a0, s2
+; RV32I-NEXT:    and a2, s0, s3
+; RV32I-NEXT:    and a0, a0, s3
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or a0, a0, a2
+; RV32I-NEXT:    srli a2, a2, 31
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 31
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a2, s5, 1
+; RV32I-NEXT:    and a3, s5, s3
+; RV32I-NEXT:    and a2, a2, s3
 ; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a0, a0, a3
+; RV32I-NEXT:    or t4, a2, a3
 ; RV32I-NEXT:    srli a3, a3, 31
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 31
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a3, s5, 1
-; RV32I-NEXT:    and a4, s5, s2
-; RV32I-NEXT:    and a3, a3, s2
-; RV32I-NEXT:    slli a4, a4, 1
-; RV32I-NEXT:    or t3, a3, a4
-; RV32I-NEXT:    srli a4, a4, 31
-; RV32I-NEXT:    seqz a3, a4
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a2, 31
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 2
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 1
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 2
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 8
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 3
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 16
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 4
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 32
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 5
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 64
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 6
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 680(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 128
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 7
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 256
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 8
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 512
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 9
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 660(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 1024
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 10
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a5, 436(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a3, a0, a5
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 11
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a6, 1
-; RV32I-NEXT:    and a3, a0, a6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 12
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a7, 2
-; RV32I-NEXT:    and a3, a0, a7
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 13
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t0, 4
-; RV32I-NEXT:    and a3, a0, t0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 14
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 644(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t1, 8
-; RV32I-NEXT:    and a3, a0, t1
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 15
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 652(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t2, 16
-; RV32I-NEXT:    and a3, a0, t2
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 16
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 612(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t4, 32
-; RV32I-NEXT:    and a3, a0, t4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 17
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t5, 64
-; RV32I-NEXT:    and a3, a0, t5
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 18
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t6, 128
-; RV32I-NEXT:    and a3, a0, t6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 19
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s0, 256
-; RV32I-NEXT:    and a3, a0, s0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 20
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s1, 512
-; RV32I-NEXT:    and a3, a0, s1
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 21
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s3, 1024
-; RV32I-NEXT:    and a3, a0, s3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 22
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s4, 2048
-; RV32I-NEXT:    and a3, a0, s4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 23
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s5, 4096
-; RV32I-NEXT:    and a3, a0, s5
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 24
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s6, 8192
-; RV32I-NEXT:    and a3, a0, s6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 25
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s8, 16384
-; RV32I-NEXT:    and a3, a0, s8
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 26
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 32768
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 27
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 65536
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 28
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 600(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 131072
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, a1, 29
-; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    sw a3, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 1
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and a3, a3, a1
-; RV32I-NEXT:    sw a3, 568(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a1, a1, 30
+; RV32I-NEXT:    seqz a2, a3
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t2, 31
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 1
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 4
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 2
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 8
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 3
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 16
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 4
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 32
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 5
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 64
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 6
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 128
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 7
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 256
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 8
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 512
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 9
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 1024
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 10
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a2, a0, a1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 11
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s0, 1
+; RV32I-NEXT:    and a2, a0, s0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 12
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a5, 2
+; RV32I-NEXT:    and a2, a0, a5
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 13
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a6, 4
+; RV32I-NEXT:    and a2, a0, a6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 14
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t0, 8
+; RV32I-NEXT:    and a2, a0, t0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 15
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t1, 16
+; RV32I-NEXT:    and a2, a0, t1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 16
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t3, 32
+; RV32I-NEXT:    and a2, a0, t3
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 17
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t5, 64
+; RV32I-NEXT:    and a2, a0, t5
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 18
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t6, 128
+; RV32I-NEXT:    and a2, a0, t6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 19
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s2, 256
+; RV32I-NEXT:    and a2, a0, s2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 20
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s6, 512
+; RV32I-NEXT:    and a2, a0, s6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 21
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s7, 1024
+; RV32I-NEXT:    and a2, a0, s7
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 22
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s9, 2048
+; RV32I-NEXT:    and a2, a0, s9
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 23
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 4096
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 24
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 8192
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 25
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 16384
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 26
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 32768
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 27
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 65536
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 28
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 131072
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 29
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    and a2, a2, a7
+; RV32I-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a7, a7, 30
 ; RV32I-NEXT:    lui a4, 262144
 ; RV32I-NEXT:    and a0, a0, a4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 2
-; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 4
+; RV32I-NEXT:    and a0, a0, a7
+; RV32I-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 2
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t2, 1
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 8
+; RV32I-NEXT:    andi a0, t4, 4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 3
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t2, 2
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 16
+; RV32I-NEXT:    andi a0, t4, 8
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 4
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 32
+; RV32I-NEXT:    slli a2, t2, 3
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 16
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 5
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t2, 4
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 32
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t2, 5
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 64
+; RV32I-NEXT:    andi a0, t4, 64
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 6
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 128
+; RV32I-NEXT:    slli a2, t2, 6
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 128
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 7
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 256
+; RV32I-NEXT:    slli a2, t2, 7
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 256
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 8
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t2, 8
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 512
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t2, 9
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t4, 1024
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t2, 10
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 512
+; RV32I-NEXT:    and a0, t4, a1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 9
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t2, 11
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t4, s0
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t2, 12
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 1024
+; RV32I-NEXT:    and a0, t4, a5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 10
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a5
+; RV32I-NEXT:    slli a2, t2, 13
+; RV32I-NEXT:    and s11, a0, a2
+; RV32I-NEXT:    and a0, t4, a6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 11
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a6
+; RV32I-NEXT:    slli a2, t2, 14
+; RV32I-NEXT:    and s10, a0, a2
+; RV32I-NEXT:    and a0, t4, t0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 12
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a7
+; RV32I-NEXT:    slli a2, t2, 15
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t4, t1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 13
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, t0
+; RV32I-NEXT:    slli s0, t2, 16
+; RV32I-NEXT:    and a0, a0, s0
+; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t4, t3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 14
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, t1
+; RV32I-NEXT:    slli a2, t2, 17
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t4, t5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 15
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, t2
+; RV32I-NEXT:    slli s1, t2, 18
+; RV32I-NEXT:    and a0, a0, s1
+; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t4, t6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 16
-; RV32I-NEXT:    and s10, a0, a1
-; RV32I-NEXT:    and a0, t3, t4
+; RV32I-NEXT:    slli a5, t2, 19
+; RV32I-NEXT:    and s5, a0, a5
+; RV32I-NEXT:    and a0, t4, s2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 17
-; RV32I-NEXT:    and s9, a0, a1
-; RV32I-NEXT:    and a0, t3, t5
+; RV32I-NEXT:    slli a3, t2, 20
+; RV32I-NEXT:    and s4, a0, a3
+; RV32I-NEXT:    and a0, t4, s6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 18
-; RV32I-NEXT:    and s11, a0, a1
-; RV32I-NEXT:    and a0, t3, t6
+; RV32I-NEXT:    slli a2, t2, 21
+; RV32I-NEXT:    and s6, a0, a2
+; RV32I-NEXT:    and a0, t4, s7
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 19
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s0
+; RV32I-NEXT:    slli a2, t2, 22
+; RV32I-NEXT:    and s7, a0, a2
+; RV32I-NEXT:    and a0, t4, s9
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s0, a2, 20
-; RV32I-NEXT:    and a0, a0, s0
-; RV32I-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s1
+; RV32I-NEXT:    slli a2, t2, 23
+; RV32I-NEXT:    and s9, a0, a2
+; RV32I-NEXT:    lui a0, 4096
+; RV32I-NEXT:    and a0, t4, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s1, a2, 21
-; RV32I-NEXT:    and a0, a0, s1
-; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s3
+; RV32I-NEXT:    slli a2, t2, 24
+; RV32I-NEXT:    and t3, a0, a2
+; RV32I-NEXT:    lui a0, 8192
+; RV32I-NEXT:    and a0, t4, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a2, 22
-; RV32I-NEXT:    and s1, a0, a1
-; RV32I-NEXT:    and a1, t3, s4
-; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a3, a2, 23
-; RV32I-NEXT:    and s0, a1, a3
-; RV32I-NEXT:    and a1, t3, s5
-; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a3, a2, 24
-; RV32I-NEXT:    and s3, a1, a3
-; RV32I-NEXT:    and a3, t3, s6
+; RV32I-NEXT:    slli a2, t2, 25
+; RV32I-NEXT:    and t1, a0, a2
+; RV32I-NEXT:    lui a0, 16384
+; RV32I-NEXT:    and a2, t4, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t2, 26
+; RV32I-NEXT:    and t5, a2, a3
+; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    and a3, t4, a0
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a2, 25
-; RV32I-NEXT:    and s4, a3, a5
-; RV32I-NEXT:    and a5, t3, s8
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a7, a2, 26
-; RV32I-NEXT:    and s5, a5, a7
-; RV32I-NEXT:    lui a0, 32768
-; RV32I-NEXT:    and a5, t3, a0
+; RV32I-NEXT:    slli a5, t2, 27
+; RV32I-NEXT:    and t6, a3, a5
+; RV32I-NEXT:    lui a0, 65536
+; RV32I-NEXT:    and a5, t4, a0
 ; RV32I-NEXT:    seqz a5, a5
 ; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli t0, a2, 27
-; RV32I-NEXT:    and s8, a5, t0
-; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and a5, t3, a0
+; RV32I-NEXT:    slli a6, t2, 28
+; RV32I-NEXT:    and s2, a5, a6
+; RV32I-NEXT:    lui a0, 131072
+; RV32I-NEXT:    and a5, t4, a0
 ; RV32I-NEXT:    seqz a5, a5
 ; RV32I-NEXT:    addi a0, a5, -1
-; RV32I-NEXT:    slli a5, a2, 28
-; RV32I-NEXT:    and s6, a0, a5
-; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and a0, t3, a0
+; RV32I-NEXT:    slli a5, t2, 29
+; RV32I-NEXT:    and s1, a0, a5
+; RV32I-NEXT:    and a0, t4, a4
+; RV32I-NEXT:    andi t4, t4, 1
+; RV32I-NEXT:    seqz t4, t4
+; RV32I-NEXT:    addi t4, t4, -1
+; RV32I-NEXT:    and t4, t4, t2
+; RV32I-NEXT:    slli t2, t2, 30
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli t2, a2, 29
-; RV32I-NEXT:    and t6, a0, t2
-; RV32I-NEXT:    and t2, t3, a4
-; RV32I-NEXT:    andi t3, t3, 1
-; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    addi t3, t3, -1
-; RV32I-NEXT:    and t3, t3, a2
-; RV32I-NEXT:    slli a2, a2, 30
-; RV32I-NEXT:    seqz t2, t2
-; RV32I-NEXT:    addi t2, t2, -1
-; RV32I-NEXT:    and t4, t2, a2
-; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a1, a0
+; RV32I-NEXT:    and s0, a0, t2
 ; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, a1, a0
+; RV32I-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a0, a1
-; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a0, a1
+; RV32I-NEXT:    lw a0, 668(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a0, a1
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 644(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t0, a0, a1
-; RV32I-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a0, a1
-; RV32I-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a0, a1
-; RV32I-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a0, a3
+; RV32I-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 600(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a0, a4
-; RV32I-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a0, a1
-; RV32I-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, a0
+; RV32I-NEXT:    lw a5, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, a0
+; RV32I-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    lw a3, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw ra, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, ra
-; RV32I-NEXT:    xor s9, s10, s9
-; RV32I-NEXT:    xor s0, s1, s0
-; RV32I-NEXT:    xor t4, t6, t4
-; RV32I-NEXT:    xor a7, t5, a7
-; RV32I-NEXT:    lw t5, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t5
-; RV32I-NEXT:    lw t5, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t1, t5
-; RV32I-NEXT:    lw t5, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, t2, t5
-; RV32I-NEXT:    lw t5, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t5
-; RV32I-NEXT:    lw t5, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t5
-; RV32I-NEXT:    lw t5, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, t5
-; RV32I-NEXT:    xor a0, t3, a0
-; RV32I-NEXT:    lw t3, 552(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t3
-; RV32I-NEXT:    lw t3, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, t3
-; RV32I-NEXT:    lw t3, 516(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t3
-; RV32I-NEXT:    xor t3, s9, s11
-; RV32I-NEXT:    xor t5, s0, s3
-; RV32I-NEXT:    lw t6, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, t6
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t1, t0
-; RV32I-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t2, t1
-; RV32I-NEXT:    lw t2, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw ra, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, ra
+; RV32I-NEXT:    xor s10, s11, s10
+; RV32I-NEXT:    xor s4, s5, s4
+; RV32I-NEXT:    xor t1, t3, t1
+; RV32I-NEXT:    xor a6, t2, a6
+; RV32I-NEXT:    lw t2, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t2
+; RV32I-NEXT:    lw t2, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, t2
+; RV32I-NEXT:    lw t2, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t2
+; RV32I-NEXT:    lw t2, 608(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a4, t2
-; RV32I-NEXT:    lw t2, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t2, 580(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, t2
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    lw a3, 496(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, t3, a3
-; RV32I-NEXT:    xor t2, t5, s4
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 652(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t1, t0
-; RV32I-NEXT:    lw t1, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t1
-; RV32I-NEXT:    lw t1, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t1
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 500(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    xor a3, t2, s5
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, t4, a0
+; RV32I-NEXT:    lw t2, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t2
+; RV32I-NEXT:    lw t2, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    lw t2, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, s10, t2
+; RV32I-NEXT:    xor t3, s4, s6
+; RV32I-NEXT:    xor t1, t1, t5
+; RV32I-NEXT:    xor a6, a6, a7
+; RV32I-NEXT:    lw a7, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t0, a7
+; RV32I-NEXT:    lw t0, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t0
+; RV32I-NEXT:    lw t0, 612(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a4, t0
-; RV32I-NEXT:    lw t0, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t0, 584(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, t0
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, a3, s8
-; RV32I-NEXT:    xor a3, a7, a4
-; RV32I-NEXT:    lw a4, 600(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, t2, a2
+; RV32I-NEXT:    xor t0, t3, s7
+; RV32I-NEXT:    xor t1, t1, t6
+; RV32I-NEXT:    lw t2, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t2
+; RV32I-NEXT:    lw t2, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t2
+; RV32I-NEXT:    lw t2, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t2
+; RV32I-NEXT:    lw t2, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t2
+; RV32I-NEXT:    lw t2, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t2
+; RV32I-NEXT:    lw t2, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t2
+; RV32I-NEXT:    lw t2, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t2
+; RV32I-NEXT:    lw t2, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    xor t0, t0, s9
+; RV32I-NEXT:    xor t1, t1, s2
+; RV32I-NEXT:    lw t2, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t2
+; RV32I-NEXT:    lw t2, 596(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t2
+; RV32I-NEXT:    lw t2, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    xor t1, t1, s1
+; RV32I-NEXT:    xor a7, a6, a7
+; RV32I-NEXT:    xor a3, a7, a3
+; RV32I-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a7
+; RV32I-NEXT:    xor a1, a0, a1
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    xor a2, t1, s0
+; RV32I-NEXT:    xor a3, a3, a4
+; RV32I-NEXT:    lw a4, 700(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a5, a4
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, a2, s6
+; RV32I-NEXT:    xor a1, a1, t0
+; RV32I-NEXT:    lw a5, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a5
+; RV32I-NEXT:    lw t0, 720(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a5, a3, t0
+; RV32I-NEXT:    srli a7, a3, 8
 ; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, a3, a6
-; RV32I-NEXT:    xor a0, a0, t4
-; RV32I-NEXT:    srli a2, a1, 8
-; RV32I-NEXT:    srli a3, a1, 24
-; RV32I-NEXT:    slli a4, a1, 24
-; RV32I-NEXT:    lw a5, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a1, a1, a5
-; RV32I-NEXT:    and a2, a2, a5
-; RV32I-NEXT:    or a2, a2, a3
-; RV32I-NEXT:    srli a3, a0, 8
-; RV32I-NEXT:    slli a1, a1, 8
-; RV32I-NEXT:    or a1, a4, a1
-; RV32I-NEXT:    srli a4, a0, 24
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    or a3, a3, a4
-; RV32I-NEXT:    and a4, a0, a5
+; RV32I-NEXT:    and a4, a1, t0
+; RV32I-NEXT:    xor a2, a1, a2
+; RV32I-NEXT:    srli a1, a1, 8
+; RV32I-NEXT:    and a7, a7, t0
+; RV32I-NEXT:    and a1, a1, t0
+; RV32I-NEXT:    slli a6, a6, 24
+; RV32I-NEXT:    slli a5, a5, 8
+; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    srli a3, a3, 24
+; RV32I-NEXT:    or a3, a7, a3
 ; RV32I-NEXT:    slli a0, a0, 24
 ; RV32I-NEXT:    slli a4, a4, 8
 ; RV32I-NEXT:    or a0, a0, a4
+; RV32I-NEXT:    srli a2, a2, 24
 ; RV32I-NEXT:    or a1, a1, a2
-; RV32I-NEXT:    or a0, a0, a3
-; RV32I-NEXT:    srli a2, a1, 4
+; RV32I-NEXT:    or a3, a5, a3
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    srli a1, a3, 4
 ; RV32I-NEXT:    lw a4, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a1, a1, a4
+; RV32I-NEXT:    and a2, a3, a4
 ; RV32I-NEXT:    srli a3, a0, 4
 ; RV32I-NEXT:    and a0, a0, a4
-; RV32I-NEXT:    and a2, a2, a4
+; RV32I-NEXT:    and a1, a1, a4
 ; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    slli a1, a1, 4
+; RV32I-NEXT:    slli a2, a2, 4
 ; RV32I-NEXT:    slli a0, a0, 4
-; RV32I-NEXT:    or a1, a2, a1
+; RV32I-NEXT:    or a1, a1, a2
 ; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    srli a2, a1, 2
-; RV32I-NEXT:    and a1, a1, s7
+; RV32I-NEXT:    and a1, a1, s8
 ; RV32I-NEXT:    srli a3, a0, 2
-; RV32I-NEXT:    and a0, a0, s7
-; RV32I-NEXT:    and a2, a2, s7
-; RV32I-NEXT:    and a3, a3, s7
+; RV32I-NEXT:    and a0, a0, s8
+; RV32I-NEXT:    and a2, a2, s8
+; RV32I-NEXT:    and a3, a3, s8
 ; RV32I-NEXT:    slli a1, a1, 2
 ; RV32I-NEXT:    or a1, a2, a1
 ; RV32I-NEXT:    lui a2, 349525
@@ -9494,8 +9493,8 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    srli a3, a1, 1
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    and a4, a0, s2
+; RV32I-NEXT:    and a1, a1, s3
+; RV32I-NEXT:    and a4, a0, s3
 ; RV32I-NEXT:    srli a0, a0, 1
 ; RV32I-NEXT:    and a3, a3, a2
 ; RV32I-NEXT:    and a0, a0, a2
@@ -10866,9 +10865,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw t4, 12(a0)
 ; RV32IM-NEXT:    lui a1, 16
 ; RV32IM-NEXT:    li a0, 1
-; RV32IM-NEXT:    lui ra, 128
+; RV32IM-NEXT:    lui s11, 128
 ; RV32IM-NEXT:    addi t1, a1, -256
-; RV32IM-NEXT:    slli s3, a0, 11
+; RV32IM-NEXT:    slli s5, a0, 11
 ; RV32IM-NEXT:    srli a5, s0, 8
 ; RV32IM-NEXT:    srli a6, s0, 24
 ; RV32IM-NEXT:    and a3, s0, t1
@@ -10877,27 +10876,27 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    srli a1, s2, 24
 ; RV32IM-NEXT:    and a7, s2, t1
 ; RV32IM-NEXT:    slli a2, s2, 24
-; RV32IM-NEXT:    and s6, s2, s3
-; RV32IM-NEXT:    sw s6, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s4, 1
-; RV32IM-NEXT:    and t0, s2, s4
-; RV32IM-NEXT:    lui s5, 64
-; RV32IM-NEXT:    and s7, s2, s5
+; RV32IM-NEXT:    and s3, s2, s5
+; RV32IM-NEXT:    sw s3, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 1
+; RV32IM-NEXT:    and s4, s2, s6
+; RV32IM-NEXT:    lui s8, 64
+; RV32IM-NEXT:    and s7, s2, s8
 ; RV32IM-NEXT:    sw s7, 556(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a5, a5, t1
 ; RV32IM-NEXT:    or a5, a5, a6
 ; RV32IM-NEXT:    sw a5, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, s2, ra
+; RV32IM-NEXT:    and a5, s2, s11
 ; RV32IM-NEXT:    sw a5, 552(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a3, a3, 8
 ; RV32IM-NEXT:    and a4, a4, t1
 ; RV32IM-NEXT:    slli a7, a7, 8
 ; RV32IM-NEXT:    or a0, a0, a3
 ; RV32IM-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s6
+; RV32IM-NEXT:    mul a0, s1, s3
 ; RV32IM-NEXT:    or a1, a4, a1
 ; RV32IM-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s1, t0
+; RV32IM-NEXT:    mul a1, s1, s4
 ; RV32IM-NEXT:    or a2, a2, a7
 ; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a2, s1, s7
@@ -10908,28 +10907,28 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 32768
 ; RV32IM-NEXT:    lui a2, 16384
-; RV32IM-NEXT:    and s8, s2, a2
-; RV32IM-NEXT:    and s6, s2, a0
-; RV32IM-NEXT:    lui s7, 32768
-; RV32IM-NEXT:    mul a0, s1, s8
-; RV32IM-NEXT:    mul a1, s1, s6
+; RV32IM-NEXT:    and s10, s2, a2
+; RV32IM-NEXT:    and s7, s2, a0
+; RV32IM-NEXT:    lui s3, 32768
+; RV32IM-NEXT:    mul a0, s1, s10
+; RV32IM-NEXT:    mul a1, s1, s7
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t6, s3
+; RV32IM-NEXT:    and a0, t6, s5
 ; RV32IM-NEXT:    mul a0, s0, a0
-; RV32IM-NEXT:    and a1, t6, s4
+; RV32IM-NEXT:    and a1, t6, s6
 ; RV32IM-NEXT:    mul a1, s0, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t6, s5
+; RV32IM-NEXT:    and a0, t6, s8
 ; RV32IM-NEXT:    mul a0, s0, a0
-; RV32IM-NEXT:    and a1, t6, ra
+; RV32IM-NEXT:    and a1, t6, s11
 ; RV32IM-NEXT:    mul a1, s0, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, t6, a2
 ; RV32IM-NEXT:    mul a0, s0, a0
-; RV32IM-NEXT:    and a1, t6, s7
+; RV32IM-NEXT:    and a1, t6, s3
 ; RV32IM-NEXT:    mul a1, s0, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
@@ -10954,65 +10953,64 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    slli a1, t5, 24
 ; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mv a7, s3
-; RV32IM-NEXT:    sw s3, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s9, t5, s3
-; RV32IM-NEXT:    lui a6, 1
-; RV32IM-NEXT:    and t1, t5, a6
-; RV32IM-NEXT:    mul a0, t4, s9
-; RV32IM-NEXT:    mul a1, t4, t1
-; RV32IM-NEXT:    xor s11, a0, a1
-; RV32IM-NEXT:    lui a5, 64
-; RV32IM-NEXT:    and s10, t5, a5
-; RV32IM-NEXT:    and a1, t5, ra
-; RV32IM-NEXT:    mul a0, t4, s10
-; RV32IM-NEXT:    mul a2, t4, a1
-; RV32IM-NEXT:    xor s4, a0, a2
-; RV32IM-NEXT:    lui a4, 16384
-; RV32IM-NEXT:    and s5, t5, a4
-; RV32IM-NEXT:    and a0, t5, s7
-; RV32IM-NEXT:    mul a2, t4, s5
-; RV32IM-NEXT:    mul a3, t4, a0
-; RV32IM-NEXT:    xor s3, a2, a3
-; RV32IM-NEXT:    and a2, t2, a7
-; RV32IM-NEXT:    mul a2, t3, a2
-; RV32IM-NEXT:    and a3, t2, a6
+; RV32IM-NEXT:    sw s5, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and ra, t5, s5
+; RV32IM-NEXT:    lui t0, 1
+; RV32IM-NEXT:    and a3, t5, t0
+; RV32IM-NEXT:    mul a0, t4, ra
+; RV32IM-NEXT:    mul a1, t4, a3
+; RV32IM-NEXT:    xor s6, a0, a1
+; RV32IM-NEXT:    lui a7, 64
+; RV32IM-NEXT:    and a2, t5, a7
+; RV32IM-NEXT:    and a1, t5, s11
+; RV32IM-NEXT:    mul a0, t4, a2
+; RV32IM-NEXT:    mul a4, t4, a1
+; RV32IM-NEXT:    xor t1, a0, a4
+; RV32IM-NEXT:    lui a6, 16384
+; RV32IM-NEXT:    and s9, t5, a6
+; RV32IM-NEXT:    and a0, t5, s3
+; RV32IM-NEXT:    mul a4, t4, s9
+; RV32IM-NEXT:    mul a5, t4, a0
+; RV32IM-NEXT:    xor s8, a4, a5
+; RV32IM-NEXT:    and a4, t2, s5
+; RV32IM-NEXT:    mul a4, t3, a4
+; RV32IM-NEXT:    and a5, t2, t0
+; RV32IM-NEXT:    mul a5, t3, a5
+; RV32IM-NEXT:    xor a5, a4, a5
+; RV32IM-NEXT:    and a4, t2, a7
+; RV32IM-NEXT:    mul a4, t3, a4
+; RV32IM-NEXT:    and s11, t2, s11
+; RV32IM-NEXT:    mul s11, t3, s11
+; RV32IM-NEXT:    xor a4, a4, s11
+; RV32IM-NEXT:    and s11, t2, a6
+; RV32IM-NEXT:    mul s11, t3, s11
+; RV32IM-NEXT:    and s3, t2, s3
+; RV32IM-NEXT:    mul s3, t3, s3
+; RV32IM-NEXT:    xor s11, s11, s3
+; RV32IM-NEXT:    lw a6, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s3, s0, a6
+; RV32IM-NEXT:    mul s4, s0, s4
+; RV32IM-NEXT:    xor a6, s3, s4
+; RV32IM-NEXT:    sw a6, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a6, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s3, s0, a6
+; RV32IM-NEXT:    lw a6, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t0, s0, a6
+; RV32IM-NEXT:    xor a6, s3, t0
+; RV32IM-NEXT:    sw a6, 364(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, s0, s10
+; RV32IM-NEXT:    mul a6, s0, s7
+; RV32IM-NEXT:    xor a6, a7, a6
+; RV32IM-NEXT:    sw a6, 332(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, t3, ra
 ; RV32IM-NEXT:    mul a3, t3, a3
-; RV32IM-NEXT:    xor a3, a2, a3
-; RV32IM-NEXT:    and a2, t2, a5
+; RV32IM-NEXT:    xor a3, a6, a3
+; RV32IM-NEXT:    sw a3, 560(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a2, t3, a2
-; RV32IM-NEXT:    and ra, t2, ra
-; RV32IM-NEXT:    mul ra, t3, ra
-; RV32IM-NEXT:    xor a2, a2, ra
-; RV32IM-NEXT:    and ra, t2, a4
-; RV32IM-NEXT:    mul ra, t3, ra
-; RV32IM-NEXT:    and s7, t2, s7
-; RV32IM-NEXT:    mul s7, t3, s7
-; RV32IM-NEXT:    xor a7, ra, s7
-; RV32IM-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul s7, s0, a4
-; RV32IM-NEXT:    mul t0, s0, t0
-; RV32IM-NEXT:    xor a4, s7, t0
-; RV32IM-NEXT:    sw a4, 380(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t0, s0, a4
-; RV32IM-NEXT:    lw a4, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a6, s0, a4
-; RV32IM-NEXT:    xor a4, t0, a6
-; RV32IM-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s0, s8
-; RV32IM-NEXT:    mul a4, s0, s6
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    sw a4, 332(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, s9
-; RV32IM-NEXT:    mul a5, t3, t1
-; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, s10
 ; RV32IM-NEXT:    mul a1, t3, a1
-; RV32IM-NEXT:    xor a1, a4, a1
+; RV32IM-NEXT:    xor a1, a2, a1
 ; RV32IM-NEXT:    sw a1, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t3, s5
+; RV32IM-NEXT:    mul a1, t3, s9
 ; RV32IM-NEXT:    mul a0, t3, a0
 ; RV32IM-NEXT:    xor a0, a1, a0
 ; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
@@ -11034,271 +11032,272 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lui a0, 256
 ; RV32IM-NEXT:    and a0, s2, a0
 ; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 256
+; RV32IM-NEXT:    lui a7, 256
 ; RV32IM-NEXT:    mul a0, s1, a0
-; RV32IM-NEXT:    lw a5, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a5, a0
+; RV32IM-NEXT:    lw a3, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a3, a0
 ; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a6, 65536
 ; RV32IM-NEXT:    and a0, s2, a6
 ; RV32IM-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s1, a0
-; RV32IM-NEXT:    lw t1, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, t1, a5
+; RV32IM-NEXT:    mul a3, s1, a0
+; RV32IM-NEXT:    lw t0, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, t0, a3
 ; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t1, 2
-; RV32IM-NEXT:    and a5, t6, t1
-; RV32IM-NEXT:    mul a5, s0, a5
-; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, t6, t0
-; RV32IM-NEXT:    mul a5, s0, a5
-; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, t6, a6
-; RV32IM-NEXT:    lui t0, 65536
-; RV32IM-NEXT:    mul a5, s0, a5
-; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t5, t1
-; RV32IM-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, t4, a0
-; RV32IM-NEXT:    xor a0, s11, a6
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 256
-; RV32IM-NEXT:    and a0, t5, a5
-; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, t4, a0
-; RV32IM-NEXT:    xor a0, s4, a6
-; RV32IM-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t5, t0
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, t4, a0
-; RV32IM-NEXT:    mv ra, t4
-; RV32IM-NEXT:    xor a0, s3, a6
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, t2, t1
+; RV32IM-NEXT:    lui a0, 2
+; RV32IM-NEXT:    and a3, t6, a0
+; RV32IM-NEXT:    mul a3, s0, a3
+; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, t6, a7
+; RV32IM-NEXT:    mul a3, s0, a3
+; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, t6, a6
+; RV32IM-NEXT:    lui a7, 65536
+; RV32IM-NEXT:    mul a3, s0, a3
+; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a1, a2, a1
+; RV32IM-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a1, a2, a1
+; RV32IM-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a1, t5, a0
+; RV32IM-NEXT:    sw a1, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t4, 232(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, t4, a1
+; RV32IM-NEXT:    xor a1, s6, a6
+; RV32IM-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a3, 256
+; RV32IM-NEXT:    and a1, t5, a3
+; RV32IM-NEXT:    sw a1, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, t4, a1
+; RV32IM-NEXT:    xor a1, t1, a6
+; RV32IM-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a1, t5, a7
+; RV32IM-NEXT:    sw a1, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, t4, a1
+; RV32IM-NEXT:    xor a1, s8, a6
+; RV32IM-NEXT:    sw a1, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, t2, a0
 ; RV32IM-NEXT:    mul a6, t3, a6
-; RV32IM-NEXT:    xor a0, a3, a6
+; RV32IM-NEXT:    xor a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, t2, a5
-; RV32IM-NEXT:    mul a3, t3, a3
-; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t2, t0
-; RV32IM-NEXT:    mul a2, t3, a2
-; RV32IM-NEXT:    xor a0, a7, a2
+; RV32IM-NEXT:    and a5, t2, a3
+; RV32IM-NEXT:    mul a5, t3, a5
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, t2, a7
+; RV32IM-NEXT:    mul a4, t3, a4
+; RV32IM-NEXT:    xor a0, s11, a4
 ; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 2
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 2
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 2
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 2
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 1
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 1
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 4
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 4
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 4
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 4
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 2
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 2
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 8
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 8
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 8
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 8
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 3
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 3
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 16
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 16
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 16
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 16
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 4
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 4
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 32
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 32
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 32
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 32
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 5
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 5
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 64
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 64
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 64
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 64
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 6
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 6
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 128
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 128
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 128
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 128
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 7
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 7
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 256
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 256
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 256
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 256
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 8
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 340(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 8
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 512
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t6, 512
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    andi a4, s2, 512
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, t6, 512
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 9
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, s0, 9
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a5, a6
 ; RV32IM-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s11, 4
+; RV32IM-NEXT:    lui a3, 4
 ; RV32IM-NEXT:    lui a0, 8
 ; RV32IM-NEXT:    lui a1, 32
-; RV32IM-NEXT:    lui a2, 512
-; RV32IM-NEXT:    lui a4, 1024
-; RV32IM-NEXT:    lui t4, 2048
-; RV32IM-NEXT:    lui s6, 4096
-; RV32IM-NEXT:    lui s7, 8192
-; RV32IM-NEXT:    lui s8, 131072
-; RV32IM-NEXT:    lui s9, 262144
-; RV32IM-NEXT:    lui s10, 524288
-; RV32IM-NEXT:    andi a3, s2, 1
-; RV32IM-NEXT:    andi a5, s2, 1024
-; RV32IM-NEXT:    sw a5, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, s2, s11
+; RV32IM-NEXT:    lui s4, 512
+; RV32IM-NEXT:    lui s5, 1024
+; RV32IM-NEXT:    lui a2, 2048
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    lui s8, 8192
+; RV32IM-NEXT:    lui t0, 131072
+; RV32IM-NEXT:    lui s10, 262144
+; RV32IM-NEXT:    lui s11, 524288
+; RV32IM-NEXT:    andi a5, s2, 1
+; RV32IM-NEXT:    andi a6, s2, 1024
+; RV32IM-NEXT:    sw a6, 356(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s2, a3
+; RV32IM-NEXT:    lui ra, 4
 ; RV32IM-NEXT:    and a7, s2, a0
-; RV32IM-NEXT:    lui a5, 16
-; RV32IM-NEXT:    and t0, s2, a5
-; RV32IM-NEXT:    and t1, s2, a1
-; RV32IM-NEXT:    and s3, s2, a2
-; RV32IM-NEXT:    and s4, s2, a4
-; RV32IM-NEXT:    and s5, s2, t4
-; RV32IM-NEXT:    and s6, s2, s6
-; RV32IM-NEXT:    and s7, s2, s7
+; RV32IM-NEXT:    lui a3, 16
+; RV32IM-NEXT:    and t1, s2, a3
+; RV32IM-NEXT:    and s3, s2, a1
+; RV32IM-NEXT:    and s4, s2, s4
+; RV32IM-NEXT:    lui t4, 512
+; RV32IM-NEXT:    and s5, s2, s5
+; RV32IM-NEXT:    and s6, s2, a2
+; RV32IM-NEXT:    and s7, s2, a4
 ; RV32IM-NEXT:    and s8, s2, s8
-; RV32IM-NEXT:    and s9, s2, s9
-; RV32IM-NEXT:    and s2, s2, s10
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    andi s10, t6, 1
-; RV32IM-NEXT:    seqz s10, s10
-; RV32IM-NEXT:    and s11, t6, s11
-; RV32IM-NEXT:    mul s11, s0, s11
-; RV32IM-NEXT:    sw s11, 292(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and s9, s2, t0
+; RV32IM-NEXT:    and s10, s2, s10
+; RV32IM-NEXT:    and s2, s2, s11
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    andi s11, t6, 1
+; RV32IM-NEXT:    seqz s11, s11
+; RV32IM-NEXT:    and ra, t6, ra
+; RV32IM-NEXT:    mul ra, s0, ra
+; RV32IM-NEXT:    sw ra, 292(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and ra, t6, a0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, a5
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a3
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, a1
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a1
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, a2
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, t4
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 284(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, a4
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    lui a0, 1024
+; RV32IM-NEXT:    and ra, t6, a0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t6, t4
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a2
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 4096
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a4
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 8192
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 131072
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, t0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 272(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 262144
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 312(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 524288
-; RV32IM-NEXT:    and s11, t6, a0
-; RV32IM-NEXT:    mul a0, s0, s11
+; RV32IM-NEXT:    and ra, t6, a0
+; RV32IM-NEXT:    mul a0, s0, ra
 ; RV32IM-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a4, s0, a0
+; RV32IM-NEXT:    mul a2, s0, a0
 ; RV32IM-NEXT:    mul a0, s1, a6
 ; RV32IM-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s0, a6
@@ -11307,74 +11306,74 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s0, a7
 ; RV32IM-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, t0
+; RV32IM-NEXT:    mul a0, s1, t1
 ; RV32IM-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, t0
+; RV32IM-NEXT:    mul a0, s0, t1
 ; RV32IM-NEXT:    sw a0, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, t1
+; RV32IM-NEXT:    mul a0, s1, s3
 ; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, t1
+; RV32IM-NEXT:    mul a0, s0, s3
 ; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a1, s0, a0
-; RV32IM-NEXT:    mul a0, s1, s3
+; RV32IM-NEXT:    mul a0, s1, s4
 ; RV32IM-NEXT:    sw a0, 256(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, s3
+; RV32IM-NEXT:    mul a0, s0, s4
 ; RV32IM-NEXT:    sw a0, 276(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s4
+; RV32IM-NEXT:    mul a0, s1, s5
 ; RV32IM-NEXT:    sw a0, 296(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, s4
+; RV32IM-NEXT:    mul a0, s0, s5
 ; RV32IM-NEXT:    sw a0, 320(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s5
+; RV32IM-NEXT:    mul a0, s1, s6
 ; RV32IM-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, s5
+; RV32IM-NEXT:    mul a0, s0, s6
 ; RV32IM-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s6
+; RV32IM-NEXT:    mul a0, s1, s7
 ; RV32IM-NEXT:    sw a0, 432(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, s6
+; RV32IM-NEXT:    mul a0, s0, s7
 ; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s7
+; RV32IM-NEXT:    mul a0, s1, s8
 ; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s0, s7
+; RV32IM-NEXT:    mul a0, s0, s8
 ; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a0, s0, a0
-; RV32IM-NEXT:    mul a2, s1, s8
-; RV32IM-NEXT:    sw a2, 252(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s0, s8
-; RV32IM-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s1, s9
-; RV32IM-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s0, s9
-; RV32IM-NEXT:    sw a2, 304(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s1, s2
-; RV32IM-NEXT:    sw a2, 336(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s0, s2
-; RV32IM-NEXT:    sw a2, 384(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    addi s10, s10, -1
+; RV32IM-NEXT:    mul a3, s1, s9
+; RV32IM-NEXT:    sw a3, 252(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s0, s9
+; RV32IM-NEXT:    sw a3, 268(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s1, s10
+; RV32IM-NEXT:    sw a3, 280(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s0, s10
+; RV32IM-NEXT:    sw a3, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s1, s2
+; RV32IM-NEXT:    sw a3, 336(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s0, s2
+; RV32IM-NEXT:    sw a3, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    addi s11, s11, -1
 ; RV32IM-NEXT:    slli a6, s1, 10
-; RV32IM-NEXT:    and s1, a3, s1
-; RV32IM-NEXT:    sw s1, 232(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, s10, s0
-; RV32IM-NEXT:    sw a2, 240(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, a3, s0
-; RV32IM-NEXT:    sw a3, 260(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s1, a5, s1
+; RV32IM-NEXT:    sw s1, 228(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, s11, s0
+; RV32IM-NEXT:    sw a3, 240(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a5, s0
+; RV32IM-NEXT:    sw a5, 260(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli s0, s0, 10
-; RV32IM-NEXT:    andi a3, t6, 1024
-; RV32IM-NEXT:    lw a2, 356(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and a5, a2, a6
-; RV32IM-NEXT:    sw a5, 308(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, a3, s0
-; RV32IM-NEXT:    sw a3, 316(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, a2, s0
-; RV32IM-NEXT:    sw a2, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 380(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a4
+; RV32IM-NEXT:    andi a5, t6, 1024
+; RV32IM-NEXT:    lw a3, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    seqz a4, a3
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    and a3, a4, a6
+; RV32IM-NEXT:    sw a3, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a5, s0
+; RV32IM-NEXT:    sw a5, 316(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a4, s0
+; RV32IM-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a3, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a3, a2
 ; RV32IM-NEXT:    sw a2, 380(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a2, 364(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
@@ -11388,12 +11387,13 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 1
+; RV32IM-NEXT:    lw a3, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    slli a2, a3, 1
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 208(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 1
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 224(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 220(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 248(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 4
@@ -11402,255 +11402,252 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 2
+; RV32IM-NEXT:    slli a2, a3, 2
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 2
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 204(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 200(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 228(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 224(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 8
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 3
+; RV32IM-NEXT:    slli a2, a3, 3
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 160(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 3
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 172(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 16
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 4
+; RV32IM-NEXT:    slli a2, a3, 4
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 132(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 4
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 148(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 144(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 180(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 32
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 5
+; RV32IM-NEXT:    slli a2, a3, 5
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 112(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 5
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 120(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 64
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 6
+; RV32IM-NEXT:    slli a2, a3, 6
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 180(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 176(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 6
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 196(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 192(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 216(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 212(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 128
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 7
+; RV32IM-NEXT:    slli a2, a3, 7
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 84(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 80(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 7
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 88(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 108(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 256
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 256
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 8
+; RV32IM-NEXT:    slli a2, a3, 8
 ; RV32IM-NEXT:    and a2, a0, a2
 ; RV32IM-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 8
 ; RV32IM-NEXT:    and a1, a1, a2
 ; RV32IM-NEXT:    sw a1, 72(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 96(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 512
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t2, 512
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 9
+; RV32IM-NEXT:    slli a2, a3, 9
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 104(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t3, 9
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 108(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mv a7, t5
+; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a1, t5, 1
 ; RV32IM-NEXT:    andi a0, t5, 1024
-; RV32IM-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s9, 4
-; RV32IM-NEXT:    and a4, t5, s9
+; RV32IM-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 4
+; RV32IM-NEXT:    and a4, t5, t1
 ; RV32IM-NEXT:    lui s10, 8
-; RV32IM-NEXT:    and t0, t5, s10
-; RV32IM-NEXT:    lui t1, 16
-; RV32IM-NEXT:    and t6, t5, t1
-; RV32IM-NEXT:    lui s8, 32
-; RV32IM-NEXT:    and s1, t5, s8
-; RV32IM-NEXT:    lui s5, 512
-; RV32IM-NEXT:    and s3, t5, s5
-; RV32IM-NEXT:    lui s6, 1024
-; RV32IM-NEXT:    and s11, t5, s6
-; RV32IM-NEXT:    lui s7, 2048
-; RV32IM-NEXT:    and a0, t5, s7
-; RV32IM-NEXT:    lui t4, 4096
-; RV32IM-NEXT:    and a2, t5, t4
-; RV32IM-NEXT:    lui t5, 8192
-; RV32IM-NEXT:    and a3, a7, t5
-; RV32IM-NEXT:    lui s2, 131072
-; RV32IM-NEXT:    and a5, a7, s2
-; RV32IM-NEXT:    lui s4, 262144
-; RV32IM-NEXT:    and a6, a7, s4
-; RV32IM-NEXT:    lui s0, 524288
-; RV32IM-NEXT:    and a7, a7, s0
+; RV32IM-NEXT:    and a5, t5, s10
+; RV32IM-NEXT:    lui s2, 16
+; RV32IM-NEXT:    and t6, t5, s2
+; RV32IM-NEXT:    lui s9, 32
+; RV32IM-NEXT:    and s1, t5, s9
+; RV32IM-NEXT:    and s3, t5, t4
+; RV32IM-NEXT:    lui s0, 1024
+; RV32IM-NEXT:    and s11, t5, s0
+; RV32IM-NEXT:    lui s8, 2048
+; RV32IM-NEXT:    and a0, t5, s8
+; RV32IM-NEXT:    lui ra, 4096
+; RV32IM-NEXT:    and a2, t5, ra
+; RV32IM-NEXT:    lui s4, 8192
+; RV32IM-NEXT:    and a6, t5, s4
+; RV32IM-NEXT:    lui s5, 131072
+; RV32IM-NEXT:    and a7, t5, s5
+; RV32IM-NEXT:    lui s6, 262144
+; RV32IM-NEXT:    and t0, t5, s6
+; RV32IM-NEXT:    lui s7, 524288
+; RV32IM-NEXT:    and t5, t5, s7
 ; RV32IM-NEXT:    seqz a1, a1
-; RV32IM-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 52(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a1, t2, 1
 ; RV32IM-NEXT:    seqz a1, a1
-; RV32IM-NEXT:    sw a1, 52(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mv a1, t2
-; RV32IM-NEXT:    and t2, t2, s9
-; RV32IM-NEXT:    mul t2, t3, t2
-; RV32IM-NEXT:    sw t2, 32(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, t2, t1
+; RV32IM-NEXT:    mul t1, t3, t2
+; RV32IM-NEXT:    sw t1, 32(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and t2, a1, s10
-; RV32IM-NEXT:    mul t2, t3, t2
-; RV32IM-NEXT:    sw t2, 80(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, t1
 ; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 192(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s8
+; RV32IM-NEXT:    sw t1, 76(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, a1, s2
 ; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 236(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s5
+; RV32IM-NEXT:    sw t1, 188(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, a1, s9
+; RV32IM-NEXT:    mul t2, t3, t2
+; RV32IM-NEXT:    sw t2, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, a1, t4
 ; RV32IM-NEXT:    mul t1, t3, t2
 ; RV32IM-NEXT:    sw t1, 24(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s6
+; RV32IM-NEXT:    and t2, a1, s0
 ; RV32IM-NEXT:    mul t1, t3, t2
 ; RV32IM-NEXT:    sw t1, 68(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s7
-; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 164(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, t4
-; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 220(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, t5
+; RV32IM-NEXT:    and t2, a1, s8
 ; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 244(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s2
+; RV32IM-NEXT:    sw t1, 160(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, a1, ra
 ; RV32IM-NEXT:    mul t1, t3, t2
-; RV32IM-NEXT:    sw t1, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t1, 216(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and t2, a1, s4
+; RV32IM-NEXT:    mul t2, t3, t2
+; RV32IM-NEXT:    sw t2, 244(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t2, a1, s5
+; RV32IM-NEXT:    mul s4, t3, t2
+; RV32IM-NEXT:    and t2, a1, s6
 ; RV32IM-NEXT:    mul t1, t3, t2
 ; RV32IM-NEXT:    sw t1, 48(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t2, a1, s0
-; RV32IM-NEXT:    mv t5, a1
+; RV32IM-NEXT:    and t2, a1, s7
+; RV32IM-NEXT:    mv s2, a1
 ; RV32IM-NEXT:    mul a1, t3, t2
-; RV32IM-NEXT:    sw a1, 140(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 136(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 440(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a1, t3, a1
-; RV32IM-NEXT:    mul s9, ra, a4
-; RV32IM-NEXT:    mul a4, t3, a4
-; RV32IM-NEXT:    sw a4, 20(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, ra, t0
-; RV32IM-NEXT:    sw a4, 40(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, t0
-; RV32IM-NEXT:    sw a4, 56(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, ra, t6
-; RV32IM-NEXT:    sw a4, 120(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, t6
-; RV32IM-NEXT:    sw a4, 144(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, ra, s1
-; RV32IM-NEXT:    sw a4, 172(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, s1
-; RV32IM-NEXT:    sw a4, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mv t2, a3
+; RV32IM-NEXT:    mul s9, a3, a4
+; RV32IM-NEXT:    mul a3, t3, a4
+; RV32IM-NEXT:    sw a3, 20(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t2, a5
+; RV32IM-NEXT:    sw a3, 40(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t3, a5
+; RV32IM-NEXT:    sw a3, 56(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t2, t6
+; RV32IM-NEXT:    sw a3, 116(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t3, t6
+; RV32IM-NEXT:    sw a3, 140(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t2, s1
+; RV32IM-NEXT:    sw a3, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t3, s1
+; RV32IM-NEXT:    sw a3, 440(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a4, 456(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a4, t3, a4
-; RV32IM-NEXT:    mul s8, ra, s3
-; RV32IM-NEXT:    mul t0, t3, s3
-; RV32IM-NEXT:    sw t0, 8(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t0, ra, s11
-; RV32IM-NEXT:    sw t0, 28(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t0, t3, s11
-; RV32IM-NEXT:    sw t0, 44(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t0, ra, a0
-; RV32IM-NEXT:    sw t0, 100(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s8, t2, s3
+; RV32IM-NEXT:    mul a5, t3, s3
+; RV32IM-NEXT:    mul a3, t2, s11
+; RV32IM-NEXT:    sw a3, 28(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t3, s11
+; RV32IM-NEXT:    sw a3, 44(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t2, a0
+; RV32IM-NEXT:    sw a3, 96(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t3, a0
-; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, ra, a2
-; RV32IM-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, t2, a2
+; RV32IM-NEXT:    sw a0, 148(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t3, a2
-; RV32IM-NEXT:    sw a0, 168(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, ra, a3
-; RV32IM-NEXT:    sw a0, 188(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a3
+; RV32IM-NEXT:    sw a0, 164(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, t2, a6
+; RV32IM-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, t3, a6
 ; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul s11, t3, a0
-; RV32IM-NEXT:    mul s6, ra, a5
-; RV32IM-NEXT:    mul a0, t3, a5
-; RV32IM-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, ra, a6
+; RV32IM-NEXT:    mul s6, t2, a7
+; RV32IM-NEXT:    mul a0, t3, a7
+; RV32IM-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, t2, t0
 ; RV32IM-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a6
+; RV32IM-NEXT:    mul a0, t3, t0
 ; RV32IM-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, ra, a7
-; RV32IM-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a7
+; RV32IM-NEXT:    mul a0, t2, t5
+; RV32IM-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, t3, t5
 ; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t4, 60(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t4, 52(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    addi t4, t4, -1
-; RV32IM-NEXT:    lw t1, 52(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t1, 8(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli a7, ra, 10
-; RV32IM-NEXT:    and a0, t4, ra
+; RV32IM-NEXT:    slli t0, t2, 10
+; RV32IM-NEXT:    and a0, t4, t2
 ; RV32IM-NEXT:    and t1, t1, t3
 ; RV32IM-NEXT:    and a3, t4, t3
 ; RV32IM-NEXT:    slli t3, t3, 10
-; RV32IM-NEXT:    andi t4, t5, 1024
-; RV32IM-NEXT:    lw a2, 76(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    andi t4, s2, 1024
+; RV32IM-NEXT:    lw a2, 60(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    seqz s0, a2
 ; RV32IM-NEXT:    seqz t4, t4
 ; RV32IM-NEXT:    addi s0, s0, -1
 ; RV32IM-NEXT:    addi ra, t4, -1
-; RV32IM-NEXT:    and a2, s0, a7
+; RV32IM-NEXT:    and a2, s0, t0
 ; RV32IM-NEXT:    sw a2, 52(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, ra, t3
 ; RV32IM-NEXT:    sw a2, 60(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, s0, t3
-; RV32IM-NEXT:    sw a2, 76(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
 ; RV32IM-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
@@ -11661,7 +11658,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    xor a1, a1, s11
 ; RV32IM-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 228(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
 ; RV32IM-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
@@ -11703,11 +11700,11 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 348(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    sw a1, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 368(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 292(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    sw a1, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 360(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 284(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
@@ -11716,34 +11713,34 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a2, 272(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
 ; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 160(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 156(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s10, a0, a1
-; RV32IM-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 116(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 112(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, a0, a1
-; RV32IM-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 64(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s9, a0, s9
 ; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s8, a0, s8
 ; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s6, a0, s6
-; RV32IM-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, t1, a0
-; RV32IM-NEXT:    lw a0, 204(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 176(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 172(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, a0, a1
-; RV32IM-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 124(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, a0, s0
-; RV32IM-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw s1, 72(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, a0, s1
 ; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
@@ -11753,8 +11750,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s3, a0, a1
 ; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, a0, a1
+; RV32IM-NEXT:    xor s4, a0, s4
 ; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 260(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, a1, a0
@@ -11778,22 +11774,21 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    xor t4, a1, a0
 ; RV32IM-NEXT:    lw a0, 248(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a6, a3, a0
-; RV32IM-NEXT:    lw a0, 228(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 204(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 180(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 152(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 108(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 96(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 104(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 92(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a3
 ; RV32IM-NEXT:    lw a3, 20(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a4, a3
-; RV32IM-NEXT:    lw a4, 8(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    lw a5, 4(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    lw a5, 12(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw ra, 552(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, ra, a5
 ; RV32IM-NEXT:    lw ra, 512(sp) # 4-byte Folded Reload
@@ -11811,7 +11806,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw ra, 300(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw s5, 396(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 448(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw ra, 436(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 296(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw s5, 596(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
@@ -11829,11 +11824,11 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    xor ra, s5, ra
 ; RV32IM-NEXT:    sw ra, 404(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 368(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
 ; RV32IM-NEXT:    sw ra, 400(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 344(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 368(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 360(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
 ; RV32IM-NEXT:    sw ra, 396(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 328(sp) # 4-byte Folded Reload
@@ -11846,11 +11841,11 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw s5, 592(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s10, s5, s10
 ; RV32IM-NEXT:    sw s10, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s10, 180(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 176(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s10, s11, s10
 ; RV32IM-NEXT:    sw s10, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s10, 104(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 100(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 348(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s5, s5, s10
 ; RV32IM-NEXT:    sw s5, 580(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw s5, 40(sp) # 4-byte Folded Reload
@@ -11864,13 +11859,13 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw s5, 568(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor t6, s7, t6
 ; RV32IM-NEXT:    sw t6, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 192(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s0, t6
 ; RV32IM-NEXT:    sw t6, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 112(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 108(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s1, t6
 ; RV32IM-NEXT:    sw t6, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 80(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 76(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s2, t6
 ; RV32IM-NEXT:    sw t6, 552(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw t6, 68(sp) # 4-byte Folded Reload
@@ -11898,9 +11893,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw a7, 512(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a6, a0
 ; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, a1, a0
-; RV32IM-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a0
 ; RV32IM-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a3, a0
@@ -11911,20 +11906,20 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a5, a0
 ; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t1, 61681
-; RV32IM-NEXT:    addi t1, t1, -241
-; RV32IM-NEXT:    sw t1, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t0, 61681
+; RV32IM-NEXT:    addi t0, t0, -241
+; RV32IM-NEXT:    sw t0, 448(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli a3, a0, 4
-; RV32IM-NEXT:    and a4, a0, t1
-; RV32IM-NEXT:    and a3, a3, t1
+; RV32IM-NEXT:    and a4, a0, t0
+; RV32IM-NEXT:    and a3, a3, t0
 ; RV32IM-NEXT:    slli a4, a4, 4
 ; RV32IM-NEXT:    or a3, a3, a4
 ; RV32IM-NEXT:    sw a3, 600(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli a4, a0, 4
-; RV32IM-NEXT:    and a7, a0, t1
-; RV32IM-NEXT:    and a4, a4, t1
+; RV32IM-NEXT:    and a7, a0, t0
+; RV32IM-NEXT:    and a4, a4, t0
 ; RV32IM-NEXT:    slli a7, a7, 4
 ; RV32IM-NEXT:    or a0, a4, a7
 ; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
@@ -11935,11 +11930,11 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a1, 464(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s4, a1, a0
 ; RV32IM-NEXT:    lw a0, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s5, a1, a0
 ; RV32IM-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a1, a0
+; RV32IM-NEXT:    xor s7, a1, a0
 ; RV32IM-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
@@ -11961,29 +11956,29 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli a7, a0, 4
-; RV32IM-NEXT:    and t0, a0, t1
-; RV32IM-NEXT:    and a7, a7, t1
-; RV32IM-NEXT:    slli t0, t0, 4
-; RV32IM-NEXT:    or s6, a7, t0
+; RV32IM-NEXT:    and t1, a0, t0
+; RV32IM-NEXT:    and a7, a7, t0
+; RV32IM-NEXT:    slli t1, t1, 4
+; RV32IM-NEXT:    or s6, a7, t1
 ; RV32IM-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t0, a0, 4
-; RV32IM-NEXT:    and ra, a0, t1
-; RV32IM-NEXT:    and t0, t0, t1
+; RV32IM-NEXT:    srli t1, a0, 4
+; RV32IM-NEXT:    and ra, a0, t0
+; RV32IM-NEXT:    and t1, t1, t0
 ; RV32IM-NEXT:    slli ra, ra, 4
-; RV32IM-NEXT:    or s7, t0, ra
+; RV32IM-NEXT:    or s8, t1, ra
 ; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, a0, a1
 ; RV32IM-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t4, a1, a0
-; RV32IM-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, a1, a0
-; RV32IM-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, a1, a0
-; RV32IM-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
 ; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
@@ -11993,13 +11988,13 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, a1, a0
-; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a1, a0
-; RV32IM-NEXT:    lw a0, 164(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a1, a0
-; RV32IM-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
 ; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
@@ -12021,12 +12016,12 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, a0, s11
-; RV32IM-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 232(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a2, a0
-; RV32IM-NEXT:    lw a1, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 140(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    lw a2, 128(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 124(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw ra, 500(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, ra, a2
 ; RV32IM-NEXT:    lw ra, 480(sp) # 4-byte Folded Reload
@@ -12036,21 +12031,21 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    lw s9, 452(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s5, s5, s9
 ; RV32IM-NEXT:    lw s9, 432(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, s8, s9
+; RV32IM-NEXT:    xor s7, s7, s9
 ; RV32IM-NEXT:    xor s2, s3, s2
 ; RV32IM-NEXT:    lw s3, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, s0, s3
 ; RV32IM-NEXT:    lw s3, 508(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, s1, s3
 ; RV32IM-NEXT:    xor t4, t6, t4
-; RV32IM-NEXT:    lw t6, 172(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 168(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, t5, t6
-; RV32IM-NEXT:    lw t6, 152(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 148(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, t3, t6
 ; RV32IM-NEXT:    xor t1, t2, t1
 ; RV32IM-NEXT:    lw t2, 236(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a7, t2
-; RV32IM-NEXT:    lw t2, 220(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t2, 216(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, t0, t2
 ; RV32IM-NEXT:    xor a3, a6, a3
 ; RV32IM-NEXT:    lw a6, 488(sp) # 4-byte Folded Reload
@@ -12060,16 +12055,16 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    xor a0, s11, a0
 ; RV32IM-NEXT:    lw a6, 440(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a6
-; RV32IM-NEXT:    lw a6, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 164(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a6
 ; RV32IM-NEXT:    xor a6, s4, s5
 ; RV32IM-NEXT:    lw t2, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, s8, t2
+; RV32IM-NEXT:    xor t2, s7, t2
 ; RV32IM-NEXT:    xor t6, s2, s0
 ; RV32IM-NEXT:    lw s0, 532(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, s1, s0
 ; RV32IM-NEXT:    xor t4, t4, t5
-; RV32IM-NEXT:    lw t5, 188(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t5, 184(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, t3, t5
 ; RV32IM-NEXT:    xor a7, t1, a7
 ; RV32IM-NEXT:    lw t1, 244(sp) # 4-byte Folded Reload
@@ -12079,457 +12074,453 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    xor a4, a5, a4
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    lui a2, 209715
-; RV32IM-NEXT:    addi s4, a2, 819
-; RV32IM-NEXT:    lw a2, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a5, a2, 2
-; RV32IM-NEXT:    and t1, a2, s4
-; RV32IM-NEXT:    and a5, a5, s4
+; RV32IM-NEXT:    xor a2, a2, a1
+; RV32IM-NEXT:    lui a1, 209715
+; RV32IM-NEXT:    addi s3, a1, 819
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a5, a1, 2
+; RV32IM-NEXT:    and t1, a1, s3
+; RV32IM-NEXT:    and a5, a5, s3
 ; RV32IM-NEXT:    slli t1, t1, 2
 ; RV32IM-NEXT:    or a5, a5, t1
-; RV32IM-NEXT:    lw a2, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t1, a2, 2
-; RV32IM-NEXT:    and t5, a2, s4
-; RV32IM-NEXT:    and t1, t1, s4
+; RV32IM-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t1, a1, 2
+; RV32IM-NEXT:    and t5, a1, s3
+; RV32IM-NEXT:    and t1, t1, s3
 ; RV32IM-NEXT:    slli t5, t5, 2
 ; RV32IM-NEXT:    or t1, t1, t5
 ; RV32IM-NEXT:    xor a6, a6, t2
 ; RV32IM-NEXT:    xor t2, t6, s0
 ; RV32IM-NEXT:    srli t5, s6, 2
-; RV32IM-NEXT:    and t6, s6, s4
-; RV32IM-NEXT:    and t5, t5, s4
+; RV32IM-NEXT:    and t6, s6, s3
+; RV32IM-NEXT:    and t5, t5, s3
 ; RV32IM-NEXT:    slli t6, t6, 2
 ; RV32IM-NEXT:    or t5, t5, t6
-; RV32IM-NEXT:    srli t6, s7, 2
-; RV32IM-NEXT:    and s0, s7, s4
-; RV32IM-NEXT:    and t6, t6, s4
+; RV32IM-NEXT:    srli t6, s8, 2
+; RV32IM-NEXT:    and s0, s8, s3
+; RV32IM-NEXT:    and t6, t6, s3
 ; RV32IM-NEXT:    slli s0, s0, 2
 ; RV32IM-NEXT:    or t6, t6, s0
 ; RV32IM-NEXT:    xor t3, t4, t3
 ; RV32IM-NEXT:    xor a7, a7, t0
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    xor a0, a0, a2
 ; RV32IM-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a6, a1
-; RV32IM-NEXT:    lw a2, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, t2, a2
-; RV32IM-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, t3, a2
-; RV32IM-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, a2
-; RV32IM-NEXT:    lw a2, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a2, a6, a1
+; RV32IM-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, t2, a1
+; RV32IM-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, t3, a1
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a7, a1
+; RV32IM-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a3, a1
+; RV32IM-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a0, ra
 ; RV32IM-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a1, a4, a1
-; RV32IM-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a2, a4, a2
+; RV32IM-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a7, a6
 ; RV32IM-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s6, 349525
-; RV32IM-NEXT:    addi s6, s6, 1365
+; RV32IM-NEXT:    lui s4, 349525
+; RV32IM-NEXT:    addi s4, s4, 1365
 ; RV32IM-NEXT:    srli a0, a5, 1
-; RV32IM-NEXT:    and a1, a5, s6
-; RV32IM-NEXT:    and a0, a0, s6
-; RV32IM-NEXT:    slli a1, a1, 1
-; RV32IM-NEXT:    or a1, a0, a1
+; RV32IM-NEXT:    and a2, a5, s4
+; RV32IM-NEXT:    and a0, a0, s4
+; RV32IM-NEXT:    slli a2, a2, 1
+; RV32IM-NEXT:    or ra, a0, a2
 ; RV32IM-NEXT:    srli a0, t1, 1
-; RV32IM-NEXT:    and a3, t1, s6
-; RV32IM-NEXT:    and a0, a0, s6
+; RV32IM-NEXT:    and a2, t1, s4
+; RV32IM-NEXT:    and a0, a0, s4
+; RV32IM-NEXT:    slli a2, a2, 1
+; RV32IM-NEXT:    or a0, a0, a2
+; RV32IM-NEXT:    srli a2, t5, 1
+; RV32IM-NEXT:    and a3, t5, s4
+; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a3, a3, 1
-; RV32IM-NEXT:    or a0, a0, a3
-; RV32IM-NEXT:    srli a3, t5, 1
-; RV32IM-NEXT:    and a4, t5, s6
-; RV32IM-NEXT:    and a3, a3, s6
-; RV32IM-NEXT:    slli a4, a4, 1
-; RV32IM-NEXT:    or a5, a3, a4
-; RV32IM-NEXT:    srli a3, t6, 1
-; RV32IM-NEXT:    and a4, t6, s6
-; RV32IM-NEXT:    and a3, a3, s6
+; RV32IM-NEXT:    or a3, a2, a3
+; RV32IM-NEXT:    srli a2, t6, 1
+; RV32IM-NEXT:    and a4, t6, s4
+; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a4, a4, 1
-; RV32IM-NEXT:    or a6, a3, a4
-; RV32IM-NEXT:    lw t2, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a3, a0, t2
-; RV32IM-NEXT:    mul a3, a1, a3
-; RV32IM-NEXT:    lui a2, 1
-; RV32IM-NEXT:    and a4, a0, a2
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lui t0, 64
-; RV32IM-NEXT:    and a4, a0, t0
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    and a7, a0, t3
-; RV32IM-NEXT:    mul a7, a1, a7
-; RV32IM-NEXT:    xor a7, a4, a7
-; RV32IM-NEXT:    lui t5, 4096
-; RV32IM-NEXT:    and a4, a0, t5
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    lui t4, 8192
-; RV32IM-NEXT:    and t1, a0, t4
-; RV32IM-NEXT:    mul t1, a1, t1
-; RV32IM-NEXT:    xor a4, a4, t1
-; RV32IM-NEXT:    and t1, a6, t2
-; RV32IM-NEXT:    and t2, a6, a2
-; RV32IM-NEXT:    mul t1, a5, t1
-; RV32IM-NEXT:    mul t2, a5, t2
-; RV32IM-NEXT:    xor a2, t1, t2
-; RV32IM-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a6, t0
-; RV32IM-NEXT:    and t2, a6, t3
-; RV32IM-NEXT:    mul t1, a5, t1
-; RV32IM-NEXT:    mul t2, a5, t2
-; RV32IM-NEXT:    xor a2, t1, t2
+; RV32IM-NEXT:    or a1, a2, a4
+; RV32IM-NEXT:    lui a7, 2
+; RV32IM-NEXT:    and a2, a0, a7
+; RV32IM-NEXT:    mul a2, ra, a2
+; RV32IM-NEXT:    lui t0, 4
+; RV32IM-NEXT:    and a5, a0, t0
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor s7, a2, a5
+; RV32IM-NEXT:    lui t2, 512
+; RV32IM-NEXT:    and a2, a0, t2
+; RV32IM-NEXT:    mul a2, ra, a2
+; RV32IM-NEXT:    lui t3, 1024
+; RV32IM-NEXT:    and a5, a0, t3
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor a6, a2, a5
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    and a2, a0, a4
+; RV32IM-NEXT:    mul a2, ra, a2
+; RV32IM-NEXT:    lui t1, 8192
+; RV32IM-NEXT:    and a5, a0, t1
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor a5, a2, a5
+; RV32IM-NEXT:    and a2, a1, a7
+; RV32IM-NEXT:    and t0, a1, t0
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul t0, a3, t0
+; RV32IM-NEXT:    xor a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a6, t5
-; RV32IM-NEXT:    and t2, a6, t4
-; RV32IM-NEXT:    mul t1, a5, t1
-; RV32IM-NEXT:    mul t2, a5, t2
-; RV32IM-NEXT:    xor a2, t1, t2
+; RV32IM-NEXT:    and a2, a1, t2
+; RV32IM-NEXT:    and t0, a1, t3
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul t0, a3, t0
+; RV32IM-NEXT:    xor a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 2
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 1
-; RV32IM-NEXT:    and a2, t1, t2
+; RV32IM-NEXT:    and a2, a1, a4
+; RV32IM-NEXT:    and t0, a1, t1
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul t0, a3, t0
+; RV32IM-NEXT:    xor a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 4
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 2
-; RV32IM-NEXT:    and a2, t1, t2
+; RV32IM-NEXT:    andi a2, a0, 2
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 1
+; RV32IM-NEXT:    and a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 8
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 3
-; RV32IM-NEXT:    and a2, t1, t2
-; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 16
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 4
-; RV32IM-NEXT:    and a2, t1, t2
+; RV32IM-NEXT:    andi a2, a0, 4
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 2
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 8
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 3
+; RV32IM-NEXT:    and a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 32
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 5
-; RV32IM-NEXT:    and a2, t1, t2
+; RV32IM-NEXT:    andi a2, a0, 16
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 4
+; RV32IM-NEXT:    and a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 64
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 6
-; RV32IM-NEXT:    and a2, t1, t2
-; RV32IM-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 128
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 7
-; RV32IM-NEXT:    and a2, t1, t2
-; RV32IM-NEXT:    sw a2, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 256
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 8
-; RV32IM-NEXT:    and a2, t1, t2
-; RV32IM-NEXT:    sw a2, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 512
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 9
-; RV32IM-NEXT:    and a2, t1, t2
+; RV32IM-NEXT:    andi a2, a0, 32
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 5
+; RV32IM-NEXT:    and a2, a2, t0
 ; RV32IM-NEXT:    sw a2, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 1
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    lui a2, 2
-; RV32IM-NEXT:    and t2, a0, a2
-; RV32IM-NEXT:    mul a2, a1, t2
-; RV32IM-NEXT:    lui t0, 4
-; RV32IM-NEXT:    and t2, a0, t0
-; RV32IM-NEXT:    mul t0, a1, t2
-; RV32IM-NEXT:    sw t0, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s3, 8
-; RV32IM-NEXT:    and t2, a0, s3
-; RV32IM-NEXT:    mul t0, a1, t2
-; RV32IM-NEXT:    sw t0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s5, 16
-; RV32IM-NEXT:    and t2, a0, s5
-; RV32IM-NEXT:    mul t0, a1, t2
-; RV32IM-NEXT:    sw t0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s8, 32
-; RV32IM-NEXT:    and t2, a0, s8
-; RV32IM-NEXT:    mul t0, a1, t2
-; RV32IM-NEXT:    sw t0, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 256
-; RV32IM-NEXT:    and t2, a0, t0
-; RV32IM-NEXT:    mul t2, a1, t2
-; RV32IM-NEXT:    lui s7, 512
-; RV32IM-NEXT:    and t3, a0, s7
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s9, 1024
-; RV32IM-NEXT:    and t3, a0, s9
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 64
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 6
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 128
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 7
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 256
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 8
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    sw a2, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 512
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli t0, ra, 9
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    sw a2, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 1
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    lw s0, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and t0, a0, s0
+; RV32IM-NEXT:    mul a4, ra, t0
+; RV32IM-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 1
+; RV32IM-NEXT:    and t0, a0, a4
+; RV32IM-NEXT:    mul a4, ra, t0
+; RV32IM-NEXT:    sw a4, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 8
+; RV32IM-NEXT:    and t0, a0, a4
+; RV32IM-NEXT:    mul t0, ra, t0
+; RV32IM-NEXT:    lui s2, 16
+; RV32IM-NEXT:    and t1, a0, s2
+; RV32IM-NEXT:    mul a4, ra, t1
+; RV32IM-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s9, 32
+; RV32IM-NEXT:    and t1, a0, s9
+; RV32IM-NEXT:    mul a4, ra, t1
+; RV32IM-NEXT:    sw a4, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 64
+; RV32IM-NEXT:    and t1, a0, a7
+; RV32IM-NEXT:    mul a4, ra, t1
+; RV32IM-NEXT:    sw a4, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s8, 128
+; RV32IM-NEXT:    and t1, a0, s8
+; RV32IM-NEXT:    mul a4, ra, t1
+; RV32IM-NEXT:    sw a4, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 256
+; RV32IM-NEXT:    and t1, a0, s6
+; RV32IM-NEXT:    mul a4, ra, t1
+; RV32IM-NEXT:    sw a4, 556(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui s11, 2048
-; RV32IM-NEXT:    and t3, a0, s11
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s2, 16384
-; RV32IM-NEXT:    and t3, a0, s2
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    lui t6, 32768
-; RV32IM-NEXT:    and t4, a0, t6
-; RV32IM-NEXT:    mul t4, a1, t4
-; RV32IM-NEXT:    sw t4, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 65536
-; RV32IM-NEXT:    and t4, a0, t5
-; RV32IM-NEXT:    mul t4, a1, t4
-; RV32IM-NEXT:    sw t4, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui ra, 131072
-; RV32IM-NEXT:    and t4, a0, ra
-; RV32IM-NEXT:    mul t4, a1, t4
-; RV32IM-NEXT:    sw t4, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s0, 262144
-; RV32IM-NEXT:    and t4, a0, s0
-; RV32IM-NEXT:    mul t4, a1, t4
-; RV32IM-NEXT:    sw t4, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t1, a0, s11
+; RV32IM-NEXT:    mul t1, ra, t1
+; RV32IM-NEXT:    lui t5, 16384
+; RV32IM-NEXT:    and t2, a0, t5
+; RV32IM-NEXT:    mul t2, ra, t2
+; RV32IM-NEXT:    lui t4, 32768
+; RV32IM-NEXT:    and t3, a0, t4
+; RV32IM-NEXT:    mul a4, ra, t3
+; RV32IM-NEXT:    sw a4, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s5, 65536
+; RV32IM-NEXT:    and t3, a0, s5
+; RV32IM-NEXT:    mul a4, ra, t3
+; RV32IM-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t6, 131072
+; RV32IM-NEXT:    and t3, a0, t6
+; RV32IM-NEXT:    mul a4, ra, t3
+; RV32IM-NEXT:    sw a4, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 262144
+; RV32IM-NEXT:    and t3, a0, a4
+; RV32IM-NEXT:    mul t3, ra, t3
+; RV32IM-NEXT:    sw t3, 520(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui s1, 524288
-; RV32IM-NEXT:    and t4, a0, s1
-; RV32IM-NEXT:    mul t4, a1, t4
-; RV32IM-NEXT:    sw t4, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    and t1, t1, a1
-; RV32IM-NEXT:    sw t1, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a1, a1, 10
+; RV32IM-NEXT:    and t3, a0, s1
+; RV32IM-NEXT:    mul t3, ra, t3
+; RV32IM-NEXT:    sw t3, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    and a2, a2, ra
+; RV32IM-NEXT:    sw a2, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli ra, ra, 10
 ; RV32IM-NEXT:    andi a0, a0, 1024
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    sw a2, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a7, t2
-; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a4, t3
+; RV32IM-NEXT:    and a0, a0, ra
+; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, s7, t0
 ; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 2
-; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 1
-; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    xor a0, a6, t1
+; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a5, t2
 ; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 4
+; RV32IM-NEXT:    andi a0, a1, 2
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 2
-; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    slli a2, a3, 1
+; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 8
+; RV32IM-NEXT:    andi a0, a1, 4
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 3
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 16
+; RV32IM-NEXT:    slli a2, a3, 2
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 4
-; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    slli a2, a3, 3
+; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 32
+; RV32IM-NEXT:    andi a0, a1, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 5
-; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    slli a2, a3, 4
+; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 64
+; RV32IM-NEXT:    andi a0, a1, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 6
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 128
+; RV32IM-NEXT:    slli a2, a3, 5
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a3, a5, 7
-; RV32IM-NEXT:    and a0, a0, a3
-; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a6, 256
+; RV32IM-NEXT:    slli a2, a3, 6
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a5, 8
-; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    slli a2, a3, 7
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 256
+; RV32IM-NEXT:    seqz a0, a0
+; RV32IM-NEXT:    addi a0, a0, -1
+; RV32IM-NEXT:    slli a2, a3, 8
+; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a1, a6, 512
+; RV32IM-NEXT:    andi a2, a1, 512
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, a3, 9
+; RV32IM-NEXT:    and s7, a2, a5
+; RV32IM-NEXT:    and a5, a1, s0
+; RV32IM-NEXT:    lui a0, 1
+; RV32IM-NEXT:    and a6, a1, a0
+; RV32IM-NEXT:    lui a0, 8
+; RV32IM-NEXT:    and a0, a1, a0
+; RV32IM-NEXT:    and s2, a1, s2
+; RV32IM-NEXT:    and a2, a1, s9
+; RV32IM-NEXT:    and a7, a1, a7
+; RV32IM-NEXT:    and t0, a1, s8
+; RV32IM-NEXT:    and t1, a1, s6
+; RV32IM-NEXT:    and t2, a1, s11
+; RV32IM-NEXT:    and t3, a1, t5
+; RV32IM-NEXT:    and t4, a1, t4
+; RV32IM-NEXT:    and t5, a1, s5
+; RV32IM-NEXT:    and t6, a1, t6
+; RV32IM-NEXT:    and s0, a1, a4
+; RV32IM-NEXT:    and s1, a1, s1
+; RV32IM-NEXT:    andi a4, a1, 1
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    mul s8, a3, a5
+; RV32IM-NEXT:    mul a5, a3, a6
+; RV32IM-NEXT:    sw a5, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, a3, a0
+; RV32IM-NEXT:    mul s2, a3, s2
+; RV32IM-NEXT:    mul s5, a3, a2
+; RV32IM-NEXT:    mul s6, a3, a7
+; RV32IM-NEXT:    mul s11, a3, t0
+; RV32IM-NEXT:    mul a2, a3, t1
+; RV32IM-NEXT:    sw a2, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t1, a3, t2
+; RV32IM-NEXT:    mul t2, a3, t3
+; RV32IM-NEXT:    mul t3, a3, t4
+; RV32IM-NEXT:    mul t4, a3, t5
+; RV32IM-NEXT:    mul t5, a3, t6
+; RV32IM-NEXT:    mul t6, a3, s0
+; RV32IM-NEXT:    mul s9, a3, s1
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    and a5, a4, a3
+; RV32IM-NEXT:    slli a3, a3, 10
+; RV32IM-NEXT:    andi a1, a1, 1024
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a4, a5, 9
-; RV32IM-NEXT:    and a1, a1, a4
-; RV32IM-NEXT:    sw a1, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 2
-; RV32IM-NEXT:    and a1, a6, a0
-; RV32IM-NEXT:    lui a0, 4
-; RV32IM-NEXT:    and a0, a6, a0
-; RV32IM-NEXT:    and a2, a6, s3
-; RV32IM-NEXT:    and a3, a6, s5
-; RV32IM-NEXT:    and a4, a6, s8
-; RV32IM-NEXT:    and a7, a6, t0
-; RV32IM-NEXT:    and t0, a6, s7
-; RV32IM-NEXT:    and t1, a6, s9
-; RV32IM-NEXT:    and t2, a6, s11
-; RV32IM-NEXT:    and t3, a6, s2
-; RV32IM-NEXT:    and t4, a6, t6
-; RV32IM-NEXT:    and t5, a6, t5
-; RV32IM-NEXT:    and t6, a6, ra
-; RV32IM-NEXT:    and s0, a6, s0
-; RV32IM-NEXT:    and s1, a6, s1
-; RV32IM-NEXT:    andi ra, a6, 1
-; RV32IM-NEXT:    seqz ra, ra
-; RV32IM-NEXT:    mul a1, a5, a1
-; RV32IM-NEXT:    mul s5, a5, a0
-; RV32IM-NEXT:    mul s9, a5, a2
-; RV32IM-NEXT:    mul a0, a5, a3
-; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, a5, a4
-; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a5, a7
-; RV32IM-NEXT:    mul s3, a5, t0
-; RV32IM-NEXT:    mul s8, a5, t1
-; RV32IM-NEXT:    mul s11, a5, t2
-; RV32IM-NEXT:    mul t3, a5, t3
-; RV32IM-NEXT:    mul s2, a5, t4
-; RV32IM-NEXT:    mul s7, a5, t5
-; RV32IM-NEXT:    mul t6, a5, t6
-; RV32IM-NEXT:    mul s0, a5, s0
-; RV32IM-NEXT:    mul a0, a5, s1
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi ra, ra, -1
-; RV32IM-NEXT:    and ra, ra, a5
-; RV32IM-NEXT:    slli a5, a5, 10
-; RV32IM-NEXT:    andi a6, a6, 1024
-; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    and t5, a6, a5
-; RV32IM-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t4, a0, a1
-; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, a0, a7
+; RV32IM-NEXT:    and t0, a1, a3
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a1, a0
 ; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a0, t3
+; RV32IM-NEXT:    xor s0, a0, t1
 ; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a1, a0
+; RV32IM-NEXT:    xor t1, a0, t2
 ; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a1, a0
+; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, a0, s1
+; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a0, a4
+; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a0, a1
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, a0, a1
-; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a0
+; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 488(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a0
-; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, ra, a0
 ; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    xor a5, a5, a0
+; RV32IM-NEXT:    lw a0, 476(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 452(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, s1
-; RV32IM-NEXT:    xor t4, t4, s5
-; RV32IM-NEXT:    xor t1, t1, s3
-; RV32IM-NEXT:    xor t2, t2, s2
-; RV32IM-NEXT:    xor a6, t3, a6
-; RV32IM-NEXT:    lw t3, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, t3
-; RV32IM-NEXT:    lw t3, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, t3
-; RV32IM-NEXT:    lw t3, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, t3
-; RV32IM-NEXT:    lw t3, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, ra
+; RV32IM-NEXT:    lw ra, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, ra, s7
+; RV32IM-NEXT:    xor a7, a7, s2
+; RV32IM-NEXT:    xor t1, t1, t3
+; RV32IM-NEXT:    xor t2, t2, s1
+; RV32IM-NEXT:    lw t3, 572(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, t3
-; RV32IM-NEXT:    lw t3, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t3
-; RV32IM-NEXT:    xor a0, ra, a0
-; RV32IM-NEXT:    lw t3, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, t3
-; RV32IM-NEXT:    lw t3, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t3, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t3
+; RV32IM-NEXT:    lw t3, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, t3
-; RV32IM-NEXT:    xor t3, t4, s9
-; RV32IM-NEXT:    xor t1, t1, s8
-; RV32IM-NEXT:    xor t2, t2, s7
-; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t0, a7
+; RV32IM-NEXT:    lw t3, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t3
+; RV32IM-NEXT:    xor a0, a5, a0
+; RV32IM-NEXT:    lw a5, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a5
+; RV32IM-NEXT:    xor a5, s7, t0
+; RV32IM-NEXT:    xor a7, a7, s5
+; RV32IM-NEXT:    xor t0, t1, t4
+; RV32IM-NEXT:    xor a4, t2, a4
+; RV32IM-NEXT:    lw t1, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t1
+; RV32IM-NEXT:    lw t1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t1
+; RV32IM-NEXT:    lw t1, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t1
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    xor a1, a5, s8
+; RV32IM-NEXT:    xor a5, a7, s6
+; RV32IM-NEXT:    xor a7, t0, t5
+; RV32IM-NEXT:    lw t0, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t0
 ; RV32IM-NEXT:    lw t0, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t0
+; RV32IM-NEXT:    lw t0, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t0
+; RV32IM-NEXT:    lw t0, 520(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, t0
-; RV32IM-NEXT:    lw t0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, t0
-; RV32IM-NEXT:    lw t0, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t0, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, t0
+; RV32IM-NEXT:    lw t0, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, t0
+; RV32IM-NEXT:    xor a5, a5, s11
+; RV32IM-NEXT:    xor a7, a7, t6
+; RV32IM-NEXT:    lw t0, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t0
+; RV32IM-NEXT:    lw t0, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t0
+; RV32IM-NEXT:    lw t0, 456(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, t0
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    xor a1, a2, t5
-; RV32IM-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, t3, a2
-; RV32IM-NEXT:    xor t0, t1, s11
-; RV32IM-NEXT:    xor t1, t2, t6
-; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a7
-; RV32IM-NEXT:    lw a7, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    xor a2, t1, s0
-; RV32IM-NEXT:    lw a7, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    lw a7, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a7
-; RV32IM-NEXT:    xor a3, a6, a3
+; RV32IM-NEXT:    xor a7, a7, s9
+; RV32IM-NEXT:    xor a6, a4, a6
+; RV32IM-NEXT:    xor a2, a6, a2
 ; RV32IM-NEXT:    xor a1, a0, a1
-; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a1, a1, t0
+; RV32IM-NEXT:    xor a1, a1, a5
+; RV32IM-NEXT:    lw a5, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    xor a1, a1, s0
 ; RV32IM-NEXT:    lw t0, 624(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a4, a3, t0
-; RV32IM-NEXT:    srli a7, a3, 8
-; RV32IM-NEXT:    xor a3, a3, a5
-; RV32IM-NEXT:    and a5, a1, t0
-; RV32IM-NEXT:    xor a2, a1, a2
+; RV32IM-NEXT:    and a5, a2, t0
+; RV32IM-NEXT:    srli a6, a2, 8
+; RV32IM-NEXT:    xor a2, a2, a3
+; RV32IM-NEXT:    and a3, a1, t0
+; RV32IM-NEXT:    xor a7, a1, a7
 ; RV32IM-NEXT:    srli a1, a1, 8
-; RV32IM-NEXT:    and a7, a7, t0
+; RV32IM-NEXT:    and a6, a6, t0
 ; RV32IM-NEXT:    and a1, a1, t0
-; RV32IM-NEXT:    slli a6, a6, 24
-; RV32IM-NEXT:    slli a4, a4, 8
-; RV32IM-NEXT:    or a4, a6, a4
-; RV32IM-NEXT:    srli a3, a3, 24
-; RV32IM-NEXT:    or a3, a7, a3
-; RV32IM-NEXT:    slli a0, a0, 24
+; RV32IM-NEXT:    slli a4, a4, 24
 ; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    or a0, a0, a5
+; RV32IM-NEXT:    or a4, a4, a5
 ; RV32IM-NEXT:    srli a2, a2, 24
-; RV32IM-NEXT:    or a1, a1, a2
-; RV32IM-NEXT:    or a3, a4, a3
+; RV32IM-NEXT:    or a2, a6, a2
+; RV32IM-NEXT:    slli a0, a0, 24
+; RV32IM-NEXT:    slli a3, a3, 8
+; RV32IM-NEXT:    or a0, a0, a3
+; RV32IM-NEXT:    srli a3, a7, 24
+; RV32IM-NEXT:    or a1, a1, a3
+; RV32IM-NEXT:    or a2, a4, a2
 ; RV32IM-NEXT:    or a0, a0, a1
-; RV32IM-NEXT:    srli a1, a3, 4
-; RV32IM-NEXT:    lw a4, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a2, a3, a4
+; RV32IM-NEXT:    srli a1, a2, 4
+; RV32IM-NEXT:    lw a4, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a2, a2, a4
 ; RV32IM-NEXT:    srli a3, a0, 4
 ; RV32IM-NEXT:    and a0, a0, a4
 ; RV32IM-NEXT:    and a1, a1, a4
@@ -12539,11 +12530,11 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    or a1, a1, a2
 ; RV32IM-NEXT:    or a0, a3, a0
 ; RV32IM-NEXT:    srli a2, a1, 2
-; RV32IM-NEXT:    and a1, a1, s4
+; RV32IM-NEXT:    and a1, a1, s3
 ; RV32IM-NEXT:    srli a3, a0, 2
-; RV32IM-NEXT:    and a0, a0, s4
-; RV32IM-NEXT:    and a2, a2, s4
-; RV32IM-NEXT:    and a3, a3, s4
+; RV32IM-NEXT:    and a0, a0, s3
+; RV32IM-NEXT:    and a2, a2, s3
+; RV32IM-NEXT:    and a3, a3, s3
 ; RV32IM-NEXT:    slli a1, a1, 2
 ; RV32IM-NEXT:    or a1, a2, a1
 ; RV32IM-NEXT:    lui a2, 349525
@@ -12551,8 +12542,8 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IM-NEXT:    slli a0, a0, 2
 ; RV32IM-NEXT:    or a0, a3, a0
 ; RV32IM-NEXT:    srli a3, a1, 1
-; RV32IM-NEXT:    and a1, a1, s6
-; RV32IM-NEXT:    and a4, a0, s6
+; RV32IM-NEXT:    and a1, a1, s4
+; RV32IM-NEXT:    and a4, a0, s4
 ; RV32IM-NEXT:    srli a0, a0, 1
 ; RV32IM-NEXT:    and a3, a3, a2
 ; RV32IM-NEXT:    and a0, a0, a2
@@ -13551,60 +13542,60 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    sw a2, 724(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a4, 0(a1)
 ; RV32IMZBS-NEXT:    lw a6, 4(a1)
-; RV32IMZBS-NEXT:    lw s4, 8(a1)
-; RV32IMZBS-NEXT:    lw s10, 12(a1)
+; RV32IMZBS-NEXT:    lw s0, 8(a1)
+; RV32IMZBS-NEXT:    lw s9, 12(a1)
 ; RV32IMZBS-NEXT:    lw t0, 0(a0)
 ; RV32IMZBS-NEXT:    lw t1, 4(a0)
-; RV32IMZBS-NEXT:    lw t2, 8(a0)
+; RV32IMZBS-NEXT:    lw a5, 8(a0)
 ; RV32IMZBS-NEXT:    lw s2, 12(a0)
 ; RV32IMZBS-NEXT:    lui a0, 16
 ; RV32IMZBS-NEXT:    addi s8, a0, -256
 ; RV32IMZBS-NEXT:    srli a7, t0, 8
 ; RV32IMZBS-NEXT:    srli t3, t0, 24
 ; RV32IMZBS-NEXT:    and a3, t0, s8
-; RV32IMZBS-NEXT:    slli s9, t0, 24
+; RV32IMZBS-NEXT:    slli s10, t0, 24
 ; RV32IMZBS-NEXT:    srli t6, a4, 8
 ; RV32IMZBS-NEXT:    srli s1, a4, 24
 ; RV32IMZBS-NEXT:    and t4, a4, s8
 ; RV32IMZBS-NEXT:    slli t5, a4, 24
-; RV32IMZBS-NEXT:    slli a5, t1, 1
+; RV32IMZBS-NEXT:    slli s4, t1, 1
 ; RV32IMZBS-NEXT:    andi s5, a4, 2
-; RV32IMZBS-NEXT:    slli s0, t1, 2
+; RV32IMZBS-NEXT:    slli t2, t1, 2
 ; RV32IMZBS-NEXT:    andi s3, a4, 4
 ; RV32IMZBS-NEXT:    slli a1, t1, 3
 ; RV32IMZBS-NEXT:    andi a0, a4, 8
 ; RV32IMZBS-NEXT:    andi a2, a4, 16
 ; RV32IMZBS-NEXT:    slli s6, t0, 1
-; RV32IMZBS-NEXT:    srli s7, t2, 8
+; RV32IMZBS-NEXT:    srli s7, a5, 8
 ; RV32IMZBS-NEXT:    and a7, a7, s8
 ; RV32IMZBS-NEXT:    or a7, a7, t3
-; RV32IMZBS-NEXT:    srli t3, t2, 24
+; RV32IMZBS-NEXT:    srli t3, a5, 24
 ; RV32IMZBS-NEXT:    and t6, t6, s8
 ; RV32IMZBS-NEXT:    or t6, t6, s1
-; RV32IMZBS-NEXT:    srli s1, s4, 8
+; RV32IMZBS-NEXT:    srli s1, s0, 8
 ; RV32IMZBS-NEXT:    slli t4, t4, 8
 ; RV32IMZBS-NEXT:    or t4, t5, t4
-; RV32IMZBS-NEXT:    srli t5, s4, 24
+; RV32IMZBS-NEXT:    srli t5, s0, 24
 ; RV32IMZBS-NEXT:    and s7, s7, s8
 ; RV32IMZBS-NEXT:    or t3, s7, t3
-; RV32IMZBS-NEXT:    and s7, s4, s8
+; RV32IMZBS-NEXT:    and s7, s0, s8
 ; RV32IMZBS-NEXT:    and s1, s1, s8
 ; RV32IMZBS-NEXT:    sw s8, 720(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    or t5, s1, t5
-; RV32IMZBS-NEXT:    slli s1, s4, 24
+; RV32IMZBS-NEXT:    slli s1, s0, 24
 ; RV32IMZBS-NEXT:    slli s7, s7, 8
 ; RV32IMZBS-NEXT:    or s1, s1, s7
 ; RV32IMZBS-NEXT:    andi s7, a6, 2
 ; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, s9, a3
+; RV32IMZBS-NEXT:    or a3, s10, a3
 ; RV32IMZBS-NEXT:    or a3, a3, a7
 ; RV32IMZBS-NEXT:    sw a3, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, t2, s8
+; RV32IMZBS-NEXT:    and a3, a5, s8
 ; RV32IMZBS-NEXT:    or a7, t4, t6
 ; RV32IMZBS-NEXT:    sw a7, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t6, t2, 24
+; RV32IMZBS-NEXT:    slli s8, a5, 24
 ; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, t6, a3
+; RV32IMZBS-NEXT:    or a3, s8, a3
 ; RV32IMZBS-NEXT:    or a3, a3, t3
 ; RV32IMZBS-NEXT:    sw a3, 712(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, t0, 2
@@ -13615,15 +13606,15 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    seqz t4, s7
 ; RV32IMZBS-NEXT:    addi t3, t3, -1
 ; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    and t5, t3, a5
-; RV32IMZBS-NEXT:    and a5, t4, s6
+; RV32IMZBS-NEXT:    and t6, t3, s4
+; RV32IMZBS-NEXT:    and t5, t4, s6
 ; RV32IMZBS-NEXT:    and s5, t3, s6
 ; RV32IMZBS-NEXT:    slli t3, t0, 3
 ; RV32IMZBS-NEXT:    seqz t4, s3
 ; RV32IMZBS-NEXT:    seqz a7, a7
 ; RV32IMZBS-NEXT:    addi t4, t4, -1
 ; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and s3, t4, s0
+; RV32IMZBS-NEXT:    and s3, t4, t2
 ; RV32IMZBS-NEXT:    and s1, a7, a3
 ; RV32IMZBS-NEXT:    and t4, t4, a3
 ; RV32IMZBS-NEXT:    andi a3, a6, 8
@@ -13631,8 +13622,8 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    seqz a3, a3
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s8, a0, a1
-; RV32IMZBS-NEXT:    and s6, a3, t3
+; RV32IMZBS-NEXT:    and s6, a0, a1
+; RV32IMZBS-NEXT:    and s4, a3, t3
 ; RV32IMZBS-NEXT:    and t3, a0, t3
 ; RV32IMZBS-NEXT:    andi a0, a6, 16
 ; RV32IMZBS-NEXT:    seqz a1, a2
@@ -13641,9 +13632,10 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    slli a2, t1, 4
 ; RV32IMZBS-NEXT:    and a2, a1, a2
-; RV32IMZBS-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, t0, 4
-; RV32IMZBS-NEXT:    and s11, a0, a2
+; RV32IMZBS-NEXT:    and a0, a0, a2
+; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 676(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 32
@@ -13654,10 +13646,10 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t1, 5
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, t0, 5
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 64
@@ -13682,12 +13674,12 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t1, 7
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, t0, 7
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, a6, 256
@@ -13696,12 +13688,12 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t1, 8
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 560(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, t0, 8
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, a6, 512
@@ -13710,10 +13702,10 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t1, 9
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, t0, 9
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 1024
@@ -13738,46 +13730,46 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 11
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 500(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 11
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 12
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 12
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 12
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 488(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 484(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 12
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 500(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 496(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 13
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 13
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 13
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 552(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 13
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 556(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 14
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 14
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 616(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 14
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 628(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
 ; RV32IMZBS-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 15
@@ -13798,155 +13790,155 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 16
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 452(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 448(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 16
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 456(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 452(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 472(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 468(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 17
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 17
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 17
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 436(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 17
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 448(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 444(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 468(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 464(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 18
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 18
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 18
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 476(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 472(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 18
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 480(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 476(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 504(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 19
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 19
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 19
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 19
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 20
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 20
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 580(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 20
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 588(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 21
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 21
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 21
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 604(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 21
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 22
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 22
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 22
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 416(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 412(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 22
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 416(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 428(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 424(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 23
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 23
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 23
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 408(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 404(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 23
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 408(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 424(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 420(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 24
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 24
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 24
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 432(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, a3, s9
-; RV32IMZBS-NEXT:    sw a3, 436(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, s9
-; RV32IMZBS-NEXT:    sw a2, 444(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 428(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a3, s10
+; RV32IMZBS-NEXT:    sw a3, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, s10
+; RV32IMZBS-NEXT:    sw a2, 440(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 25
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 25
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 25
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 460(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 456(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 25
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 460(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 480(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 26
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 26
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 26
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 492(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 488(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 26
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 496(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 492(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 508(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 27
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 27
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 27
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 512(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 27
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 524(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 28
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 28
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a7, t1, 28
 ; RV32IMZBS-NEXT:    and a7, a2, a7
-; RV32IMZBS-NEXT:    sw a7, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a7, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 28
 ; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 536(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
-; RV32IMZBS-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 29
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a1, 29
@@ -13955,8 +13947,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    and a7, a2, a7
 ; RV32IMZBS-NEXT:    sw a7, 384(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a7, t0, 29
-; RV32IMZBS-NEXT:    and a3, a3, a7
-; RV32IMZBS-NEXT:    sw a3, 388(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and s10, a3, a7
 ; RV32IMZBS-NEXT:    and a7, a2, a7
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    bexti a1, a1, 30
@@ -13969,7 +13960,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 380(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 1
 ; RV32IMZBS-NEXT:    srli a1, a4, 31
 ; RV32IMZBS-NEXT:    seqz a0, a0
@@ -13980,9 +13971,8 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    slli a3, t1, 31
 ; RV32IMZBS-NEXT:    and a4, a0, t1
 ; RV32IMZBS-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, t0
-; RV32IMZBS-NEXT:    sw a2, 368(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t1, a0, t0
+; RV32IMZBS-NEXT:    and t1, a2, t0
+; RV32IMZBS-NEXT:    and a4, a0, t0
 ; RV32IMZBS-NEXT:    slli t0, t0, 31
 ; RV32IMZBS-NEXT:    srli a0, a6, 31
 ; RV32IMZBS-NEXT:    seqz a1, a1
@@ -13990,160 +13980,161 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    and a3, a1, a3
-; RV32IMZBS-NEXT:    sw a3, 392(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 388(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, t0
-; RV32IMZBS-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a1, t0
-; RV32IMZBS-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 2
+; RV32IMZBS-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, s0, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 2
+; RV32IMZBS-NEXT:    andi a1, s9, 2
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 1
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 344(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 1
-; RV32IMZBS-NEXT:    and t0, a1, a2
+; RV32IMZBS-NEXT:    slli a2, a5, 1
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 360(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 4
+; RV32IMZBS-NEXT:    andi a0, s0, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 4
+; RV32IMZBS-NEXT:    andi a1, s9, 4
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 2
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 324(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 2
+; RV32IMZBS-NEXT:    slli a2, a5, 2
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 332(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 8
+; RV32IMZBS-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, s0, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 8
+; RV32IMZBS-NEXT:    andi a1, s9, 8
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 3
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 3
+; RV32IMZBS-NEXT:    slli a2, a5, 3
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 308(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 16
+; RV32IMZBS-NEXT:    andi a0, s0, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 16
+; RV32IMZBS-NEXT:    andi a1, s9, 16
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 4
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 276(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 4
+; RV32IMZBS-NEXT:    slli a2, a5, 4
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 288(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 32
+; RV32IMZBS-NEXT:    andi a0, s0, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 32
+; RV32IMZBS-NEXT:    andi a1, s9, 32
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 5
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 5
+; RV32IMZBS-NEXT:    slli a2, a5, 5
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 268(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 64
+; RV32IMZBS-NEXT:    andi a0, s0, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 64
+; RV32IMZBS-NEXT:    andi a1, s9, 64
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 6
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 320(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 6
+; RV32IMZBS-NEXT:    slli a2, a5, 6
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 328(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 128
+; RV32IMZBS-NEXT:    andi a0, s0, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 128
+; RV32IMZBS-NEXT:    andi a1, s9, 128
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 7
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 7
+; RV32IMZBS-NEXT:    slli a2, a5, 7
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 228(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 248(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 256
+; RV32IMZBS-NEXT:    andi a0, s0, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 256
+; RV32IMZBS-NEXT:    andi a1, s9, 256
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 8
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 8
+; RV32IMZBS-NEXT:    slli a2, a5, 8
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 204(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 240(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 512
+; RV32IMZBS-NEXT:    andi a0, s0, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 512
+; RV32IMZBS-NEXT:    andi a1, s9, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 9
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 252(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 9
+; RV32IMZBS-NEXT:    slli a2, a5, 9
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 260(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 284(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s4, 1024
+; RV32IMZBS-NEXT:    andi a0, s0, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, s10, 1024
+; RV32IMZBS-NEXT:    andi a1, s9, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 10
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 340(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 10
+; RV32IMZBS-NEXT:    slli a2, a5, 10
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 348(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a1, s4
+; RV32IMZBS-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a1, s0
 ; RV32IMZBS-NEXT:    bexti a0, a1, 11
 ; RV32IMZBS-NEXT:    addi a2, a0, -1
-; RV32IMZBS-NEXT:    not a0, s10
+; RV32IMZBS-NEXT:    not a0, s9
 ; RV32IMZBS-NEXT:    bexti a3, a0, 11
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 11
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 152(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 11
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 152(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 11
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 156(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14153,9 +14144,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 12
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 12
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 124(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 12
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 124(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 12
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 136(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14165,9 +14156,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 13
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 13
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 184(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 13
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 184(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 13
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 192(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14177,9 +14168,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 14
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 14
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 264(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 14
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 264(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 14
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 272(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14189,9 +14180,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 15
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 15
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 296(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 15
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 296(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 15
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 304(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14201,9 +14192,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 16
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 16
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 80(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 16
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 80(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 16
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 84(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14213,9 +14204,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 17
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 17
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 72(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 17
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 72(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 17
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 76(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14225,9 +14216,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 18
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 18
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 104(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 18
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 104(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 18
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 112(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14237,9 +14228,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 19
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 19
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 180(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 19
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 180(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 19
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 188(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14249,9 +14240,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 20
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 20
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 212(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 20
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 212(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 20
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 216(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14261,9 +14252,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 21
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 21
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 232(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 21
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 232(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 21
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 236(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14273,9 +14264,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 22
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 22
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 44(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 22
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 44(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 22
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14285,9 +14276,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 23
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 23
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 36(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 23
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 36(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 23
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 40(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14297,20 +14288,20 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 24
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 24
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 60(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, a3, t6
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 60(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a3, s8
 ; RV32IMZBS-NEXT:    sw a3, 64(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, t6
+; RV32IMZBS-NEXT:    and a2, a2, s8
 ; RV32IMZBS-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 25
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 25
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 25
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 92(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 25
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 92(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 25
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 100(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14320,9 +14311,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 26
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 26
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 116(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 26
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 116(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 26
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 120(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14332,9 +14323,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 27
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 27
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 140(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 27
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 140(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 27
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 144(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14344,9 +14335,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a3, a0, 28
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a6, s2, 28
-; RV32IMZBS-NEXT:    and a4, a2, a6
-; RV32IMZBS-NEXT:    sw a4, 172(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, t2, 28
+; RV32IMZBS-NEXT:    and a6, a2, a6
+; RV32IMZBS-NEXT:    sw a6, 172(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a5, 28
 ; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 168(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a6
@@ -14354,134 +14345,135 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    bexti a2, a1, 29
 ; RV32IMZBS-NEXT:    addi a6, a2, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 29
-; RV32IMZBS-NEXT:    addi a4, a2, -1
+; RV32IMZBS-NEXT:    addi a3, a2, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 29
-; RV32IMZBS-NEXT:    and ra, a6, a2
-; RV32IMZBS-NEXT:    slli a3, t2, 29
-; RV32IMZBS-NEXT:    and a4, a4, a3
-; RV32IMZBS-NEXT:    and a2, a6, a3
+; RV32IMZBS-NEXT:    and s11, a6, a2
+; RV32IMZBS-NEXT:    slli s7, a5, 29
+; RV32IMZBS-NEXT:    and a3, a3, s7
+; RV32IMZBS-NEXT:    and a2, a6, s7
 ; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a1, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a2, a0, -1
-; RV32IMZBS-NEXT:    slli a3, s2, 30
-; RV32IMZBS-NEXT:    and s7, a1, a3
-; RV32IMZBS-NEXT:    slli a0, t2, 30
+; RV32IMZBS-NEXT:    slli s7, s2, 30
+; RV32IMZBS-NEXT:    and s7, a1, s7
+; RV32IMZBS-NEXT:    slli a0, a5, 30
 ; RV32IMZBS-NEXT:    and a2, a2, a0
 ; RV32IMZBS-NEXT:    and a0, a1, a0
 ; RV32IMZBS-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a1, s4, 1
-; RV32IMZBS-NEXT:    srli s4, s4, 31
+; RV32IMZBS-NEXT:    andi a1, s0, 1
+; RV32IMZBS-NEXT:    srli s0, s0, 31
 ; RV32IMZBS-NEXT:    seqz a1, a1
-; RV32IMZBS-NEXT:    andi s9, s10, 1
-; RV32IMZBS-NEXT:    seqz s9, s9
+; RV32IMZBS-NEXT:    andi ra, s9, 1
+; RV32IMZBS-NEXT:    seqz ra, ra
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    addi s9, s9, -1
-; RV32IMZBS-NEXT:    slli s0, s2, 31
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli t2, s2, 31
 ; RV32IMZBS-NEXT:    and s2, a1, s2
-; RV32IMZBS-NEXT:    and s9, s9, t2
-; RV32IMZBS-NEXT:    and a3, a1, t2
-; RV32IMZBS-NEXT:    slli t2, t2, 31
-; RV32IMZBS-NEXT:    srli a1, s10, 31
-; RV32IMZBS-NEXT:    seqz s4, s4
-; RV32IMZBS-NEXT:    seqz a1, a1
-; RV32IMZBS-NEXT:    addi s4, s4, -1
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a0, s4, s0
+; RV32IMZBS-NEXT:    and ra, ra, a5
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a5, a5, 31
+; RV32IMZBS-NEXT:    srli a6, s9, 31
+; RV32IMZBS-NEXT:    seqz s0, s0
+; RV32IMZBS-NEXT:    seqz a6, a6
+; RV32IMZBS-NEXT:    addi s0, s0, -1
+; RV32IMZBS-NEXT:    addi t0, a6, -1
+; RV32IMZBS-NEXT:    and a0, s0, t2
 ; RV32IMZBS-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a1, t2
+; RV32IMZBS-NEXT:    and a0, t0, a5
 ; RV32IMZBS-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, s4, t2
-; RV32IMZBS-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, s0, a5
+; RV32IMZBS-NEXT:    sw a5, 32(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, t5
+; RV32IMZBS-NEXT:    xor a0, a0, t6
 ; RV32IMZBS-NEXT:    sw a0, 356(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor a0, s3, s8
-; RV32IMZBS-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, s3, s6
+; RV32IMZBS-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 440(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 404(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 376(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 368(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a5
-; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor a0, s1, s6
-; RV32IMZBS-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, s11, a0
-; RV32IMZBS-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a0, t1, t5
+; RV32IMZBS-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a0, s1, s4
+; RV32IMZBS-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 456(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 448(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 420(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 388(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, s10, a0
+; RV32IMZBS-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, s2, a0
-; RV32IMZBS-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 300(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s11, a0, a1
+; RV32IMZBS-NEXT:    xor s10, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 276(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 256(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 380(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 380(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 72(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, a0, a1
-; RV32IMZBS-NEXT:    xor a0, ra, s7
-; RV32IMZBS-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor ra, s9, t0
+; RV32IMZBS-NEXT:    xor s9, a0, a1
+; RV32IMZBS-NEXT:    xor s11, s11, s7
+; RV32IMZBS-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, ra, a0
+; RV32IMZBS-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 308(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, a0, a1
+; RV32IMZBS-NEXT:    xor ra, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 288(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 268(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s6, a0, a1
@@ -14497,29 +14489,30 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 40(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, a0, a1
-; RV32IMZBS-NEXT:    xor s4, a4, a2
-; RV32IMZBS-NEXT:    xor s5, t1, s5
+; RV32IMZBS-NEXT:    xor s4, a3, a2
+; RV32IMZBS-NEXT:    xor s5, a4, s5
 ; RV32IMZBS-NEXT:    xor t0, t4, t3
 ; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 464(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 428(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 396(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, a7, a0
 ; RV32IMZBS-NEXT:    lw a0, 372(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 364(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 336(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
 ; RV32IMZBS-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
@@ -14541,288 +14534,288 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw s7, 16(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a6, a6, s7
 ; RV32IMZBS-NEXT:    lw s7, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 8(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s7, s8
-; RV32IMZBS-NEXT:    sw s7, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s7, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 612(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 504(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 576(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 500(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 488(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 476(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 496(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 472(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 484(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 476(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 432(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 440(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 428(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 448(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 472(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 392(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 388(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 436(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 408(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 412(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s7, s8
 ; RV32IMZBS-NEXT:    sw s7, 452(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 384(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 640(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 448(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 592(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 440(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 444(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 556(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 432(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 480(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 436(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 476(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 404(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 428(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 436(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 432(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 416(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 436(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 400(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 420(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw s7, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 396(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 408(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
 ; RV32IMZBS-NEXT:    sw s7, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s7, s11
-; RV32IMZBS-NEXT:    sw s7, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s7, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, s7, s10
 ; RV32IMZBS-NEXT:    lw s7, 320(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 380(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s7, 644(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 252(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 388(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 376(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s7, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 184(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 344(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s7, 636(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 104(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 376(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 324(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s8, s7
 ; RV32IMZBS-NEXT:    lw s7, 60(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, s10, s7
+; RV32IMZBS-NEXT:    xor s9, s9, s7
 ; RV32IMZBS-NEXT:    lw s7, 20(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s11, 368(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s11, s7
 ; RV32IMZBS-NEXT:    sw s7, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor s9, ra, s9
+; RV32IMZBS-NEXT:    lw s7, 384(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, s7, ra
+; RV32IMZBS-NEXT:    sw s7, 632(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 328(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s6, s6, s7
-; RV32IMZBS-NEXT:    sw s6, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s6, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s6, 260(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s0, s6
-; RV32IMZBS-NEXT:    sw s0, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s0, 612(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s0, 192(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s1, s1, s0
 ; RV32IMZBS-NEXT:    lw s0, 112(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s2, s0
-; RV32IMZBS-NEXT:    sw s0, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s0, 600(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s0, 64(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s3, s0
-; RV32IMZBS-NEXT:    sw s0, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s0, 592(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s0, 28(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s4, s0
 ; RV32IMZBS-NEXT:    sw s0, 660(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    xor t0, s5, t0
-; RV32IMZBS-NEXT:    sw t0, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw t0, 576(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw t0, 696(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t1, t0
-; RV32IMZBS-NEXT:    sw t0, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw t0, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw t0, 652(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t2, t0
 ; RV32IMZBS-NEXT:    sw t0, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 584(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t3, t0
-; RV32IMZBS-NEXT:    sw t0, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw t0, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw t0, 504(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t4, t0
 ; RV32IMZBS-NEXT:    sw t0, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 444(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 440(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t5, t0
 ; RV32IMZBS-NEXT:    sw t0, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 404(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 400(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t6, t0
 ; RV32IMZBS-NEXT:    sw t0, 652(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    xor a0, a7, a0
-; RV32IMZBS-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 284(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, a0
 ; RV32IMZBS-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a3, a0
-; RV32IMZBS-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a4, a0
 ; RV32IMZBS-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a5, a0
-; RV32IMZBS-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a6, a0
 ; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lui a4, 61681
-; RV32IMZBS-NEXT:    addi a4, a4, -241
-; RV32IMZBS-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lui a6, 61681
+; RV32IMZBS-NEXT:    addi a6, a6, -241
+; RV32IMZBS-NEXT:    sw a6, 696(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli a3, a0, 4
-; RV32IMZBS-NEXT:    and t1, a0, a4
-; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    and t1, a0, a6
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    slli t1, t1, 4
 ; RV32IMZBS-NEXT:    or a0, a3, t1
 ; RV32IMZBS-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 708(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t1, a0, 4
-; RV32IMZBS-NEXT:    and t2, a0, a4
-; RV32IMZBS-NEXT:    and t1, t1, a4
+; RV32IMZBS-NEXT:    and t2, a0, a6
+; RV32IMZBS-NEXT:    and t1, t1, a6
 ; RV32IMZBS-NEXT:    slli t2, t2, 4
 ; RV32IMZBS-NEXT:    or a0, t1, t2
 ; RV32IMZBS-NEXT:    sw a0, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 460(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 456(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 448(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 440(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s11, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
 ; RV32IMZBS-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 428(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 464(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 460(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 712(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t2, a0, 4
-; RV32IMZBS-NEXT:    and t3, a0, a4
-; RV32IMZBS-NEXT:    and t2, t2, a4
+; RV32IMZBS-NEXT:    and t3, a0, a6
+; RV32IMZBS-NEXT:    and t2, t2, a6
 ; RV32IMZBS-NEXT:    slli t3, t3, 4
 ; RV32IMZBS-NEXT:    or a0, t2, t3
 ; RV32IMZBS-NEXT:    sw a0, 712(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 716(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t3, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, a4
-; RV32IMZBS-NEXT:    and t3, t3, a4
+; RV32IMZBS-NEXT:    and a0, a0, a6
+; RV32IMZBS-NEXT:    and t3, t3, a6
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
 ; RV32IMZBS-NEXT:    or a0, t3, a0
 ; RV32IMZBS-NEXT:    sw a0, 716(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    xor a0, s10, a0
 ; RV32IMZBS-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s5, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 264(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s6, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s2, s8, a0
 ; RV32IMZBS-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, s10, a0
-; RV32IMZBS-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s4, s9, a0
+; RV32IMZBS-NEXT:    xor s3, s9, a0
+; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s4, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s0, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s0, 612(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s0, a0
 ; RV32IMZBS-NEXT:    lw a0, 272(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s1, s1, a0
 ; RV32IMZBS-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 364(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 368(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a2, a0
 ; RV32IMZBS-NEXT:    lw a0, 280(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 480(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 476(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a5, a5, a0
 ; RV32IMZBS-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a6, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 108(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 464(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, a0, ra
 ; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 492(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 504(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 520(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, s8, a2
 ; RV32IMZBS-NEXT:    lw s8, 688(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s11, s8, s11
 ; RV32IMZBS-NEXT:    lw s8, 668(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 692(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    lw s9, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s10, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s10, 628(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s9, s10, s9
-; RV32IMZBS-NEXT:    lw s10, 496(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s7, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s10, 492(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 540(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s10, s7, s10
 ; RV32IMZBS-NEXT:    lw s7, 644(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s5, s7, s5
@@ -14842,9 +14835,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    xor t2, t6, t2
 ; RV32IMZBS-NEXT:    lw t6, 684(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, t3, t6
-; RV32IMZBS-NEXT:    lw t6, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t6, 596(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a7, t6
-; RV32IMZBS-NEXT:    lw t6, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t6, 508(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t0, t6
 ; RV32IMZBS-NEXT:    xor a4, t1, a4
 ; RV32IMZBS-NEXT:    lw t1, 312(sp) # 4-byte Folded Reload
@@ -14854,14 +14847,14 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw t1, 128(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, t1
 ; RV32IMZBS-NEXT:    xor a0, ra, a0
-; RV32IMZBS-NEXT:    lw t1, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 604(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, t1
-; RV32IMZBS-NEXT:    lw t1, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 512(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a2, t1
 ; RV32IMZBS-NEXT:    xor t6, s11, s8
-; RV32IMZBS-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 608(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s4, s9, a2
-; RV32IMZBS-NEXT:    lw a2, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s7, s10, a2
 ; RV32IMZBS-NEXT:    xor s5, s5, s6
 ; RV32IMZBS-NEXT:    lw a2, 232(sp) # 4-byte Folded Reload
@@ -14874,9 +14867,9 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw a2, 144(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, t5, a2
 ; RV32IMZBS-NEXT:    xor t2, t2, t3
-; RV32IMZBS-NEXT:    lw a2, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 624(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a7, a2
-; RV32IMZBS-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t0, a2
 ; RV32IMZBS-NEXT:    xor a4, a4, a5
 ; RV32IMZBS-NEXT:    lw a2, 244(sp) # 4-byte Folded Reload
@@ -14898,10 +14891,10 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    slli s1, s1, 2
 ; RV32IMZBS-NEXT:    or t3, t3, s1
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, t1, a1
 ; RV32IMZBS-NEXT:    xor t1, t6, s4
-; RV32IMZBS-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, s7, a2
 ; RV32IMZBS-NEXT:    lw a2, 712(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli s1, a2, 2
@@ -14922,7 +14915,7 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw a2, 168(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, t5, a2
 ; RV32IMZBS-NEXT:    xor a7, t2, a7
-; RV32IMZBS-NEXT:    lw a2, 568(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t0, a2
 ; RV32IMZBS-NEXT:    xor a4, a4, a5
 ; RV32IMZBS-NEXT:    lw a5, 176(sp) # 4-byte Folded Reload
@@ -14950,10 +14943,10 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw a2, 676(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, a0, a2
 ; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, a1, a0
+; RV32IMZBS-NEXT:    xor a1, a1, a0
 ; RV32IMZBS-NEXT:    and t5, t5, s5
 ; RV32IMZBS-NEXT:    slli s1, s1, 1
-; RV32IMZBS-NEXT:    and t0, t0, s5
+; RV32IMZBS-NEXT:    and s2, t0, s5
 ; RV32IMZBS-NEXT:    slli s0, s0, 1
 ; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, t2, a0
@@ -14965,485 +14958,479 @@ define void @commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p
 ; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a4, a0
 ; RV32IMZBS-NEXT:    sw a0, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a0, a5, a6
-; RV32IMZBS-NEXT:    or a1, t1, t3
+; RV32IMZBS-NEXT:    or t0, a5, a6
+; RV32IMZBS-NEXT:    or a0, t1, t3
 ; RV32IMZBS-NEXT:    srli a4, t3, 31
-; RV32IMZBS-NEXT:    xor a2, s2, t6
-; RV32IMZBS-NEXT:    sw a2, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a3, t5, s1
-; RV32IMZBS-NEXT:    or t3, t0, s0
+; RV32IMZBS-NEXT:    xor a1, a1, t6
+; RV32IMZBS-NEXT:    sw a1, 708(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a2, t5, s1
+; RV32IMZBS-NEXT:    or t3, s2, s0
 ; RV32IMZBS-NEXT:    srli s0, s0, 31
-; RV32IMZBS-NEXT:    xor a2, t4, s3
-; RV32IMZBS-NEXT:    sw a2, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, a0, 1
-; RV32IMZBS-NEXT:    andi a6, a1, 2
-; RV32IMZBS-NEXT:    slli a7, a0, 2
-; RV32IMZBS-NEXT:    andi t0, a1, 4
-; RV32IMZBS-NEXT:    slli t1, a0, 3
-; RV32IMZBS-NEXT:    andi t4, a1, 8
-; RV32IMZBS-NEXT:    slli t5, a0, 4
-; RV32IMZBS-NEXT:    andi t6, a1, 16
-; RV32IMZBS-NEXT:    slli s1, a0, 5
-; RV32IMZBS-NEXT:    andi s2, a1, 32
-; RV32IMZBS-NEXT:    slli s3, a0, 31
+; RV32IMZBS-NEXT:    xor a1, t4, s3
+; RV32IMZBS-NEXT:    sw a1, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, t0, 1
+; RV32IMZBS-NEXT:    andi a5, a0, 2
+; RV32IMZBS-NEXT:    slli a6, t0, 2
+; RV32IMZBS-NEXT:    andi a7, a0, 4
+; RV32IMZBS-NEXT:    slli t1, t0, 3
+; RV32IMZBS-NEXT:    andi t4, a0, 8
+; RV32IMZBS-NEXT:    slli t5, t0, 4
+; RV32IMZBS-NEXT:    andi t6, a0, 16
+; RV32IMZBS-NEXT:    slli s1, t0, 5
+; RV32IMZBS-NEXT:    andi s2, a0, 32
+; RV32IMZBS-NEXT:    slli s3, t0, 31
 ; RV32IMZBS-NEXT:    seqz a4, a4
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, s3
-; RV32IMZBS-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a3, 31
+; RV32IMZBS-NEXT:    and a3, a4, s3
+; RV32IMZBS-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 31
 ; RV32IMZBS-NEXT:    seqz s0, s0
 ; RV32IMZBS-NEXT:    addi s0, s0, -1
 ; RV32IMZBS-NEXT:    and a4, s0, a4
-; RV32IMZBS-NEXT:    sw a4, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a0, 6
-; RV32IMZBS-NEXT:    seqz a6, a6
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, a5
-; RV32IMZBS-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a5, a1, 64
-; RV32IMZBS-NEXT:    seqz a6, t0
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, a7
-; RV32IMZBS-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a0, 7
-; RV32IMZBS-NEXT:    seqz a7, t4
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and a2, a7, t1
-; RV32IMZBS-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a7, a1, 128
-; RV32IMZBS-NEXT:    seqz t0, t6
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    and a2, t0, t5
-; RV32IMZBS-NEXT:    sw a2, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t0, a0, 8
-; RV32IMZBS-NEXT:    seqz t1, s2
-; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    and a2, t1, s1
-; RV32IMZBS-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi t1, a1, 256
+; RV32IMZBS-NEXT:    sw a4, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 6
 ; RV32IMZBS-NEXT:    seqz a5, a5
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a4, a5, a4
-; RV32IMZBS-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a0, 9
+; RV32IMZBS-NEXT:    and a3, a5, a1
+; RV32IMZBS-NEXT:    andi a1, a0, 64
 ; RV32IMZBS-NEXT:    seqz a5, a7
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a2, a5, a6
-; RV32IMZBS-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a5, a1, 512
-; RV32IMZBS-NEXT:    seqz a6, t1
+; RV32IMZBS-NEXT:    and a5, a5, a6
+; RV32IMZBS-NEXT:    sw a5, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a5, t0, 7
+; RV32IMZBS-NEXT:    seqz a6, t4
 ; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, t0
-; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a0, 10
-; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a4, a5, a4
-; RV32IMZBS-NEXT:    sw a4, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a1, 1024
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a5, a1
-; RV32IMZBS-NEXT:    bexti a4, a5, 11
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 11
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 12
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 12
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 13
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 13
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 14
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 14
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 15
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 15
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 16
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 16
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 17
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 17
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 18
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 18
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 19
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 19
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 20
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 20
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 21
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 21
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 22
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 22
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 23
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 23
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 24
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 24
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 25
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 25
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 26
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 26
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 27
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 27
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 28
+; RV32IMZBS-NEXT:    and a6, a6, t1
+; RV32IMZBS-NEXT:    sw a6, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a6, a0, 128
+; RV32IMZBS-NEXT:    seqz a7, t6
+; RV32IMZBS-NEXT:    addi a7, a7, -1
+; RV32IMZBS-NEXT:    and a7, a7, t5
+; RV32IMZBS-NEXT:    sw a7, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, t0, 8
+; RV32IMZBS-NEXT:    seqz t1, s2
+; RV32IMZBS-NEXT:    addi t1, t1, -1
+; RV32IMZBS-NEXT:    and t1, t1, s1
+; RV32IMZBS-NEXT:    sw t1, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi t1, a0, 256
+; RV32IMZBS-NEXT:    seqz a1, a1
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, t0, 9
+; RV32IMZBS-NEXT:    seqz a4, a6
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 28
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 29
+; RV32IMZBS-NEXT:    and a4, a4, a5
+; RV32IMZBS-NEXT:    sw a4, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a4, a0, 512
+; RV32IMZBS-NEXT:    seqz a5, t1
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    and a6, a5, a7
+; RV32IMZBS-NEXT:    slli a5, t0, 10
+; RV32IMZBS-NEXT:    seqz a4, a4
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 29
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a1, a1, 1
+; RV32IMZBS-NEXT:    and a1, a4, a1
+; RV32IMZBS-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a1, a0, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a6, a1, a0
-; RV32IMZBS-NEXT:    slli a0, a0, 30
-; RV32IMZBS-NEXT:    bexti a1, a5, 30
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a4, a0
+; RV32IMZBS-NEXT:    bexti a1, a4, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a0, a1, a0
+; RV32IMZBS-NEXT:    slli a5, t0, 11
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 12
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 12
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 13
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 13
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 14
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 14
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 15
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 15
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 16
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 16
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 17
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 17
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 18
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 18
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 19
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 19
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 20
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 20
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 21
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 21
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 22
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 22
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 23
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 23
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 24
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 24
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 25
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 25
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 26
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 26
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 27
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 27
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 28
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 28
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 29
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t0, 29
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, a0, 1
+; RV32IMZBS-NEXT:    seqz a0, a0
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, t0
 ; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli t0, t0, 30
+; RV32IMZBS-NEXT:    bexti a0, a4, 30
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, t0
+; RV32IMZBS-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 1
+; RV32IMZBS-NEXT:    slli a1, a2, 1
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 2
+; RV32IMZBS-NEXT:    slli a1, a2, 2
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 3
+; RV32IMZBS-NEXT:    slli a1, a2, 3
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 4
+; RV32IMZBS-NEXT:    slli a1, a2, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 5
+; RV32IMZBS-NEXT:    slli a1, a2, 5
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 6
+; RV32IMZBS-NEXT:    slli a1, a2, 6
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 7
+; RV32IMZBS-NEXT:    slli a1, a2, 7
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 8
+; RV32IMZBS-NEXT:    slli a1, a2, 8
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 9
+; RV32IMZBS-NEXT:    slli a1, a2, 9
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t3, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 10
+; RV32IMZBS-NEXT:    slli a1, a2, 10
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    not a0, t3
 ; RV32IMZBS-NEXT:    bexti a1, a0, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 11
+; RV32IMZBS-NEXT:    slli a4, a2, 11
 ; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 12
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s0, a3, 12
-; RV32IMZBS-NEXT:    and a1, a1, s0
-; RV32IMZBS-NEXT:    sw a1, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 12
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 13
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 13
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 13
+; RV32IMZBS-NEXT:    and s11, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 14
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 14
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 14
+; RV32IMZBS-NEXT:    and s10, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 15
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 15
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, a2, 15
+; RV32IMZBS-NEXT:    and a1, a1, s0
+; RV32IMZBS-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 16
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 16
-; RV32IMZBS-NEXT:    and s9, a1, a4
+; RV32IMZBS-NEXT:    slli s1, a2, 16
+; RV32IMZBS-NEXT:    and a1, a1, s1
+; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 17
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 17
-; RV32IMZBS-NEXT:    and s6, a1, a4
+; RV32IMZBS-NEXT:    slli a4, a2, 17
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 18
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 18
-; RV32IMZBS-NEXT:    and s10, a1, a4
+; RV32IMZBS-NEXT:    slli a4, a2, 18
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 19
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 19
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 500(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 19
+; RV32IMZBS-NEXT:    and s4, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 20
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s1, a3, 20
-; RV32IMZBS-NEXT:    and a1, a1, s1
-; RV32IMZBS-NEXT:    sw a1, 508(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 21
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 21
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 22
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 22
-; RV32IMZBS-NEXT:    and s0, a1, a4
-; RV32IMZBS-NEXT:    bexti a1, a0, 23
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 23
-; RV32IMZBS-NEXT:    and t6, a1, a4
+; RV32IMZBS-NEXT:    slli a4, a2, 20
+; RV32IMZBS-NEXT:    and s1, a1, a4
+; RV32IMZBS-NEXT:    bexti a4, a0, 21
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 21
+; RV32IMZBS-NEXT:    and s6, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 22
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 22
+; RV32IMZBS-NEXT:    and s7, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 23
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 23
+; RV32IMZBS-NEXT:    and s9, a4, a5
 ; RV32IMZBS-NEXT:    bexti a4, a0, 24
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, a3, 24
-; RV32IMZBS-NEXT:    and s1, a4, a5
-; RV32IMZBS-NEXT:    bexti a5, a0, 25
+; RV32IMZBS-NEXT:    slli a5, a2, 24
+; RV32IMZBS-NEXT:    and t4, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 25
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 25
+; RV32IMZBS-NEXT:    and t1, a4, a5
+; RV32IMZBS-NEXT:    bexti a5, a0, 26
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    slli a7, a2, 26
+; RV32IMZBS-NEXT:    and t5, a5, a7
+; RV32IMZBS-NEXT:    bexti a5, a0, 27
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a7, a3, 25
-; RV32IMZBS-NEXT:    and s2, a5, a7
-; RV32IMZBS-NEXT:    bexti a7, a0, 26
+; RV32IMZBS-NEXT:    slli a7, a2, 27
+; RV32IMZBS-NEXT:    and t6, a5, a7
+; RV32IMZBS-NEXT:    bexti a5, a0, 28
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    slli a7, a2, 28
+; RV32IMZBS-NEXT:    and s3, a5, a7
+; RV32IMZBS-NEXT:    bexti a7, a0, 29
 ; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli t0, a3, 26
-; RV32IMZBS-NEXT:    and s3, a7, t0
-; RV32IMZBS-NEXT:    bexti t0, a0, 27
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    slli t1, a3, 27
-; RV32IMZBS-NEXT:    and s7, t0, t1
-; RV32IMZBS-NEXT:    bexti t1, a0, 28
-; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    slli t2, a3, 28
-; RV32IMZBS-NEXT:    and s4, t1, t2
-; RV32IMZBS-NEXT:    bexti t2, a0, 29
-; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    slli a2, a3, 29
-; RV32IMZBS-NEXT:    and t5, t2, a2
+; RV32IMZBS-NEXT:    slli t2, a2, 29
+; RV32IMZBS-NEXT:    and s2, a7, t2
 ; RV32IMZBS-NEXT:    andi t2, t3, 1
 ; RV32IMZBS-NEXT:    seqz t2, t2
 ; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    and t2, t2, a3
-; RV32IMZBS-NEXT:    slli a3, a3, 30
+; RV32IMZBS-NEXT:    and t2, t2, a2
+; RV32IMZBS-NEXT:    slli a2, a2, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and t4, a0, a3
-; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, a6, a0
+; RV32IMZBS-NEXT:    and s0, a0, a2
+; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, a0, a3
 ; RV32IMZBS-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a0, a5
+; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, a0
+; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a0, a3
 ; RV32IMZBS-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a4, 580(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a0, a4
-; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a0, a5
 ; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, t2, a0
 ; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
 ; RV32IMZBS-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw ra, 528(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, ra
-; RV32IMZBS-NEXT:    lw ra, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s11, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, ra, s11
-; RV32IMZBS-NEXT:    xor s6, s9, s6
-; RV32IMZBS-NEXT:    xor t6, s0, t6
-; RV32IMZBS-NEXT:    xor t4, t5, t4
-; RV32IMZBS-NEXT:    xor t1, t1, t3
+; RV32IMZBS-NEXT:    xor s10, s11, s10
+; RV32IMZBS-NEXT:    xor s1, s4, s1
+; RV32IMZBS-NEXT:    xor t1, t4, t1
+; RV32IMZBS-NEXT:    xor t0, t0, t3
 ; RV32IMZBS-NEXT:    lw t3, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t3
+; RV32IMZBS-NEXT:    lw t3, 656(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a6, a6, t3
-; RV32IMZBS-NEXT:    lw t3, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t3, 636(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a7, t3
-; RV32IMZBS-NEXT:    lw t3, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t3
 ; RV32IMZBS-NEXT:    lw t3, 616(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, t3
 ; RV32IMZBS-NEXT:    lw t3, 588(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, t3
-; RV32IMZBS-NEXT:    lw t3, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, t3
 ; RV32IMZBS-NEXT:    xor a0, t2, a0
 ; RV32IMZBS-NEXT:    lw t2, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, t2
-; RV32IMZBS-NEXT:    lw t2, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t2, 536(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, t2
-; RV32IMZBS-NEXT:    lw t2, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, ra, t2
-; RV32IMZBS-NEXT:    xor t3, s6, s10
-; RV32IMZBS-NEXT:    xor t5, t6, s1
-; RV32IMZBS-NEXT:    lw t6, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, t6
-; RV32IMZBS-NEXT:    xor a6, t1, a6
-; RV32IMZBS-NEXT:    lw t1, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t1
-; RV32IMZBS-NEXT:    lw t1, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t1
-; RV32IMZBS-NEXT:    lw t1, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t1
-; RV32IMZBS-NEXT:    lw t1, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t1
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, t2, a2
-; RV32IMZBS-NEXT:    lw t1, 500(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t3, t1
-; RV32IMZBS-NEXT:    xor t2, t5, s2
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, t0, a7
-; RV32IMZBS-NEXT:    lw t0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t2, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, s10, t2
+; RV32IMZBS-NEXT:    xor t3, s1, s6
+; RV32IMZBS-NEXT:    xor t1, t1, t5
+; RV32IMZBS-NEXT:    xor a5, t0, a5
+; RV32IMZBS-NEXT:    lw t0, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t0
+; RV32IMZBS-NEXT:    lw t0, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t0
+; RV32IMZBS-NEXT:    lw t0, 620(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, t0
-; RV32IMZBS-NEXT:    lw t0, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 592(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, t0
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, t1, a2
-; RV32IMZBS-NEXT:    xor t0, t2, s3
+; RV32IMZBS-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, t2, a2
+; RV32IMZBS-NEXT:    xor t0, t3, s7
+; RV32IMZBS-NEXT:    xor t1, t1, t6
+; RV32IMZBS-NEXT:    lw t2, 688(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t2
+; RV32IMZBS-NEXT:    lw t2, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t2
+; RV32IMZBS-NEXT:    lw t2, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t2
+; RV32IMZBS-NEXT:    lw t2, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    lw t2, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, t2
+; RV32IMZBS-NEXT:    lw t2, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t2
+; RV32IMZBS-NEXT:    lw t2, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t2
+; RV32IMZBS-NEXT:    xor t0, t0, s9
+; RV32IMZBS-NEXT:    xor t1, t1, s3
+; RV32IMZBS-NEXT:    lw t2, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    lw t2, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t2
+; RV32IMZBS-NEXT:    xor t1, t1, s2
+; RV32IMZBS-NEXT:    xor a6, a5, a6
 ; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a7
-; RV32IMZBS-NEXT:    lw a7, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a7, 600(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a7
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    xor a2, t0, s7
+; RV32IMZBS-NEXT:    xor a1, a0, a1
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    xor a2, t1, s0
 ; RV32IMZBS-NEXT:    xor a3, a6, a3
-; RV32IMZBS-NEXT:    lw a6, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a6, 700(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a6
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a1, a2, s4
+; RV32IMZBS-NEXT:    xor a1, a1, t0
+; RV32IMZBS-NEXT:    lw a6, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a6
+; RV32IMZBS-NEXT:    lw t0, 720(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a6, a3, t0
+; RV32IMZBS-NEXT:    srli a7, a3, 8
 ; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a3, a3, a5
-; RV32IMZBS-NEXT:    xor a0, a0, t4
-; RV32IMZBS-NEXT:    srli a1, a3, 8
-; RV32IMZBS-NEXT:    srli a2, a3, 24
-; RV32IMZBS-NEXT:    slli a4, a3, 24
-; RV32IMZBS-NEXT:    lw a5, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a3, a3, a5
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    or a1, a1, a2
-; RV32IMZBS-NEXT:    srli a2, a0, 8
-; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, a4, a3
-; RV32IMZBS-NEXT:    srli a4, a0, 24
-; RV32IMZBS-NEXT:    and a2, a2, a5
-; RV32IMZBS-NEXT:    or a2, a2, a4
-; RV32IMZBS-NEXT:    and a4, a0, a5
+; RV32IMZBS-NEXT:    and a4, a1, t0
+; RV32IMZBS-NEXT:    xor a2, a1, a2
+; RV32IMZBS-NEXT:    srli a1, a1, 8
+; RV32IMZBS-NEXT:    and a7, a7, t0
+; RV32IMZBS-NEXT:    and a1, a1, t0
+; RV32IMZBS-NEXT:    slli a5, a5, 24
+; RV32IMZBS-NEXT:    slli a6, a6, 8
+; RV32IMZBS-NEXT:    or a5, a5, a6
+; RV32IMZBS-NEXT:    srli a3, a3, 24
+; RV32IMZBS-NEXT:    or a3, a7, a3
 ; RV32IMZBS-NEXT:    slli a0, a0, 24
 ; RV32IMZBS-NEXT:    slli a4, a4, 8
 ; RV32IMZBS-NEXT:    or a0, a0, a4
-; RV32IMZBS-NEXT:    or a1, a3, a1
-; RV32IMZBS-NEXT:    or a0, a0, a2
-; RV32IMZBS-NEXT:    srli a2, a1, 4
+; RV32IMZBS-NEXT:    srli a2, a2, 24
+; RV32IMZBS-NEXT:    or a1, a1, a2
+; RV32IMZBS-NEXT:    or a3, a5, a3
+; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    srli a1, a3, 4
 ; RV32IMZBS-NEXT:    lw a4, 696(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    and a2, a3, a4
 ; RV32IMZBS-NEXT:    srli a3, a0, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a4
-; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    and a1, a1, a4
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    slli a1, a1, 4
+; RV32IMZBS-NEXT:    slli a2, a2, 4
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    or a1, a2, a1
+; RV32IMZBS-NEXT:    or a1, a1, a2
 ; RV32IMZBS-NEXT:    or a0, a3, a0
 ; RV32IMZBS-NEXT:    srli a2, a1, 2
 ; RV32IMZBS-NEXT:    and a1, a1, s8
@@ -17392,34 +17379,34 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    and s1, s5, a0
 ; RV32I-NEXT:    seqz s1, s1
-; RV32I-NEXT:    addi a0, a2, -1
+; RV32I-NEXT:    addi a2, a2, -1
 ; RV32I-NEXT:    addi s1, s1, -1
 ; RV32I-NEXT:    slli a5, s4, 30
-; RV32I-NEXT:    and s8, a0, a5
-; RV32I-NEXT:    slli a2, t3, 30
-; RV32I-NEXT:    and a5, s1, a2
-; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, a6, 1
+; RV32I-NEXT:    and s8, a2, a5
+; RV32I-NEXT:    slli a3, t3, 30
+; RV32I-NEXT:    and a5, s1, a3
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a3, a6, 1
 ; RV32I-NEXT:    srli a6, a6, 31
-; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    andi ra, s5, 1
 ; RV32I-NEXT:    seqz ra, ra
-; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a3, a3, -1
 ; RV32I-NEXT:    addi ra, ra, -1
 ; RV32I-NEXT:    slli t5, s4, 31
-; RV32I-NEXT:    and s4, a0, s4
+; RV32I-NEXT:    and s4, a3, s4
 ; RV32I-NEXT:    and ra, ra, t3
-; RV32I-NEXT:    and a2, a0, t3
+; RV32I-NEXT:    and a2, a3, t3
 ; RV32I-NEXT:    slli t3, t3, 31
 ; RV32I-NEXT:    srli a3, s5, 31
 ; RV32I-NEXT:    seqz a6, a6
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi s5, a6, -1
-; RV32I-NEXT:    addi a6, a3, -1
+; RV32I-NEXT:    addi a3, a3, -1
 ; RV32I-NEXT:    and a0, s5, t5
 ; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, a6, t3
+; RV32I-NEXT:    and a0, a3, t3
 ; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, s5, t3
 ; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
@@ -17485,7 +17472,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, a0, a1
+; RV32I-NEXT:    xor s10, a0, a1
 ; RV32I-NEXT:    lw a0, 276(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 256(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
@@ -17504,7 +17491,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, a0, a1
+; RV32I-NEXT:    xor s9, a0, a1
 ; RV32I-NEXT:    xor a0, s11, s8
 ; RV32I-NEXT:    sw a0, 340(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    xor s11, ra, t0
@@ -17627,7 +17614,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    xor s7, s8, s7
 ; RV32I-NEXT:    sw s7, 680(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw s7, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, s7, s9
+; RV32I-NEXT:    xor s10, s7, s10
 ; RV32I-NEXT:    lw s7, 316(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw s8, 376(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s7, s8, s7
@@ -17645,7 +17632,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    xor s7, s8, s7
 ; RV32I-NEXT:    sw s7, 636(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw s7, 60(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, s10, s7
+; RV32I-NEXT:    xor s9, s9, s7
 ; RV32I-NEXT:    lw s7, 20(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw s8, 340(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s7, s8, s7
@@ -17777,7 +17764,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    or a0, t3, a0
 ; RV32I-NEXT:    sw a0, 720(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, s9, a0
+; RV32I-NEXT:    xor a0, s10, a0
 ; RV32I-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 644(sp) # 4-byte Folded Reload
@@ -17789,7 +17776,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s2, a1, a0
 ; RV32I-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s10, a0
+; RV32I-NEXT:    xor s3, s9, a0
 ; RV32I-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s4, s8, a0
 ; RV32I-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
@@ -17885,88 +17872,88 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    xor a3, a3, t1
 ; RV32I-NEXT:    xor a0, ra, a0
 ; RV32I-NEXT:    lw t1, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t1
-; RV32I-NEXT:    lw t1, 480(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a2, t1
+; RV32I-NEXT:    xor t1, a1, t1
+; RV32I-NEXT:    lw a1, 480(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a1
 ; RV32I-NEXT:    xor t6, s11, s8
-; RV32I-NEXT:    lw a2, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s9, a2
-; RV32I-NEXT:    lw a2, 488(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s7, s10, a2
+; RV32I-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, s9, a1
+; RV32I-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s10, a1
 ; RV32I-NEXT:    xor s5, s5, s6
-; RV32I-NEXT:    lw a2, 208(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s2, a2
-; RV32I-NEXT:    lw a2, 124(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, a2
+; RV32I-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s2, a1
+; RV32I-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s3, a1
 ; RV32I-NEXT:    xor s0, s0, s1
-; RV32I-NEXT:    lw a2, 212(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, a2
-; RV32I-NEXT:    lw a2, 128(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, a2
+; RV32I-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, a1
+; RV32I-NEXT:    lw a1, 128(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t5, a1
 ; RV32I-NEXT:    xor t2, t2, t3
-; RV32I-NEXT:    lw a2, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, a2
-; RV32I-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, a2
+; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, a1
+; RV32I-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, a1
 ; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a2, 220(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a6, a2
-; RV32I-NEXT:    lw a2, 136(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a2
-; RV32I-NEXT:    lui a2, 209715
-; RV32I-NEXT:    addi s8, a2, 819
-; RV32I-NEXT:    lw a2, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, a2, 2
-; RV32I-NEXT:    and t3, a2, s8
+; RV32I-NEXT:    lw a1, 220(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a6, a1
+; RV32I-NEXT:    lw a1, 136(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a1
+; RV32I-NEXT:    lui a1, 209715
+; RV32I-NEXT:    addi s8, a1, 819
+; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a6, a1, 2
+; RV32I-NEXT:    and t3, a1, s8
 ; RV32I-NEXT:    and a6, a6, s8
 ; RV32I-NEXT:    slli t3, t3, 2
 ; RV32I-NEXT:    or a6, a6, t3
-; RV32I-NEXT:    lw a2, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli t3, a2, 2
-; RV32I-NEXT:    and s1, a2, s8
+; RV32I-NEXT:    lw a1, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli t3, a1, 2
+; RV32I-NEXT:    and s1, a1, s8
 ; RV32I-NEXT:    and t3, t3, s8
 ; RV32I-NEXT:    slli s1, s1, 2
 ; RV32I-NEXT:    or t3, t3, s1
-; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    xor a0, a0, t1
 ; RV32I-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, t1, a1
+; RV32I-NEXT:    xor a2, a2, a1
 ; RV32I-NEXT:    xor t1, t6, s4
-; RV32I-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, s7, a2
-; RV32I-NEXT:    lw a2, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s1, a2, 2
-; RV32I-NEXT:    and s4, a2, s8
+; RV32I-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s7, a1
+; RV32I-NEXT:    lw a1, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s1, a1, 2
+; RV32I-NEXT:    and s4, a1, s8
 ; RV32I-NEXT:    and s1, s1, s8
 ; RV32I-NEXT:    slli s4, s4, 2
 ; RV32I-NEXT:    or s1, s1, s4
-; RV32I-NEXT:    lw a2, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s4, a2, 2
-; RV32I-NEXT:    and s6, a2, s8
+; RV32I-NEXT:    lw a1, 720(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s4, a1, 2
+; RV32I-NEXT:    and s6, a1, s8
 ; RV32I-NEXT:    and s4, s4, s8
 ; RV32I-NEXT:    slli s6, s6, 2
 ; RV32I-NEXT:    or s4, s4, s6
 ; RV32I-NEXT:    xor s2, s5, s2
-; RV32I-NEXT:    lw a2, 152(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, a2
+; RV32I-NEXT:    lw a1, 152(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s3, a1
 ; RV32I-NEXT:    xor t4, s0, t4
-; RV32I-NEXT:    lw a2, 148(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, a2
+; RV32I-NEXT:    lw a1, 148(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t5, a1
 ; RV32I-NEXT:    xor a7, t2, a7
-; RV32I-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, a2
+; RV32I-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, a1
 ; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a2, 156(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a2
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, t1, t6
+; RV32I-NEXT:    lw a1, 156(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a1
+; RV32I-NEXT:    xor a0, a0, a2
+; RV32I-NEXT:    xor a2, t1, t6
 ; RV32I-NEXT:    xor a5, s2, s3
 ; RV32I-NEXT:    xor t1, t4, t5
 ; RV32I-NEXT:    xor a7, a7, t0
 ; RV32I-NEXT:    xor a3, a4, a3
-; RV32I-NEXT:    lw a2, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    lw a2, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a1, a2
+; RV32I-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    lw a1, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a1
 ; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, a1
 ; RV32I-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
@@ -17977,566 +17964,565 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a3, a1
 ; RV32I-NEXT:    sw a1, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s2, 349525
-; RV32I-NEXT:    addi s2, s2, 1365
-; RV32I-NEXT:    srli a1, a6, 1
-; RV32I-NEXT:    and a3, a6, s2
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a1, a1, a3
-; RV32I-NEXT:    xor a0, t0, a0
+; RV32I-NEXT:    lui s3, 349525
+; RV32I-NEXT:    addi s3, s3, 1365
+; RV32I-NEXT:    srli a3, a6, 1
+; RV32I-NEXT:    and a6, a6, s3
+; RV32I-NEXT:    and a3, a3, s3
+; RV32I-NEXT:    slli a6, a6, 1
+; RV32I-NEXT:    or a7, a3, a6
+; RV32I-NEXT:    xor a0, a2, a0
 ; RV32I-NEXT:    sw a0, 712(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli a0, s1, 1
-; RV32I-NEXT:    and s1, s1, s2
-; RV32I-NEXT:    and a0, a0, s2
+; RV32I-NEXT:    and s1, s1, s3
+; RV32I-NEXT:    and a0, a0, s3
 ; RV32I-NEXT:    slli s1, s1, 1
-; RV32I-NEXT:    or a4, a0, s1
+; RV32I-NEXT:    or t0, a0, s1
 ; RV32I-NEXT:    xor a0, t1, a5
 ; RV32I-NEXT:    sw a0, 708(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli a0, t3, 1
-; RV32I-NEXT:    and a3, t3, s2
-; RV32I-NEXT:    and a0, a0, s2
+; RV32I-NEXT:    and a2, t3, s3
+; RV32I-NEXT:    and a0, a0, s3
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or a0, a0, a2
+; RV32I-NEXT:    srli a2, a2, 31
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 31
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a2, s4, 1
+; RV32I-NEXT:    and a3, s4, s3
+; RV32I-NEXT:    and a2, a2, s3
 ; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a0, a0, a3
+; RV32I-NEXT:    or t2, a2, a3
 ; RV32I-NEXT:    srli a3, a3, 31
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 31
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a3, s4, 1
-; RV32I-NEXT:    and a5, s4, s2
-; RV32I-NEXT:    and a3, a3, s2
-; RV32I-NEXT:    slli a5, a5, 1
-; RV32I-NEXT:    or t1, a3, a5
-; RV32I-NEXT:    srli a5, a5, 31
-; RV32I-NEXT:    seqz a3, a5
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a4, 31
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 2
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 1
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 2
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 8
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 3
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 680(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 16
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 4
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 32
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 5
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 64
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 6
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 128
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 7
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 660(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 256
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 8
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 652(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 512
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 9
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 1024
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 10
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a2, 436(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a3, a0, a2
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 11
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a6, 1
-; RV32I-NEXT:    and a3, a0, a6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 12
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a7, 2
-; RV32I-NEXT:    and a3, a0, a7
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 13
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 644(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t0, 4
-; RV32I-NEXT:    and a3, a0, t0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 14
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t2, 8
-; RV32I-NEXT:    and a3, a0, t2
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 15
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s9, 16
-; RV32I-NEXT:    and a3, a0, s9
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 16
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    seqz a2, a3
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, t0, 31
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 1
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 4
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 2
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 8
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 3
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 16
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 4
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 32
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 5
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 64
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 6
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 128
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 7
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 256
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 8
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 512
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 9
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 1024
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 10
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a2, a0, a1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 11
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a4, 1
+; RV32I-NEXT:    and a2, a0, a4
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 12
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a5, 2
+; RV32I-NEXT:    and a2, a0, a5
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 13
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a6, 4
+; RV32I-NEXT:    and a2, a0, a6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 14
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t1, 8
+; RV32I-NEXT:    and a2, a0, t1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 15
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t3, 16
+; RV32I-NEXT:    and a2, a0, t3
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 16
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t4, 32
-; RV32I-NEXT:    and a3, a0, t4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 17
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a2, a0, t4
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 17
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t5, 64
-; RV32I-NEXT:    and a3, a0, t5
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 18
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a2, a0, t5
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 18
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t6, 128
-; RV32I-NEXT:    and a3, a0, t6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 19
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s0, 256
-; RV32I-NEXT:    and a3, a0, s0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 20
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s1, 512
-; RV32I-NEXT:    and a3, a0, s1
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 21
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s3, 1024
-; RV32I-NEXT:    and a3, a0, s3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 22
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s4, 2048
-; RV32I-NEXT:    and a3, a0, s4
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 23
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s5, 4096
-; RV32I-NEXT:    and a3, a0, s5
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 24
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s6, 8192
-; RV32I-NEXT:    and a3, a0, s6
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 25
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s7, 16384
-; RV32I-NEXT:    and a3, a0, s7
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 26
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 600(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 32768
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 27
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 65536
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 28
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a3, 131072
-; RV32I-NEXT:    and a3, a0, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, a1, 29
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    sw a3, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a3, a0, 1
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and a3, a3, a1
-; RV32I-NEXT:    sw a3, 572(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a1, a1, 30
-; RV32I-NEXT:    lui t3, 262144
-; RV32I-NEXT:    and a0, a0, t3
-; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 2
+; RV32I-NEXT:    and a2, a0, t6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 19
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s2, 256
+; RV32I-NEXT:    and a2, a0, s2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 20
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s6, 512
+; RV32I-NEXT:    and a2, a0, s6
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 21
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s7, 1024
+; RV32I-NEXT:    and a2, a0, s7
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 22
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s9, 2048
+; RV32I-NEXT:    and a2, a0, s9
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 23
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 4096
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 24
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 8192
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 25
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 16384
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 26
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 32768
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 27
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 65536
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 28
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a2, 131072
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a3, a7, 29
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a2, a0, 1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    and a2, a2, a7
+; RV32I-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a7, a7, 30
+; RV32I-NEXT:    lui a3, 262144
+; RV32I-NEXT:    and a0, a0, a3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 4
+; RV32I-NEXT:    and a0, a0, a7
+; RV32I-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 2
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t0, 1
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 8
+; RV32I-NEXT:    andi a0, t2, 4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 3
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t0, 2
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 16
+; RV32I-NEXT:    andi a0, t2, 8
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 4
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 32
+; RV32I-NEXT:    slli a2, t0, 3
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 16
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 5
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t0, 4
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 32
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t0, 5
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 64
+; RV32I-NEXT:    andi a0, t2, 64
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 6
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 128
+; RV32I-NEXT:    slli a2, t0, 6
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 128
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 7
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 256
+; RV32I-NEXT:    slli a2, t0, 7
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 256
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 8
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t0, 8
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 512
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t0, 9
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t2, 1024
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t0, 10
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 512
+; RV32I-NEXT:    and a0, t2, a1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 9
-; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    slli a2, t0, 11
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t2, a4
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a2, t0, 12
+; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t1, 1024
+; RV32I-NEXT:    and a0, t2, a5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 10
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, a2
+; RV32I-NEXT:    slli a2, t0, 13
+; RV32I-NEXT:    and s11, a0, a2
+; RV32I-NEXT:    and a0, t2, a6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 11
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, a6
+; RV32I-NEXT:    slli a2, t0, 14
+; RV32I-NEXT:    and s10, a0, a2
+; RV32I-NEXT:    and a0, t2, t1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 12
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, a7
+; RV32I-NEXT:    slli a2, t0, 15
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t2, t3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 13
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, t0
+; RV32I-NEXT:    slli s0, t0, 16
+; RV32I-NEXT:    and a0, a0, s0
+; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t2, t4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 14
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, t2
+; RV32I-NEXT:    slli a2, t0, 17
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t2, t5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 15
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, s9
+; RV32I-NEXT:    slli s1, t0, 18
+; RV32I-NEXT:    and a0, a0, s1
+; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t2, t6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 16
-; RV32I-NEXT:    and s10, a0, a1
-; RV32I-NEXT:    and a0, t1, t4
+; RV32I-NEXT:    slli a2, t0, 19
+; RV32I-NEXT:    and s5, a0, a2
+; RV32I-NEXT:    and a0, t2, s2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 17
-; RV32I-NEXT:    and s9, a0, a1
-; RV32I-NEXT:    and a0, t1, t5
+; RV32I-NEXT:    slli a5, t0, 20
+; RV32I-NEXT:    and s4, a0, a5
+; RV32I-NEXT:    and a0, t2, s6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 18
-; RV32I-NEXT:    and s11, a0, a1
-; RV32I-NEXT:    and a0, t1, t6
+; RV32I-NEXT:    slli a2, t0, 21
+; RV32I-NEXT:    and s6, a0, a2
+; RV32I-NEXT:    and a0, t2, s7
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 19
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, s0
+; RV32I-NEXT:    slli a2, t0, 22
+; RV32I-NEXT:    and s7, a0, a2
+; RV32I-NEXT:    and a0, t2, s9
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s0, a4, 20
-; RV32I-NEXT:    and a0, a0, s0
-; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, s1
+; RV32I-NEXT:    slli a2, t0, 23
+; RV32I-NEXT:    and s9, a0, a2
+; RV32I-NEXT:    lui a0, 4096
+; RV32I-NEXT:    and a0, t2, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s1, a4, 21
-; RV32I-NEXT:    and a0, a0, s1
-; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, s3
+; RV32I-NEXT:    slli a2, t0, 24
+; RV32I-NEXT:    and t4, a0, a2
+; RV32I-NEXT:    lui a0, 8192
+; RV32I-NEXT:    and a0, t2, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, a4, 22
-; RV32I-NEXT:    and s1, a0, a1
-; RV32I-NEXT:    and a1, t1, s4
-; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a3, a4, 23
-; RV32I-NEXT:    and s0, a1, a3
-; RV32I-NEXT:    and a1, t1, s5
-; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a5, a4, 24
-; RV32I-NEXT:    and s3, a1, a5
-; RV32I-NEXT:    and a5, t1, s6
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, a4, 25
-; RV32I-NEXT:    and s4, a5, a6
-; RV32I-NEXT:    and a6, t1, s7
-; RV32I-NEXT:    seqz a6, a6
-; RV32I-NEXT:    addi a6, a6, -1
-; RV32I-NEXT:    slli a7, a4, 26
-; RV32I-NEXT:    and s5, a6, a7
+; RV32I-NEXT:    slli a2, t0, 25
+; RV32I-NEXT:    and t3, a0, a2
+; RV32I-NEXT:    lui a0, 16384
+; RV32I-NEXT:    and a2, t2, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a4, t0, 26
+; RV32I-NEXT:    and t5, a2, a4
 ; RV32I-NEXT:    lui a0, 32768
-; RV32I-NEXT:    and a6, t1, a0
-; RV32I-NEXT:    seqz a6, a6
-; RV32I-NEXT:    addi a6, a6, -1
-; RV32I-NEXT:    slli t2, a4, 27
-; RV32I-NEXT:    and s7, a6, t2
+; RV32I-NEXT:    and a4, t2, a0
+; RV32I-NEXT:    seqz a4, a4
+; RV32I-NEXT:    addi a4, a4, -1
+; RV32I-NEXT:    slli a5, t0, 27
+; RV32I-NEXT:    and t6, a4, a5
 ; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and a6, t1, a0
-; RV32I-NEXT:    seqz a6, a6
-; RV32I-NEXT:    addi a6, a6, -1
-; RV32I-NEXT:    slli t0, a4, 28
-; RV32I-NEXT:    and s6, a6, t0
+; RV32I-NEXT:    and a5, t2, a0
+; RV32I-NEXT:    seqz a5, a5
+; RV32I-NEXT:    addi a5, a5, -1
+; RV32I-NEXT:    slli a6, t0, 28
+; RV32I-NEXT:    and s2, a5, a6
 ; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and t0, t1, a0
-; RV32I-NEXT:    seqz t0, t0
-; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a2, a4, 29
-; RV32I-NEXT:    and t6, t0, a2
-; RV32I-NEXT:    and t0, t1, t3
-; RV32I-NEXT:    andi t1, t1, 1
-; RV32I-NEXT:    seqz t1, t1
-; RV32I-NEXT:    addi t1, t1, -1
-; RV32I-NEXT:    and t1, t1, a4
-; RV32I-NEXT:    slli a4, a4, 30
-; RV32I-NEXT:    seqz t0, t0
-; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    and t4, t0, a4
-; RV32I-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a1, a0
+; RV32I-NEXT:    and a5, t2, a0
+; RV32I-NEXT:    seqz a5, a5
+; RV32I-NEXT:    addi a0, a5, -1
+; RV32I-NEXT:    slli a5, t0, 29
+; RV32I-NEXT:    and s1, a0, a5
+; RV32I-NEXT:    and a0, t2, a3
+; RV32I-NEXT:    andi t2, t2, 1
+; RV32I-NEXT:    seqz t2, t2
+; RV32I-NEXT:    addi t2, t2, -1
+; RV32I-NEXT:    and t2, t2, t0
+; RV32I-NEXT:    slli t0, t0, 30
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    and s0, a0, t0
 ; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, a1, a0
+; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a0, a1
-; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a0, a1
+; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a0, a1
+; RV32I-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t0, a0, a1
-; RV32I-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a0, a1
-; RV32I-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, a0, a1
-; RV32I-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a0, a3
+; RV32I-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a0, a4
-; RV32I-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a0, a1
-; RV32I-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t1, a0
+; RV32I-NEXT:    lw a5, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, t2, a0
+; RV32I-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    lw a3, 516(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw ra, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, ra
-; RV32I-NEXT:    xor s9, s10, s9
-; RV32I-NEXT:    xor s0, s1, s0
-; RV32I-NEXT:    xor t4, t6, t4
-; RV32I-NEXT:    xor a7, t5, a7
-; RV32I-NEXT:    lw t5, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t5
-; RV32I-NEXT:    lw t5, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, t2, t5
-; RV32I-NEXT:    lw t5, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, t5
-; RV32I-NEXT:    lw t5, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t5
-; RV32I-NEXT:    lw t5, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t5
-; RV32I-NEXT:    lw t5, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, t5
-; RV32I-NEXT:    xor a0, t1, a0
-; RV32I-NEXT:    lw t1, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw ra, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, ra
+; RV32I-NEXT:    xor s10, s11, s10
+; RV32I-NEXT:    xor s4, s5, s4
+; RV32I-NEXT:    xor t3, t4, t3
+; RV32I-NEXT:    xor a6, t1, a6
+; RV32I-NEXT:    lw t1, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t1
+; RV32I-NEXT:    lw t1, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, t1
+; RV32I-NEXT:    lw t1, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t1
+; RV32I-NEXT:    lw t1, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t1
+; RV32I-NEXT:    lw t1, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t1
+; RV32I-NEXT:    xor a0, t2, a0
+; RV32I-NEXT:    lw t1, 552(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a1, t1
-; RV32I-NEXT:    lw t1, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t1, 532(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a2, a2, t1
-; RV32I-NEXT:    lw t1, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t1
-; RV32I-NEXT:    xor t1, s9, s11
-; RV32I-NEXT:    xor t5, s0, s3
-; RV32I-NEXT:    lw t6, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, t6
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t2, t0
-; RV32I-NEXT:    lw t2, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, t3, t2
-; RV32I-NEXT:    lw t3, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t3
-; RV32I-NEXT:    lw t3, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t3
+; RV32I-NEXT:    lw t1, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, s10, t1
+; RV32I-NEXT:    xor t2, s4, s6
+; RV32I-NEXT:    xor t3, t3, t5
+; RV32I-NEXT:    xor a6, a6, a7
+; RV32I-NEXT:    lw a7, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t0, a7
+; RV32I-NEXT:    lw t0, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t0
+; RV32I-NEXT:    lw t0, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t0
+; RV32I-NEXT:    lw t0, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t0
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    lw a3, 500(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, t1, a3
-; RV32I-NEXT:    xor t1, t5, s4
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t2, t0
-; RV32I-NEXT:    lw t2, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, t1, a2
+; RV32I-NEXT:    xor t0, t2, s7
+; RV32I-NEXT:    xor t1, t3, t6
+; RV32I-NEXT:    lw t2, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t2
+; RV32I-NEXT:    lw t2, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t2
+; RV32I-NEXT:    lw t2, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t2
+; RV32I-NEXT:    lw t2, 620(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a4, t2
+; RV32I-NEXT:    lw t2, 596(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t2
+; RV32I-NEXT:    lw t2, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t2
+; RV32I-NEXT:    lw t2, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t2
+; RV32I-NEXT:    lw t2, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    xor t0, t0, s9
+; RV32I-NEXT:    xor t1, t1, s2
+; RV32I-NEXT:    lw t2, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t2
 ; RV32I-NEXT:    lw t2, 600(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, t2
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    xor a3, t1, s5
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t0
-; RV32I-NEXT:    lw t0, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t0
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, a3, s7
-; RV32I-NEXT:    xor a3, a7, a4
-; RV32I-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t2, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    xor t1, t1, s1
+; RV32I-NEXT:    xor a7, a6, a7
+; RV32I-NEXT:    xor a3, a7, a3
+; RV32I-NEXT:    lw a7, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a7
+; RV32I-NEXT:    xor a1, a0, a1
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    xor a2, t1, s0
+; RV32I-NEXT:    xor a3, a3, a4
+; RV32I-NEXT:    lw a4, 700(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a5, a4
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, a2, s6
+; RV32I-NEXT:    xor a1, a1, t0
+; RV32I-NEXT:    lw a5, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a5
+; RV32I-NEXT:    lw t0, 724(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a5, a3, t0
+; RV32I-NEXT:    srli a7, a3, 8
 ; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, a3, a6
-; RV32I-NEXT:    xor a0, a0, t4
-; RV32I-NEXT:    srli a2, a1, 8
-; RV32I-NEXT:    srli a3, a1, 24
-; RV32I-NEXT:    slli a4, a1, 24
-; RV32I-NEXT:    lw a5, 724(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a1, a1, a5
-; RV32I-NEXT:    and a2, a2, a5
-; RV32I-NEXT:    or a2, a2, a3
-; RV32I-NEXT:    srli a3, a0, 8
-; RV32I-NEXT:    slli a1, a1, 8
-; RV32I-NEXT:    or a1, a4, a1
-; RV32I-NEXT:    srli a4, a0, 24
-; RV32I-NEXT:    and a3, a3, a5
-; RV32I-NEXT:    or a3, a3, a4
-; RV32I-NEXT:    and a4, a0, a5
+; RV32I-NEXT:    and a4, a1, t0
+; RV32I-NEXT:    xor a2, a1, a2
+; RV32I-NEXT:    srli a1, a1, 8
+; RV32I-NEXT:    and a7, a7, t0
+; RV32I-NEXT:    and a1, a1, t0
+; RV32I-NEXT:    slli a6, a6, 24
+; RV32I-NEXT:    slli a5, a5, 8
+; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    srli a3, a3, 24
+; RV32I-NEXT:    or a3, a7, a3
 ; RV32I-NEXT:    slli a0, a0, 24
 ; RV32I-NEXT:    slli a4, a4, 8
 ; RV32I-NEXT:    or a0, a0, a4
+; RV32I-NEXT:    srli a2, a2, 24
 ; RV32I-NEXT:    or a1, a1, a2
-; RV32I-NEXT:    or a0, a0, a3
-; RV32I-NEXT:    srli a2, a1, 4
+; RV32I-NEXT:    or a3, a5, a3
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    srli a1, a3, 4
 ; RV32I-NEXT:    lw a4, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a1, a1, a4
+; RV32I-NEXT:    and a2, a3, a4
 ; RV32I-NEXT:    srli a3, a0, 4
 ; RV32I-NEXT:    and a0, a0, a4
-; RV32I-NEXT:    and a2, a2, a4
+; RV32I-NEXT:    and a1, a1, a4
 ; RV32I-NEXT:    and a3, a3, a4
-; RV32I-NEXT:    slli a1, a1, 4
+; RV32I-NEXT:    slli a2, a2, 4
 ; RV32I-NEXT:    slli a0, a0, 4
-; RV32I-NEXT:    or a1, a2, a1
+; RV32I-NEXT:    or a1, a1, a2
 ; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    srli a2, a1, 2
 ; RV32I-NEXT:    and a1, a1, s8
@@ -18551,8 +18537,8 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    srli a3, a1, 1
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    and a4, a0, s2
+; RV32I-NEXT:    and a1, a1, s3
+; RV32I-NEXT:    and a4, a0, s3
 ; RV32I-NEXT:    srli a0, a0, 1
 ; RV32I-NEXT:    and a3, a3, a2
 ; RV32I-NEXT:    and a0, a0, a2
@@ -19906,1688 +19892,1694 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ;
 ; RV32IM-LABEL: mul_use_commutative_clmul_v2i64:
 ; RV32IM:       # %bb.0:
-; RV32IM-NEXT:    addi sp, sp, -704
-; RV32IM-NEXT:    sw ra, 700(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s0, 696(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s1, 692(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s2, 688(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s3, 684(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s4, 680(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s5, 676(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s6, 672(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s7, 668(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s8, 664(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s9, 660(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s10, 656(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s11, 652(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi sp, sp, -720
+; RV32IM-NEXT:    sw ra, 716(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s0, 712(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s1, 708(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s2, 704(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s3, 700(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s4, 696(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s5, 692(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s6, 688(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s7, 684(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s8, 680(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s9, 676(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s10, 672(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s11, 668(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw s2, 0(a1)
-; RV32IM-NEXT:    lw t4, 4(a1)
+; RV32IM-NEXT:    lw ra, 4(a1)
 ; RV32IM-NEXT:    lw t5, 8(a1)
-; RV32IM-NEXT:    lw t3, 12(a1)
+; RV32IM-NEXT:    lw s7, 12(a1)
 ; RV32IM-NEXT:    lw t6, 0(a0)
 ; RV32IM-NEXT:    lw s1, 4(a0)
 ; RV32IM-NEXT:    lw t2, 8(a0)
-; RV32IM-NEXT:    lw s6, 12(a0)
+; RV32IM-NEXT:    lw s4, 12(a0)
 ; RV32IM-NEXT:    lui a1, 16
 ; RV32IM-NEXT:    li a0, 1
-; RV32IM-NEXT:    lui s4, 1
-; RV32IM-NEXT:    lui s5, 64
-; RV32IM-NEXT:    lui ra, 128
-; RV32IM-NEXT:    addi t1, a1, -256
-; RV32IM-NEXT:    slli s0, a0, 11
+; RV32IM-NEXT:    lui s0, 1
+; RV32IM-NEXT:    lui s3, 64
+; RV32IM-NEXT:    addi t0, a1, -256
+; RV32IM-NEXT:    slli t1, a0, 11
 ; RV32IM-NEXT:    srli a5, t6, 8
 ; RV32IM-NEXT:    srli a6, t6, 24
-; RV32IM-NEXT:    and a3, t6, t1
+; RV32IM-NEXT:    and a3, t6, t0
 ; RV32IM-NEXT:    slli a0, t6, 24
 ; RV32IM-NEXT:    srli a4, s2, 8
 ; RV32IM-NEXT:    srli a1, s2, 24
-; RV32IM-NEXT:    and a7, s2, t1
+; RV32IM-NEXT:    and a7, s2, t0
 ; RV32IM-NEXT:    slli a2, s2, 24
-; RV32IM-NEXT:    and s3, s2, s0
-; RV32IM-NEXT:    sw s3, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s2, s4
-; RV32IM-NEXT:    and s7, s2, s5
-; RV32IM-NEXT:    sw s7, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
+; RV32IM-NEXT:    and s6, s2, t1
+; RV32IM-NEXT:    sw s6, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s9, s2, s0
+; RV32IM-NEXT:    lui s11, 1
+; RV32IM-NEXT:    and s5, s2, s3
+; RV32IM-NEXT:    lui t3, 64
+; RV32IM-NEXT:    and a5, a5, t0
 ; RV32IM-NEXT:    or a5, a5, a6
-; RV32IM-NEXT:    sw a5, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, s2, ra
+; RV32IM-NEXT:    sw a5, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 128
+; RV32IM-NEXT:    and s3, s2, a5
 ; RV32IM-NEXT:    slli a3, a3, 8
-; RV32IM-NEXT:    and a4, a4, t1
+; RV32IM-NEXT:    and a4, a4, t0
 ; RV32IM-NEXT:    slli a7, a7, 8
 ; RV32IM-NEXT:    or a0, a0, a3
-; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, s3
+; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s1, s6
 ; RV32IM-NEXT:    or a1, a4, a1
-; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s1, t0
+; RV32IM-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a1, s1, s9
 ; RV32IM-NEXT:    or a2, a2, a7
-; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s1, s7
+; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s1, s5
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s1, a6
+; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s1, s3
 ; RV32IM-NEXT:    xor a0, a2, a0
-; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 32768
 ; RV32IM-NEXT:    lui a2, 16384
-; RV32IM-NEXT:    and a1, s2, a2
-; RV32IM-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s8, s2, a0
-; RV32IM-NEXT:    lui s3, 32768
-; RV32IM-NEXT:    mul a0, s1, a1
-; RV32IM-NEXT:    mul a1, s1, s8
+; RV32IM-NEXT:    and s0, s2, a2
+; RV32IM-NEXT:    and a1, s2, a0
+; RV32IM-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 32768
+; RV32IM-NEXT:    mul a0, s1, s0
+; RV32IM-NEXT:    mul a1, s1, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t4, s0
+; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, ra, t1
 ; RV32IM-NEXT:    mul a0, t6, a0
-; RV32IM-NEXT:    and a1, t4, s4
+; RV32IM-NEXT:    and a1, ra, s11
 ; RV32IM-NEXT:    mul a1, t6, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t4, s5
+; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, ra, t3
 ; RV32IM-NEXT:    mul a0, t6, a0
-; RV32IM-NEXT:    and a1, t4, ra
+; RV32IM-NEXT:    and a1, ra, a5
 ; RV32IM-NEXT:    mul a1, t6, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t4, a2
+; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, ra, a2
 ; RV32IM-NEXT:    mul a0, t6, a0
-; RV32IM-NEXT:    and a1, t4, s3
+; RV32IM-NEXT:    and a1, ra, s6
 ; RV32IM-NEXT:    mul a1, t6, a1
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    srli a0, t2, 8
-; RV32IM-NEXT:    and a0, a0, t1
+; RV32IM-NEXT:    and a0, a0, t0
 ; RV32IM-NEXT:    srli a1, t2, 24
 ; RV32IM-NEXT:    or a0, a0, a1
-; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t2, t1
-; RV32IM-NEXT:    sw t1, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, t2, t0
+; RV32IM-NEXT:    sw t0, 628(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a0, a0, 8
 ; RV32IM-NEXT:    slli a1, t2, 24
 ; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    srli a0, t5, 8
-; RV32IM-NEXT:    and a0, a0, t1
+; RV32IM-NEXT:    and a0, a0, t0
 ; RV32IM-NEXT:    srli a1, t5, 24
 ; RV32IM-NEXT:    or a0, a0, a1
+; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, t5, t0
+; RV32IM-NEXT:    slli a0, a0, 8
+; RV32IM-NEXT:    slli a1, t5, 24
+; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t1, 624(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, t5, t1
+; RV32IM-NEXT:    and a3, t5, s11
+; RV32IM-NEXT:    mul a0, s4, t0
+; RV32IM-NEXT:    mul a1, s4, a3
+; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t5, t1
-; RV32IM-NEXT:    slli a0, a0, 8
-; RV32IM-NEXT:    slli a1, t5, 24
-; RV32IM-NEXT:    or t1, a1, a0
-; RV32IM-NEXT:    mv a3, s0
-; RV32IM-NEXT:    sw s0, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s9, t5, s0
-; RV32IM-NEXT:    lui a7, 1
-; RV32IM-NEXT:    and s4, t5, a7
-; RV32IM-NEXT:    mul a0, s6, s9
-; RV32IM-NEXT:    mul a1, s6, s4
-; RV32IM-NEXT:    xor s11, a0, a1
-; RV32IM-NEXT:    lui a5, 64
-; RV32IM-NEXT:    and s10, t5, a5
-; RV32IM-NEXT:    and a1, t5, ra
-; RV32IM-NEXT:    mul a0, s6, s10
-; RV32IM-NEXT:    mul a2, s6, a1
-; RV32IM-NEXT:    xor s7, a0, a2
-; RV32IM-NEXT:    lui a4, 16384
-; RV32IM-NEXT:    and s5, t5, a4
-; RV32IM-NEXT:    and a0, t5, s3
-; RV32IM-NEXT:    mul a2, s6, s5
-; RV32IM-NEXT:    mul s0, s6, a0
-; RV32IM-NEXT:    xor s0, a2, s0
-; RV32IM-NEXT:    and a2, t3, a3
-; RV32IM-NEXT:    mul a2, t2, a2
-; RV32IM-NEXT:    and a3, t3, a7
+; RV32IM-NEXT:    lui t4, 64
+; RV32IM-NEXT:    and a7, t5, t4
+; RV32IM-NEXT:    lui t3, 128
+; RV32IM-NEXT:    and a2, t5, t3
+; RV32IM-NEXT:    mul a0, s4, a7
+; RV32IM-NEXT:    mul a1, s4, a2
+; RV32IM-NEXT:    xor s10, a0, a1
+; RV32IM-NEXT:    lui a6, 16384
+; RV32IM-NEXT:    and a1, t5, a6
+; RV32IM-NEXT:    and a0, t5, s6
+; RV32IM-NEXT:    mul a4, s4, a1
+; RV32IM-NEXT:    mul a5, s4, a0
+; RV32IM-NEXT:    xor s8, a4, a5
+; RV32IM-NEXT:    and a4, s7, t1
+; RV32IM-NEXT:    mul a4, t2, a4
+; RV32IM-NEXT:    and a5, s7, s11
+; RV32IM-NEXT:    mul a5, t2, a5
+; RV32IM-NEXT:    xor a5, a4, a5
+; RV32IM-NEXT:    and a4, s7, t4
+; RV32IM-NEXT:    mul a4, t2, a4
+; RV32IM-NEXT:    and s11, s7, t3
+; RV32IM-NEXT:    mul s11, t2, s11
+; RV32IM-NEXT:    xor a4, a4, s11
+; RV32IM-NEXT:    and s11, s7, a6
+; RV32IM-NEXT:    mul s11, t2, s11
+; RV32IM-NEXT:    and s6, s7, s6
+; RV32IM-NEXT:    mul s6, t2, s6
+; RV32IM-NEXT:    xor s11, s11, s6
+; RV32IM-NEXT:    lw a6, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s6, t6, a6
+; RV32IM-NEXT:    mul s9, t6, s9
+; RV32IM-NEXT:    xor a6, s6, s9
+; RV32IM-NEXT:    sw a6, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s5, t6, s5
+; RV32IM-NEXT:    mul s3, t6, s3
+; RV32IM-NEXT:    xor a6, s5, s3
+; RV32IM-NEXT:    sw a6, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s0, t6, s0
+; RV32IM-NEXT:    lw a6, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a6, t6, a6
+; RV32IM-NEXT:    xor a6, s0, a6
+; RV32IM-NEXT:    sw a6, 336(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, t2, t0
 ; RV32IM-NEXT:    mul a3, t2, a3
-; RV32IM-NEXT:    xor a3, a2, a3
-; RV32IM-NEXT:    and a2, t3, a5
+; RV32IM-NEXT:    xor a3, a6, a3
+; RV32IM-NEXT:    sw a3, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t2, a7
 ; RV32IM-NEXT:    mul a2, t2, a2
-; RV32IM-NEXT:    and ra, t3, ra
-; RV32IM-NEXT:    mul ra, t2, ra
-; RV32IM-NEXT:    xor a2, a2, ra
-; RV32IM-NEXT:    and ra, t3, a4
-; RV32IM-NEXT:    mul ra, t2, ra
-; RV32IM-NEXT:    and s3, t3, s3
-; RV32IM-NEXT:    mul s3, t2, s3
-; RV32IM-NEXT:    xor a7, ra, s3
-; RV32IM-NEXT:    lw a4, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul s3, t6, a4
-; RV32IM-NEXT:    mul t0, t6, t0
-; RV32IM-NEXT:    xor a4, s3, t0
-; RV32IM-NEXT:    sw a4, 368(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t0, t6, a4
-; RV32IM-NEXT:    mul a6, t6, a6
-; RV32IM-NEXT:    xor a4, t0, a6
-; RV32IM-NEXT:    sw a4, 352(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a5, t6, a4
-; RV32IM-NEXT:    mul a4, t6, s8
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    sw a4, 320(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t2, s9
-; RV32IM-NEXT:    mul a5, t2, s4
-; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t2, s10
+; RV32IM-NEXT:    xor a2, a3, a2
+; RV32IM-NEXT:    sw a2, 560(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a1, t2, a1
-; RV32IM-NEXT:    xor a1, a4, a1
-; RV32IM-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t2, s5
 ; RV32IM-NEXT:    mul a0, t2, a0
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 2
 ; RV32IM-NEXT:    and a0, s2, a0
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, a0
-; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 256
 ; RV32IM-NEXT:    and a0, s2, a0
-; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 256
+; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 256
 ; RV32IM-NEXT:    mul a0, s1, a0
-; RV32IM-NEXT:    lw a5, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a5, a0
-; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a3, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a3, a0
+; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a6, 65536
 ; RV32IM-NEXT:    and a0, s2, a6
-; RV32IM-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s1, a0
-; RV32IM-NEXT:    lw s3, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, s3, a5
-; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s3, 2
-; RV32IM-NEXT:    and a5, t4, s3
-; RV32IM-NEXT:    mul a5, t6, a5
-; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, t4, t0
-; RV32IM-NEXT:    mul a5, t6, a5
-; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, t4, a6
-; RV32IM-NEXT:    lui t0, 65536
-; RV32IM-NEXT:    mul a5, t6, a5
-; RV32IM-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a0, t1, a0
-; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t5, s3
-; RV32IM-NEXT:    sw a0, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s6, a0
-; RV32IM-NEXT:    xor a0, s11, a5
-; RV32IM-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 256
-; RV32IM-NEXT:    and a0, t5, a5
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, s6, a0
-; RV32IM-NEXT:    xor a0, s7, a6
-; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, t5, t0
-; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, s6, a0
-; RV32IM-NEXT:    mv ra, s6
-; RV32IM-NEXT:    xor a0, s0, a6
-; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mv t1, t3
-; RV32IM-NEXT:    and a6, t3, s3
-; RV32IM-NEXT:    mul a6, t2, a6
-; RV32IM-NEXT:    xor a0, a3, a6
+; RV32IM-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s1, a0
+; RV32IM-NEXT:    lw t0, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, t0, a3
 ; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, t3, a5
-; RV32IM-NEXT:    mul a3, t2, a3
-; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    sw a2, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t3, t0
-; RV32IM-NEXT:    mul a2, t2, a2
-; RV32IM-NEXT:    xor a0, a7, a2
-; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 2
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 2
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    lui a0, 2
+; RV32IM-NEXT:    and a3, ra, a0
+; RV32IM-NEXT:    mul a3, t6, a3
+; RV32IM-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, ra, a7
+; RV32IM-NEXT:    mul a3, t6, a3
+; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, ra, a6
+; RV32IM-NEXT:    lui a7, 65536
+; RV32IM-NEXT:    mul a3, t6, a3
+; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a1, a2, a1
+; RV32IM-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a1, a2, a1
+; RV32IM-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a1, t5, a0
+; RV32IM-NEXT:    sw a1, 444(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s4, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, s4, a1
+; RV32IM-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a6
+; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a3, 256
+; RV32IM-NEXT:    and a1, t5, a3
+; RV32IM-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, s4, a1
+; RV32IM-NEXT:    xor a1, s10, a6
+; RV32IM-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a1, t5, a7
+; RV32IM-NEXT:    sw a1, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, s4, a1
+; RV32IM-NEXT:    xor a1, s8, a6
+; RV32IM-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s7, a0
+; RV32IM-NEXT:    mul a6, t2, a6
+; RV32IM-NEXT:    xor a0, a5, a6
+; RV32IM-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, s7, a3
+; RV32IM-NEXT:    mul a5, t2, a5
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s7, a7
+; RV32IM-NEXT:    mv t1, s7
+; RV32IM-NEXT:    mul a4, t2, a4
+; RV32IM-NEXT:    xor a0, s11, a4
+; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 2
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 2
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 1
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 1
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 4
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 4
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 4
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 4
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 2
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 2
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 8
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 8
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 8
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 8
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 3
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 3
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 16
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 16
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 16
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 16
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 4
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a6, t6, 4
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 32
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 32
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    slli a6, t6, 4
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 32
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 32
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 5
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 5
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 64
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 64
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 64
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 64
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 6
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a6, t6, 6
-; RV32IM-NEXT:    and a0, a3, a6
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 128
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 128
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    slli a6, t6, 6
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 128
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 128
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 7
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 7
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 256
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 256
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 256
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 256
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a6, s1, 8
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 8
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s2, 512
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    andi a3, t4, 512
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    slli a6, s1, 9
-; RV32IM-NEXT:    and a0, a2, a6
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
 ; RV32IM-NEXT:    sw a0, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a4, s2, 512
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    andi a5, ra, 512
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    slli a6, s1, 9
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a6, t6, 9
-; RV32IM-NEXT:    and a0, a3, a6
-; RV32IM-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a2, a6
-; RV32IM-NEXT:    sw a0, 432(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s11, 4
+; RV32IM-NEXT:    and a0, a5, a6
+; RV32IM-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a4, a6
+; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a3, 4
 ; RV32IM-NEXT:    lui a0, 8
 ; RV32IM-NEXT:    lui a1, 32
-; RV32IM-NEXT:    lui a2, 512
-; RV32IM-NEXT:    lui a4, 1024
-; RV32IM-NEXT:    lui t3, 2048
-; RV32IM-NEXT:    lui s6, 4096
-; RV32IM-NEXT:    lui s7, 8192
-; RV32IM-NEXT:    lui s8, 131072
+; RV32IM-NEXT:    lui s3, 512
+; RV32IM-NEXT:    lui s4, 1024
+; RV32IM-NEXT:    lui a2, 2048
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    lui t3, 8192
+; RV32IM-NEXT:    lui t4, 131072
 ; RV32IM-NEXT:    lui s9, 262144
 ; RV32IM-NEXT:    lui s10, 524288
-; RV32IM-NEXT:    andi a3, s2, 1
-; RV32IM-NEXT:    andi a5, s2, 1024
-; RV32IM-NEXT:    sw a5, 344(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, s2, s11
+; RV32IM-NEXT:    andi a5, s2, 1
+; RV32IM-NEXT:    andi a6, s2, 1024
+; RV32IM-NEXT:    sw a6, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s2, a3
+; RV32IM-NEXT:    lui s11, 4
 ; RV32IM-NEXT:    and a7, s2, a0
-; RV32IM-NEXT:    lui a5, 16
-; RV32IM-NEXT:    and t0, s2, a5
+; RV32IM-NEXT:    lui a3, 16
+; RV32IM-NEXT:    and t0, s2, a3
 ; RV32IM-NEXT:    and s0, s2, a1
-; RV32IM-NEXT:    and s3, s2, a2
-; RV32IM-NEXT:    and s4, s2, a4
-; RV32IM-NEXT:    and s5, s2, t3
-; RV32IM-NEXT:    and s6, s2, s6
-; RV32IM-NEXT:    and s7, s2, s7
-; RV32IM-NEXT:    and s8, s2, s8
+; RV32IM-NEXT:    and s3, s2, s3
+; RV32IM-NEXT:    and s4, s2, s4
+; RV32IM-NEXT:    and s5, s2, a2
+; RV32IM-NEXT:    and s6, s2, a4
+; RV32IM-NEXT:    and s7, s2, t3
+; RV32IM-NEXT:    and s8, s2, t4
 ; RV32IM-NEXT:    and s9, s2, s9
 ; RV32IM-NEXT:    and s2, s2, s10
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    andi s10, t4, 1
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    andi s10, ra, 1
 ; RV32IM-NEXT:    seqz s10, s10
-; RV32IM-NEXT:    and s11, t4, s11
+; RV32IM-NEXT:    and s11, ra, s11
 ; RV32IM-NEXT:    mul s11, t6, s11
-; RV32IM-NEXT:    sw s11, 280(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    sw s11, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, a0
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, a5
+; RV32IM-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, a3
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, a1
+; RV32IM-NEXT:    sw a0, 432(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, a1
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, a2
+; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a0, 512
+; RV32IM-NEXT:    and s11, ra, a0
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 272(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, a4
+; RV32IM-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a0, 1024
+; RV32IM-NEXT:    and s11, ra, a0
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, t4, t3
+; RV32IM-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, a2
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 4096
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, a4
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 8192
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, t3
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a0, 131072
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s11, ra, t4
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 260(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 276(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 262144
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    and s11, ra, a0
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a0, 524288
-; RV32IM-NEXT:    and s11, t4, a0
+; RV32IM-NEXT:    and s11, ra, a0
 ; RV32IM-NEXT:    mul a0, t6, s11
-; RV32IM-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a4, t6, a0
+; RV32IM-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, t6, a0
 ; RV32IM-NEXT:    mul a0, s1, a6
-; RV32IM-NEXT:    sw a0, 252(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 268(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, a6
-; RV32IM-NEXT:    sw a0, 276(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, a7
-; RV32IM-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 304(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, a7
-; RV32IM-NEXT:    sw a0, 312(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, t0
-; RV32IM-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, t0
-; RV32IM-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 428(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, s0
-; RV32IM-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s0
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a1, t6, a0
 ; RV32IM-NEXT:    mul a0, s1, s3
-; RV32IM-NEXT:    sw a0, 244(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 260(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s3
-; RV32IM-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 280(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, s4
-; RV32IM-NEXT:    sw a0, 284(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s4
-; RV32IM-NEXT:    sw a0, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, s5
-; RV32IM-NEXT:    sw a0, 340(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 356(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s5
-; RV32IM-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, s6
-; RV32IM-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s6
-; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, s1, s7
-; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t6, s7
-; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 372(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 388(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a0, t6, a0
-; RV32IM-NEXT:    mul a2, s1, s8
-; RV32IM-NEXT:    sw a2, 240(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, t6, s8
-; RV32IM-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s1, s9
-; RV32IM-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, t6, s9
-; RV32IM-NEXT:    sw a2, 292(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s1, s2
-; RV32IM-NEXT:    sw a2, 324(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, t6, s2
-; RV32IM-NEXT:    sw a2, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a3, a3, -1
+; RV32IM-NEXT:    mul a3, s1, s8
+; RV32IM-NEXT:    sw a3, 256(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t6, s8
+; RV32IM-NEXT:    sw a3, 272(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s1, s9
+; RV32IM-NEXT:    sw a3, 284(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t6, s9
+; RV32IM-NEXT:    sw a3, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, s1, s2
+; RV32IM-NEXT:    sw a3, 340(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a3, t6, s2
+; RV32IM-NEXT:    sw a3, 388(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    addi s10, s10, -1
 ; RV32IM-NEXT:    slli a6, s1, 10
-; RV32IM-NEXT:    and s1, a3, s1
-; RV32IM-NEXT:    sw s1, 220(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, s10, t6
-; RV32IM-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, a3, t6
-; RV32IM-NEXT:    sw a2, 248(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s1, a5, s1
+; RV32IM-NEXT:    sw s1, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, s10, t6
+; RV32IM-NEXT:    sw a3, 244(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, a5, t6
+; RV32IM-NEXT:    sw a3, 264(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli t6, t6, 10
-; RV32IM-NEXT:    andi a3, t4, 1024
-; RV32IM-NEXT:    lw a2, 344(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz a2, a2
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and a5, a2, a6
-; RV32IM-NEXT:    sw a5, 296(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a3, a3, t6
-; RV32IM-NEXT:    sw a3, 304(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, a2, t6
-; RV32IM-NEXT:    sw a2, 344(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a5, ra, 1024
+; RV32IM-NEXT:    lw a3, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    seqz a4, a3
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    and a3, a4, a6
+; RV32IM-NEXT:    sw a3, 312(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, a5, t6
+; RV32IM-NEXT:    sw a3, 320(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a3, a4, t6
+; RV32IM-NEXT:    sw a3, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a3, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a3, a2
+; RV32IM-NEXT:    sw a2, 384(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a2, 368(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a4
-; RV32IM-NEXT:    sw a2, 368(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 352(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 352(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a1, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 336(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 320(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 2
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 2
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 1
+; RV32IM-NEXT:    lw s10, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    slli a2, s10, 1
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 216(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 1
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 212(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 228(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 252(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 4
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 4
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 2
+; RV32IM-NEXT:    slli a2, s10, 2
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 204(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 2
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 192(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 208(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 216(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 232(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 8
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 3
+; RV32IM-NEXT:    slli a2, s10, 3
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 3
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 164(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 180(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 196(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 212(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 16
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 4
+; RV32IM-NEXT:    slli a2, s10, 4
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 4
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 136(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 152(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 172(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 188(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 32
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 5
+; RV32IM-NEXT:    slli a2, s10, 5
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 104(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 120(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 5
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 160(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 64
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 6
+; RV32IM-NEXT:    slli a2, s10, 6
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 184(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 6
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 184(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 200(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 220(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 128
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 7
+; RV32IM-NEXT:    slli a2, s10, 7
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 88(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 7
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 80(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 96(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 96(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 112(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 256
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 256
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 8
+; RV32IM-NEXT:    slli a2, s10, 8
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 52(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 8
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 100(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, t5, 512
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    andi a1, t1, 512
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, ra, 9
+; RV32IM-NEXT:    slli a2, s10, 9
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a2, t2, 9
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 100(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 116(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 120(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 136(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mv a7, t5
 ; RV32IM-NEXT:    andi a1, t5, 1
 ; RV32IM-NEXT:    andi a0, t5, 1024
-; RV32IM-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui t3, 4
 ; RV32IM-NEXT:    and a4, t5, t3
-; RV32IM-NEXT:    lui s9, 8
-; RV32IM-NEXT:    and t0, t5, s9
-; RV32IM-NEXT:    lui t4, 16
-; RV32IM-NEXT:    and t6, t5, t4
-; RV32IM-NEXT:    lui s8, 32
-; RV32IM-NEXT:    and s1, t5, s8
-; RV32IM-NEXT:    lui s4, 512
-; RV32IM-NEXT:    and s3, t5, s4
-; RV32IM-NEXT:    lui s5, 1024
-; RV32IM-NEXT:    and s11, t5, s5
-; RV32IM-NEXT:    lui s7, 2048
-; RV32IM-NEXT:    and a0, t5, s7
-; RV32IM-NEXT:    lui t5, 4096
-; RV32IM-NEXT:    and a2, a7, t5
-; RV32IM-NEXT:    lui s0, 8192
-; RV32IM-NEXT:    and a3, a7, s0
-; RV32IM-NEXT:    lui s6, 131072
-; RV32IM-NEXT:    and a5, a7, s6
-; RV32IM-NEXT:    lui s2, 262144
-; RV32IM-NEXT:    and a6, a7, s2
-; RV32IM-NEXT:    lui s10, 524288
-; RV32IM-NEXT:    and a7, a7, s10
+; RV32IM-NEXT:    lui s7, 8
+; RV32IM-NEXT:    and a5, t5, s7
+; RV32IM-NEXT:    lui s0, 16
+; RV32IM-NEXT:    and t0, t5, s0
+; RV32IM-NEXT:    lui s6, 32
+; RV32IM-NEXT:    and t6, t5, s6
+; RV32IM-NEXT:    lui t4, 512
+; RV32IM-NEXT:    and s1, t5, t4
+; RV32IM-NEXT:    lui t5, 1024
+; RV32IM-NEXT:    and s3, a7, t5
+; RV32IM-NEXT:    lui s5, 2048
+; RV32IM-NEXT:    and s11, a7, s5
+; RV32IM-NEXT:    lui s9, 4096
+; RV32IM-NEXT:    and a0, a7, s9
+; RV32IM-NEXT:    lui ra, 8192
+; RV32IM-NEXT:    and a2, a7, ra
+; RV32IM-NEXT:    lui s2, 131072
+; RV32IM-NEXT:    and a3, a7, s2
+; RV32IM-NEXT:    lui s4, 262144
+; RV32IM-NEXT:    and a6, a7, s4
+; RV32IM-NEXT:    lui s8, 524288
+; RV32IM-NEXT:    and a7, a7, s8
 ; RV32IM-NEXT:    seqz a1, a1
-; RV32IM-NEXT:    sw a1, 48(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 64(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a1, t1, 1
 ; RV32IM-NEXT:    seqz a1, a1
-; RV32IM-NEXT:    sw a1, 40(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 56(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mv a1, t1
 ; RV32IM-NEXT:    and t3, t1, t3
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 20(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s9
-; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 68(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, t4
+; RV32IM-NEXT:    sw t1, 36(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s7
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 180(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s8
+; RV32IM-NEXT:    sw t1, 84(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s0
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 224(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s4
-; RV32IM-NEXT:    mul s4, t2, t3
-; RV32IM-NEXT:    and t3, a1, s5
+; RV32IM-NEXT:    sw t1, 196(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s6
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 56(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s7
+; RV32IM-NEXT:    sw t1, 240(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, t4
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 152(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t1, 28(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and t3, a1, t5
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 208(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s0
+; RV32IM-NEXT:    sw t1, 72(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s5
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 232(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s6
+; RV32IM-NEXT:    sw t1, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s9
+; RV32IM-NEXT:    mul t1, t2, t3
+; RV32IM-NEXT:    sw t1, 224(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, ra
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t1, 248(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and t3, a1, s2
 ; RV32IM-NEXT:    mul t1, t2, t3
-; RV32IM-NEXT:    sw t1, 36(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, a1, s10
-; RV32IM-NEXT:    mv s2, a1
+; RV32IM-NEXT:    sw t1, 16(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s4
+; RV32IM-NEXT:    mul t1, t2, t3
+; RV32IM-NEXT:    sw t1, 52(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a1, s8
+; RV32IM-NEXT:    mv s0, a1
 ; RV32IM-NEXT:    mul a1, t2, t3
-; RV32IM-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 428(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t1, t2, a1
-; RV32IM-NEXT:    mv t3, ra
-; RV32IM-NEXT:    mul s9, ra, a4
-; RV32IM-NEXT:    mul ra, t2, a4
-; RV32IM-NEXT:    mul a1, t3, t0
-; RV32IM-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t2, t0
-; RV32IM-NEXT:    sw a1, 44(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t3, t6
-; RV32IM-NEXT:    sw a1, 108(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t2, t6
-; RV32IM-NEXT:    sw a1, 132(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t3, s1
-; RV32IM-NEXT:    sw a1, 160(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, t2, s1
-; RV32IM-NEXT:    sw a1, 428(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 144(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a1, t2, a1
-; RV32IM-NEXT:    mul s8, t3, s3
-; RV32IM-NEXT:    mul a4, t2, s3
-; RV32IM-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, s11
-; RV32IM-NEXT:    sw a4, 16(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t2, s11
-; RV32IM-NEXT:    sw a4, 32(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, t3, a0
-; RV32IM-NEXT:    sw a4, 88(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s9, s10, a4
+; RV32IM-NEXT:    mul a4, t2, a4
+; RV32IM-NEXT:    sw a4, 24(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s10, a5
+; RV32IM-NEXT:    sw a4, 44(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, t2, a5
+; RV32IM-NEXT:    sw a4, 60(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s10, t0
+; RV32IM-NEXT:    sw a4, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, t2, t0
+; RV32IM-NEXT:    sw a4, 148(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s10, t6
+; RV32IM-NEXT:    sw a4, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, t2, t6
+; RV32IM-NEXT:    sw a4, 444(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a4, t2, a4
+; RV32IM-NEXT:    mul s8, s10, s1
+; RV32IM-NEXT:    mul a5, t2, s1
+; RV32IM-NEXT:    sw a5, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, s10, s3
+; RV32IM-NEXT:    sw a5, 32(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, t2, s3
+; RV32IM-NEXT:    sw a5, 48(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, s10, s11
+; RV32IM-NEXT:    sw a5, 104(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, t2, s11
+; RV32IM-NEXT:    sw a5, 132(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, s10, a0
+; RV32IM-NEXT:    sw a5, 156(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t2, a0
-; RV32IM-NEXT:    sw a0, 116(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a2
-; RV32IM-NEXT:    sw a0, 140(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 172(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s10, a2
+; RV32IM-NEXT:    sw a0, 192(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t2, a2
-; RV32IM-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a3
-; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t2, a3
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul s11, t2, a0
-; RV32IM-NEXT:    mul s6, t3, a5
-; RV32IM-NEXT:    mul a0, t2, a5
-; RV32IM-NEXT:    sw a0, 0(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a6
-; RV32IM-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s1, t2, a0
+; RV32IM-NEXT:    mul s6, s10, a3
+; RV32IM-NEXT:    mul a5, t2, a3
+; RV32IM-NEXT:    mul a0, s10, a6
+; RV32IM-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a0, t2, a6
-; RV32IM-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t3, a7
-; RV32IM-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, t2, a7
-; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t5, 48(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    addi t5, t5, -1
-; RV32IM-NEXT:    lw t4, 40(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s10, a7
+; RV32IM-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, t2, a7
+; RV32IM-NEXT:    sw a2, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t4, 64(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    addi t4, t4, -1
-; RV32IM-NEXT:    slli a5, t3, 10
-; RV32IM-NEXT:    and a7, t5, t3
-; RV32IM-NEXT:    and t4, t4, t2
-; RV32IM-NEXT:    and a2, t5, t2
+; RV32IM-NEXT:    lw t1, 56(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    slli a7, s10, 10
+; RV32IM-NEXT:    and ra, t4, s10
+; RV32IM-NEXT:    and a0, t1, t2
+; RV32IM-NEXT:    and a3, t4, t2
 ; RV32IM-NEXT:    slli t2, t2, 10
-; RV32IM-NEXT:    andi a6, s2, 1024
-; RV32IM-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz s0, a0
-; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi s0, s0, -1
-; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    and a5, s0, a5
-; RV32IM-NEXT:    sw a5, 40(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a6, t2
-; RV32IM-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, s0, t2
-; RV32IM-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a0, t1
-; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a0, a1
-; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, s11
-; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 220(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 328(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 252(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 240(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 228(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 336(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 260(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    andi t1, s0, 1024
+; RV32IM-NEXT:    lw a2, 80(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    seqz t5, a2
+; RV32IM-NEXT:    seqz t1, t1
+; RV32IM-NEXT:    addi s11, t5, -1
+; RV32IM-NEXT:    addi t5, t1, -1
+; RV32IM-NEXT:    and a2, s11, a7
+; RV32IM-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t5, t2
+; RV32IM-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, s11, t2
+; RV32IM-NEXT:    sw a2, 80(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a4
+; RV32IM-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, s1
+; RV32IM-NEXT:    sw a1, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 236(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    sw a1, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 344(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 424(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 400(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 260(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 256(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 244(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 412(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 352(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 372(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 296(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 364(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 288(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 276(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, ra, a1
+; RV32IM-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 204(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 164(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, a1, a2
+; RV32IM-NEXT:    lw a1, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 120(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, a1, a2
+; RV32IM-NEXT:    lw a1, 88(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 68(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s11, a1, a2
+; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, a1, s9
+; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a1, s8
+; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, a1, s6
+; RV32IM-NEXT:    lw a1, 228(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a7, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 148(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, a0, a1
-; RV32IM-NEXT:    lw a0, 124(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 104(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s10, a0, a1
-; RV32IM-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, a0, a1
-; RV32IM-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, a0, s9
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a0, s8
-; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, a0, s6
-; RV32IM-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, t4, a0
-; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 164(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 180(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, a0, a1
-; RV32IM-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 112(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 128(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, a0, s0
-; RV32IM-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 60(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 76(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, a0, s1
-; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s2, a0, a1
-; RV32IM-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, a0, s4
-; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, a0, a1
+; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s4, a0, a1
-; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 264(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, a1, a0
-; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a0, a1
-; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a0, a1
-; RV32IM-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, a0, a1
-; RV32IM-NEXT:    lw a0, 276(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 292(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, a1, a0
-; RV32IM-NEXT:    lw a0, 264(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 352(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 280(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, a1, a0
-; RV32IM-NEXT:    lw a0, 256(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 272(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 336(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t4, a1, a0
-; RV32IM-NEXT:    lw a0, 236(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a2, a0
-; RV32IM-NEXT:    lw a0, 216(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 252(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a3, a0
+; RV32IM-NEXT:    lw a0, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 172(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 188(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 160(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 96(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 112(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 100(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    xor a3, a4, ra
-; RV32IM-NEXT:    lw a4, 4(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    lw a5, 0(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 24(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a4, a3
+; RV32IM-NEXT:    lw a4, 12(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, ra, a4
+; RV32IM-NEXT:    lw ra, 556(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, ra, a5
-; RV32IM-NEXT:    lw ra, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 516(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, ra, s5
+; RV32IM-NEXT:    sw ra, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, s5, ra
 ; RV32IM-NEXT:    sw ra, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 424(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 380(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 304(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 400(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 288(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 300(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 600(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw ra, 424(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 284(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 268(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 552(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 396(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, ra, s5
-; RV32IM-NEXT:    sw ra, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 508(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 388(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 404(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 372(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, s5, ra
+; RV32IM-NEXT:    sw ra, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw ra, 348(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 364(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 388(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw ra, 404(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 332(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 592(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw ra, 400(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw ra, 316(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 380(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 300(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 588(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    lw s5, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, s5, s7
-; RV32IM-NEXT:    sw s7, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s7, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw ra, 396(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s5, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, s5, s7
+; RV32IM-NEXT:    lw s7, 184(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, s10, s7
-; RV32IM-NEXT:    sw s7, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s7, 92(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw s7, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s7, 108(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, s11, s7
-; RV32IM-NEXT:    sw s7, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s7, 28(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw s7, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, s9, s7
-; RV32IM-NEXT:    sw s7, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s7, 16(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw s7, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s7, 32(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, s8, s7
-; RV32IM-NEXT:    sw s7, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s7, 12(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw s7, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s7, 20(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s6, s6, s7
-; RV32IM-NEXT:    sw s6, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s5, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw s6, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s5, 572(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s5, t6
-; RV32IM-NEXT:    sw t6, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 184(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 200(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s0, t6
-; RV32IM-NEXT:    sw t6, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 100(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 116(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s1, t6
-; RV32IM-NEXT:    sw t6, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 68(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 84(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s2, t6
-; RV32IM-NEXT:    sw t6, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 56(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 72(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s3, t6
-; RV32IM-NEXT:    sw t6, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 36(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 52(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s4, t6
-; RV32IM-NEXT:    sw t6, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t6, 552(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a7, t5, a7
-; RV32IM-NEXT:    sw a7, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 532(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t0, a7
-; RV32IM-NEXT:    sw a7, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 432(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 448(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t1, a7
-; RV32IM-NEXT:    sw a7, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 312(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 328(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t2, a7
-; RV32IM-NEXT:    sw a7, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 308(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 324(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t3, a7
-; RV32IM-NEXT:    sw a7, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 292(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 308(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t4, a7
-; RV32IM-NEXT:    sw a7, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 520(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a6, a0
-; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 204(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, a1, a0
-; RV32IM-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a0
-; RV32IM-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a3, a0
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a4, a0
-; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a5, a0
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 61681
-; RV32IM-NEXT:    addi t0, t0, -241
-; RV32IM-NEXT:    sw t0, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 61681
+; RV32IM-NEXT:    addi a7, a7, -241
+; RV32IM-NEXT:    sw a7, 452(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli a3, a0, 4
-; RV32IM-NEXT:    and a4, a0, t0
-; RV32IM-NEXT:    and a3, a3, t0
+; RV32IM-NEXT:    and a4, a0, a7
+; RV32IM-NEXT:    and a3, a3, a7
 ; RV32IM-NEXT:    slli a4, a4, 4
 ; RV32IM-NEXT:    or a3, a3, a4
-; RV32IM-NEXT:    sw a3, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a3, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli a4, a0, 4
-; RV32IM-NEXT:    and a7, a0, t0
-; RV32IM-NEXT:    and a4, a4, t0
-; RV32IM-NEXT:    slli a7, a7, 4
-; RV32IM-NEXT:    or a0, a4, a7
-; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and t0, a0, a7
+; RV32IM-NEXT:    and a4, a4, a7
+; RV32IM-NEXT:    slli t0, t0, 4
+; RV32IM-NEXT:    or a0, a4, t0
+; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s9, a0, a1
-; RV32IM-NEXT:    lw a0, 296(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s8, a1, a0
-; RV32IM-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 440(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s4, a1, a0
+; RV32IM-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a1, a0
 ; RV32IM-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, a1, a0
-; RV32IM-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s3, a0, a1
-; RV32IM-NEXT:    lw a0, 304(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 388(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s2, a1, a0
-; RV32IM-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 432(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 404(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, s0, a0
-; RV32IM-NEXT:    lw a0, 404(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 400(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, s1, a0
-; RV32IM-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, ra, a0
-; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a7, a0, 4
-; RV32IM-NEXT:    and t4, a0, t0
-; RV32IM-NEXT:    and a7, a7, t0
+; RV32IM-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t0, a0, 4
+; RV32IM-NEXT:    and t4, a0, a7
+; RV32IM-NEXT:    and t0, t0, a7
 ; RV32IM-NEXT:    slli t4, t4, 4
-; RV32IM-NEXT:    or s5, a7, t4
-; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or s7, t0, t4
+; RV32IM-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    srli t4, a0, 4
-; RV32IM-NEXT:    and ra, a0, t0
-; RV32IM-NEXT:    and t4, t4, t0
-; RV32IM-NEXT:    slli ra, ra, 4
-; RV32IM-NEXT:    or s6, t4, ra
-; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, a0, a1
-; RV32IM-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a0, a0, a7
+; RV32IM-NEXT:    and t4, t4, a7
+; RV32IM-NEXT:    slli a0, a0, 4
+; RV32IM-NEXT:    or s6, t4, a0
+; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, ra, a0
+; RV32IM-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t4, a1, a0
-; RV32IM-NEXT:    lw a0, 108(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 124(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, a1, a0
-; RV32IM-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 104(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, a1, a0
-; RV32IM-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, a0, a1
-; RV32IM-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, a1, a0
-; RV32IM-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a1, a0
-; RV32IM-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a1, a0
-; RV32IM-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 540(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 532(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, a0
-; RV32IM-NEXT:    lw a0, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 388(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, a0, s11
-; RV32IM-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a2, a0
-; RV32IM-NEXT:    lw a1, 132(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 148(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    lw a2, 116(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 132(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 508(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, ra, a2
-; RV32IM-NEXT:    lw ra, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 504(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor ra, s10, ra
 ; RV32IM-NEXT:    xor s8, s9, s8
-; RV32IM-NEXT:    lw s9, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s9, 456(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s4, s4, s9
-; RV32IM-NEXT:    lw s9, 420(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, s7, s9
+; RV32IM-NEXT:    lw s9, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, s5, s9
 ; RV32IM-NEXT:    xor s2, s3, s2
-; RV32IM-NEXT:    lw s3, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 528(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, s0, s3
-; RV32IM-NEXT:    lw s3, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 512(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, s1, s3
 ; RV32IM-NEXT:    xor t4, t6, t4
-; RV32IM-NEXT:    lw t6, 160(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 176(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, t5, t6
-; RV32IM-NEXT:    lw t6, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t6, 156(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, t3, t6
 ; RV32IM-NEXT:    xor t1, t2, t1
-; RV32IM-NEXT:    lw t2, 224(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t2, 240(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a7, t2
-; RV32IM-NEXT:    lw t2, 208(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t2, 224(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, t0, t2
 ; RV32IM-NEXT:    xor a3, a6, a3
-; RV32IM-NEXT:    lw a6, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 492(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, a6
-; RV32IM-NEXT:    lw a6, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 464(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a6
 ; RV32IM-NEXT:    xor a0, s11, a0
-; RV32IM-NEXT:    lw a6, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 444(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a6
-; RV32IM-NEXT:    lw a6, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a6, 172(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a6
 ; RV32IM-NEXT:    xor a6, s8, s4
-; RV32IM-NEXT:    lw t2, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, s7, t2
+; RV32IM-NEXT:    lw t2, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, s5, t2
 ; RV32IM-NEXT:    xor t6, s2, s0
-; RV32IM-NEXT:    lw s0, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 536(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, s1, s0
 ; RV32IM-NEXT:    xor t4, t4, t5
-; RV32IM-NEXT:    lw t5, 176(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t5, 192(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, t3, t5
 ; RV32IM-NEXT:    xor a7, t1, a7
-; RV32IM-NEXT:    lw t1, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t1, 248(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, t0, t1
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lw a4, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 500(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a5, a4
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    lui a2, 209715
-; RV32IM-NEXT:    addi s4, a2, 819
-; RV32IM-NEXT:    lw a2, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a5, a2, 2
-; RV32IM-NEXT:    and t1, a2, s4
-; RV32IM-NEXT:    and a5, a5, s4
+; RV32IM-NEXT:    lw a1, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a1
+; RV32IM-NEXT:    lui a1, 209715
+; RV32IM-NEXT:    addi s3, a1, 819
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a5, a1, 2
+; RV32IM-NEXT:    and t1, a1, s3
+; RV32IM-NEXT:    and a5, a5, s3
 ; RV32IM-NEXT:    slli t1, t1, 2
 ; RV32IM-NEXT:    or a5, a5, t1
-; RV32IM-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t1, a2, 2
-; RV32IM-NEXT:    and t5, a2, s4
-; RV32IM-NEXT:    and t1, t1, s4
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t1, a1, 2
+; RV32IM-NEXT:    and t5, a1, s3
+; RV32IM-NEXT:    and t1, t1, s3
 ; RV32IM-NEXT:    slli t5, t5, 2
-; RV32IM-NEXT:    or t1, t1, t5
+; RV32IM-NEXT:    or t5, t1, t5
 ; RV32IM-NEXT:    xor a6, a6, t2
-; RV32IM-NEXT:    xor t2, t6, s0
-; RV32IM-NEXT:    srli t5, s5, 2
-; RV32IM-NEXT:    and t6, s5, s4
-; RV32IM-NEXT:    and t5, t5, s4
+; RV32IM-NEXT:    xor t1, t6, s0
+; RV32IM-NEXT:    srli t2, s7, 2
+; RV32IM-NEXT:    and t6, s7, s3
+; RV32IM-NEXT:    and t2, t2, s3
 ; RV32IM-NEXT:    slli t6, t6, 2
-; RV32IM-NEXT:    or t5, t5, t6
+; RV32IM-NEXT:    or t2, t2, t6
 ; RV32IM-NEXT:    srli t6, s6, 2
-; RV32IM-NEXT:    and s0, s6, s4
-; RV32IM-NEXT:    and t6, t6, s4
+; RV32IM-NEXT:    and s0, s6, s3
+; RV32IM-NEXT:    and t6, t6, s3
 ; RV32IM-NEXT:    slli s0, s0, 2
 ; RV32IM-NEXT:    or t6, t6, s0
 ; RV32IM-NEXT:    xor t3, t4, t3
 ; RV32IM-NEXT:    xor a7, a7, t0
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a6, a1
-; RV32IM-NEXT:    lw a2, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, t2, a2
-; RV32IM-NEXT:    lw a2, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, t3, a2
-; RV32IM-NEXT:    lw a2, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, a2
-; RV32IM-NEXT:    lw a2, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a6, a1
+; RV32IM-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, t1, a1
+; RV32IM-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, t3, a1
+; RV32IM-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a7, a1
+; RV32IM-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a3, a1
+; RV32IM-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a0, ra
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a1, a4, a1
-; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a2, a4, a2
+; RV32IM-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a7, a6
-; RV32IM-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s6, 349525
-; RV32IM-NEXT:    addi s6, s6, 1365
+; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s4, 349525
+; RV32IM-NEXT:    addi s4, s4, 1365
 ; RV32IM-NEXT:    srli a0, a5, 1
-; RV32IM-NEXT:    and a1, a5, s6
-; RV32IM-NEXT:    and a0, a0, s6
-; RV32IM-NEXT:    slli a1, a1, 1
-; RV32IM-NEXT:    or a1, a0, a1
-; RV32IM-NEXT:    srli a0, t1, 1
-; RV32IM-NEXT:    and a3, t1, s6
-; RV32IM-NEXT:    and a0, a0, s6
+; RV32IM-NEXT:    and a2, a5, s4
+; RV32IM-NEXT:    and a0, a0, s4
+; RV32IM-NEXT:    slli a2, a2, 1
+; RV32IM-NEXT:    or ra, a0, a2
+; RV32IM-NEXT:    srli a0, t5, 1
+; RV32IM-NEXT:    and a2, t5, s4
+; RV32IM-NEXT:    and a0, a0, s4
+; RV32IM-NEXT:    slli a2, a2, 1
+; RV32IM-NEXT:    or a0, a0, a2
+; RV32IM-NEXT:    srli a2, t2, 1
+; RV32IM-NEXT:    and a3, t2, s4
+; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a3, a3, 1
-; RV32IM-NEXT:    or a0, a0, a3
-; RV32IM-NEXT:    srli a3, t5, 1
-; RV32IM-NEXT:    and a4, t5, s6
-; RV32IM-NEXT:    and a3, a3, s6
+; RV32IM-NEXT:    or a3, a2, a3
+; RV32IM-NEXT:    srli a2, t6, 1
+; RV32IM-NEXT:    and a4, t6, s4
+; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a4, a4, 1
-; RV32IM-NEXT:    or a4, a3, a4
-; RV32IM-NEXT:    srli a3, t6, 1
-; RV32IM-NEXT:    and a5, t6, s6
-; RV32IM-NEXT:    and a3, a3, s6
-; RV32IM-NEXT:    slli a5, a5, 1
-; RV32IM-NEXT:    or a2, a3, a5
-; RV32IM-NEXT:    lw t2, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a3, a0, t2
-; RV32IM-NEXT:    mul a3, a1, a3
-; RV32IM-NEXT:    lui a6, 1
-; RV32IM-NEXT:    and a7, a0, a6
-; RV32IM-NEXT:    mul a7, a1, a7
-; RV32IM-NEXT:    xor s2, a3, a7
-; RV32IM-NEXT:    lui t0, 64
-; RV32IM-NEXT:    and a3, a0, t0
-; RV32IM-NEXT:    mul a3, a1, a3
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    and a7, a0, t3
-; RV32IM-NEXT:    mul a7, a1, a7
-; RV32IM-NEXT:    xor a3, a3, a7
-; RV32IM-NEXT:    lui t5, 4096
-; RV32IM-NEXT:    and a7, a0, t5
-; RV32IM-NEXT:    mul a7, a1, a7
+; RV32IM-NEXT:    or a1, a2, a4
+; RV32IM-NEXT:    lui a4, 2
+; RV32IM-NEXT:    and a2, a0, a4
+; RV32IM-NEXT:    mul a2, ra, a2
+; RV32IM-NEXT:    lui a7, 4
+; RV32IM-NEXT:    and a5, a0, a7
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor t0, a2, a5
+; RV32IM-NEXT:    lui t2, 512
+; RV32IM-NEXT:    and a2, a0, t2
+; RV32IM-NEXT:    mul a2, ra, a2
+; RV32IM-NEXT:    lui t1, 1024
+; RV32IM-NEXT:    and a5, a0, t1
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor a6, a2, a5
+; RV32IM-NEXT:    lui t3, 4096
+; RV32IM-NEXT:    and a2, a0, t3
+; RV32IM-NEXT:    mul a2, ra, a2
 ; RV32IM-NEXT:    lui t4, 8192
-; RV32IM-NEXT:    and t1, a0, t4
-; RV32IM-NEXT:    mul t1, a1, t1
-; RV32IM-NEXT:    xor a7, a7, t1
-; RV32IM-NEXT:    and t1, a2, t2
-; RV32IM-NEXT:    and t2, a2, a6
-; RV32IM-NEXT:    mul t1, a4, t1
-; RV32IM-NEXT:    mul t2, a4, t2
-; RV32IM-NEXT:    xor a5, t1, t2
-; RV32IM-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a2, t0
-; RV32IM-NEXT:    and t2, a2, t3
-; RV32IM-NEXT:    mul t1, a4, t1
-; RV32IM-NEXT:    mul t2, a4, t2
-; RV32IM-NEXT:    xor a5, t1, t2
-; RV32IM-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a2, t5
-; RV32IM-NEXT:    and t2, a2, t4
-; RV32IM-NEXT:    mul t1, a4, t1
-; RV32IM-NEXT:    mul t2, a4, t2
-; RV32IM-NEXT:    xor a5, t1, t2
-; RV32IM-NEXT:    sw a5, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 2
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 1
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 4
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 2
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 8
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 3
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 16
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 4
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 32
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 5
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 64
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 6
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 128
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 7
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 256
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 8
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 512
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    slli t2, a1, 9
-; RV32IM-NEXT:    and a5, t1, t2
-; RV32IM-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a0, 1
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    lui a5, 2
-; RV32IM-NEXT:    and t2, a0, a5
-; RV32IM-NEXT:    mul t2, a1, t2
-; RV32IM-NEXT:    lui a5, 4
-; RV32IM-NEXT:    and t3, a0, a5
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a6, 8
-; RV32IM-NEXT:    and t3, a0, a6
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s5, 16
-; RV32IM-NEXT:    and t3, a0, s5
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s8, 32
-; RV32IM-NEXT:    and t3, a0, s8
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 256
-; RV32IM-NEXT:    and t3, a0, t0
-; RV32IM-NEXT:    mul s0, a1, t3
-; RV32IM-NEXT:    lui s7, 512
-; RV32IM-NEXT:    and t3, a0, s7
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s9, 1024
-; RV32IM-NEXT:    and t3, a0, s9
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a0, t4
+; RV32IM-NEXT:    mul a5, ra, a5
+; RV32IM-NEXT:    xor a5, a2, a5
+; RV32IM-NEXT:    and a2, a1, a4
+; RV32IM-NEXT:    and a7, a1, a7
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a7, a3, a7
+; RV32IM-NEXT:    xor a2, a2, a7
+; RV32IM-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, a1, t2
+; RV32IM-NEXT:    and a7, a1, t1
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a7, a3, a7
+; RV32IM-NEXT:    xor a2, a2, a7
+; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, a1, t3
+; RV32IM-NEXT:    and a7, a1, t4
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a7, a3, a7
+; RV32IM-NEXT:    xor a2, a2, a7
+; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 2
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 1
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 4
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 2
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 8
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 3
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 16
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 4
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 32
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 5
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 64
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 6
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 128
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 7
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 256
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 8
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 512
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a7, ra, 9
+; RV32IM-NEXT:    and a2, a2, a7
+; RV32IM-NEXT:    sw a2, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 1
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    lw s0, 624(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a7, a0, s0
+; RV32IM-NEXT:    mul a4, ra, a7
+; RV32IM-NEXT:    sw a4, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 1
+; RV32IM-NEXT:    and a7, a0, a4
+; RV32IM-NEXT:    mul a4, ra, a7
+; RV32IM-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 8
+; RV32IM-NEXT:    and a7, a0, a4
+; RV32IM-NEXT:    mul a7, ra, a7
+; RV32IM-NEXT:    lui s2, 16
+; RV32IM-NEXT:    and t2, a0, s2
+; RV32IM-NEXT:    mul a4, ra, t2
+; RV32IM-NEXT:    sw a4, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 32
+; RV32IM-NEXT:    and t2, a0, a4
+; RV32IM-NEXT:    mul a4, ra, t2
+; RV32IM-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s9, 64
+; RV32IM-NEXT:    and t2, a0, s9
+; RV32IM-NEXT:    mul a4, ra, t2
+; RV32IM-NEXT:    sw a4, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s8, 128
+; RV32IM-NEXT:    and t2, a0, s8
+; RV32IM-NEXT:    mul a4, ra, t2
+; RV32IM-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 256
+; RV32IM-NEXT:    and t2, a0, t1
+; RV32IM-NEXT:    mul a4, ra, t2
+; RV32IM-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui s11, 2048
-; RV32IM-NEXT:    and t3, a0, s11
-; RV32IM-NEXT:    mul a5, a1, t3
-; RV32IM-NEXT:    sw a5, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s3, 16384
-; RV32IM-NEXT:    and t3, a0, s3
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    lui t6, 32768
-; RV32IM-NEXT:    and t4, a0, t6
-; RV32IM-NEXT:    mul a5, a1, t4
-; RV32IM-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 65536
+; RV32IM-NEXT:    and t2, a0, s11
+; RV32IM-NEXT:    mul t2, ra, t2
+; RV32IM-NEXT:    lui s6, 16384
+; RV32IM-NEXT:    and t3, a0, s6
+; RV32IM-NEXT:    mul t3, ra, t3
+; RV32IM-NEXT:    lui t5, 32768
 ; RV32IM-NEXT:    and t4, a0, t5
-; RV32IM-NEXT:    mul a5, a1, t4
-; RV32IM-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui ra, 131072
-; RV32IM-NEXT:    and t4, a0, ra
-; RV32IM-NEXT:    mul a5, a1, t4
-; RV32IM-NEXT:    sw a5, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 262144
-; RV32IM-NEXT:    and t4, a0, a5
-; RV32IM-NEXT:    mul t4, a1, t4
+; RV32IM-NEXT:    mul a4, ra, t4
+; RV32IM-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s5, 65536
+; RV32IM-NEXT:    and t4, a0, s5
+; RV32IM-NEXT:    mul a4, ra, t4
+; RV32IM-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t6, 131072
+; RV32IM-NEXT:    and t4, a0, t6
+; RV32IM-NEXT:    mul a4, ra, t4
+; RV32IM-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 262144
+; RV32IM-NEXT:    and t4, a0, a4
+; RV32IM-NEXT:    mul t4, ra, t4
 ; RV32IM-NEXT:    sw t4, 524(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui s1, 524288
 ; RV32IM-NEXT:    and t4, a0, s1
-; RV32IM-NEXT:    mul t4, a1, t4
+; RV32IM-NEXT:    mul t4, ra, t4
 ; RV32IM-NEXT:    sw t4, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    and t1, t1, a1
-; RV32IM-NEXT:    sw t1, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a1, a1, 10
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    and a2, a2, ra
+; RV32IM-NEXT:    sw a2, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli ra, ra, 10
 ; RV32IM-NEXT:    andi a0, a0, 1024
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, s2, t2
-; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a3, a3, s0
-; RV32IM-NEXT:    sw a3, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a7, t3
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 2
+; RV32IM-NEXT:    and a0, a0, ra
+; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, t0, a7
+; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a6, t2
+; RV32IM-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a5, t3
+; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 2
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 1
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 4
+; RV32IM-NEXT:    slli a2, a3, 1
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 4
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 2
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 8
+; RV32IM-NEXT:    slli a2, a3, 2
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 3
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 16
+; RV32IM-NEXT:    slli a2, a3, 3
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 4
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 32
+; RV32IM-NEXT:    slli a2, a3, 4
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 5
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 64
+; RV32IM-NEXT:    slli a2, a3, 5
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 6
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 128
+; RV32IM-NEXT:    slli a2, a3, 6
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a3, a4, 7
-; RV32IM-NEXT:    and a0, a0, a3
-; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a2, 256
+; RV32IM-NEXT:    slli a2, a3, 7
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a1, 256
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a4, 8
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a1, a2, 512
-; RV32IM-NEXT:    seqz a1, a1
-; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a7, a4, 9
-; RV32IM-NEXT:    and a0, a1, a7
-; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a1, 2
-; RV32IM-NEXT:    and a1, a2, a1
-; RV32IM-NEXT:    lui a0, 4
-; RV32IM-NEXT:    and a0, a2, a0
-; RV32IM-NEXT:    and s2, a2, a6
-; RV32IM-NEXT:    and a3, a2, s5
-; RV32IM-NEXT:    and a6, a2, s8
-; RV32IM-NEXT:    and a7, a2, t0
-; RV32IM-NEXT:    and t0, a2, s7
-; RV32IM-NEXT:    and t1, a2, s9
-; RV32IM-NEXT:    and t2, a2, s11
-; RV32IM-NEXT:    and t3, a2, s3
-; RV32IM-NEXT:    and t4, a2, t6
-; RV32IM-NEXT:    and t5, a2, t5
-; RV32IM-NEXT:    and t6, a2, ra
-; RV32IM-NEXT:    and s0, a2, a5
-; RV32IM-NEXT:    and s1, a2, s1
-; RV32IM-NEXT:    andi a5, a2, 1
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    mul a1, a4, a1
-; RV32IM-NEXT:    mul s5, a4, a0
-; RV32IM-NEXT:    mul s9, a4, s2
-; RV32IM-NEXT:    mul a0, a4, a3
-; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, a4, a6
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a4, a7
-; RV32IM-NEXT:    mul s3, a4, t0
-; RV32IM-NEXT:    mul s8, a4, t1
-; RV32IM-NEXT:    mul ra, a4, t2
-; RV32IM-NEXT:    mul t3, a4, t3
-; RV32IM-NEXT:    mul s2, a4, t4
-; RV32IM-NEXT:    mul s7, a4, t5
-; RV32IM-NEXT:    mul s11, a4, t6
-; RV32IM-NEXT:    mul s0, a4, s0
-; RV32IM-NEXT:    mul a0, a4, s1
-; RV32IM-NEXT:    sw a0, 432(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    and t1, a5, a4
-; RV32IM-NEXT:    slli a4, a4, 10
-; RV32IM-NEXT:    andi a2, a2, 1024
+; RV32IM-NEXT:    slli a2, a3, 8
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a1, 512
 ; RV32IM-NEXT:    seqz a2, a2
 ; RV32IM-NEXT:    addi a2, a2, -1
-; RV32IM-NEXT:    and t6, a2, a4
-; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t5, a0, a1
-; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a0, a7
+; RV32IM-NEXT:    slli a5, a3, 9
+; RV32IM-NEXT:    and s7, a2, a5
+; RV32IM-NEXT:    and a5, a1, s0
+; RV32IM-NEXT:    lui a0, 1
+; RV32IM-NEXT:    and a6, a1, a0
+; RV32IM-NEXT:    lui a0, 8
+; RV32IM-NEXT:    and a0, a1, a0
+; RV32IM-NEXT:    and s2, a1, s2
+; RV32IM-NEXT:    lui a2, 32
+; RV32IM-NEXT:    and a2, a1, a2
+; RV32IM-NEXT:    and a7, a1, s9
+; RV32IM-NEXT:    and t0, a1, s8
+; RV32IM-NEXT:    and t1, a1, t1
+; RV32IM-NEXT:    and t2, a1, s11
+; RV32IM-NEXT:    and t3, a1, s6
+; RV32IM-NEXT:    and t4, a1, t5
+; RV32IM-NEXT:    and t5, a1, s5
+; RV32IM-NEXT:    and t6, a1, t6
+; RV32IM-NEXT:    and s0, a1, a4
+; RV32IM-NEXT:    and s1, a1, s1
+; RV32IM-NEXT:    andi a4, a1, 1
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    mul s8, a3, a5
+; RV32IM-NEXT:    mul a5, a3, a6
+; RV32IM-NEXT:    sw a5, 624(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, a3, a0
+; RV32IM-NEXT:    mul s2, a3, s2
+; RV32IM-NEXT:    mul s5, a3, a2
+; RV32IM-NEXT:    mul s6, a3, a7
+; RV32IM-NEXT:    mul s11, a3, t0
+; RV32IM-NEXT:    mul a2, a3, t1
+; RV32IM-NEXT:    sw a2, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t1, a3, t2
+; RV32IM-NEXT:    mul t2, a3, t3
+; RV32IM-NEXT:    mul t3, a3, t4
+; RV32IM-NEXT:    mul t4, a3, t5
+; RV32IM-NEXT:    mul t5, a3, t6
+; RV32IM-NEXT:    mul t6, a3, s0
+; RV32IM-NEXT:    mul s9, a3, s1
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    and a5, a4, a3
+; RV32IM-NEXT:    slli a3, a3, 10
+; RV32IM-NEXT:    andi a1, a1, 1024
+; RV32IM-NEXT:    seqz a1, a1
+; RV32IM-NEXT:    addi a1, a1, -1
+; RV32IM-NEXT:    and t0, a1, a3
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a1, a0
+; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s0, a0, t1
+; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t1, a0, t2
+; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a1, a0
 ; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t4, a0, t3
-; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a1, a0
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a0, a1
+; RV32IM-NEXT:    lw s1, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, a0, s1
+; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a0, a4
 ; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, a0, a1
-; RV32IM-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a0, a1
+; RV32IM-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a0
+; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 492(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a0
-; RV32IM-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, t1, a0
-; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 440(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, s1
-; RV32IM-NEXT:    xor t5, t5, s5
-; RV32IM-NEXT:    xor t2, t2, s3
-; RV32IM-NEXT:    xor t4, t4, s2
-; RV32IM-NEXT:    xor a6, t3, a6
-; RV32IM-NEXT:    lw t3, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, t3
-; RV32IM-NEXT:    lw t3, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, t3
-; RV32IM-NEXT:    lw t3, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, t3
-; RV32IM-NEXT:    lw t3, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, ra
+; RV32IM-NEXT:    lw ra, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, ra, s7
+; RV32IM-NEXT:    xor a7, a7, s2
+; RV32IM-NEXT:    xor t1, t1, t3
+; RV32IM-NEXT:    xor t2, t2, s1
+; RV32IM-NEXT:    lw t3, 576(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, t3
-; RV32IM-NEXT:    lw t3, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t3
-; RV32IM-NEXT:    xor a0, t1, a0
-; RV32IM-NEXT:    lw t1, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, t1
-; RV32IM-NEXT:    lw t1, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t3, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t3
+; RV32IM-NEXT:    lw t3, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t3
+; RV32IM-NEXT:    lw t3, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t3
+; RV32IM-NEXT:    xor a0, a5, a0
+; RV32IM-NEXT:    lw a5, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a5
+; RV32IM-NEXT:    xor a5, s7, t0
+; RV32IM-NEXT:    xor a7, a7, s5
+; RV32IM-NEXT:    xor t0, t1, t4
+; RV32IM-NEXT:    xor a4, t2, a4
+; RV32IM-NEXT:    lw t1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t1
+; RV32IM-NEXT:    lw t1, 548(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, t1
-; RV32IM-NEXT:    xor t1, t5, s9
-; RV32IM-NEXT:    xor t2, t2, s8
-; RV32IM-NEXT:    xor t3, t4, s7
-; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t0, a7
+; RV32IM-NEXT:    lw t1, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t1
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    xor a1, a5, s8
+; RV32IM-NEXT:    xor a5, a7, s6
+; RV32IM-NEXT:    xor a7, t0, t5
+; RV32IM-NEXT:    lw t0, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t0
+; RV32IM-NEXT:    lw t0, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t0
 ; RV32IM-NEXT:    lw t0, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t0
+; RV32IM-NEXT:    lw t0, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, t0
-; RV32IM-NEXT:    lw t0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, t0
-; RV32IM-NEXT:    lw t0, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t0, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, t0
+; RV32IM-NEXT:    lw t0, 624(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, t0
+; RV32IM-NEXT:    xor a5, a5, s11
+; RV32IM-NEXT:    xor a7, a7, t6
+; RV32IM-NEXT:    lw t0, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t0
+; RV32IM-NEXT:    lw t0, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t0
+; RV32IM-NEXT:    lw t0, 460(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, t0
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    xor a1, a2, t6
-; RV32IM-NEXT:    lw a2, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, t1, a2
-; RV32IM-NEXT:    xor t0, t2, ra
-; RV32IM-NEXT:    xor t1, t3, s11
-; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a7
-; RV32IM-NEXT:    lw a7, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    xor a2, t1, s0
-; RV32IM-NEXT:    lw a7, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    lw a7, 432(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a7
-; RV32IM-NEXT:    xor a3, a6, a3
+; RV32IM-NEXT:    xor a7, a7, s9
+; RV32IM-NEXT:    xor a6, a4, a6
+; RV32IM-NEXT:    xor a2, a6, a2
 ; RV32IM-NEXT:    xor a1, a0, a1
-; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a1, a1, t0
-; RV32IM-NEXT:    lw t0, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a4, a3, t0
-; RV32IM-NEXT:    srli a7, a3, 8
-; RV32IM-NEXT:    xor a3, a3, a5
-; RV32IM-NEXT:    and a5, a1, t0
-; RV32IM-NEXT:    xor a2, a1, a2
+; RV32IM-NEXT:    xor a1, a1, a5
+; RV32IM-NEXT:    lw a5, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    xor a1, a1, s0
+; RV32IM-NEXT:    lw t0, 628(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a5, a2, t0
+; RV32IM-NEXT:    srli a6, a2, 8
+; RV32IM-NEXT:    xor a2, a2, a3
+; RV32IM-NEXT:    and a3, a1, t0
+; RV32IM-NEXT:    xor a7, a1, a7
 ; RV32IM-NEXT:    srli a1, a1, 8
-; RV32IM-NEXT:    and a7, a7, t0
+; RV32IM-NEXT:    and a6, a6, t0
 ; RV32IM-NEXT:    and a1, a1, t0
-; RV32IM-NEXT:    slli a6, a6, 24
-; RV32IM-NEXT:    slli a4, a4, 8
-; RV32IM-NEXT:    or a4, a6, a4
-; RV32IM-NEXT:    srli a3, a3, 24
-; RV32IM-NEXT:    or a3, a7, a3
-; RV32IM-NEXT:    slli a0, a0, 24
+; RV32IM-NEXT:    slli a4, a4, 24
 ; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    or a0, a0, a5
+; RV32IM-NEXT:    or a4, a4, a5
 ; RV32IM-NEXT:    srli a2, a2, 24
-; RV32IM-NEXT:    or a1, a1, a2
-; RV32IM-NEXT:    or a3, a4, a3
+; RV32IM-NEXT:    or a2, a6, a2
+; RV32IM-NEXT:    slli a0, a0, 24
+; RV32IM-NEXT:    slli a3, a3, 8
+; RV32IM-NEXT:    or a0, a0, a3
+; RV32IM-NEXT:    srli a3, a7, 24
+; RV32IM-NEXT:    or a1, a1, a3
+; RV32IM-NEXT:    or a2, a4, a2
 ; RV32IM-NEXT:    or a0, a0, a1
-; RV32IM-NEXT:    srli a1, a3, 4
-; RV32IM-NEXT:    lw a4, 424(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a2, a3, a4
+; RV32IM-NEXT:    srli a1, a2, 4
+; RV32IM-NEXT:    lw a4, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a2, a2, a4
 ; RV32IM-NEXT:    srli a3, a0, 4
 ; RV32IM-NEXT:    and a0, a0, a4
 ; RV32IM-NEXT:    and a1, a1, a4
@@ -21597,11 +21589,11 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IM-NEXT:    or a1, a1, a2
 ; RV32IM-NEXT:    or a0, a3, a0
 ; RV32IM-NEXT:    srli a2, a1, 2
-; RV32IM-NEXT:    and a1, a1, s4
+; RV32IM-NEXT:    and a1, a1, s3
 ; RV32IM-NEXT:    srli a3, a0, 2
-; RV32IM-NEXT:    and a0, a0, s4
-; RV32IM-NEXT:    and a2, a2, s4
-; RV32IM-NEXT:    and a3, a3, s4
+; RV32IM-NEXT:    and a0, a0, s3
+; RV32IM-NEXT:    and a2, a2, s3
+; RV32IM-NEXT:    and a3, a3, s3
 ; RV32IM-NEXT:    slli a1, a1, 2
 ; RV32IM-NEXT:    or a1, a2, a1
 ; RV32IM-NEXT:    lui a2, 349525
@@ -21609,8 +21601,8 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IM-NEXT:    slli a0, a0, 2
 ; RV32IM-NEXT:    or a0, a3, a0
 ; RV32IM-NEXT:    srli a3, a1, 1
-; RV32IM-NEXT:    and a1, a1, s6
-; RV32IM-NEXT:    and a4, a0, s6
+; RV32IM-NEXT:    and a1, a1, s4
+; RV32IM-NEXT:    and a4, a0, s4
 ; RV32IM-NEXT:    srli a0, a0, 1
 ; RV32IM-NEXT:    and a3, a3, a2
 ; RV32IM-NEXT:    and a0, a0, a2
@@ -21619,43 +21611,43 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IM-NEXT:    slli a4, a4, 1
 ; RV32IM-NEXT:    or a0, a0, a4
 ; RV32IM-NEXT:    srli a1, a1, 1
-; RV32IM-NEXT:    lw s0, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 608(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, a1, s0
 ; RV32IM-NEXT:    srli a0, a0, 1
-; RV32IM-NEXT:    lw s1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 612(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, a0, s1
-; RV32IM-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s3, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 616(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    sw s3, 0(a0)
 ; RV32IM-NEXT:    sw s0, 4(a0)
-; RV32IM-NEXT:    lw s2, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s2, 620(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    sw s2, 8(a0)
 ; RV32IM-NEXT:    sw s1, 12(a0)
-; RV32IM-NEXT:    addi a0, sp, 624
-; RV32IM-NEXT:    sw s3, 624(sp)
-; RV32IM-NEXT:    sw s0, 628(sp)
-; RV32IM-NEXT:    sw s2, 632(sp)
-; RV32IM-NEXT:    sw s1, 636(sp)
+; RV32IM-NEXT:    addi a0, sp, 640
+; RV32IM-NEXT:    sw s3, 640(sp)
+; RV32IM-NEXT:    sw s0, 644(sp)
+; RV32IM-NEXT:    sw s2, 648(sp)
+; RV32IM-NEXT:    sw s1, 652(sp)
 ; RV32IM-NEXT:    call vector_use
-; RV32IM-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    sw s3, 0(a0)
 ; RV32IM-NEXT:    sw s0, 4(a0)
 ; RV32IM-NEXT:    sw s2, 8(a0)
 ; RV32IM-NEXT:    sw s1, 12(a0)
-; RV32IM-NEXT:    lw ra, 700(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 696(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 692(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s2, 688(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s3, 684(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s4, 680(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 676(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s6, 672(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s7, 668(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s8, 664(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s9, 660(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 656(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s11, 652(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    addi sp, sp, 704
+; RV32IM-NEXT:    lw ra, 716(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 712(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 708(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s2, 704(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 700(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s4, 696(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 692(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s6, 688(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s7, 684(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s8, 680(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s9, 676(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 672(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 668(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    addi sp, sp, 720
 ; RV32IM-NEXT:    ret
 ;
 ; RV64IM-LABEL: mul_use_commutative_clmul_v2i64:
@@ -22617,7 +22609,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a3, 716(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw a2, 712(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a4, 0(a1)
-; RV32IMZBS-NEXT:    lw a5, 4(a1)
+; RV32IMZBS-NEXT:    lw a3, 4(a1)
 ; RV32IMZBS-NEXT:    lw s4, 8(a1)
 ; RV32IMZBS-NEXT:    lw s9, 12(a1)
 ; RV32IMZBS-NEXT:    lw a7, 0(a0)
@@ -22628,13 +22620,13 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    addi s8, a0, -256
 ; RV32IMZBS-NEXT:    srli t2, a7, 8
 ; RV32IMZBS-NEXT:    srli t3, a7, 24
-; RV32IMZBS-NEXT:    and a3, a7, s8
+; RV32IMZBS-NEXT:    and a6, a7, s8
 ; RV32IMZBS-NEXT:    slli s10, a7, 24
 ; RV32IMZBS-NEXT:    srli t4, a4, 8
 ; RV32IMZBS-NEXT:    srli s0, a4, 24
 ; RV32IMZBS-NEXT:    and t5, a4, s8
 ; RV32IMZBS-NEXT:    slli t6, a4, 24
-; RV32IMZBS-NEXT:    slli a6, t0, 1
+; RV32IMZBS-NEXT:    slli a5, t0, 1
 ; RV32IMZBS-NEXT:    andi s5, a4, 2
 ; RV32IMZBS-NEXT:    slli s1, t0, 2
 ; RV32IMZBS-NEXT:    andi s3, a4, 4
@@ -22661,29 +22653,29 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    slli s0, s4, 24
 ; RV32IMZBS-NEXT:    slli s7, s7, 8
 ; RV32IMZBS-NEXT:    or s0, s0, s7
-; RV32IMZBS-NEXT:    andi s7, a5, 2
-; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, s10, a3
-; RV32IMZBS-NEXT:    or a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, t1, s8
+; RV32IMZBS-NEXT:    andi s7, a3, 2
+; RV32IMZBS-NEXT:    slli a6, a6, 8
+; RV32IMZBS-NEXT:    or a6, s10, a6
+; RV32IMZBS-NEXT:    or a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, t1, s8
 ; RV32IMZBS-NEXT:    or t2, t5, t4
 ; RV32IMZBS-NEXT:    sw t2, 696(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli s8, t1, 24
-; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, s8, a3
-; RV32IMZBS-NEXT:    or a3, a3, t3
-; RV32IMZBS-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, a7, 2
+; RV32IMZBS-NEXT:    slli a6, a6, 8
+; RV32IMZBS-NEXT:    or a6, s8, a6
+; RV32IMZBS-NEXT:    or a6, a6, t3
+; RV32IMZBS-NEXT:    sw a6, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a7, 2
 ; RV32IMZBS-NEXT:    or t2, s0, t6
 ; RV32IMZBS-NEXT:    sw t2, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi t2, a5, 4
+; RV32IMZBS-NEXT:    andi t2, a3, 4
 ; RV32IMZBS-NEXT:    seqz t3, s5
 ; RV32IMZBS-NEXT:    seqz t4, s7
 ; RV32IMZBS-NEXT:    addi t3, t3, -1
 ; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    and t5, t3, a6
-; RV32IMZBS-NEXT:    and a6, t4, s6
+; RV32IMZBS-NEXT:    and t5, t3, a5
+; RV32IMZBS-NEXT:    and a5, t4, s6
 ; RV32IMZBS-NEXT:    and t6, t3, s6
 ; RV32IMZBS-NEXT:    slli t3, a7, 3
 ; RV32IMZBS-NEXT:    seqz t4, s3
@@ -22691,17 +22683,17 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    addi t4, t4, -1
 ; RV32IMZBS-NEXT:    addi t2, t2, -1
 ; RV32IMZBS-NEXT:    and s3, t4, s1
-; RV32IMZBS-NEXT:    and s0, t2, a3
-; RV32IMZBS-NEXT:    and t4, t4, a3
-; RV32IMZBS-NEXT:    andi a3, a5, 8
+; RV32IMZBS-NEXT:    and s0, t2, a6
+; RV32IMZBS-NEXT:    and t4, t4, a6
+; RV32IMZBS-NEXT:    andi a6, a3, 8
 ; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    seqz a3, a3
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    and s6, a2, a1
-; RV32IMZBS-NEXT:    and s5, a3, t3
+; RV32IMZBS-NEXT:    and s5, a6, t3
 ; RV32IMZBS-NEXT:    and t3, a2, t3
-; RV32IMZBS-NEXT:    andi a1, a5, 16
+; RV32IMZBS-NEXT:    andi a1, a3, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
@@ -22716,7 +22708,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 32
+; RV32IMZBS-NEXT:    andi a1, a3, 32
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22730,7 +22722,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 64
+; RV32IMZBS-NEXT:    andi a1, a3, 64
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22744,7 +22736,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 128
+; RV32IMZBS-NEXT:    andi a1, a3, 128
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22758,7 +22750,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 256
+; RV32IMZBS-NEXT:    andi a1, a3, 256
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22772,7 +22764,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 512
+; RV32IMZBS-NEXT:    andi a1, a3, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22786,7 +22778,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a4, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, a5, 1024
+; RV32IMZBS-NEXT:    andi a1, a3, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -22801,229 +22793,229 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    not a0, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 11
 ; RV32IMZBS-NEXT:    addi a2, a1, -1
-; RV32IMZBS-NEXT:    not a1, a5
-; RV32IMZBS-NEXT:    bexti a3, a1, 11
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    not a1, a3
+; RV32IMZBS-NEXT:    bexti a6, a1, 11
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 11
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 488(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 11
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 508(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 536(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 12
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 12
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 12
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 12
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 472(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 12
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 484(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 13
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 13
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 13
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 13
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 13
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 14
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 14
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 14
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 604(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 14
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 616(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 15
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 15
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 15
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 15
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 652(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 15
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 656(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 16
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 16
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 16
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 16
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 436(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 16
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 440(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 456(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 17
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 17
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 17
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 17
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 424(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 17
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 432(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 452(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 18
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 18
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 18
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 18
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 460(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 18
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 464(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 492(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 19
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 19
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 19
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 19
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 19
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 560(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 20
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 20
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 20
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 20
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 576(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 21
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 21
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 21
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 21
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 592(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 21
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 596(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 22
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 22
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 22
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 22
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 400(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 22
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 404(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 404(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 412(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 23
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 23
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 23
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 23
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 392(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 23
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 396(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 396(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 408(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 24
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 24
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 24
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 24
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 416(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, a3, s10
-; RV32IMZBS-NEXT:    sw a3, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, s10
+; RV32IMZBS-NEXT:    sw a6, 420(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, s10
 ; RV32IMZBS-NEXT:    sw a2, 428(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 25
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 25
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 25
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 25
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 444(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 25
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 448(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 448(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 468(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 26
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 26
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 26
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 26
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 476(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 26
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 480(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 480(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 496(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 27
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 27
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 27
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 27
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 500(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 27
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 504(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 512(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 28
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 28
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 28
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 28
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 28
-; RV32IMZBS-NEXT:    and a3, a3, t2
-; RV32IMZBS-NEXT:    sw a3, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    sw a6, 524(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 552(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a0, 29
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    bexti a3, a1, 29
-; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a1, 29
+; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    slli t2, t0, 29
 ; RV32IMZBS-NEXT:    and t2, a2, t2
 ; RV32IMZBS-NEXT:    sw t2, 368(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli t2, a7, 29
-; RV32IMZBS-NEXT:    and s10, a3, t2
+; RV32IMZBS-NEXT:    and s10, a6, t2
 ; RV32IMZBS-NEXT:    and a2, a2, t2
 ; RV32IMZBS-NEXT:    sw a2, 384(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
@@ -23040,24 +23032,24 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    andi a0, a4, 1
 ; RV32IMZBS-NEXT:    srli a1, a4, 31
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a2, a5, 1
+; RV32IMZBS-NEXT:    andi a2, a3, 1
 ; RV32IMZBS-NEXT:    seqz a2, a2
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a3, t0, 31
+; RV32IMZBS-NEXT:    slli a6, t0, 31
 ; RV32IMZBS-NEXT:    and a4, a0, t0
 ; RV32IMZBS-NEXT:    sw a4, 344(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a7
 ; RV32IMZBS-NEXT:    sw a2, 360(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and t0, a0, a7
 ; RV32IMZBS-NEXT:    slli a7, a7, 31
-; RV32IMZBS-NEXT:    srli a5, a5, 31
+; RV32IMZBS-NEXT:    srli a3, a3, 31
 ; RV32IMZBS-NEXT:    seqz a0, a1
-; RV32IMZBS-NEXT:    seqz a1, a5
+; RV32IMZBS-NEXT:    seqz a1, a3
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 372(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a0, a6
+; RV32IMZBS-NEXT:    sw a2, 372(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a1, a1, a7
 ; RV32IMZBS-NEXT:    sw a1, 380(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a7
@@ -23207,165 +23199,165 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    not a0, s9
 ; RV32IMZBS-NEXT:    bexti a3, a0, 11
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 11
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 140(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 11
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 11
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 140(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 11
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 144(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 12
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 12
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 12
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 112(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 12
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 12
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 112(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 12
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 124(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 13
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 13
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 13
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 172(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 13
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 13
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 172(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 13
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 180(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 14
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 14
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 252(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 14
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 14
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 252(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 14
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 260(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 15
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 15
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 15
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 284(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 15
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 15
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 284(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 15
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 292(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 16
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 16
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 16
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 68(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 16
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 16
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 68(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 16
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 72(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 84(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 17
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 17
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 17
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 60(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 17
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 17
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 60(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 17
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 64(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 76(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 18
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 18
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 18
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 92(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 18
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 18
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 92(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 18
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 100(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 120(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 19
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 19
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 19
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 168(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 19
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 19
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 168(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 19
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 176(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 20
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 20
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 200(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 20
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 20
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 200(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 20
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 204(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 21
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 21
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 21
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 220(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 21
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 21
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 220(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 21
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 224(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 22
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 22
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 22
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 32(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 22
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 22
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 22
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 44(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 23
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 23
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 23
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 24(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 23
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 23
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 24(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 23
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 28(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 24
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 24
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 24
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 48(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, s2, 24
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a3, a3, s8
 ; RV32IMZBS-NEXT:    sw a3, 52(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, s8
@@ -23374,59 +23366,59 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 25
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 25
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 80(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 25
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 25
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 80(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 25
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 88(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 26
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 26
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 26
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 104(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 26
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 26
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 104(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 26
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 108(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 27
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 27
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 27
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 128(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 27
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 27
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 128(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 27
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 132(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 28
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 28
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 28
-; RV32IMZBS-NEXT:    and a5, a2, a5
-; RV32IMZBS-NEXT:    sw a5, 160(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, t1, 28
-; RV32IMZBS-NEXT:    and a3, a3, a5
+; RV32IMZBS-NEXT:    slli a6, s2, 28
+; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    sw a4, 160(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, t1, 28
+; RV32IMZBS-NEXT:    and a3, a3, a6
 ; RV32IMZBS-NEXT:    sw a3, 156(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a2, a2, a6
 ; RV32IMZBS-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 29
-; RV32IMZBS-NEXT:    addi a5, a2, -1
+; RV32IMZBS-NEXT:    addi a6, a2, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 29
 ; RV32IMZBS-NEXT:    addi a4, a2, -1
 ; RV32IMZBS-NEXT:    slli a2, s2, 29
-; RV32IMZBS-NEXT:    and s11, a5, a2
+; RV32IMZBS-NEXT:    and s11, a6, a2
 ; RV32IMZBS-NEXT:    slli a3, t1, 29
 ; RV32IMZBS-NEXT:    and a4, a4, a3
-; RV32IMZBS-NEXT:    and s8, a5, a3
+; RV32IMZBS-NEXT:    and s8, a6, a3
 ; RV32IMZBS-NEXT:    bexti a1, a1, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -23490,7 +23482,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 424(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a6
+; RV32IMZBS-NEXT:    xor a0, a0, a5
 ; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    xor a0, s0, s5
 ; RV32IMZBS-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
@@ -23509,7 +23501,7 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw a0, 440(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 404(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
@@ -23525,23 +23517,23 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw a0, 264(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 112(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 312(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    xor s11, s11, s7
 ; RV32IMZBS-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, ra, a0
@@ -23636,23 +23628,23 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw s8, 632(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 400(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s8, s9
-; RV32IMZBS-NEXT:    sw s8, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s8, 436(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 668(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 628(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 436(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s8, 432(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 624(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 580(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s8, 424(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 424(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s8, 416(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 464(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 392(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 440(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 416(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s8, 412(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 420(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s9, 404(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
@@ -23664,23 +23656,23 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw s8, 636(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s10, s8, s10
 ; RV32IMZBS-NEXT:    lw s8, 308(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 368(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 392(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
 ; RV32IMZBS-NEXT:    sw s8, 632(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 240(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 364(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 368(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
 ; RV32IMZBS-NEXT:    sw s8, 628(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 172(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 360(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 364(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
 ; RV32IMZBS-NEXT:    sw s8, 624(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 92(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 360(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
 ; RV32IMZBS-NEXT:    sw s8, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s8, 48(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 312(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 332(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s9, s9, s8
 ; RV32IMZBS-NEXT:    lw s8, 12(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s11, s8
@@ -23729,85 +23721,86 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
 ; RV32IMZBS-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 272(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a0
+; RV32IMZBS-NEXT:    xor a0, a2, a0
+; RV32IMZBS-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 196(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a3, a0
-; RV32IMZBS-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a4, a0
-; RV32IMZBS-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a5, a0
-; RV32IMZBS-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a6, a0
 ; RV32IMZBS-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lui a4, 61681
-; RV32IMZBS-NEXT:    addi a4, a4, -241
-; RV32IMZBS-NEXT:    sw a4, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lui ra, 61681
+; RV32IMZBS-NEXT:    addi a1, ra, -241
+; RV32IMZBS-NEXT:    sw a1, 684(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli a3, a0, 4
-; RV32IMZBS-NEXT:    and a6, a0, a4
-; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    and a6, a0, a1
+; RV32IMZBS-NEXT:    and a3, a3, a1
 ; RV32IMZBS-NEXT:    slli a6, a6, 4
 ; RV32IMZBS-NEXT:    or a0, a3, a6
 ; RV32IMZBS-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli a6, a0, 4
-; RV32IMZBS-NEXT:    and t1, a0, a4
-; RV32IMZBS-NEXT:    and a6, a6, a4
+; RV32IMZBS-NEXT:    and t1, a0, a1
+; RV32IMZBS-NEXT:    and a6, a6, a1
 ; RV32IMZBS-NEXT:    slli t1, t1, 4
 ; RV32IMZBS-NEXT:    or a0, a6, t1
 ; RV32IMZBS-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, a2, a0
 ; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 484(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 472(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 444(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 460(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 460(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 440(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 432(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s11, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 424(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, a2, a0
 ; RV32IMZBS-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 680(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 416(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a2, a0
 ; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t2, a0, 4
-; RV32IMZBS-NEXT:    and t3, a0, a4
-; RV32IMZBS-NEXT:    and t2, t2, a4
+; RV32IMZBS-NEXT:    and t3, a0, a1
+; RV32IMZBS-NEXT:    and t2, t2, a1
 ; RV32IMZBS-NEXT:    slli t3, t3, 4
 ; RV32IMZBS-NEXT:    or a0, t2, t3
 ; RV32IMZBS-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t3, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, a4
-; RV32IMZBS-NEXT:    and t3, t3, a4
+; RV32IMZBS-NEXT:    and a0, a0, a1
+; RV32IMZBS-NEXT:    and t3, t3, a1
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
 ; RV32IMZBS-NEXT:    or a0, t3, a0
 ; RV32IMZBS-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
@@ -23857,15 +23850,16 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a2, a0
+; RV32IMZBS-NEXT:    lw a4, 464(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a0
 ; RV32IMZBS-NEXT:    lw a0, 268(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 464(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 456(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a5, a5, a0
 ; RV32IMZBS-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 452(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a6, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 440(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, a0
 ; RV32IMZBS-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, a0, ra
@@ -24015,502 +24009,494 @@ define void @mul_use_commutative_clmul_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0
 ; RV32IMZBS-NEXT:    lw a2, 664(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t6, a0, a2
 ; RV32IMZBS-NEXT:    lw a0, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, a1, a0
+; RV32IMZBS-NEXT:    xor a1, a1, a0
 ; RV32IMZBS-NEXT:    and t5, t5, s5
 ; RV32IMZBS-NEXT:    slli s1, s1, 1
-; RV32IMZBS-NEXT:    and s3, t0, s5
+; RV32IMZBS-NEXT:    and s2, t0, s5
 ; RV32IMZBS-NEXT:    slli s0, s0, 1
 ; RV32IMZBS-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, t2, a0
+; RV32IMZBS-NEXT:    xor s3, t2, a0
 ; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, t4, a0
 ; RV32IMZBS-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a7, a0
 ; RV32IMZBS-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a4, a0
-; RV32IMZBS-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a0, a5, a6
-; RV32IMZBS-NEXT:    or a1, t1, t3
-; RV32IMZBS-NEXT:    srli a4, t3, 31
-; RV32IMZBS-NEXT:    xor a2, s2, t6
-; RV32IMZBS-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a3, t5, s1
-; RV32IMZBS-NEXT:    or t1, s3, s0
-; RV32IMZBS-NEXT:    srli s0, s0, 31
-; RV32IMZBS-NEXT:    xor a2, t4, t2
-; RV32IMZBS-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, a0, 1
-; RV32IMZBS-NEXT:    andi a6, a1, 2
-; RV32IMZBS-NEXT:    slli a7, a0, 2
-; RV32IMZBS-NEXT:    andi t2, a1, 4
-; RV32IMZBS-NEXT:    slli t3, a0, 3
-; RV32IMZBS-NEXT:    andi t4, a1, 8
-; RV32IMZBS-NEXT:    slli t5, a0, 4
-; RV32IMZBS-NEXT:    andi t6, a1, 16
-; RV32IMZBS-NEXT:    slli s1, a0, 5
-; RV32IMZBS-NEXT:    andi s2, a1, 32
-; RV32IMZBS-NEXT:    slli s3, a0, 31
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, s3
-; RV32IMZBS-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a3, 31
-; RV32IMZBS-NEXT:    seqz s0, s0
-; RV32IMZBS-NEXT:    addi s0, s0, -1
-; RV32IMZBS-NEXT:    and a4, s0, a4
-; RV32IMZBS-NEXT:    sw a4, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a0, 6
-; RV32IMZBS-NEXT:    seqz a6, a6
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, a5
-; RV32IMZBS-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a5, a1, 64
-; RV32IMZBS-NEXT:    seqz a6, t2
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, a7
-; RV32IMZBS-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a0, 7
-; RV32IMZBS-NEXT:    seqz a7, t4
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and a2, a7, t3
-; RV32IMZBS-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a7, a1, 128
-; RV32IMZBS-NEXT:    seqz t2, t6
-; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    and a2, t2, t5
-; RV32IMZBS-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t2, a0, 8
-; RV32IMZBS-NEXT:    seqz t3, s2
-; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    and a2, t3, s1
-; RV32IMZBS-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi t3, a1, 256
+; RV32IMZBS-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a4, a0
+; RV32IMZBS-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or t2, a5, a6
+; RV32IMZBS-NEXT:    or a0, t1, t3
+; RV32IMZBS-NEXT:    srli a4, t3, 31
+; RV32IMZBS-NEXT:    xor a1, a1, t6
+; RV32IMZBS-NEXT:    sw a1, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a2, t5, s1
+; RV32IMZBS-NEXT:    or t1, s2, s0
+; RV32IMZBS-NEXT:    srli s0, s0, 31
+; RV32IMZBS-NEXT:    xor a1, t4, s3
+; RV32IMZBS-NEXT:    sw a1, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, t2, 1
+; RV32IMZBS-NEXT:    andi a5, a0, 2
+; RV32IMZBS-NEXT:    slli a6, t2, 2
+; RV32IMZBS-NEXT:    andi a7, a0, 4
+; RV32IMZBS-NEXT:    slli t3, t2, 3
+; RV32IMZBS-NEXT:    andi t4, a0, 8
+; RV32IMZBS-NEXT:    slli t5, t2, 4
+; RV32IMZBS-NEXT:    andi t6, a0, 16
+; RV32IMZBS-NEXT:    slli s1, t2, 5
+; RV32IMZBS-NEXT:    andi s2, a0, 32
+; RV32IMZBS-NEXT:    slli s3, t2, 31
+; RV32IMZBS-NEXT:    seqz a4, a4
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a3, a4, s3
+; RV32IMZBS-NEXT:    sw a3, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 31
+; RV32IMZBS-NEXT:    seqz s0, s0
+; RV32IMZBS-NEXT:    addi s0, s0, -1
+; RV32IMZBS-NEXT:    and a4, s0, a4
+; RV32IMZBS-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t2, 6
 ; RV32IMZBS-NEXT:    seqz a5, a5
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a4, a5, a4
-; RV32IMZBS-NEXT:    sw a4, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a0, 9
+; RV32IMZBS-NEXT:    and a3, a5, a1
+; RV32IMZBS-NEXT:    andi a1, a0, 64
 ; RV32IMZBS-NEXT:    seqz a5, a7
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a2, a5, a6
-; RV32IMZBS-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a5, a1, 512
-; RV32IMZBS-NEXT:    seqz a6, t3
+; RV32IMZBS-NEXT:    and a5, a5, a6
+; RV32IMZBS-NEXT:    sw a5, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a5, t2, 7
+; RV32IMZBS-NEXT:    seqz a6, t4
 ; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and a2, a6, t2
-; RV32IMZBS-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a0, 10
-; RV32IMZBS-NEXT:    seqz a5, a5
+; RV32IMZBS-NEXT:    and a6, a6, t3
+; RV32IMZBS-NEXT:    sw a6, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a6, a0, 128
+; RV32IMZBS-NEXT:    seqz a7, t6
+; RV32IMZBS-NEXT:    addi a7, a7, -1
+; RV32IMZBS-NEXT:    and a7, a7, t5
+; RV32IMZBS-NEXT:    sw a7, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, t2, 8
+; RV32IMZBS-NEXT:    seqz t3, s2
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    and t0, t3, s1
+; RV32IMZBS-NEXT:    sw t0, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi t3, a0, 256
+; RV32IMZBS-NEXT:    seqz a1, a1
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, t2, 9
+; RV32IMZBS-NEXT:    seqz a4, a6
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a4, a4, a5
+; RV32IMZBS-NEXT:    sw a4, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a4, a0, 512
+; RV32IMZBS-NEXT:    seqz a5, t3
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a4, a5, a4
-; RV32IMZBS-NEXT:    sw a4, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a1, 1024
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    slli a5, t2, 10
 ; RV32IMZBS-NEXT:    seqz a4, a4
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a5, a1
-; RV32IMZBS-NEXT:    bexti a4, a5, 11
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 11
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 12
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 12
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 13
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 13
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 14
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 14
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 15
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 15
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 16
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 16
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 17
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 17
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 18
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 18
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 19
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 19
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 20
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 20
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 21
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 21
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 22
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 22
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 23
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 23
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 24
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 24
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 25
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 25
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 26
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 26
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 27
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 27
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 28
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 28
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, a5, 29
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a6, a0, 29
-; RV32IMZBS-NEXT:    and a2, a4, a6
-; RV32IMZBS-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a1, a1, 1
+; RV32IMZBS-NEXT:    and a1, a4, a1
+; RV32IMZBS-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a1, a0, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a1, a1, a0
-; RV32IMZBS-NEXT:    sw a1, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a0, a0, 30
-; RV32IMZBS-NEXT:    bexti a1, a5, 30
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a4, a0
+; RV32IMZBS-NEXT:    bexti a1, a4, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a0, a1, a0
+; RV32IMZBS-NEXT:    slli a5, t2, 11
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 12
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 12
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 13
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 13
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 14
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 14
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 15
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 15
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 16
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 16
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 17
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 17
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 18
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 18
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 19
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 19
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 20
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 20
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 21
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 21
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 22
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 22
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 23
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 23
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 24
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 24
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 25
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 25
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 26
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 26
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 27
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 27
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 28
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 28
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a4, 29
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a5, t2, 29
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, a0, 1
+; RV32IMZBS-NEXT:    seqz a0, a0
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, t2
 ; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli t2, t2, 30
+; RV32IMZBS-NEXT:    bexti a0, a4, 30
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, t2
+; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 1
+; RV32IMZBS-NEXT:    slli a1, a2, 1
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 2
+; RV32IMZBS-NEXT:    slli a1, a2, 2
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 3
+; RV32IMZBS-NEXT:    slli a1, a2, 3
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 4
+; RV32IMZBS-NEXT:    slli a1, a2, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 5
+; RV32IMZBS-NEXT:    slli a1, a2, 5
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 6
+; RV32IMZBS-NEXT:    slli a1, a2, 6
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 7
+; RV32IMZBS-NEXT:    slli a1, a2, 7
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 8
+; RV32IMZBS-NEXT:    slli a1, a2, 8
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 9
+; RV32IMZBS-NEXT:    slli a1, a2, 9
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, a3, 10
+; RV32IMZBS-NEXT:    slli a1, a2, 10
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    not a0, t1
 ; RV32IMZBS-NEXT:    bexti a1, a0, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 11
+; RV32IMZBS-NEXT:    slli a4, a2, 11
 ; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 500(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 12
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s0, a3, 12
-; RV32IMZBS-NEXT:    and a1, a1, s0
-; RV32IMZBS-NEXT:    sw a1, 488(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 12
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 13
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 13
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 13
+; RV32IMZBS-NEXT:    and s10, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 14
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 14
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 14
+; RV32IMZBS-NEXT:    and s9, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 15
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 15
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, a2, 15
+; RV32IMZBS-NEXT:    and a1, a1, s0
+; RV32IMZBS-NEXT:    sw a1, 500(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 16
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 16
-; RV32IMZBS-NEXT:    and s9, a1, a4
+; RV32IMZBS-NEXT:    slli s1, a2, 16
+; RV32IMZBS-NEXT:    and a1, a1, s1
+; RV32IMZBS-NEXT:    sw a1, 504(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 17
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 17
-; RV32IMZBS-NEXT:    and s6, a1, a4
+; RV32IMZBS-NEXT:    slli a4, a2, 17
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 508(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 18
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 18
-; RV32IMZBS-NEXT:    and s10, a1, a4
+; RV32IMZBS-NEXT:    slli a4, a2, 18
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 19
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 19
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a2, 19
+; RV32IMZBS-NEXT:    and s3, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 20
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s1, a3, 20
-; RV32IMZBS-NEXT:    and a1, a1, s1
-; RV32IMZBS-NEXT:    sw a1, 492(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 21
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 21
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 496(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 22
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, a3, 22
+; RV32IMZBS-NEXT:    slli a4, a2, 20
 ; RV32IMZBS-NEXT:    and s0, a1, a4
-; RV32IMZBS-NEXT:    bexti a1, a0, 23
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a5, a3, 23
-; RV32IMZBS-NEXT:    and t6, a1, a5
-; RV32IMZBS-NEXT:    bexti a5, a0, 24
+; RV32IMZBS-NEXT:    bexti a4, a0, 21
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 21
+; RV32IMZBS-NEXT:    and s4, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 22
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 22
+; RV32IMZBS-NEXT:    and s6, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 23
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 23
+; RV32IMZBS-NEXT:    and s7, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 24
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 24
+; RV32IMZBS-NEXT:    and ra, a4, a5
+; RV32IMZBS-NEXT:    bexti a4, a0, 25
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli a5, a2, 25
+; RV32IMZBS-NEXT:    and t3, a4, a5
+; RV32IMZBS-NEXT:    bexti a5, a0, 26
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    slli a6, a2, 26
+; RV32IMZBS-NEXT:    and t4, a5, a6
+; RV32IMZBS-NEXT:    bexti a5, a0, 27
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    slli a6, a2, 27
+; RV32IMZBS-NEXT:    and t5, a5, a6
+; RV32IMZBS-NEXT:    bexti a5, a0, 28
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, a3, 24
-; RV32IMZBS-NEXT:    and s1, a5, a6
-; RV32IMZBS-NEXT:    bexti a6, a0, 25
+; RV32IMZBS-NEXT:    slli a6, a2, 28
+; RV32IMZBS-NEXT:    and s2, a5, a6
+; RV32IMZBS-NEXT:    bexti a6, a0, 29
 ; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    slli a7, a3, 25
-; RV32IMZBS-NEXT:    and s2, a6, a7
-; RV32IMZBS-NEXT:    bexti a7, a0, 26
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli t2, a3, 26
-; RV32IMZBS-NEXT:    and s3, a7, t2
-; RV32IMZBS-NEXT:    bexti t2, a0, 27
-; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    slli t3, a3, 27
-; RV32IMZBS-NEXT:    and s7, t2, t3
-; RV32IMZBS-NEXT:    bexti t3, a0, 28
-; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    slli t0, a3, 28
-; RV32IMZBS-NEXT:    and s4, t3, t0
-; RV32IMZBS-NEXT:    bexti t0, a0, 29
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    slli a2, a3, 29
-; RV32IMZBS-NEXT:    and t5, t0, a2
+; RV32IMZBS-NEXT:    slli t0, a2, 29
+; RV32IMZBS-NEXT:    and s1, a6, t0
 ; RV32IMZBS-NEXT:    andi t0, t1, 1
 ; RV32IMZBS-NEXT:    seqz t0, t0
 ; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    and t0, t0, a3
-; RV32IMZBS-NEXT:    slli a3, a3, 30
+; RV32IMZBS-NEXT:    and t0, t0, a2
+; RV32IMZBS-NEXT:    slli a2, a2, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and t4, a0, a3
-; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, a1, a0
+; RV32IMZBS-NEXT:    and t6, a0, a2
+; RV32IMZBS-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, a0, a3
 ; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a0, a1
 ; RV32IMZBS-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a0, a5
+; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a7, a0
+; RV32IMZBS-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a3, 584(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a0, a3
 ; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a4, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a0, a4
-; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a0, a5
-; RV32IMZBS-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, t0, a0
-; RV32IMZBS-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    lw a2, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw ra, 512(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, ra
-; RV32IMZBS-NEXT:    lw ra, 500(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s11, 488(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, ra, s11
-; RV32IMZBS-NEXT:    xor s6, s9, s6
-; RV32IMZBS-NEXT:    xor t6, s0, t6
-; RV32IMZBS-NEXT:    xor t4, t5, t4
-; RV32IMZBS-NEXT:    xor t1, t3, t1
-; RV32IMZBS-NEXT:    lw t3, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, t3
-; RV32IMZBS-NEXT:    lw t3, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t3
-; RV32IMZBS-NEXT:    lw t3, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, t2, t3
-; RV32IMZBS-NEXT:    lw t3, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t3
-; RV32IMZBS-NEXT:    lw t3, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t3
-; RV32IMZBS-NEXT:    lw t3, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, t3
+; RV32IMZBS-NEXT:    lw s11, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, s11
+; RV32IMZBS-NEXT:    xor s9, s10, s9
+; RV32IMZBS-NEXT:    xor s0, s3, s0
+; RV32IMZBS-NEXT:    xor t3, ra, t3
+; RV32IMZBS-NEXT:    xor t1, t2, t1
+; RV32IMZBS-NEXT:    lw t2, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t2
+; RV32IMZBS-NEXT:    lw t2, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t2
+; RV32IMZBS-NEXT:    lw t2, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t2
+; RV32IMZBS-NEXT:    lw t2, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
 ; RV32IMZBS-NEXT:    xor a0, t0, a0
-; RV32IMZBS-NEXT:    lw t0, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, t0
 ; RV32IMZBS-NEXT:    lw t0, 524(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, t0
-; RV32IMZBS-NEXT:    lw t0, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, ra, t0
-; RV32IMZBS-NEXT:    xor t3, s6, s10
-; RV32IMZBS-NEXT:    xor t5, t6, s1
-; RV32IMZBS-NEXT:    lw t6, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, t6
-; RV32IMZBS-NEXT:    xor a6, t1, a6
-; RV32IMZBS-NEXT:    lw t1, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t0, 500(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, s9, t0
+; RV32IMZBS-NEXT:    xor t2, s0, s4
+; RV32IMZBS-NEXT:    xor t3, t3, t4
+; RV32IMZBS-NEXT:    xor a5, t1, a5
+; RV32IMZBS-NEXT:    lw t1, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t1
+; RV32IMZBS-NEXT:    lw t1, 628(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a7, a7, t1
-; RV32IMZBS-NEXT:    lw t1, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t2, t1
-; RV32IMZBS-NEXT:    lw t2, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t2
-; RV32IMZBS-NEXT:    lw t2, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t2
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, t0, a2
-; RV32IMZBS-NEXT:    lw t0, 484(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t3, t0
-; RV32IMZBS-NEXT:    xor t2, t5, s2
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, t1, a7
-; RV32IMZBS-NEXT:    lw t1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 608(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, t1
-; RV32IMZBS-NEXT:    lw t1, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 580(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, t1
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 492(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, t0, a2
-; RV32IMZBS-NEXT:    xor t0, t2, s3
+; RV32IMZBS-NEXT:    xor t0, t2, s6
+; RV32IMZBS-NEXT:    xor t1, t3, t5
+; RV32IMZBS-NEXT:    lw t2, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t2
+; RV32IMZBS-NEXT:    lw t2, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t2
+; RV32IMZBS-NEXT:    lw t2, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t2
+; RV32IMZBS-NEXT:    lw t2, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    lw t2, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, t2
+; RV32IMZBS-NEXT:    lw t2, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t2
+; RV32IMZBS-NEXT:    lw t2, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t2
+; RV32IMZBS-NEXT:    xor t0, t0, s7
+; RV32IMZBS-NEXT:    xor t1, t1, s2
+; RV32IMZBS-NEXT:    lw t2, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    lw t2, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t2
+; RV32IMZBS-NEXT:    xor t1, t1, s1
+; RV32IMZBS-NEXT:    xor a6, a5, a6
 ; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a7
-; RV32IMZBS-NEXT:    lw a7, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a7
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    xor a2, t0, s7
+; RV32IMZBS-NEXT:    xor a1, a0, a1
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    xor a2, t1, t6
 ; RV32IMZBS-NEXT:    xor a3, a6, a3
-; RV32IMZBS-NEXT:    lw a6, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a6, 688(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a6
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a1, a2, s4
+; RV32IMZBS-NEXT:    xor a1, a1, t0
+; RV32IMZBS-NEXT:    lw a6, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a6
+; RV32IMZBS-NEXT:    lw t0, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a6, a3, t0
+; RV32IMZBS-NEXT:    srli a7, a3, 8
 ; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a3, a3, a5
-; RV32IMZBS-NEXT:    xor a0, a0, t4
-; RV32IMZBS-NEXT:    srli a1, a3, 8
-; RV32IMZBS-NEXT:    srli a2, a3, 24
-; RV32IMZBS-NEXT:    slli a4, a3, 24
-; RV32IMZBS-NEXT:    lw a5, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a3, a3, a5
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    or a1, a1, a2
-; RV32IMZBS-NEXT:    srli a2, a0, 8
-; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, a4, a3
-; RV32IMZBS-NEXT:    srli a4, a0, 24
-; RV32IMZBS-NEXT:    and a2, a2, a5
-; RV32IMZBS-NEXT:    or a2, a2, a4
-; RV32IMZBS-NEXT:    and a4, a0, a5
+; RV32IMZBS-NEXT:    and a4, a1, t0
+; RV32IMZBS-NEXT:    xor a2, a1, a2
+; RV32IMZBS-NEXT:    srli a1, a1, 8
+; RV32IMZBS-NEXT:    and a7, a7, t0
+; RV32IMZBS-NEXT:    and a1, a1, t0
+; RV32IMZBS-NEXT:    slli a5, a5, 24
+; RV32IMZBS-NEXT:    slli a6, a6, 8
+; RV32IMZBS-NEXT:    or a5, a5, a6
+; RV32IMZBS-NEXT:    srli a3, a3, 24
+; RV32IMZBS-NEXT:    or a3, a7, a3
 ; RV32IMZBS-NEXT:    slli a0, a0, 24
 ; RV32IMZBS-NEXT:    slli a4, a4, 8
 ; RV32IMZBS-NEXT:    or a0, a0, a4
-; RV32IMZBS-NEXT:    or a1, a3, a1
-; RV32IMZBS-NEXT:    or a0, a0, a2
-; RV32IMZBS-NEXT:    srli a2, a1, 4
+; RV32IMZBS-NEXT:    srli a2, a2, 24
+; RV32IMZBS-NEXT:    or a1, a1, a2
+; RV32IMZBS-NEXT:    or a3, a5, a3
+; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    srli a1, a3, 4
 ; RV32IMZBS-NEXT:    lw a4, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    and a2, a3, a4
 ; RV32IMZBS-NEXT:    srli a3, a0, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a4
-; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    and a1, a1, a4
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    slli a1, a1, 4
+; RV32IMZBS-NEXT:    slli a2, a2, 4
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    or a1, a2, a1
+; RV32IMZBS-NEXT:    or a1, a1, a2
 ; RV32IMZBS-NEXT:    or a0, a3, a0
 ; RV32IMZBS-NEXT:    srli a2, a1, 2
 ; RV32IMZBS-NEXT:    and a1, a1, s8
diff --git a/llvm/test/CodeGen/RISCV/clmulh.ll b/llvm/test/CodeGen/RISCV/clmulh.ll
index 154db64ec555b..d3b64bf1d0e20 100644
--- a/llvm/test/CodeGen/RISCV/clmulh.ll
+++ b/llvm/test/CodeGen/RISCV/clmulh.ll
@@ -772,351 +772,349 @@ define i16 @clmulh_i16(i16 %a, i16 %b) nounwind {
 define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32I-LABEL: clmulh_i32:
 ; RV32I:       # %bb.0:
-; RV32I-NEXT:    addi sp, sp, -112
-; RV32I-NEXT:    sw ra, 108(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s0, 104(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s1, 100(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s2, 96(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s3, 92(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s4, 88(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s5, 84(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s6, 80(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s7, 76(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s8, 72(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s9, 68(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s10, 64(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s11, 60(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    addi sp, sp, -96
+; RV32I-NEXT:    sw ra, 92(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s0, 88(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s1, 84(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s2, 80(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s3, 76(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s4, 72(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s5, 68(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s6, 64(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s7, 60(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s8, 56(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s9, 52(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s10, 48(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s11, 44(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli s0, a0, 8
-; RV32I-NEXT:    lui t5, 16
-; RV32I-NEXT:    srli s1, a0, 24
-; RV32I-NEXT:    slli s2, a0, 24
+; RV32I-NEXT:    lui a3, 16
+; RV32I-NEXT:    srli s2, a0, 24
+; RV32I-NEXT:    slli s3, a0, 24
 ; RV32I-NEXT:    lui a4, 61681
 ; RV32I-NEXT:    lui a5, 209715
-; RV32I-NEXT:    lui a2, 349525
+; RV32I-NEXT:    lui a6, 349525
 ; RV32I-NEXT:    srli s6, a1, 8
 ; RV32I-NEXT:    srli s4, a1, 24
 ; RV32I-NEXT:    slli s5, a1, 24
-; RV32I-NEXT:    li a7, 1
-; RV32I-NEXT:    lui ra, 1
-; RV32I-NEXT:    lui a3, 2
-; RV32I-NEXT:    lui t2, 4
+; RV32I-NEXT:    li s1, 1
+; RV32I-NEXT:    lui a2, 1
+; RV32I-NEXT:    lui s11, 2
+; RV32I-NEXT:    lui ra, 4
 ; RV32I-NEXT:    lui t0, 8
-; RV32I-NEXT:    lui t1, 32
-; RV32I-NEXT:    lui a6, 64
+; RV32I-NEXT:    lui t4, 32
+; RV32I-NEXT:    lui t5, 64
 ; RV32I-NEXT:    lui t6, 128
-; RV32I-NEXT:    addi t3, t5, -256
-; RV32I-NEXT:    addi t4, a4, -241
-; RV32I-NEXT:    addi s3, a5, 819
-; RV32I-NEXT:    addi s11, a2, 1365
-; RV32I-NEXT:    slli a2, a7, 11
-; RV32I-NEXT:    and a4, s0, t3
-; RV32I-NEXT:    and a0, a0, t3
-; RV32I-NEXT:    and a5, s6, t3
-; RV32I-NEXT:    and a1, a1, t3
-; RV32I-NEXT:    or a4, a4, s1
+; RV32I-NEXT:    addi t1, a3, -256
+; RV32I-NEXT:    addi t2, a4, -241
+; RV32I-NEXT:    addi t3, a5, 819
+; RV32I-NEXT:    addi a5, a6, 1365
+; RV32I-NEXT:    slli s1, s1, 11
+; RV32I-NEXT:    and a4, s0, t1
+; RV32I-NEXT:    and a0, a0, t1
+; RV32I-NEXT:    and s0, s6, t1
+; RV32I-NEXT:    and a1, a1, t1
+; RV32I-NEXT:    or a4, a4, s2
 ; RV32I-NEXT:    slli a0, a0, 8
-; RV32I-NEXT:    or a5, a5, s4
+; RV32I-NEXT:    or s0, s0, s4
 ; RV32I-NEXT:    slli a1, a1, 8
-; RV32I-NEXT:    or a0, s2, a0
+; RV32I-NEXT:    or a0, s3, a0
 ; RV32I-NEXT:    or a1, s5, a1
 ; RV32I-NEXT:    or a0, a0, a4
-; RV32I-NEXT:    or a1, a1, a5
+; RV32I-NEXT:    or a1, a1, s0
 ; RV32I-NEXT:    srli a4, a0, 4
-; RV32I-NEXT:    and a0, a0, t4
-; RV32I-NEXT:    srli a5, a1, 4
-; RV32I-NEXT:    and a1, a1, t4
-; RV32I-NEXT:    and a4, a4, t4
+; RV32I-NEXT:    and a0, a0, t2
+; RV32I-NEXT:    srli s0, a1, 4
+; RV32I-NEXT:    and a1, a1, t2
+; RV32I-NEXT:    and a4, a4, t2
 ; RV32I-NEXT:    slli a0, a0, 4
-; RV32I-NEXT:    and a5, a5, t4
+; RV32I-NEXT:    and s0, s0, t2
 ; RV32I-NEXT:    slli a1, a1, 4
 ; RV32I-NEXT:    or a0, a4, a0
-; RV32I-NEXT:    or a1, a5, a1
+; RV32I-NEXT:    or a1, s0, a1
 ; RV32I-NEXT:    srli a4, a0, 2
-; RV32I-NEXT:    and a0, a0, s3
-; RV32I-NEXT:    srli a5, a1, 2
-; RV32I-NEXT:    and a1, a1, s3
-; RV32I-NEXT:    and a4, a4, s3
+; RV32I-NEXT:    and a0, a0, t3
+; RV32I-NEXT:    srli s0, a1, 2
+; RV32I-NEXT:    and a1, a1, t3
+; RV32I-NEXT:    and a4, a4, t3
 ; RV32I-NEXT:    slli a0, a0, 2
-; RV32I-NEXT:    and a5, a5, s3
+; RV32I-NEXT:    and s0, s0, t3
 ; RV32I-NEXT:    slli a1, a1, 2
 ; RV32I-NEXT:    or a0, a4, a0
-; RV32I-NEXT:    or a1, a5, a1
+; RV32I-NEXT:    or a1, s0, a1
 ; RV32I-NEXT:    srli a4, a0, 1
-; RV32I-NEXT:    and a0, a0, s11
-; RV32I-NEXT:    srli a5, a1, 1
-; RV32I-NEXT:    and s0, a1, s11
-; RV32I-NEXT:    and a1, a4, s11
+; RV32I-NEXT:    sw a5, 40(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, a5
+; RV32I-NEXT:    srli s0, a1, 1
+; RV32I-NEXT:    and a1, a1, a5
+; RV32I-NEXT:    and a4, a4, a5
 ; RV32I-NEXT:    slli a0, a0, 1
-; RV32I-NEXT:    and a4, a5, s11
-; RV32I-NEXT:    slli s0, s0, 1
-; RV32I-NEXT:    or s4, a1, a0
-; RV32I-NEXT:    or a7, a4, s0
+; RV32I-NEXT:    and s2, s0, a5
+; RV32I-NEXT:    slli s0, a1, 1
+; RV32I-NEXT:    or a6, a4, a0
+; RV32I-NEXT:    or a7, s2, s0
 ; RV32I-NEXT:    srli s0, s0, 31
-; RV32I-NEXT:    slli a4, s4, 1
-; RV32I-NEXT:    andi a5, a7, 2
-; RV32I-NEXT:    slli s1, s4, 2
-; RV32I-NEXT:    andi s2, a7, 4
-; RV32I-NEXT:    slli a0, s4, 3
-; RV32I-NEXT:    andi s5, a7, 8
-; RV32I-NEXT:    slli s6, s4, 4
-; RV32I-NEXT:    andi s7, a7, 16
-; RV32I-NEXT:    slli s8, s4, 5
-; RV32I-NEXT:    andi s9, a7, 32
-; RV32I-NEXT:    slli s10, s4, 31
+; RV32I-NEXT:    slli a4, a6, 1
+; RV32I-NEXT:    andi s2, a7, 2
+; RV32I-NEXT:    slli a0, a6, 2
+; RV32I-NEXT:    andi s4, a7, 4
+; RV32I-NEXT:    slli s3, a6, 3
+; RV32I-NEXT:    andi s6, a7, 8
+; RV32I-NEXT:    slli s7, a6, 4
+; RV32I-NEXT:    andi s8, a7, 16
+; RV32I-NEXT:    slli s5, a6, 5
+; RV32I-NEXT:    andi s10, a7, 32
+; RV32I-NEXT:    slli s9, a6, 31
 ; RV32I-NEXT:    seqz s0, s0
 ; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and a1, s0, s10
-; RV32I-NEXT:    sw a1, 56(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s0, s4, 6
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    and a4, a5, a4
-; RV32I-NEXT:    sw a4, 52(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, s0, s9
+; RV32I-NEXT:    sw a1, 36(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s0, a6, 6
+; RV32I-NEXT:    seqz s2, s2
+; RV32I-NEXT:    addi s2, s2, -1
+; RV32I-NEXT:    and a1, s2, a4
+; RV32I-NEXT:    sw a1, 32(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a7, 64
-; RV32I-NEXT:    seqz a5, s2
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    and a5, a5, s1
-; RV32I-NEXT:    sw a5, 48(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a5, s4, 7
-; RV32I-NEXT:    seqz s1, s5
-; RV32I-NEXT:    addi s1, s1, -1
-; RV32I-NEXT:    and a0, s1, a0
-; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi s1, a7, 128
-; RV32I-NEXT:    seqz s2, s7
+; RV32I-NEXT:    seqz s2, s4
 ; RV32I-NEXT:    addi s2, s2, -1
-; RV32I-NEXT:    and a0, s2, s6
-; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s2, s4, 8
-; RV32I-NEXT:    seqz s6, s9
+; RV32I-NEXT:    and a0, s2, a0
+; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s2, a6, 7
+; RV32I-NEXT:    seqz s4, s6
+; RV32I-NEXT:    addi s4, s4, -1
+; RV32I-NEXT:    and a0, s4, s3
+; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi s4, a7, 128
+; RV32I-NEXT:    seqz s6, s8
 ; RV32I-NEXT:    addi s6, s6, -1
-; RV32I-NEXT:    and a0, s6, s8
-; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi s8, a7, 256
+; RV32I-NEXT:    and a0, s6, s7
+; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s3, a6, 8
+; RV32I-NEXT:    seqz s7, s10
+; RV32I-NEXT:    addi s7, s7, -1
+; RV32I-NEXT:    and a0, s7, s5
+; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, a7, 256
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    addi a4, a4, -1
 ; RV32I-NEXT:    and a4, a4, s0
-; RV32I-NEXT:    sw a4, 36(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a4, s4, 9
-; RV32I-NEXT:    seqz s0, s1
+; RV32I-NEXT:    sw a4, 12(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a4, a6, 9
+; RV32I-NEXT:    seqz s0, s4
 ; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and a5, s0, a5
-; RV32I-NEXT:    sw a5, 24(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a5, a7, 512
-; RV32I-NEXT:    seqz s0, s8
+; RV32I-NEXT:    and a1, s0, s2
+; RV32I-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi s0, a7, 512
+; RV32I-NEXT:    seqz s2, a0
+; RV32I-NEXT:    addi s2, s2, -1
+; RV32I-NEXT:    and a0, s2, s3
+; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s2, a6, 10
+; RV32I-NEXT:    seqz s0, s0
 ; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and a0, s0, s2
-; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s0, s4, 10
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    and a4, a5, a4
-; RV32I-NEXT:    sw a4, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s6, s0, a4
 ; RV32I-NEXT:    andi a4, a7, 1024
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    and a4, a4, s0
-; RV32I-NEXT:    sw a4, 28(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a4, s4, 11
-; RV32I-NEXT:    and a5, a7, a2
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    and a4, a5, a4
-; RV32I-NEXT:    sw a4, 12(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a4, s4, 12
-; RV32I-NEXT:    and a5, a7, ra
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    and ra, a5, a4
-; RV32I-NEXT:    slli a4, s4, 13
-; RV32I-NEXT:    and a2, a7, a3
+; RV32I-NEXT:    and s10, a4, s2
+; RV32I-NEXT:    slli a4, a6, 11
+; RV32I-NEXT:    and s1, a7, s1
+; RV32I-NEXT:    seqz s0, s1
+; RV32I-NEXT:    addi s0, s0, -1
+; RV32I-NEXT:    and s8, s0, a4
+; RV32I-NEXT:    slli a4, a6, 12
+; RV32I-NEXT:    and a2, a7, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    and s7, a2, a4
-; RV32I-NEXT:    slli a2, s4, 14
-; RV32I-NEXT:    and a4, a7, t2
+; RV32I-NEXT:    and a2, a2, a4
+; RV32I-NEXT:    sw a2, 0(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, a6, 13
+; RV32I-NEXT:    and a4, a7, s11
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    and s8, a4, a2
-; RV32I-NEXT:    slli a2, s4, 15
+; RV32I-NEXT:    and s2, a4, a2
+; RV32I-NEXT:    slli a2, a6, 14
+; RV32I-NEXT:    and a4, a7, ra
+; RV32I-NEXT:    seqz a4, a4
+; RV32I-NEXT:    addi a4, a4, -1
+; RV32I-NEXT:    and ra, a4, a2
+; RV32I-NEXT:    slli a2, a6, 15
 ; RV32I-NEXT:    and a4, a7, t0
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    and s6, a4, a2
-; RV32I-NEXT:    slli a2, s4, 16
-; RV32I-NEXT:    and a3, a7, t5
+; RV32I-NEXT:    and s0, a4, a2
+; RV32I-NEXT:    slli a2, a6, 16
+; RV32I-NEXT:    and a3, a7, a3
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and s2, a3, a2
-; RV32I-NEXT:    slli a2, s4, 17
-; RV32I-NEXT:    and a3, a7, t1
+; RV32I-NEXT:    and s1, a3, a2
+; RV32I-NEXT:    slli a2, a6, 17
+; RV32I-NEXT:    and a3, a7, t4
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and t5, a3, a2
-; RV32I-NEXT:    slli a2, s4, 18
-; RV32I-NEXT:    and a3, a7, a6
+; RV32I-NEXT:    and t4, a3, a2
+; RV32I-NEXT:    slli a2, a6, 18
+; RV32I-NEXT:    and a3, a7, t5
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and s0, a3, a2
-; RV32I-NEXT:    slli a2, s4, 19
+; RV32I-NEXT:    and s4, a3, a2
+; RV32I-NEXT:    slli a2, a6, 19
 ; RV32I-NEXT:    and a3, a7, t6
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    and s1, a3, a2
+; RV32I-NEXT:    and t5, a3, a2
 ; RV32I-NEXT:    lui a2, 256
 ; RV32I-NEXT:    and a2, a7, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, s4, 20
+; RV32I-NEXT:    slli a3, a6, 20
 ; RV32I-NEXT:    and t6, a2, a3
 ; RV32I-NEXT:    lui a2, 512
 ; RV32I-NEXT:    and a2, a7, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, s4, 21
-; RV32I-NEXT:    and s5, a2, a3
+; RV32I-NEXT:    slli a4, a6, 21
+; RV32I-NEXT:    and t0, a2, a4
 ; RV32I-NEXT:    lui a2, 1024
 ; RV32I-NEXT:    and a2, a7, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, s4, 22
-; RV32I-NEXT:    and t2, a2, a3
-; RV32I-NEXT:    lui a3, 2048
-; RV32I-NEXT:    and a3, a7, a3
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a4, s4, 23
-; RV32I-NEXT:    and t0, a3, a4
-; RV32I-NEXT:    lui a4, 4096
-; RV32I-NEXT:    and a4, a7, a4
-; RV32I-NEXT:    seqz a4, a4
-; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    slli a5, s4, 24
-; RV32I-NEXT:    and a4, a4, a5
-; RV32I-NEXT:    lui a5, 8192
-; RV32I-NEXT:    and a5, a7, a5
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, s4, 25
-; RV32I-NEXT:    and t1, a5, a6
-; RV32I-NEXT:    lui a5, 16384
-; RV32I-NEXT:    and a5, a7, a5
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, s4, 26
-; RV32I-NEXT:    and a3, a5, a6
-; RV32I-NEXT:    lui a5, 32768
-; RV32I-NEXT:    and a5, a7, a5
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, s4, 27
-; RV32I-NEXT:    and a6, a5, a6
-; RV32I-NEXT:    lui a5, 65536
-; RV32I-NEXT:    and a5, a7, a5
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a0, s4, 28
-; RV32I-NEXT:    and a5, a5, a0
-; RV32I-NEXT:    lui a0, 131072
+; RV32I-NEXT:    slli a3, a6, 22
+; RV32I-NEXT:    and a4, a2, a3
+; RV32I-NEXT:    lui a2, 2048
+; RV32I-NEXT:    and a2, a7, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a0, a6, 23
+; RV32I-NEXT:    and a3, a2, a0
+; RV32I-NEXT:    lui a0, 4096
 ; RV32I-NEXT:    and a0, a7, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, s4, 29
-; RV32I-NEXT:    and a2, a0, a1
-; RV32I-NEXT:    lui a1, 262144
-; RV32I-NEXT:    and a1, a7, a1
+; RV32I-NEXT:    slli s3, a6, 24
+; RV32I-NEXT:    and a2, a0, s3
+; RV32I-NEXT:    lui s3, 8192
+; RV32I-NEXT:    and s3, a7, s3
+; RV32I-NEXT:    seqz s3, s3
+; RV32I-NEXT:    addi s3, s3, -1
+; RV32I-NEXT:    slli s5, a6, 25
+; RV32I-NEXT:    and s3, s3, s5
+; RV32I-NEXT:    lui s5, 16384
+; RV32I-NEXT:    and s5, a7, s5
+; RV32I-NEXT:    seqz s5, s5
+; RV32I-NEXT:    addi s5, s5, -1
+; RV32I-NEXT:    slli s9, a6, 26
+; RV32I-NEXT:    and s5, s5, s9
+; RV32I-NEXT:    lui s9, 32768
+; RV32I-NEXT:    and s9, a7, s9
+; RV32I-NEXT:    seqz s9, s9
+; RV32I-NEXT:    addi s9, s9, -1
+; RV32I-NEXT:    slli s11, a6, 27
+; RV32I-NEXT:    and s9, s9, s11
+; RV32I-NEXT:    lui s11, 65536
+; RV32I-NEXT:    and s11, a7, s11
+; RV32I-NEXT:    seqz s11, s11
+; RV32I-NEXT:    addi s11, s11, -1
+; RV32I-NEXT:    slli a1, a6, 28
+; RV32I-NEXT:    and a1, s11, a1
+; RV32I-NEXT:    lui s11, 131072
+; RV32I-NEXT:    and s11, a7, s11
+; RV32I-NEXT:    seqz s11, s11
+; RV32I-NEXT:    addi s11, s11, -1
+; RV32I-NEXT:    slli a5, a6, 29
+; RV32I-NEXT:    and a5, s11, a5
+; RV32I-NEXT:    lui s11, 262144
+; RV32I-NEXT:    and s11, a7, s11
 ; RV32I-NEXT:    andi a7, a7, 1
 ; RV32I-NEXT:    seqz a7, a7
 ; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    and a7, a7, s4
-; RV32I-NEXT:    slli s4, s4, 30
-; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    and a1, a1, s4
-; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a7, a7, a6
+; RV32I-NEXT:    slli a6, a6, 30
+; RV32I-NEXT:    seqz s11, s11
+; RV32I-NEXT:    addi s11, s11, -1
+; RV32I-NEXT:    and a6, s11, a6
+; RV32I-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a7, a7, a0
-; RV32I-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s4, 44(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, a0, s4
-; RV32I-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s10
-; RV32I-NEXT:    lw s10, 24(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 16(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, s10, s9
-; RV32I-NEXT:    lw s9, 12(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, s9, ra
-; RV32I-NEXT:    xor t5, s2, t5
-; RV32I-NEXT:    xor t0, t2, t0
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, a7, s4
-; RV32I-NEXT:    lw a7, 36(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a7
-; RV32I-NEXT:    lw a7, 20(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, s10, a7
-; RV32I-NEXT:    xor t2, s9, s7
-; RV32I-NEXT:    xor t5, t5, s0
+; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s11, 20(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s11, a0, s11
+; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 8(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, s7
+; RV32I-NEXT:    lw s7, 4(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    xor s2, s2, ra
+; RV32I-NEXT:    xor t5, t5, t6
+; RV32I-NEXT:    xor a2, a2, s3
+; RV32I-NEXT:    xor a7, a7, s11
+; RV32I-NEXT:    lw t6, 12(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t6
+; RV32I-NEXT:    xor t6, s6, s10
+; RV32I-NEXT:    xor s0, s2, s0
+; RV32I-NEXT:    xor t0, t5, t0
+; RV32I-NEXT:    xor a2, a2, s5
+; RV32I-NEXT:    xor a0, a7, a0
+; RV32I-NEXT:    xor a7, t6, s8
+; RV32I-NEXT:    xor s0, s0, s1
 ; RV32I-NEXT:    xor a4, t0, a4
-; RV32I-NEXT:    lw t0, 56(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t0
-; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    lw a2, 28(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a7, a2
-; RV32I-NEXT:    xor a7, t2, s8
-; RV32I-NEXT:    xor t0, t5, s1
-; RV32I-NEXT:    xor a4, a4, t1
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    xor a2, a7, s6
-; RV32I-NEXT:    xor a7, t0, t6
+; RV32I-NEXT:    xor a2, a2, s9
+; RV32I-NEXT:    lw t0, 24(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t0
+; RV32I-NEXT:    lw t0, 0(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t0
+; RV32I-NEXT:    xor t0, s0, t4
 ; RV32I-NEXT:    xor a3, a4, a3
-; RV32I-NEXT:    lui a4, 349525
-; RV32I-NEXT:    addi a4, a4, 1364
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    xor a2, a7, s5
-; RV32I-NEXT:    xor a3, a3, a6
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    xor a3, a3, a5
-; RV32I-NEXT:    xor a0, a0, a3
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    srli a1, a0, 8
-; RV32I-NEXT:    srli a2, a0, 24
-; RV32I-NEXT:    slli a3, a0, 24
-; RV32I-NEXT:    and a0, a0, t3
-; RV32I-NEXT:    and a1, a1, t3
-; RV32I-NEXT:    slli a0, a0, 8
-; RV32I-NEXT:    or a1, a1, a2
-; RV32I-NEXT:    or a0, a3, a0
+; RV32I-NEXT:    xor a1, a2, a1
+; RV32I-NEXT:    lui a2, 349525
+; RV32I-NEXT:    addi a2, a2, 1364
+; RV32I-NEXT:    xor a4, a0, a7
+; RV32I-NEXT:    slli a0, a0, 24
+; RV32I-NEXT:    xor a7, t0, s4
+; RV32I-NEXT:    xor a1, a1, a5
+; RV32I-NEXT:    xor a4, a4, a7
+; RV32I-NEXT:    xor a1, a1, a6
+; RV32I-NEXT:    xor a3, a4, a3
+; RV32I-NEXT:    lw a4, 36(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a4
+; RV32I-NEXT:    and a4, a3, t1
+; RV32I-NEXT:    srli a5, a3, 8
+; RV32I-NEXT:    xor a1, a3, a1
+; RV32I-NEXT:    slli a4, a4, 8
+; RV32I-NEXT:    and a3, a5, t1
+; RV32I-NEXT:    srli a1, a1, 24
+; RV32I-NEXT:    or a0, a0, a4
+; RV32I-NEXT:    or a1, a3, a1
 ; RV32I-NEXT:    or a0, a0, a1
 ; RV32I-NEXT:    srli a1, a0, 4
-; RV32I-NEXT:    and a0, a0, t4
-; RV32I-NEXT:    and a1, a1, t4
+; RV32I-NEXT:    and a0, a0, t2
+; RV32I-NEXT:    and a1, a1, t2
 ; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a1, a0, 2
-; RV32I-NEXT:    and a0, a0, s3
-; RV32I-NEXT:    and a1, a1, s3
+; RV32I-NEXT:    and a0, a0, t3
+; RV32I-NEXT:    and a1, a1, t3
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a1, a0, 1
-; RV32I-NEXT:    and a0, a0, s11
-; RV32I-NEXT:    and a1, a1, a4
+; RV32I-NEXT:    lw a3, 40(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a0, a0, a3
+; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    slli a0, a0, 1
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a0, a0, 1
-; RV32I-NEXT:    lw ra, 108(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s0, 104(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s1, 100(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s2, 96(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s3, 92(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s4, 88(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s5, 84(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s6, 80(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s7, 76(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s8, 72(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 68(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s10, 64(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s11, 60(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    addi sp, sp, 112
+; RV32I-NEXT:    lw ra, 92(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s0, 88(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 84(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s2, 80(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s3, 76(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s4, 72(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s5, 68(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 64(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 60(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 56(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s9, 52(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 48(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s11, 44(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    addi sp, sp, 96
 ; RV32I-NEXT:    ret
 ;
 ; RV64I-LABEL: clmulh_i32:
@@ -1403,33 +1401,32 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    lui t2, 209715
 ; RV32IM-NEXT:    lui a3, 349525
 ; RV32IM-NEXT:    srli s0, a1, 8
-; RV32IM-NEXT:    srli t4, a1, 24
+; RV32IM-NEXT:    srli t5, a1, 24
 ; RV32IM-NEXT:    slli t6, a1, 24
-; RV32IM-NEXT:    li s11, 1
-; RV32IM-NEXT:    lui s6, 1
-; RV32IM-NEXT:    lui t5, 4
+; RV32IM-NEXT:    lui t4, 1
+; RV32IM-NEXT:    lui s6, 2
+; RV32IM-NEXT:    lui s7, 4
 ; RV32IM-NEXT:    lui a5, 8
 ; RV32IM-NEXT:    lui s2, 32
-; RV32IM-NEXT:    lui s7, 64
-; RV32IM-NEXT:    lui s8, 128
-; RV32IM-NEXT:    lui s3, 256
-; RV32IM-NEXT:    lui s4, 512
-; RV32IM-NEXT:    lui s5, 1024
-; RV32IM-NEXT:    lui s9, 4096
-; RV32IM-NEXT:    lui s10, 8192
+; RV32IM-NEXT:    lui s3, 64
+; RV32IM-NEXT:    lui s4, 128
+; RV32IM-NEXT:    lui s5, 256
+; RV32IM-NEXT:    lui s8, 512
+; RV32IM-NEXT:    lui s9, 1024
+; RV32IM-NEXT:    lui s10, 4096
+; RV32IM-NEXT:    lui s11, 8192
 ; RV32IM-NEXT:    addi a7, a6, -256
 ; RV32IM-NEXT:    lui t3, 16
 ; RV32IM-NEXT:    addi a6, a4, -241
 ; RV32IM-NEXT:    addi t2, t2, 819
 ; RV32IM-NEXT:    addi a3, a3, 1365
-; RV32IM-NEXT:    slli s11, s11, 11
 ; RV32IM-NEXT:    and t0, t0, a7
 ; RV32IM-NEXT:    and a0, a0, a7
 ; RV32IM-NEXT:    and s0, s0, a7
 ; RV32IM-NEXT:    and a1, a1, a7
 ; RV32IM-NEXT:    or t0, t0, t1
 ; RV32IM-NEXT:    slli a0, a0, 8
-; RV32IM-NEXT:    or t1, s0, t4
+; RV32IM-NEXT:    or t1, s0, t5
 ; RV32IM-NEXT:    slli a1, a1, 8
 ; RV32IM-NEXT:    or a0, a2, a0
 ; RV32IM-NEXT:    or a1, t6, a1
@@ -1466,77 +1463,78 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    slli a1, a1, 1
 ; RV32IM-NEXT:    or a0, t0, a0
 ; RV32IM-NEXT:    or s1, t1, a1
-; RV32IM-NEXT:    slli t4, a0, 1
+; RV32IM-NEXT:    slli t5, a0, 1
 ; RV32IM-NEXT:    andi t6, s1, 2
 ; RV32IM-NEXT:    slli s0, a0, 2
 ; RV32IM-NEXT:    andi ra, s1, 4
 ; RV32IM-NEXT:    slli a3, a0, 3
 ; RV32IM-NEXT:    andi a2, s1, 8
 ; RV32IM-NEXT:    slli a4, a0, 4
-; RV32IM-NEXT:    and t0, s1, s11
-; RV32IM-NEXT:    and t1, s1, s6
+; RV32IM-NEXT:    and t0, s1, s6
+; RV32IM-NEXT:    and t1, s1, s7
 ; RV32IM-NEXT:    mul t0, a0, t0
 ; RV32IM-NEXT:    mul t1, a0, t1
 ; RV32IM-NEXT:    xor a1, t0, t1
 ; RV32IM-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi s6, s1, 16
-; RV32IM-NEXT:    and t0, s1, s7
-; RV32IM-NEXT:    and t1, s1, s8
+; RV32IM-NEXT:    and t0, s1, s8
+; RV32IM-NEXT:    and t1, s1, s9
 ; RV32IM-NEXT:    mul t0, a0, t0
 ; RV32IM-NEXT:    mul t1, a0, t1
 ; RV32IM-NEXT:    xor a1, t0, t1
 ; RV32IM-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli s7, a0, 5
-; RV32IM-NEXT:    and t0, s1, s9
-; RV32IM-NEXT:    and s8, s1, s10
+; RV32IM-NEXT:    slli s8, a0, 5
+; RV32IM-NEXT:    and t0, s1, s10
+; RV32IM-NEXT:    and s7, s1, s11
 ; RV32IM-NEXT:    mul t0, a0, t0
-; RV32IM-NEXT:    mul s8, a0, s8
-; RV32IM-NEXT:    xor a1, t0, s8
+; RV32IM-NEXT:    mul s7, a0, s7
+; RV32IM-NEXT:    xor a1, t0, s7
 ; RV32IM-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi s8, s1, 32
+; RV32IM-NEXT:    andi s9, s1, 32
 ; RV32IM-NEXT:    seqz t6, t6
 ; RV32IM-NEXT:    addi t6, t6, -1
-; RV32IM-NEXT:    and a1, t6, t4
+; RV32IM-NEXT:    and a1, t6, t5
 ; RV32IM-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli s9, a0, 6
+; RV32IM-NEXT:    slli s10, a0, 6
 ; RV32IM-NEXT:    seqz t6, ra
 ; RV32IM-NEXT:    addi t6, t6, -1
 ; RV32IM-NEXT:    and a1, t6, s0
 ; RV32IM-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi s10, s1, 64
+; RV32IM-NEXT:    andi s11, s1, 64
 ; RV32IM-NEXT:    seqz a2, a2
 ; RV32IM-NEXT:    addi a2, a2, -1
 ; RV32IM-NEXT:    and s0, a2, a3
 ; RV32IM-NEXT:    slli a2, a0, 7
 ; RV32IM-NEXT:    seqz a3, s6
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s6, a3, a4
+; RV32IM-NEXT:    and s7, a3, a4
 ; RV32IM-NEXT:    andi a3, s1, 128
-; RV32IM-NEXT:    seqz a4, s8
+; RV32IM-NEXT:    seqz a4, s9
 ; RV32IM-NEXT:    addi a4, a4, -1
-; RV32IM-NEXT:    and s8, a4, s7
+; RV32IM-NEXT:    and s9, a4, s8
 ; RV32IM-NEXT:    slli a4, a0, 8
-; RV32IM-NEXT:    seqz s7, s10
-; RV32IM-NEXT:    addi s7, s7, -1
-; RV32IM-NEXT:    and s7, s7, s9
+; RV32IM-NEXT:    seqz s6, s11
+; RV32IM-NEXT:    addi s6, s6, -1
+; RV32IM-NEXT:    and s8, s6, s10
 ; RV32IM-NEXT:    andi s10, s1, 256
 ; RV32IM-NEXT:    seqz a3, a3
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s9, a3, a2
+; RV32IM-NEXT:    and s6, a3, a2
 ; RV32IM-NEXT:    slli a2, a0, 9
 ; RV32IM-NEXT:    seqz a3, s10
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s11, a3, a4
+; RV32IM-NEXT:    and s10, a3, a4
 ; RV32IM-NEXT:    andi a3, s1, 512
 ; RV32IM-NEXT:    seqz a3, a3
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s10, a3, a2
+; RV32IM-NEXT:    and s11, a3, a2
 ; RV32IM-NEXT:    lui a2, 2048
-; RV32IM-NEXT:    lui a3, 2
+; RV32IM-NEXT:    li a3, 1
+; RV32IM-NEXT:    slli a3, a3, 11
 ; RV32IM-NEXT:    and a3, s1, a3
-; RV32IM-NEXT:    and a4, s1, t5
+; RV32IM-NEXT:    and a4, s1, t4
 ; RV32IM-NEXT:    and a5, s1, a5
-; RV32IM-NEXT:    and t5, s1, t3
+; RV32IM-NEXT:    and t4, s1, t3
 ; RV32IM-NEXT:    and s2, s1, s2
 ; RV32IM-NEXT:    and s3, s1, s3
 ; RV32IM-NEXT:    and s4, s1, s4
@@ -1550,8 +1548,8 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    and t1, s1, t1
 ; RV32IM-NEXT:    lui t0, 131072
 ; RV32IM-NEXT:    and t0, s1, t0
-; RV32IM-NEXT:    lui t4, 262144
-; RV32IM-NEXT:    and t4, s1, t4
+; RV32IM-NEXT:    lui t5, 262144
+; RV32IM-NEXT:    and t5, s1, t5
 ; RV32IM-NEXT:    lui t6, 524288
 ; RV32IM-NEXT:    and t6, s1, t6
 ; RV32IM-NEXT:    andi a1, s1, 1
@@ -1559,7 +1557,7 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    mul a3, a0, a3
 ; RV32IM-NEXT:    mul a4, a0, a4
 ; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    mul t5, a0, t5
+; RV32IM-NEXT:    mul t4, a0, t4
 ; RV32IM-NEXT:    mul s2, a0, s2
 ; RV32IM-NEXT:    mul s3, a0, s3
 ; RV32IM-NEXT:    mul s4, a0, s4
@@ -1569,7 +1567,7 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    mul t3, a0, t3
 ; RV32IM-NEXT:    mul t1, a0, t1
 ; RV32IM-NEXT:    mul t0, a0, t0
-; RV32IM-NEXT:    mul t4, a0, t4
+; RV32IM-NEXT:    mul t5, a0, t5
 ; RV32IM-NEXT:    mul t6, a0, t6
 ; RV32IM-NEXT:    addi a1, a1, -1
 ; RV32IM-NEXT:    and a1, a1, a0
@@ -1579,63 +1577,63 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    addi s1, s1, -1
 ; RV32IM-NEXT:    and a0, s1, a0
 ; RV32IM-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, s1, a3
+; RV32IM-NEXT:    xor a5, s1, a5
 ; RV32IM-NEXT:    lw s1, 16(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, s3
-; RV32IM-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, s3, ra
+; RV32IM-NEXT:    xor a2, s1, a2
+; RV32IM-NEXT:    lw s1, 12(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, ra
 ; RV32IM-NEXT:    lw ra, 8(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, ra
 ; RV32IM-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, ra, s0
-; RV32IM-NEXT:    xor s6, s6, s8
-; RV32IM-NEXT:    xor s8, s9, s11
-; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a4, s1, s4
-; RV32IM-NEXT:    xor t3, s3, t3
+; RV32IM-NEXT:    xor s7, s7, s9
+; RV32IM-NEXT:    xor s9, s10, s11
+; RV32IM-NEXT:    xor a5, a5, t4
+; RV32IM-NEXT:    xor t3, s1, t3
 ; RV32IM-NEXT:    xor a1, a1, s0
-; RV32IM-NEXT:    xor s0, s6, s7
-; RV32IM-NEXT:    xor s1, s8, s10
-; RV32IM-NEXT:    xor a3, a3, a5
-; RV32IM-NEXT:    xor a4, a4, s5
-; RV32IM-NEXT:    xor a5, t3, t1
-; RV32IM-NEXT:    xor a1, a1, s0
-; RV32IM-NEXT:    xor a0, s1, a0
-; RV32IM-NEXT:    xor a3, a3, t5
-; RV32IM-NEXT:    xor a2, a4, a2
-; RV32IM-NEXT:    xor a4, a5, t0
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    lui a1, 349525
-; RV32IM-NEXT:    addi a1, a1, 1364
-; RV32IM-NEXT:    xor a3, a3, s2
-; RV32IM-NEXT:    xor a4, a4, t4
-; RV32IM-NEXT:    slli a5, a0, 24
+; RV32IM-NEXT:    xor t4, s7, s8
+; RV32IM-NEXT:    xor a0, s9, a0
+; RV32IM-NEXT:    xor a5, a5, s2
+; RV32IM-NEXT:    xor t1, t3, t1
+; RV32IM-NEXT:    xor a1, a1, t4
 ; RV32IM-NEXT:    xor a0, a0, a3
-; RV32IM-NEXT:    xor a3, a4, t6
+; RV32IM-NEXT:    xor a3, a5, s3
+; RV32IM-NEXT:    xor a5, t1, t0
+; RV32IM-NEXT:    xor a1, a1, s6
+; RV32IM-NEXT:    xor a0, a0, a4
+; RV32IM-NEXT:    xor a3, a3, s4
+; RV32IM-NEXT:    lui a4, 349525
+; RV32IM-NEXT:    addi a4, a4, 1364
+; RV32IM-NEXT:    xor a5, a5, t5
+; RV32IM-NEXT:    slli t0, a1, 24
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    xor a1, a3, s5
+; RV32IM-NEXT:    xor a3, a5, t6
+; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    xor a0, a0, a2
-; RV32IM-NEXT:    and a2, a0, a7
-; RV32IM-NEXT:    srli a4, a0, 8
+; RV32IM-NEXT:    and a1, a0, a7
+; RV32IM-NEXT:    srli a2, a0, 8
 ; RV32IM-NEXT:    xor a0, a0, a3
-; RV32IM-NEXT:    slli a2, a2, 8
-; RV32IM-NEXT:    and a3, a4, a7
+; RV32IM-NEXT:    slli a1, a1, 8
+; RV32IM-NEXT:    and a2, a2, a7
 ; RV32IM-NEXT:    srli a0, a0, 24
-; RV32IM-NEXT:    or a2, a5, a2
-; RV32IM-NEXT:    or a0, a3, a0
+; RV32IM-NEXT:    or a1, t0, a1
 ; RV32IM-NEXT:    or a0, a2, a0
-; RV32IM-NEXT:    srli a2, a0, 4
+; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    srli a1, a0, 4
 ; RV32IM-NEXT:    and a0, a0, a6
-; RV32IM-NEXT:    and a2, a2, a6
+; RV32IM-NEXT:    and a1, a1, a6
 ; RV32IM-NEXT:    slli a0, a0, 4
-; RV32IM-NEXT:    or a0, a2, a0
-; RV32IM-NEXT:    srli a2, a0, 2
+; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    srli a1, a0, 2
 ; RV32IM-NEXT:    and a0, a0, t2
-; RV32IM-NEXT:    and a2, a2, t2
+; RV32IM-NEXT:    and a1, a1, t2
 ; RV32IM-NEXT:    slli a0, a0, 2
-; RV32IM-NEXT:    or a0, a2, a0
-; RV32IM-NEXT:    srli a2, a0, 1
-; RV32IM-NEXT:    lw a3, 24(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a0, a0, a3
-; RV32IM-NEXT:    and a1, a2, a1
+; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    srli a1, a0, 1
+; RV32IM-NEXT:    lw a2, 24(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    and a1, a1, a4
 ; RV32IM-NEXT:    slli a0, a0, 1
 ; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    srli a0, a0, 1
@@ -1833,261 +1831,261 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IMZBS-NEXT:    sw s9, 52(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s10, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s11, 44(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    srli a2, a0, 8
-; RV32IMZBS-NEXT:    lui a3, 16
-; RV32IMZBS-NEXT:    srli a4, a0, 24
-; RV32IMZBS-NEXT:    slli a5, a0, 24
-; RV32IMZBS-NEXT:    lui a7, 61681
-; RV32IMZBS-NEXT:    lui t0, 209715
-; RV32IMZBS-NEXT:    lui a6, 349525
-; RV32IMZBS-NEXT:    srli t1, a1, 8
-; RV32IMZBS-NEXT:    srli t2, a1, 24
-; RV32IMZBS-NEXT:    slli t3, a1, 24
-; RV32IMZBS-NEXT:    addi t5, a3, -256
-; RV32IMZBS-NEXT:    sw t5, 40(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    addi t4, a7, -241
-; RV32IMZBS-NEXT:    sw t4, 36(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    addi a7, t0, 819
-; RV32IMZBS-NEXT:    addi a6, a6, 1365
-; RV32IMZBS-NEXT:    and a2, a2, t5
-; RV32IMZBS-NEXT:    and a0, a0, t5
-; RV32IMZBS-NEXT:    and a3, t1, t5
-; RV32IMZBS-NEXT:    and a1, a1, t5
-; RV32IMZBS-NEXT:    or a2, a2, a4
+; RV32IMZBS-NEXT:    srli a7, a0, 8
+; RV32IMZBS-NEXT:    lui a2, 16
+; RV32IMZBS-NEXT:    srli t0, a0, 24
+; RV32IMZBS-NEXT:    slli t1, a0, 24
+; RV32IMZBS-NEXT:    lui a3, 61681
+; RV32IMZBS-NEXT:    lui t2, 209715
+; RV32IMZBS-NEXT:    lui a5, 349525
+; RV32IMZBS-NEXT:    srli t3, a1, 8
+; RV32IMZBS-NEXT:    srli t4, a1, 24
+; RV32IMZBS-NEXT:    slli t5, a1, 24
+; RV32IMZBS-NEXT:    addi a6, a2, -256
+; RV32IMZBS-NEXT:    sw a6, 40(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a4, a3, -241
+; RV32IMZBS-NEXT:    sw a4, 36(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a2, t2, 819
+; RV32IMZBS-NEXT:    addi a3, a5, 1365
+; RV32IMZBS-NEXT:    and a7, a7, a6
+; RV32IMZBS-NEXT:    and a0, a0, a6
+; RV32IMZBS-NEXT:    and t2, t3, a6
+; RV32IMZBS-NEXT:    and a1, a1, a6
+; RV32IMZBS-NEXT:    or a7, a7, t0
 ; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    or a3, a3, t2
+; RV32IMZBS-NEXT:    or t0, t2, t4
 ; RV32IMZBS-NEXT:    slli a1, a1, 8
-; RV32IMZBS-NEXT:    or a0, a5, a0
-; RV32IMZBS-NEXT:    or a1, t3, a1
-; RV32IMZBS-NEXT:    or a0, a0, a2
-; RV32IMZBS-NEXT:    or a1, a1, a3
-; RV32IMZBS-NEXT:    srli a2, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, t4
-; RV32IMZBS-NEXT:    srli a3, a1, 4
-; RV32IMZBS-NEXT:    and a1, a1, t4
-; RV32IMZBS-NEXT:    and a2, a2, t4
+; RV32IMZBS-NEXT:    or a0, t1, a0
+; RV32IMZBS-NEXT:    or a1, t5, a1
+; RV32IMZBS-NEXT:    or a0, a0, a7
+; RV32IMZBS-NEXT:    or a1, a1, t0
+; RV32IMZBS-NEXT:    srli a7, a0, 4
+; RV32IMZBS-NEXT:    and a0, a0, a4
+; RV32IMZBS-NEXT:    srli t0, a1, 4
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    and a7, a7, a4
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    and a3, a3, t4
+; RV32IMZBS-NEXT:    and t0, t0, a4
 ; RV32IMZBS-NEXT:    slli a1, a1, 4
-; RV32IMZBS-NEXT:    or a0, a2, a0
-; RV32IMZBS-NEXT:    or a1, a3, a1
-; RV32IMZBS-NEXT:    srli a2, a0, 2
-; RV32IMZBS-NEXT:    sw a7, 32(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a0, a7
-; RV32IMZBS-NEXT:    srli a3, a1, 2
-; RV32IMZBS-NEXT:    and a1, a1, a7
-; RV32IMZBS-NEXT:    and a2, a2, a7
+; RV32IMZBS-NEXT:    or a0, a7, a0
+; RV32IMZBS-NEXT:    or a1, t0, a1
+; RV32IMZBS-NEXT:    srli a7, a0, 2
+; RV32IMZBS-NEXT:    sw a2, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a0, a2
+; RV32IMZBS-NEXT:    srli t0, a1, 2
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    and a7, a7, a2
 ; RV32IMZBS-NEXT:    slli a0, a0, 2
-; RV32IMZBS-NEXT:    and a3, a3, a7
+; RV32IMZBS-NEXT:    and t0, t0, a2
 ; RV32IMZBS-NEXT:    slli a1, a1, 2
-; RV32IMZBS-NEXT:    or a0, a2, a0
-; RV32IMZBS-NEXT:    or a1, a3, a1
-; RV32IMZBS-NEXT:    srli a2, a0, 1
-; RV32IMZBS-NEXT:    sw a6, 28(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a0, a6
-; RV32IMZBS-NEXT:    srli a3, a1, 1
-; RV32IMZBS-NEXT:    and a1, a1, a6
-; RV32IMZBS-NEXT:    and a4, a2, a6
+; RV32IMZBS-NEXT:    or a0, a7, a0
+; RV32IMZBS-NEXT:    or a1, t0, a1
+; RV32IMZBS-NEXT:    srli a7, a0, 1
+; RV32IMZBS-NEXT:    sw a3, 28(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a0, a3
+; RV32IMZBS-NEXT:    srli t0, a1, 1
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    and t1, a7, a3
 ; RV32IMZBS-NEXT:    slli a0, a0, 1
-; RV32IMZBS-NEXT:    and a3, a3, a6
-; RV32IMZBS-NEXT:    slli a2, a1, 1
-; RV32IMZBS-NEXT:    or s2, a4, a0
-; RV32IMZBS-NEXT:    or a1, a3, a2
-; RV32IMZBS-NEXT:    srli a2, a2, 31
-; RV32IMZBS-NEXT:    slli a3, s2, 1
-; RV32IMZBS-NEXT:    andi a4, a1, 2
-; RV32IMZBS-NEXT:    slli a5, s2, 2
-; RV32IMZBS-NEXT:    andi t1, a1, 4
-; RV32IMZBS-NEXT:    slli a0, s2, 3
-; RV32IMZBS-NEXT:    andi t4, a1, 8
-; RV32IMZBS-NEXT:    slli t5, s2, 4
-; RV32IMZBS-NEXT:    andi t6, a1, 16
-; RV32IMZBS-NEXT:    slli s0, s2, 5
-; RV32IMZBS-NEXT:    andi s1, a1, 32
-; RV32IMZBS-NEXT:    slli a7, s2, 6
-; RV32IMZBS-NEXT:    andi s3, a1, 64
-; RV32IMZBS-NEXT:    slli s4, s2, 7
-; RV32IMZBS-NEXT:    andi s5, a1, 128
-; RV32IMZBS-NEXT:    slli s6, s2, 8
-; RV32IMZBS-NEXT:    andi s7, a1, 256
-; RV32IMZBS-NEXT:    slli s8, s2, 9
-; RV32IMZBS-NEXT:    andi s9, a1, 512
-; RV32IMZBS-NEXT:    slli s10, s2, 10
-; RV32IMZBS-NEXT:    slli t3, s2, 31
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, t3
-; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a6, a1, 1024
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a3, a4, a3
-; RV32IMZBS-NEXT:    sw a3, 20(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, s2, 11
-; RV32IMZBS-NEXT:    seqz a4, t1
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 16(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not t3, a1
-; RV32IMZBS-NEXT:    seqz a4, t4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a0, a4, a0
-; RV32IMZBS-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s2, 12
-; RV32IMZBS-NEXT:    seqz a5, t6
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a0, a5, t5
+; RV32IMZBS-NEXT:    and a2, t0, a3
+; RV32IMZBS-NEXT:    slli a7, a1, 1
+; RV32IMZBS-NEXT:    or s7, t1, a0
+; RV32IMZBS-NEXT:    or a1, a2, a7
+; RV32IMZBS-NEXT:    srli a7, a7, 31
+; RV32IMZBS-NEXT:    slli a0, s7, 1
+; RV32IMZBS-NEXT:    andi t1, a1, 2
+; RV32IMZBS-NEXT:    slli t2, s7, 2
+; RV32IMZBS-NEXT:    andi t3, a1, 4
+; RV32IMZBS-NEXT:    slli a2, s7, 3
+; RV32IMZBS-NEXT:    andi t6, a1, 8
+; RV32IMZBS-NEXT:    slli a5, s7, 4
+; RV32IMZBS-NEXT:    andi s1, a1, 16
+; RV32IMZBS-NEXT:    slli s2, s7, 5
+; RV32IMZBS-NEXT:    andi s3, a1, 32
+; RV32IMZBS-NEXT:    slli s4, s7, 6
+; RV32IMZBS-NEXT:    andi s5, a1, 64
+; RV32IMZBS-NEXT:    slli t0, s7, 7
+; RV32IMZBS-NEXT:    andi a6, a1, 128
+; RV32IMZBS-NEXT:    slli s8, s7, 8
+; RV32IMZBS-NEXT:    andi s9, a1, 256
+; RV32IMZBS-NEXT:    slli s10, s7, 9
+; RV32IMZBS-NEXT:    andi s11, a1, 512
+; RV32IMZBS-NEXT:    slli ra, s7, 10
+; RV32IMZBS-NEXT:    slli t4, s7, 31
+; RV32IMZBS-NEXT:    seqz a7, a7
+; RV32IMZBS-NEXT:    addi a7, a7, -1
+; RV32IMZBS-NEXT:    and a3, a7, t4
+; RV32IMZBS-NEXT:    sw a3, 24(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a3, a1, 1024
+; RV32IMZBS-NEXT:    seqz t1, t1
+; RV32IMZBS-NEXT:    addi t1, t1, -1
+; RV32IMZBS-NEXT:    and a0, t1, a0
+; RV32IMZBS-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s7, 11
+; RV32IMZBS-NEXT:    seqz t1, t3
+; RV32IMZBS-NEXT:    addi t1, t1, -1
+; RV32IMZBS-NEXT:    and a0, t1, t2
+; RV32IMZBS-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not t4, a1
+; RV32IMZBS-NEXT:    seqz t2, t6
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and a0, t2, a2
 ; RV32IMZBS-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s2, 13
-; RV32IMZBS-NEXT:    seqz t5, s1
-; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    and t6, t5, s0
-; RV32IMZBS-NEXT:    slli s11, s2, 14
-; RV32IMZBS-NEXT:    seqz t5, s3
-; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    and a0, t5, a7
-; RV32IMZBS-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli ra, s2, 15
-; RV32IMZBS-NEXT:    seqz s0, s5
-; RV32IMZBS-NEXT:    addi s0, s0, -1
-; RV32IMZBS-NEXT:    and s1, s0, s4
-; RV32IMZBS-NEXT:    slli s4, s2, 16
-; RV32IMZBS-NEXT:    seqz s0, s7
-; RV32IMZBS-NEXT:    addi s0, s0, -1
-; RV32IMZBS-NEXT:    and s3, s0, s6
-; RV32IMZBS-NEXT:    slli a2, s2, 17
-; RV32IMZBS-NEXT:    seqz s0, s9
-; RV32IMZBS-NEXT:    addi s0, s0, -1
-; RV32IMZBS-NEXT:    and t4, s0, s8
-; RV32IMZBS-NEXT:    slli s0, s2, 18
-; RV32IMZBS-NEXT:    seqz a6, a6
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and t5, a6, s10
-; RV32IMZBS-NEXT:    bexti s5, t3, 11
+; RV32IMZBS-NEXT:    slli a0, s7, 12
+; RV32IMZBS-NEXT:    seqz t2, s1
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and a2, t2, a5
+; RV32IMZBS-NEXT:    sw a2, 4(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s1, s7, 13
+; RV32IMZBS-NEXT:    seqz t2, s3
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and t3, t2, s2
+; RV32IMZBS-NEXT:    slli s3, s7, 14
+; RV32IMZBS-NEXT:    seqz t2, s5
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and t6, t2, s4
+; RV32IMZBS-NEXT:    slli s4, s7, 15
+; RV32IMZBS-NEXT:    seqz t2, a6
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and a2, t2, t0
+; RV32IMZBS-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, s7, 16
+; RV32IMZBS-NEXT:    seqz s2, s9
+; RV32IMZBS-NEXT:    addi s2, s2, -1
+; RV32IMZBS-NEXT:    and s2, s2, s8
+; RV32IMZBS-NEXT:    slli a5, s7, 17
+; RV32IMZBS-NEXT:    seqz s5, s11
 ; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    and s8, s5, a3
-; RV32IMZBS-NEXT:    bexti a3, t3, 12
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s9, a3, a4
-; RV32IMZBS-NEXT:    bexti a3, t3, 13
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s7, a3, a5
-; RV32IMZBS-NEXT:    bexti a3, t3, 14
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s6, a3, s11
-; RV32IMZBS-NEXT:    bexti a3, t3, 15
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s5, a3, ra
-; RV32IMZBS-NEXT:    bexti a3, t3, 16
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and t0, a3, s4
-; RV32IMZBS-NEXT:    bexti a3, t3, 17
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and a6, a3, a2
-; RV32IMZBS-NEXT:    bexti a3, t3, 18
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and ra, a3, s0
-; RV32IMZBS-NEXT:    bexti a3, t3, 19
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 19
-; RV32IMZBS-NEXT:    and s10, a3, a5
-; RV32IMZBS-NEXT:    bexti a3, t3, 20
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 20
-; RV32IMZBS-NEXT:    and s11, a3, a5
-; RV32IMZBS-NEXT:    bexti a3, t3, 21
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 21
-; RV32IMZBS-NEXT:    and s4, a3, a5
-; RV32IMZBS-NEXT:    bexti a3, t3, 22
+; RV32IMZBS-NEXT:    and s5, s5, s10
+; RV32IMZBS-NEXT:    slli s8, s7, 18
+; RV32IMZBS-NEXT:    seqz a3, a3
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 22
-; RV32IMZBS-NEXT:    and s0, a3, a5
-; RV32IMZBS-NEXT:    bexti a3, t3, 23
+; RV32IMZBS-NEXT:    and ra, a3, ra
+; RV32IMZBS-NEXT:    bexti a3, t4, 11
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 23
-; RV32IMZBS-NEXT:    and a3, a3, a5
-; RV32IMZBS-NEXT:    bexti a4, t3, 24
+; RV32IMZBS-NEXT:    and t1, a3, a4
+; RV32IMZBS-NEXT:    bexti a4, t4, 12
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s2, 24
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    bexti a5, t3, 25
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a7, s2, 25
-; RV32IMZBS-NEXT:    and a2, a5, a7
-; RV32IMZBS-NEXT:    bexti a5, t3, 26
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a7, s2, 26
-; RV32IMZBS-NEXT:    and a5, a5, a7
-; RV32IMZBS-NEXT:    bexti a7, t3, 27
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli t1, s2, 27
-; RV32IMZBS-NEXT:    and t1, a7, t1
-; RV32IMZBS-NEXT:    bexti a7, t3, 28
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli a0, s2, 28
-; RV32IMZBS-NEXT:    and a7, a7, a0
-; RV32IMZBS-NEXT:    bexti a0, t3, 29
-; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli t2, s2, 29
-; RV32IMZBS-NEXT:    and a0, a0, t2
+; RV32IMZBS-NEXT:    and t2, a4, a0
+; RV32IMZBS-NEXT:    bexti a4, t4, 13
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and s9, a4, s1
+; RV32IMZBS-NEXT:    bexti a4, t4, 14
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and s11, a4, s3
+; RV32IMZBS-NEXT:    bexti a4, t4, 15
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and s10, a4, s4
+; RV32IMZBS-NEXT:    bexti a4, t4, 16
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a4, a4, a2
+; RV32IMZBS-NEXT:    bexti s1, t4, 17
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    and a3, s1, a5
+; RV32IMZBS-NEXT:    bexti s1, t4, 18
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    and a7, s1, s8
+; RV32IMZBS-NEXT:    bexti s1, t4, 19
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    slli s3, s7, 19
+; RV32IMZBS-NEXT:    and s1, s1, s3
+; RV32IMZBS-NEXT:    bexti s3, t4, 20
+; RV32IMZBS-NEXT:    addi s3, s3, -1
+; RV32IMZBS-NEXT:    slli s4, s7, 20
+; RV32IMZBS-NEXT:    and s3, s3, s4
+; RV32IMZBS-NEXT:    bexti s4, t4, 21
+; RV32IMZBS-NEXT:    addi s4, s4, -1
+; RV32IMZBS-NEXT:    slli s8, s7, 21
+; RV32IMZBS-NEXT:    and s4, s4, s8
+; RV32IMZBS-NEXT:    bexti s8, t4, 22
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli a0, s7, 22
+; RV32IMZBS-NEXT:    and a0, s8, a0
+; RV32IMZBS-NEXT:    bexti s8, t4, 23
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli a2, s7, 23
+; RV32IMZBS-NEXT:    and a2, s8, a2
+; RV32IMZBS-NEXT:    bexti s8, t4, 24
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli a5, s7, 24
+; RV32IMZBS-NEXT:    and a5, s8, a5
+; RV32IMZBS-NEXT:    bexti s8, t4, 25
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli t0, s7, 25
+; RV32IMZBS-NEXT:    and t0, s8, t0
+; RV32IMZBS-NEXT:    bexti s8, t4, 26
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli t5, s7, 26
+; RV32IMZBS-NEXT:    and t5, s8, t5
+; RV32IMZBS-NEXT:    bexti s8, t4, 27
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli s0, s7, 27
+; RV32IMZBS-NEXT:    and s0, s8, s0
+; RV32IMZBS-NEXT:    bexti s8, t4, 28
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli s6, s7, 28
+; RV32IMZBS-NEXT:    and s6, s8, s6
+; RV32IMZBS-NEXT:    bexti s8, t4, 29
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    slli a6, s7, 29
+; RV32IMZBS-NEXT:    and a6, s8, a6
 ; RV32IMZBS-NEXT:    andi a1, a1, 1
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a1, a1, s2
-; RV32IMZBS-NEXT:    slli s2, s2, 30
-; RV32IMZBS-NEXT:    bexti t2, t3, 30
-; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    and t2, t2, s2
-; RV32IMZBS-NEXT:    lw t3, 20(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, t3
-; RV32IMZBS-NEXT:    lw t3, 16(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s2, 12(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t3, s2
-; RV32IMZBS-NEXT:    lw s2, 8(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, s2, t6
+; RV32IMZBS-NEXT:    and a1, a1, s7
+; RV32IMZBS-NEXT:    slli s7, s7, 30
+; RV32IMZBS-NEXT:    bexti t4, t4, 30
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    and t4, t4, s7
+; RV32IMZBS-NEXT:    lw s7, 20(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, s7
+; RV32IMZBS-NEXT:    lw s7, 16(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 8(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, s7, s8
+; RV32IMZBS-NEXT:    lw s8, 4(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, s8, t3
+; RV32IMZBS-NEXT:    xor s2, s2, s5
+; RV32IMZBS-NEXT:    xor s5, s9, s11
 ; RV32IMZBS-NEXT:    xor s1, s1, s3
-; RV32IMZBS-NEXT:    xor s2, s8, s9
-; RV32IMZBS-NEXT:    xor a6, t0, a6
-; RV32IMZBS-NEXT:    xor a3, s0, a3
-; RV32IMZBS-NEXT:    xor a0, a0, t2
-; RV32IMZBS-NEXT:    xor a1, a1, t3
-; RV32IMZBS-NEXT:    lw t0, 4(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t6, t0
-; RV32IMZBS-NEXT:    xor t2, s1, t4
-; RV32IMZBS-NEXT:    xor t3, s2, s7
-; RV32IMZBS-NEXT:    xor a6, a6, ra
-; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    lw a4, 24(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a4
+; RV32IMZBS-NEXT:    xor a5, a5, t0
+; RV32IMZBS-NEXT:    xor a1, a1, s7
+; RV32IMZBS-NEXT:    xor t0, t3, t6
+; RV32IMZBS-NEXT:    xor t3, s2, ra
+; RV32IMZBS-NEXT:    xor t6, s5, s10
+; RV32IMZBS-NEXT:    xor s1, s1, s4
+; RV32IMZBS-NEXT:    xor a5, a5, t5
 ; RV32IMZBS-NEXT:    xor a1, a1, t0
-; RV32IMZBS-NEXT:    xor a4, t2, t5
-; RV32IMZBS-NEXT:    xor t0, t3, s6
-; RV32IMZBS-NEXT:    xor a6, a6, s10
-; RV32IMZBS-NEXT:    xor a2, a3, a2
-; RV32IMZBS-NEXT:    xor a1, a1, a4
-; RV32IMZBS-NEXT:    xor a3, t0, s5
-; RV32IMZBS-NEXT:    xor a4, a6, s11
-; RV32IMZBS-NEXT:    xor a2, a2, a5
-; RV32IMZBS-NEXT:    xor a1, a1, a3
-; RV32IMZBS-NEXT:    lui a3, 349525
-; RV32IMZBS-NEXT:    addi a3, a3, 1364
-; RV32IMZBS-NEXT:    xor a4, a4, s4
-; RV32IMZBS-NEXT:    xor a2, a2, t1
-; RV32IMZBS-NEXT:    xor a1, a1, a4
-; RV32IMZBS-NEXT:    xor a2, a2, a7
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    srli a1, a0, 8
-; RV32IMZBS-NEXT:    srli a2, a0, 24
-; RV32IMZBS-NEXT:    slli a4, a0, 24
-; RV32IMZBS-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a0, a0, a5
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    or a1, a1, a2
-; RV32IMZBS-NEXT:    or a0, a4, a0
-; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    xor t0, t3, t1
+; RV32IMZBS-NEXT:    xor a4, t6, a4
+; RV32IMZBS-NEXT:    xor a0, s1, a0
+; RV32IMZBS-NEXT:    xor a5, a5, s0
+; RV32IMZBS-NEXT:    lw t1, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t1
+; RV32IMZBS-NEXT:    xor t0, t0, t2
+; RV32IMZBS-NEXT:    xor a3, a4, a3
+; RV32IMZBS-NEXT:    xor a0, a0, a2
+; RV32IMZBS-NEXT:    xor a2, a5, s6
+; RV32IMZBS-NEXT:    xor a3, a3, a7
+; RV32IMZBS-NEXT:    lui a4, 349525
+; RV32IMZBS-NEXT:    addi a4, a4, 1364
+; RV32IMZBS-NEXT:    xor a5, a1, t0
+; RV32IMZBS-NEXT:    slli a1, a1, 24
+; RV32IMZBS-NEXT:    xor a2, a2, a6
+; RV32IMZBS-NEXT:    xor a3, a5, a3
+; RV32IMZBS-NEXT:    xor a2, a2, t4
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    lw a3, 24(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a3
+; RV32IMZBS-NEXT:    lw a6, 40(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a3, a0, a6
+; RV32IMZBS-NEXT:    srli a5, a0, 8
+; RV32IMZBS-NEXT:    xor a0, a0, a2
+; RV32IMZBS-NEXT:    slli a3, a3, 8
+; RV32IMZBS-NEXT:    and a2, a5, a6
+; RV32IMZBS-NEXT:    srli a0, a0, 24
+; RV32IMZBS-NEXT:    or a1, a1, a3
+; RV32IMZBS-NEXT:    or a0, a2, a0
+; RV32IMZBS-NEXT:    or a0, a1, a0
 ; RV32IMZBS-NEXT:    srli a1, a0, 4
 ; RV32IMZBS-NEXT:    lw a2, 36(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    and a0, a0, a2
@@ -2103,7 +2101,7 @@ define i32 @clmulh_i32(i32 %a, i32 %b) nounwind {
 ; RV32IMZBS-NEXT:    srli a1, a0, 1
 ; RV32IMZBS-NEXT:    lw a2, 28(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    and a1, a1, a4
 ; RV32IMZBS-NEXT:    slli a0, a0, 1
 ; RV32IMZBS-NEXT:    or a0, a1, a0
 ; RV32IMZBS-NEXT:    srli a0, a0, 1
@@ -2425,294 +2423,294 @@ define void @commutative_clmulh_i8(i8 %x, i8 %y, ptr %p0, ptr %p1) {
 define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %p1) nounwind {
 ; RV32I-LABEL: commutative_clmulh_v2i64:
 ; RV32I:       # %bb.0:
-; RV32I-NEXT:    addi sp, sp, -816
-; RV32I-NEXT:    sw ra, 812(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s0, 808(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s1, 804(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s2, 800(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s3, 796(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s4, 792(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s5, 788(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s6, 784(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s7, 780(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s8, 776(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s9, 772(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s10, 768(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw s11, 764(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw a3, 752(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw a2, 748(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 0(a0)
+; RV32I-NEXT:    addi sp, sp, -800
+; RV32I-NEXT:    sw ra, 796(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s0, 792(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s1, 788(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s2, 784(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s3, 780(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s4, 776(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s5, 772(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s6, 768(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s7, 764(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s8, 760(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s9, 756(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s10, 752(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s11, 748(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a3, 736(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 732(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a5, 0(a0)
 ; RV32I-NEXT:    lw t4, 4(a0)
 ; RV32I-NEXT:    lw a7, 8(a0)
-; RV32I-NEXT:    lw t2, 12(a0)
+; RV32I-NEXT:    lw a0, 12(a0)
 ; RV32I-NEXT:    lw s5, 0(a1)
-; RV32I-NEXT:    lw a3, 4(a1)
+; RV32I-NEXT:    lw t2, 4(a1)
 ; RV32I-NEXT:    lw t1, 8(a1)
-; RV32I-NEXT:    lw a0, 12(a1)
-; RV32I-NEXT:    lui a5, 16
-; RV32I-NEXT:    lui a1, 61681
-; RV32I-NEXT:    lui a2, 209715
+; RV32I-NEXT:    lw a1, 12(a1)
+; RV32I-NEXT:    lui a6, 16
+; RV32I-NEXT:    lui a2, 61681
+; RV32I-NEXT:    lui a3, 209715
 ; RV32I-NEXT:    lui a4, 349525
-; RV32I-NEXT:    addi s11, a5, -256
-; RV32I-NEXT:    addi s10, a1, -241
-; RV32I-NEXT:    addi s9, a2, 819
+; RV32I-NEXT:    addi s11, a6, -256
+; RV32I-NEXT:    addi s10, a2, -241
+; RV32I-NEXT:    addi s9, a3, 819
 ; RV32I-NEXT:    addi s8, a4, 1365
-; RV32I-NEXT:    srli a1, a3, 8
-; RV32I-NEXT:    srli t5, a3, 24
-; RV32I-NEXT:    and a2, a3, s11
-; RV32I-NEXT:    slli a3, a3, 24
-; RV32I-NEXT:    srli a5, t4, 8
-; RV32I-NEXT:    srli a6, t4, 24
-; RV32I-NEXT:    and a4, t4, s11
+; RV32I-NEXT:    srli a2, t2, 8
+; RV32I-NEXT:    srli t0, t2, 24
+; RV32I-NEXT:    and a3, t2, s11
+; RV32I-NEXT:    slli t2, t2, 24
+; RV32I-NEXT:    srli t5, t4, 8
+; RV32I-NEXT:    srli a4, t4, 24
+; RV32I-NEXT:    and t3, t4, s11
 ; RV32I-NEXT:    slli t4, t4, 24
 ; RV32I-NEXT:    srli s2, s5, 8
-; RV32I-NEXT:    srli t3, s5, 24
+; RV32I-NEXT:    srli a6, s5, 24
 ; RV32I-NEXT:    and s3, s5, s11
 ; RV32I-NEXT:    slli s5, s5, 24
-; RV32I-NEXT:    srli t6, t0, 8
-; RV32I-NEXT:    srli s1, t0, 24
-; RV32I-NEXT:    and s0, t0, s11
-; RV32I-NEXT:    slli t0, t0, 24
-; RV32I-NEXT:    and a1, a1, s11
-; RV32I-NEXT:    or a1, a1, t5
+; RV32I-NEXT:    srli t6, a5, 8
+; RV32I-NEXT:    srli s1, a5, 24
+; RV32I-NEXT:    and s0, a5, s11
+; RV32I-NEXT:    slli a5, a5, 24
+; RV32I-NEXT:    and a2, a2, s11
+; RV32I-NEXT:    or a2, a2, t0
+; RV32I-NEXT:    srli t0, a1, 8
+; RV32I-NEXT:    slli a3, a3, 8
+; RV32I-NEXT:    or a3, t2, a3
+; RV32I-NEXT:    srli s6, a1, 24
+; RV32I-NEXT:    and t2, t5, s11
+; RV32I-NEXT:    or t2, t2, a4
+; RV32I-NEXT:    and s4, a1, s11
+; RV32I-NEXT:    slli s7, a1, 24
+; RV32I-NEXT:    slli t3, t3, 8
+; RV32I-NEXT:    or a1, t4, t3
 ; RV32I-NEXT:    srli t5, a0, 8
-; RV32I-NEXT:    slli a2, a2, 8
-; RV32I-NEXT:    or a2, a3, a2
-; RV32I-NEXT:    srli s6, a0, 24
-; RV32I-NEXT:    and a3, a5, s11
-; RV32I-NEXT:    or a3, a3, a6
-; RV32I-NEXT:    and s4, a0, s11
-; RV32I-NEXT:    slli s7, a0, 24
-; RV32I-NEXT:    slli a4, a4, 8
-; RV32I-NEXT:    or a0, t4, a4
-; RV32I-NEXT:    srli a5, t2, 8
 ; RV32I-NEXT:    and a4, s2, s11
-; RV32I-NEXT:    or a4, a4, t3
-; RV32I-NEXT:    srli a6, t2, 24
+; RV32I-NEXT:    or t3, a4, a6
+; RV32I-NEXT:    srli a4, a0, 24
 ; RV32I-NEXT:    slli s3, s3, 8
 ; RV32I-NEXT:    or t4, s5, s3
-; RV32I-NEXT:    and s2, t2, s11
-; RV32I-NEXT:    slli s3, t2, 24
-; RV32I-NEXT:    and t2, t6, s11
-; RV32I-NEXT:    or t2, t2, s1
-; RV32I-NEXT:    srli t3, t1, 8
+; RV32I-NEXT:    and s2, a0, s11
+; RV32I-NEXT:    slli s3, a0, 24
+; RV32I-NEXT:    and a0, t6, s11
+; RV32I-NEXT:    or a0, a0, s1
+; RV32I-NEXT:    srli a6, t1, 8
 ; RV32I-NEXT:    slli s0, s0, 8
-; RV32I-NEXT:    or s0, t0, s0
+; RV32I-NEXT:    or s0, a5, s0
 ; RV32I-NEXT:    srli s5, t1, 24
-; RV32I-NEXT:    and t0, t5, s11
-; RV32I-NEXT:    or t0, t0, s6
+; RV32I-NEXT:    and a5, t0, s11
+; RV32I-NEXT:    or a5, a5, s6
 ; RV32I-NEXT:    and t6, t1, s11
-; RV32I-NEXT:    slli t5, t1, 24
+; RV32I-NEXT:    slli t0, t1, 24
 ; RV32I-NEXT:    slli s4, s4, 8
 ; RV32I-NEXT:    or t1, s7, s4
 ; RV32I-NEXT:    srli s1, a7, 8
-; RV32I-NEXT:    and a5, a5, s11
-; RV32I-NEXT:    or a5, a5, a6
-; RV32I-NEXT:    srli a6, a7, 24
+; RV32I-NEXT:    and t5, t5, s11
+; RV32I-NEXT:    or a4, t5, a4
+; RV32I-NEXT:    srli t5, a7, 24
 ; RV32I-NEXT:    slli s2, s2, 8
 ; RV32I-NEXT:    or s2, s3, s2
 ; RV32I-NEXT:    and s3, a7, s11
 ; RV32I-NEXT:    slli a7, a7, 24
-; RV32I-NEXT:    and t3, t3, s11
+; RV32I-NEXT:    and a6, a6, s11
 ; RV32I-NEXT:    slli t6, t6, 8
 ; RV32I-NEXT:    and s1, s1, s11
 ; RV32I-NEXT:    slli s3, s3, 8
-; RV32I-NEXT:    or t3, t3, s5
-; RV32I-NEXT:    or t5, t5, t6
-; RV32I-NEXT:    or a6, s1, a6
+; RV32I-NEXT:    or a6, a6, s5
+; RV32I-NEXT:    or t0, t0, t6
+; RV32I-NEXT:    or t5, s1, t5
 ; RV32I-NEXT:    or a7, a7, s3
-; RV32I-NEXT:    or a1, a2, a1
-; RV32I-NEXT:    or a0, a0, a3
-; RV32I-NEXT:    or a2, t4, a4
-; RV32I-NEXT:    or a3, s0, t2
-; RV32I-NEXT:    or a4, t1, t0
-; RV32I-NEXT:    or a5, s2, a5
-; RV32I-NEXT:    or t0, t5, t3
-; RV32I-NEXT:    or a6, a7, a6
-; RV32I-NEXT:    srli a7, a1, 4
-; RV32I-NEXT:    sw s10, 760(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a1, a1, s10
-; RV32I-NEXT:    srli t1, a0, 4
-; RV32I-NEXT:    and a0, a0, s10
-; RV32I-NEXT:    srli t2, a2, 4
+; RV32I-NEXT:    or a2, a3, a2
+; RV32I-NEXT:    or a1, a1, t2
+; RV32I-NEXT:    or a3, t4, t3
+; RV32I-NEXT:    or a0, s0, a0
+; RV32I-NEXT:    or a5, t1, a5
+; RV32I-NEXT:    or a4, s2, a4
+; RV32I-NEXT:    or a6, t0, a6
+; RV32I-NEXT:    or a7, a7, t5
+; RV32I-NEXT:    srli t0, a2, 4
+; RV32I-NEXT:    sw s10, 744(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s10
-; RV32I-NEXT:    srli t3, a3, 4
+; RV32I-NEXT:    srli t1, a1, 4
+; RV32I-NEXT:    and a1, a1, s10
+; RV32I-NEXT:    srli t2, a3, 4
 ; RV32I-NEXT:    and a3, a3, s10
-; RV32I-NEXT:    srli t4, a4, 4
-; RV32I-NEXT:    and a4, a4, s10
-; RV32I-NEXT:    srli t5, a5, 4
+; RV32I-NEXT:    srli t3, a0, 4
+; RV32I-NEXT:    and a0, a0, s10
+; RV32I-NEXT:    srli t4, a5, 4
 ; RV32I-NEXT:    and a5, a5, s10
-; RV32I-NEXT:    srli t6, t0, 4
-; RV32I-NEXT:    and t0, t0, s10
-; RV32I-NEXT:    srli s0, a6, 4
+; RV32I-NEXT:    srli t5, a4, 4
+; RV32I-NEXT:    and a4, a4, s10
+; RV32I-NEXT:    srli t6, a6, 4
 ; RV32I-NEXT:    and a6, a6, s10
+; RV32I-NEXT:    srli s0, a7, 4
 ; RV32I-NEXT:    and a7, a7, s10
-; RV32I-NEXT:    slli a1, a1, 4
+; RV32I-NEXT:    and t0, t0, s10
+; RV32I-NEXT:    slli a2, a2, 4
 ; RV32I-NEXT:    and t1, t1, s10
-; RV32I-NEXT:    slli a0, a0, 4
+; RV32I-NEXT:    slli a1, a1, 4
 ; RV32I-NEXT:    and t2, t2, s10
-; RV32I-NEXT:    slli a2, a2, 4
-; RV32I-NEXT:    and t3, t3, s10
 ; RV32I-NEXT:    slli a3, a3, 4
+; RV32I-NEXT:    and t3, t3, s10
+; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    and t4, t4, s10
-; RV32I-NEXT:    slli a4, a4, 4
-; RV32I-NEXT:    and t5, t5, s10
 ; RV32I-NEXT:    slli a5, a5, 4
+; RV32I-NEXT:    and t5, t5, s10
+; RV32I-NEXT:    slli a4, a4, 4
 ; RV32I-NEXT:    and t6, t6, s10
-; RV32I-NEXT:    slli t0, t0, 4
-; RV32I-NEXT:    and s0, s0, s10
 ; RV32I-NEXT:    slli a6, a6, 4
-; RV32I-NEXT:    or a1, a7, a1
-; RV32I-NEXT:    or a0, t1, a0
-; RV32I-NEXT:    or a2, t2, a2
-; RV32I-NEXT:    or a3, t3, a3
-; RV32I-NEXT:    or a4, t4, a4
-; RV32I-NEXT:    or a5, t5, a5
-; RV32I-NEXT:    or a7, t6, t0
-; RV32I-NEXT:    or a6, s0, a6
-; RV32I-NEXT:    srli t0, a1, 2
-; RV32I-NEXT:    sw s9, 740(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a1, a1, s9
-; RV32I-NEXT:    srli t1, a0, 2
-; RV32I-NEXT:    and a0, a0, s9
-; RV32I-NEXT:    srli t2, a2, 2
+; RV32I-NEXT:    and s0, s0, s10
+; RV32I-NEXT:    slli a7, a7, 4
+; RV32I-NEXT:    or a2, t0, a2
+; RV32I-NEXT:    or a1, t1, a1
+; RV32I-NEXT:    or a3, t2, a3
+; RV32I-NEXT:    or a0, t3, a0
+; RV32I-NEXT:    or a5, t4, a5
+; RV32I-NEXT:    or a4, t5, a4
+; RV32I-NEXT:    or a6, t6, a6
+; RV32I-NEXT:    or a7, s0, a7
+; RV32I-NEXT:    srli t0, a2, 2
+; RV32I-NEXT:    sw s9, 724(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s9
-; RV32I-NEXT:    srli t3, a3, 2
+; RV32I-NEXT:    srli t1, a1, 2
+; RV32I-NEXT:    and a1, a1, s9
+; RV32I-NEXT:    srli t2, a3, 2
 ; RV32I-NEXT:    and a3, a3, s9
-; RV32I-NEXT:    srli t4, a4, 2
-; RV32I-NEXT:    and a4, a4, s9
-; RV32I-NEXT:    srli t5, a5, 2
+; RV32I-NEXT:    srli t3, a0, 2
+; RV32I-NEXT:    and a0, a0, s9
+; RV32I-NEXT:    srli t4, a5, 2
 ; RV32I-NEXT:    and a5, a5, s9
-; RV32I-NEXT:    srli t6, a7, 2
-; RV32I-NEXT:    and a7, a7, s9
-; RV32I-NEXT:    srli s0, a6, 2
+; RV32I-NEXT:    srli t5, a4, 2
+; RV32I-NEXT:    and a4, a4, s9
+; RV32I-NEXT:    srli t6, a6, 2
 ; RV32I-NEXT:    and a6, a6, s9
+; RV32I-NEXT:    srli s0, a7, 2
+; RV32I-NEXT:    and a7, a7, s9
 ; RV32I-NEXT:    and t0, t0, s9
-; RV32I-NEXT:    slli a1, a1, 2
+; RV32I-NEXT:    slli a2, a2, 2
 ; RV32I-NEXT:    and t1, t1, s9
-; RV32I-NEXT:    slli a0, a0, 2
+; RV32I-NEXT:    slli a1, a1, 2
 ; RV32I-NEXT:    and t2, t2, s9
-; RV32I-NEXT:    slli a2, a2, 2
-; RV32I-NEXT:    and t3, t3, s9
 ; RV32I-NEXT:    slli a3, a3, 2
+; RV32I-NEXT:    and t3, t3, s9
+; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    and t4, t4, s9
-; RV32I-NEXT:    slli a4, a4, 2
-; RV32I-NEXT:    and t5, t5, s9
 ; RV32I-NEXT:    slli a5, a5, 2
+; RV32I-NEXT:    and t5, t5, s9
+; RV32I-NEXT:    slli a4, a4, 2
 ; RV32I-NEXT:    and t6, t6, s9
-; RV32I-NEXT:    slli a7, a7, 2
-; RV32I-NEXT:    and s0, s0, s9
 ; RV32I-NEXT:    slli a6, a6, 2
-; RV32I-NEXT:    or a1, t0, a1
-; RV32I-NEXT:    or a0, t1, a0
-; RV32I-NEXT:    or a2, t2, a2
-; RV32I-NEXT:    or a3, t3, a3
-; RV32I-NEXT:    or a4, t4, a4
-; RV32I-NEXT:    or a5, t5, a5
-; RV32I-NEXT:    or a7, t6, a7
-; RV32I-NEXT:    or a6, s0, a6
-; RV32I-NEXT:    srli t0, a1, 1
-; RV32I-NEXT:    sw s8, 744(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a1, a1, s8
-; RV32I-NEXT:    srli t1, a0, 1
-; RV32I-NEXT:    and a0, a0, s8
-; RV32I-NEXT:    srli t2, a2, 1
+; RV32I-NEXT:    and s0, s0, s9
+; RV32I-NEXT:    slli a7, a7, 2
+; RV32I-NEXT:    or a2, t0, a2
+; RV32I-NEXT:    or a1, t1, a1
+; RV32I-NEXT:    or a3, t2, a3
+; RV32I-NEXT:    or a0, t3, a0
+; RV32I-NEXT:    or a5, t4, a5
+; RV32I-NEXT:    or a4, t5, a4
+; RV32I-NEXT:    or a6, t6, a6
+; RV32I-NEXT:    or a7, s0, a7
+; RV32I-NEXT:    srli t0, a2, 1
+; RV32I-NEXT:    sw s8, 728(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s8
-; RV32I-NEXT:    srli t3, a3, 1
+; RV32I-NEXT:    srli t1, a1, 1
+; RV32I-NEXT:    and a1, a1, s8
+; RV32I-NEXT:    srli t2, a3, 1
 ; RV32I-NEXT:    and a3, a3, s8
-; RV32I-NEXT:    srli t4, a4, 1
-; RV32I-NEXT:    and a4, a4, s8
-; RV32I-NEXT:    srli t5, a5, 1
+; RV32I-NEXT:    srli t3, a0, 1
+; RV32I-NEXT:    and a0, a0, s8
+; RV32I-NEXT:    srli t4, a5, 1
 ; RV32I-NEXT:    and a5, a5, s8
-; RV32I-NEXT:    srli t6, a7, 1
-; RV32I-NEXT:    and a7, a7, s8
-; RV32I-NEXT:    srli s0, a6, 1
+; RV32I-NEXT:    srli t5, a4, 1
+; RV32I-NEXT:    and a4, a4, s8
+; RV32I-NEXT:    srli t6, a6, 1
 ; RV32I-NEXT:    and a6, a6, s8
+; RV32I-NEXT:    srli s0, a7, 1
+; RV32I-NEXT:    and a7, a7, s8
 ; RV32I-NEXT:    and t0, t0, s8
-; RV32I-NEXT:    slli a1, a1, 1
-; RV32I-NEXT:    and t1, t1, s8
-; RV32I-NEXT:    slli s1, a0, 1
-; RV32I-NEXT:    and s2, t2, s8
 ; RV32I-NEXT:    slli a2, a2, 1
-; RV32I-NEXT:    and t3, t3, s8
-; RV32I-NEXT:    slli s3, a3, 1
+; RV32I-NEXT:    and t1, t1, s8
+; RV32I-NEXT:    slli s1, a1, 1
+; RV32I-NEXT:    and t2, t2, s8
+; RV32I-NEXT:    slli a3, a3, 1
+; RV32I-NEXT:    and s2, t3, s8
+; RV32I-NEXT:    slli s3, a0, 1
 ; RV32I-NEXT:    and t4, t4, s8
-; RV32I-NEXT:    slli a4, a4, 1
-; RV32I-NEXT:    and t5, t5, s8
 ; RV32I-NEXT:    slli a5, a5, 1
+; RV32I-NEXT:    and t5, t5, s8
+; RV32I-NEXT:    slli a4, a4, 1
 ; RV32I-NEXT:    and t6, t6, s8
-; RV32I-NEXT:    slli s4, a7, 1
-; RV32I-NEXT:    and s6, s0, s8
-; RV32I-NEXT:    slli t2, a6, 1
-; RV32I-NEXT:    or a0, t0, a1
+; RV32I-NEXT:    slli a6, a6, 1
+; RV32I-NEXT:    and s4, s0, s8
+; RV32I-NEXT:    slli t3, a7, 1
+; RV32I-NEXT:    or a0, t0, a2
 ; RV32I-NEXT:    or a1, t1, s1
-; RV32I-NEXT:    or a2, s2, a2
+; RV32I-NEXT:    or a2, t2, a3
 ; RV32I-NEXT:    srli a7, s1, 31
-; RV32I-NEXT:    or a3, t3, s3
-; RV32I-NEXT:    srli t1, s3, 31
-; RV32I-NEXT:    or s0, t4, a4
-; RV32I-NEXT:    or s5, t5, a5
-; RV32I-NEXT:    or s2, t6, s4
-; RV32I-NEXT:    srli a4, a5, 31
-; RV32I-NEXT:    or s6, s6, t2
-; RV32I-NEXT:    srli t3, t2, 31
-; RV32I-NEXT:    srli a5, a0, 8
-; RV32I-NEXT:    srli a6, a0, 24
-; RV32I-NEXT:    srli t0, a1, 8
-; RV32I-NEXT:    srli t2, a1, 24
+; RV32I-NEXT:    or a3, s2, s3
+; RV32I-NEXT:    srli t2, s3, 31
+; RV32I-NEXT:    or s2, t4, a5
+; RV32I-NEXT:    or s5, t5, a4
+; RV32I-NEXT:    or s6, t6, a6
+; RV32I-NEXT:    srli t1, a4, 31
+; RV32I-NEXT:    or s7, s4, t3
+; RV32I-NEXT:    srli t0, t3, 31
+; RV32I-NEXT:    srli a4, a0, 8
+; RV32I-NEXT:    srli a5, a0, 24
+; RV32I-NEXT:    srli a6, a1, 8
+; RV32I-NEXT:    srli t3, a1, 24
 ; RV32I-NEXT:    slli t4, a1, 24
 ; RV32I-NEXT:    and t5, a1, s11
 ; RV32I-NEXT:    slli t6, a2, 31
 ; RV32I-NEXT:    seqz a7, a7
 ; RV32I-NEXT:    slli s1, a0, 31
-; RV32I-NEXT:    seqz t1, t1
-; RV32I-NEXT:    and a5, a5, s11
-; RV32I-NEXT:    or a5, a5, a6
-; RV32I-NEXT:    srli s4, s0, 8
-; RV32I-NEXT:    and a6, t0, s11
-; RV32I-NEXT:    or a6, a6, t2
-; RV32I-NEXT:    srli t2, s0, 24
+; RV32I-NEXT:    seqz t2, t2
+; RV32I-NEXT:    and a4, a4, s11
+; RV32I-NEXT:    or a4, a4, a5
+; RV32I-NEXT:    srli s4, s2, 8
+; RV32I-NEXT:    and a5, a6, s11
+; RV32I-NEXT:    or a5, a5, t3
+; RV32I-NEXT:    srli t3, s2, 24
 ; RV32I-NEXT:    slli t5, t5, 8
-; RV32I-NEXT:    or t0, t4, t5
+; RV32I-NEXT:    or a6, t4, t5
 ; RV32I-NEXT:    srli t4, s5, 8
 ; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    addi t1, t1, -1
+; RV32I-NEXT:    addi t2, t2, -1
 ; RV32I-NEXT:    and t5, a7, t6
-; RV32I-NEXT:    sw t5, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and t1, t1, s1
-; RV32I-NEXT:    sw t1, 728(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw t5, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t2, t2, s1
+; RV32I-NEXT:    sw t2, 708(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a7, a7, s1
-; RV32I-NEXT:    sw a7, 736(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a7, 720(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli a7, s5, 24
-; RV32I-NEXT:    and t1, s4, s11
-; RV32I-NEXT:    or t2, t1, t2
+; RV32I-NEXT:    and t2, s4, s11
+; RV32I-NEXT:    or t3, t2, t3
 ; RV32I-NEXT:    slli t5, s5, 24
-; RV32I-NEXT:    and t1, t4, s11
-; RV32I-NEXT:    or t1, t1, a7
+; RV32I-NEXT:    and t2, t4, s11
+; RV32I-NEXT:    or t2, t2, a7
 ; RV32I-NEXT:    and a7, s5, s11
 ; RV32I-NEXT:    slli a7, a7, 8
 ; RV32I-NEXT:    or a7, t5, a7
-; RV32I-NEXT:    slli t4, s2, 31
-; RV32I-NEXT:    seqz a4, a4
-; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    addi t5, t3, -1
-; RV32I-NEXT:    and t3, a4, t4
-; RV32I-NEXT:    sw t3, 724(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli t3, s0, 31
-; RV32I-NEXT:    and t4, t5, t3
-; RV32I-NEXT:    sw t4, 732(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a4, t3
-; RV32I-NEXT:    sw a4, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a0, s11
-; RV32I-NEXT:    sw s11, 756(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a4, a4, 8
-; RV32I-NEXT:    slli t4, a0, 24
-; RV32I-NEXT:    or a4, t4, a4
-; RV32I-NEXT:    or a4, a4, a5
-; RV32I-NEXT:    sw a4, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a4, t0, a6
-; RV32I-NEXT:    sw a4, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t4, s6, 31
+; RV32I-NEXT:    seqz t1, t1
+; RV32I-NEXT:    seqz t5, t0
+; RV32I-NEXT:    addi t0, t1, -1
+; RV32I-NEXT:    addi t5, t5, -1
+; RV32I-NEXT:    and t1, t0, t4
+; RV32I-NEXT:    sw t1, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t1, s2, 31
+; RV32I-NEXT:    and t4, t5, t1
+; RV32I-NEXT:    sw t4, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t0, t0, t1
+; RV32I-NEXT:    sw t0, 716(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t0, a0, s11
+; RV32I-NEXT:    sw s11, 740(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t0, t0, 8
+; RV32I-NEXT:    slli t1, a0, 24
+; RV32I-NEXT:    or t0, t1, t0
+; RV32I-NEXT:    or a4, t0, a4
+; RV32I-NEXT:    sw a4, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a4, a6, a5
+; RV32I-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 2
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 2
@@ -2720,11 +2718,10 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a4, a4, -1
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 1
-; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s10, a4, a6
 ; RV32I-NEXT:    slli a6, a0, 1
-; RV32I-NEXT:    and s1, a5, a6
-; RV32I-NEXT:    and t5, a4, a6
+; RV32I-NEXT:    and t5, a5, a6
+; RV32I-NEXT:    and t4, a4, a6
 ; RV32I-NEXT:    andi a4, a1, 4
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 4
@@ -2733,12 +2730,10 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 2
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 664(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 652(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 2
-; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and ra, a5, a6
+; RV32I-NEXT:    and t6, a4, a6
 ; RV32I-NEXT:    andi a4, a1, 8
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 8
@@ -2750,9 +2745,9 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 640(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 3
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 648(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 660(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 16
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 16
@@ -2761,12 +2756,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 4
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 616(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 4
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 636(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 628(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 644(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 32
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 32
@@ -2775,12 +2770,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 5
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 592(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 5
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 624(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 64
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 64
@@ -2789,12 +2784,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 6
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 664(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 6
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 668(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 128
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 128
@@ -2803,12 +2798,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 7
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 572(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 7
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 688(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 256
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 256
@@ -2817,12 +2812,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 8
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 8
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 512
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 512
@@ -2831,12 +2826,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 9
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 9
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 612(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 1024
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 1024
@@ -2845,12 +2840,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 10
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 672(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 10
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 676(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 600(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    li a4, 1
 ; RV32I-NEXT:    slli t0, a4, 11
 ; RV32I-NEXT:    and a4, a1, t0
@@ -2861,12 +2856,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 11
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 508(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 516(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 11
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 524(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 656(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 1
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2876,12 +2871,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 12
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 500(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 496(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 12
 ; RV32I-NEXT:    and a5, a5, a6
 ; RV32I-NEXT:    sw a5, 504(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 684(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 2
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2891,12 +2886,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 13
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 532(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 13
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 536(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 500(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 4
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2906,12 +2901,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 14
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 584(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 14
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 8
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2921,12 +2916,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 15
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 632(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 15
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 636(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 16
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2936,12 +2931,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 16
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 432(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 436(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 16
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 440(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 444(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 444(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 32
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2951,12 +2946,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 17
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 412(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 416(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 17
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 420(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 436(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 596(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 64
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2971,7 +2966,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a5, a5, a6
 ; RV32I-NEXT:    sw a5, 468(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 620(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 128
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2981,12 +2976,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 19
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 512(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 19
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 520(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 408(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 256
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -2996,12 +2991,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 20
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 540(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 20
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 400(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 512
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3011,12 +3006,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 21
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 560(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 21
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 1024
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3029,9 +3024,9 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 380(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 22
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 392(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 384(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 396(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 476(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 2048
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3041,12 +3036,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 23
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 368(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 360(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 23
 ; RV32I-NEXT:    and a5, a5, a6
 ; RV32I-NEXT:    sw a5, 372(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 388(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 4096
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3056,11 +3051,11 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 24
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 400(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a5, a5, t4
-; RV32I-NEXT:    sw a5, 404(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a4, t4
-; RV32I-NEXT:    sw a4, 408(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 392(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a5, a5, t1
+; RV32I-NEXT:    sw a5, 396(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a4, a4, t1
+; RV32I-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 8192
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3070,12 +3065,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 25
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 416(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 412(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 25
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 420(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 16384
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3085,12 +3080,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 26
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 448(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 452(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 26
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 452(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 456(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 464(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 388(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 32768
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3103,9 +3098,9 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 472(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 27
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 480(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 480(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 404(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 65536
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3120,7 +3115,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a5, a5, a6
 ; RV32I-NEXT:    sw a5, 488(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 496(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 432(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 131072
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3130,16 +3125,16 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 29
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 356(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 344(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 29
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 360(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 348(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 440(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 262144
 ; RV32I-NEXT:    andi a4, a1, 1
 ; RV32I-NEXT:    and a1, a1, a5
-; RV32I-NEXT:    lui t3, 262144
+; RV32I-NEXT:    lui t1, 262144
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 1
 ; RV32I-NEXT:    seqz a5, a5
@@ -3147,1690 +3142,1683 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 30
 ; RV32I-NEXT:    and a2, a4, a2
-; RV32I-NEXT:    sw a2, 324(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 320(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a5, a5, a0
-; RV32I-NEXT:    sw a5, 348(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 332(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a0
+; RV32I-NEXT:    sw a4, 340(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a0, a0, 30
-; RV32I-NEXT:    and a2, a3, t3
+; RV32I-NEXT:    and a2, a3, t1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a1, a1, -1
 ; RV32I-NEXT:    addi a2, a2, -1
 ; RV32I-NEXT:    and a3, a1, a6
 ; RV32I-NEXT:    sw a3, 316(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a2, a2, a0
-; RV32I-NEXT:    sw a2, 344(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and t3, a1, a0
-; RV32I-NEXT:    and a0, s0, s11
+; RV32I-NEXT:    and a6, a2, a0
+; RV32I-NEXT:    and a0, a1, a0
+; RV32I-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, s2, s11
 ; RV32I-NEXT:    slli a0, a0, 8
-; RV32I-NEXT:    slli t4, s0, 24
-; RV32I-NEXT:    or a0, t4, a0
-; RV32I-NEXT:    or a0, a0, t2
+; RV32I-NEXT:    slli a4, s2, 24
+; RV32I-NEXT:    or a0, a4, a0
+; RV32I-NEXT:    or a0, a0, t3
+; RV32I-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a0, a7, t2
 ; RV32I-NEXT:    sw a0, 376(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a0, a7, t1
-; RV32I-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 2
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 2
+; RV32I-NEXT:    andi a1, s7, 2
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, s6, 1
+; RV32I-NEXT:    and t2, a0, a2
 ; RV32I-NEXT:    slli a2, s2, 1
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 320(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 1
-; RV32I-NEXT:    and t2, a1, a2
-; RV32I-NEXT:    and a7, a0, a2
+; RV32I-NEXT:    and t1, a1, a2
+; RV32I-NEXT:    and a3, a0, a2
 ; RV32I-NEXT:    andi a0, s5, 4
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 4
+; RV32I-NEXT:    andi a1, s7, 4
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 2
+; RV32I-NEXT:    slli a2, s6, 2
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 296(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 2
+; RV32I-NEXT:    sw a2, 288(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 2
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 312(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 304(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 8
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 8
+; RV32I-NEXT:    andi a1, s7, 8
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 3
+; RV32I-NEXT:    slli a2, s6, 3
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 3
+; RV32I-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 3
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 292(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 280(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 304(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 292(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 16
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 16
+; RV32I-NEXT:    andi a1, s7, 16
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 4
+; RV32I-NEXT:    slli a2, s6, 4
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 4
+; RV32I-NEXT:    sw a2, 252(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 4
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 268(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 276(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 32
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 32
+; RV32I-NEXT:    andi a1, s7, 32
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 5
+; RV32I-NEXT:    slli a2, s6, 5
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 5
+; RV32I-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 5
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 248(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 256(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 64
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 64
+; RV32I-NEXT:    andi a1, s7, 64
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 6
+; RV32I-NEXT:    slli a2, s6, 6
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 6
+; RV32I-NEXT:    sw a2, 284(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 6
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 308(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 296(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 308(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 128
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 128
+; RV32I-NEXT:    andi a1, s7, 128
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 7
+; RV32I-NEXT:    slli a2, s6, 7
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 7
+; RV32I-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 7
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 220(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 212(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 224(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 256
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 256
+; RV32I-NEXT:    andi a1, s7, 256
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 8
+; RV32I-NEXT:    slli a2, s6, 8
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 8
+; RV32I-NEXT:    sw a2, 180(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 8
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 204(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 196(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 216(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 512
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 512
+; RV32I-NEXT:    andi a1, s7, 512
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 9
+; RV32I-NEXT:    slli a2, s6, 9
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 9
+; RV32I-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 9
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 244(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 240(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 260(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, s5, 1024
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 1024
+; RV32I-NEXT:    andi a1, s7, 1024
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 10
+; RV32I-NEXT:    slli a2, s6, 10
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 336(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 10
+; RV32I-NEXT:    sw a2, 312(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 10
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 340(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 328(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw t0, 456(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 220(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw t0, 464(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, s5, t0
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, t0
+; RV32I-NEXT:    and a1, s7, t0
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, s6, 11
+; RV32I-NEXT:    and t0, a0, a2
 ; RV32I-NEXT:    slli a2, s2, 11
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 11
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 148(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 1
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 12
+; RV32I-NEXT:    slli a2, s6, 12
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 120(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 12
+; RV32I-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 12
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 140(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 2
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 13
+; RV32I-NEXT:    slli a2, s6, 13
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 13
+; RV32I-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 13
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 172(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 168(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 192(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 4
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 14
+; RV32I-NEXT:    slli a2, s6, 14
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 236(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 14
+; RV32I-NEXT:    sw a2, 224(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 14
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 240(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 236(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 252(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 116(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 8
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 15
+; RV32I-NEXT:    slli a2, s6, 15
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 15
+; RV32I-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 15
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 276(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 264(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 284(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 16
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 16
+; RV32I-NEXT:    slli a2, s6, 16
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 16
+; RV32I-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 16
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 72(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 84(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 32
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 17
+; RV32I-NEXT:    slli a2, s6, 17
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 48(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 17
+; RV32I-NEXT:    sw a2, 52(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 17
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 52(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 56(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 216(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 64
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 18
+; RV32I-NEXT:    slli a2, s6, 18
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 18
+; RV32I-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 18
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 108(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 116(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 244(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 128
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 19
+; RV32I-NEXT:    slli a2, s6, 19
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 19
+; RV32I-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 19
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 160(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 164(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 256
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 20
+; RV32I-NEXT:    slli a2, s6, 20
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 176(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 20
+; RV32I-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 20
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 180(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 176(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 512
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, s2, 21
+; RV32I-NEXT:    slli a2, s6, 21
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, s0, 21
+; RV32I-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s2, 21
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 200(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 192(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 1024
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a5, s6, 22
+; RV32I-NEXT:    and a5, a0, a5
+; RV32I-NEXT:    sw a5, 24(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a2, s2, 22
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a5, s0, 22
-; RV32I-NEXT:    and a2, a1, a5
-; RV32I-NEXT:    and a0, a0, a5
-; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a5, a1, a2
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 120(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 2048
 ; RV32I-NEXT:    and a0, s5, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s7, a1
 ; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a3, a0, -1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a0, s2, 23
-; RV32I-NEXT:    and a0, a3, a0
-; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a6, s0, 23
-; RV32I-NEXT:    and a5, a1, a6
-; RV32I-NEXT:    and a0, a3, a6
-; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 4096
-; RV32I-NEXT:    and a6, s5, a0
-; RV32I-NEXT:    seqz a6, a6
-; RV32I-NEXT:    and t0, s6, a0
-; RV32I-NEXT:    seqz t0, t0
-; RV32I-NEXT:    addi t1, a6, -1
-; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli a6, s2, 24
-; RV32I-NEXT:    and a0, t1, a6
-; RV32I-NEXT:    sw a0, 36(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t0, t4
-; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t1, t4
-; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 8192
-; RV32I-NEXT:    and t4, s5, a0
-; RV32I-NEXT:    seqz t4, t4
-; RV32I-NEXT:    and t6, s6, a0
-; RV32I-NEXT:    seqz t6, t6
-; RV32I-NEXT:    addi s4, t4, -1
-; RV32I-NEXT:    addi t6, t6, -1
-; RV32I-NEXT:    slli t4, s2, 25
-; RV32I-NEXT:    and a0, s4, t4
-; RV32I-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s7, s0, 25
-; RV32I-NEXT:    and a0, t6, s7
-; RV32I-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s4, s7
-; RV32I-NEXT:    sw a0, 76(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a2, a1, -1
+; RV32I-NEXT:    slli a1, s6, 23
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a7, s2, 23
+; RV32I-NEXT:    and a1, a2, a7
+; RV32I-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, a7
+; RV32I-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 4096
+; RV32I-NEXT:    and a0, s5, a1
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    and a2, s7, a1
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a7, s6, 24
+; RV32I-NEXT:    and a1, a0, a7
+; RV32I-NEXT:    sw a1, 32(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a2, a2, a4
+; RV32I-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, a4
+; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 8192
+; RV32I-NEXT:    and a0, s5, a1
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    and a4, s7, a1
+; RV32I-NEXT:    seqz a4, a4
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a4, a4, -1
+; RV32I-NEXT:    slli s1, s6, 25
+; RV32I-NEXT:    and s1, a0, s1
+; RV32I-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t3, s2, 25
+; RV32I-NEXT:    and a1, a4, t3
+; RV32I-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, t3
+; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a0, 16384
-; RV32I-NEXT:    and s7, s5, a0
-; RV32I-NEXT:    seqz s7, s7
-; RV32I-NEXT:    and s8, s6, a0
-; RV32I-NEXT:    seqz s8, s8
-; RV32I-NEXT:    addi s9, s7, -1
-; RV32I-NEXT:    addi s8, s8, -1
-; RV32I-NEXT:    slli s7, s2, 26
-; RV32I-NEXT:    and a0, s9, s7
-; RV32I-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s10, s0, 26
-; RV32I-NEXT:    and a0, s8, s10
+; RV32I-NEXT:    and a4, s5, a0
+; RV32I-NEXT:    seqz a4, a4
+; RV32I-NEXT:    and t3, s7, a0
+; RV32I-NEXT:    seqz t3, t3
+; RV32I-NEXT:    addi a4, a4, -1
+; RV32I-NEXT:    addi t3, t3, -1
+; RV32I-NEXT:    slli s4, s6, 26
+; RV32I-NEXT:    and a0, a4, s4
 ; RV32I-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s9, s10
+; RV32I-NEXT:    slli s4, s2, 26
+; RV32I-NEXT:    and a0, t3, s4
 ; RV32I-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a4, s4
+; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a0, 32768
-; RV32I-NEXT:    and s9, s5, a0
-; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
-; RV32I-NEXT:    seqz s10, s10
-; RV32I-NEXT:    addi s9, s9, -1
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, s2, 27
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 100(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s11, s0, 27
-; RV32I-NEXT:    and a0, s10, s11
+; RV32I-NEXT:    and t3, s5, a0
+; RV32I-NEXT:    seqz t3, t3
+; RV32I-NEXT:    and s4, s7, a0
+; RV32I-NEXT:    seqz s4, s4
+; RV32I-NEXT:    addi t3, t3, -1
+; RV32I-NEXT:    addi s4, s4, -1
+; RV32I-NEXT:    slli s8, s6, 27
+; RV32I-NEXT:    and a0, t3, s8
 ; RV32I-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 112(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s8, s2, 27
+; RV32I-NEXT:    and a0, s4, s8
+; RV32I-NEXT:    sw a0, 108(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t3, s8
+; RV32I-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and s9, s5, a0
-; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
-; RV32I-NEXT:    seqz s10, s10
-; RV32I-NEXT:    addi s9, s9, -1
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, s2, 28
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s11, s0, 28
-; RV32I-NEXT:    and a0, s10, s11
-; RV32I-NEXT:    sw a0, 124(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s9, s11
+; RV32I-NEXT:    and s4, s5, a0
+; RV32I-NEXT:    seqz s4, s4
+; RV32I-NEXT:    and s8, s7, a0
+; RV32I-NEXT:    seqz s8, s8
+; RV32I-NEXT:    addi s4, s4, -1
+; RV32I-NEXT:    addi s8, s8, -1
+; RV32I-NEXT:    slli s9, s6, 28
+; RV32I-NEXT:    and a0, s4, s9
 ; RV32I-NEXT:    sw a0, 136(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s9, s2, 28
+; RV32I-NEXT:    and a0, s8, s9
+; RV32I-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, s4, s9
+; RV32I-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and s9, s5, a0
+; RV32I-NEXT:    and s8, s5, a0
+; RV32I-NEXT:    seqz s8, s8
+; RV32I-NEXT:    and s9, s7, a0
 ; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
-; RV32I-NEXT:    seqz s10, s10
+; RV32I-NEXT:    addi s8, s8, -1
 ; RV32I-NEXT:    addi s9, s9, -1
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, s2, 29
-; RV32I-NEXT:    and a6, s9, s11
-; RV32I-NEXT:    slli ra, s0, 29
-; RV32I-NEXT:    and a3, s10, ra
-; RV32I-NEXT:    and a0, s9, ra
-; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi ra, s5, 1
+; RV32I-NEXT:    slli s11, s6, 29
+; RV32I-NEXT:    and a4, s8, s11
+; RV32I-NEXT:    slli s0, s2, 29
+; RV32I-NEXT:    and a2, s9, s0
+; RV32I-NEXT:    and a0, s8, s0
+; RV32I-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi s0, s5, 1
 ; RV32I-NEXT:    lui a0, 262144
 ; RV32I-NEXT:    and s5, s5, a0
-; RV32I-NEXT:    seqz ra, ra
-; RV32I-NEXT:    andi s8, s6, 1
+; RV32I-NEXT:    seqz s0, s0
+; RV32I-NEXT:    andi s8, s7, 1
 ; RV32I-NEXT:    seqz s8, s8
-; RV32I-NEXT:    addi ra, ra, -1
+; RV32I-NEXT:    addi s0, s0, -1
 ; RV32I-NEXT:    addi s8, s8, -1
-; RV32I-NEXT:    slli s3, s2, 30
-; RV32I-NEXT:    and s2, ra, s2
-; RV32I-NEXT:    and s8, s8, s0
-; RV32I-NEXT:    and a1, ra, s0
-; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s0, s0, 30
-; RV32I-NEXT:    and s6, s6, a0
+; RV32I-NEXT:    slli s3, s6, 30
+; RV32I-NEXT:    and s6, s0, s6
+; RV32I-NEXT:    and s8, s8, s2
+; RV32I-NEXT:    and a7, s0, s2
+; RV32I-NEXT:    slli s2, s2, 30
+; RV32I-NEXT:    and s7, s7, a0
 ; RV32I-NEXT:    seqz s5, s5
-; RV32I-NEXT:    seqz s6, s6
+; RV32I-NEXT:    seqz s7, s7
 ; RV32I-NEXT:    addi s5, s5, -1
-; RV32I-NEXT:    addi s6, s6, -1
+; RV32I-NEXT:    addi s7, s7, -1
 ; RV32I-NEXT:    and s3, s5, s3
-; RV32I-NEXT:    and s6, s6, s0
-; RV32I-NEXT:    and a0, s5, s0
-; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 324(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a1, a0
-; RV32I-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and s7, s7, s2
+; RV32I-NEXT:    and a0, s5, s2
+; RV32I-NEXT:    sw a0, 96(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, s10
+; RV32I-NEXT:    sw a0, 320(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 432(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 416(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 380(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 360(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s1
-; RV32I-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 432(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t5
+; RV32I-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, ra, a0
+; RV32I-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 440(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 444(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a6
+; RV32I-NEXT:    sw a0, 424(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t4
+; RV32I-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, t6, a0
+; RV32I-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    xor a0, a4, t5
-; RV32I-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, a0, a1
+; RV32I-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s10, a0, a1
-; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 400(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s11, a0, a1
-; RV32I-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor ra, a0, a1
-; RV32I-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 444(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 396(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 388(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 364(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, t3
-; RV32I-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, s2, a0
-; RV32I-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 296(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor ra, a0, a1
+; RV32I-NEXT:    xor a0, s6, t2
+; RV32I-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 288(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s4, a0, a1
-; RV32I-NEXT:    lw a0, 256(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 228(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 252(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 232(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s5, a0, a1
-; RV32I-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 188(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s7, a0, a1
-; RV32I-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, a0, s0
-; RV32I-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s1, 48(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 180(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, a0, a1
+; RV32I-NEXT:    lw a0, 124(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s0, t0, a0
+; RV32I-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 52(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s1, a0, s1
 ; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s2, a0, a1
-; RV32I-NEXT:    xor s3, a6, s3
-; RV32I-NEXT:    xor s8, s8, t2
-; RV32I-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, a4, s3
+; RV32I-NEXT:    xor s8, s8, t1
+; RV32I-NEXT:    lw a0, 304(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t0, a0, a1
 ; RV32I-NEXT:    lw a0, 268(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t1, a0, a1
-; RV32I-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 204(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t2, a0, a1
 ; RV32I-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 128(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 140(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t3, a0, a1
-; RV32I-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 56(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t4, a0, a1
-; RV32I-NEXT:    xor t5, a2, a5
-; RV32I-NEXT:    xor t6, a3, s6
-; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a0, a7
-; RV32I-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, a5, a0
+; RV32I-NEXT:    xor a6, a2, s7
+; RV32I-NEXT:    xor a7, a7, a3
+; RV32I-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 288(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 264(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 276(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 256(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 224(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 216(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 204(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 184(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    lw a3, 156(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 144(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 128(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 116(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    lw a4, 80(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 60(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 44(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a5, 32(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a6, 28(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a6
-; RV32I-NEXT:    lw a6, 16(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s6, 8(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, s6
-; RV32I-NEXT:    lw s6, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s6, s9
-; RV32I-NEXT:    sw s6, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 460(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 556(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 400(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 500(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 720(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a5, 16(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 8(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, s7
+; RV32I-NEXT:    lw s7, 320(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw s6, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 432(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s6, s9
-; RV32I-NEXT:    sw s6, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 620(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 616(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 468(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 612(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 404(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 504(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 728(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 440(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 728(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s6, s10
-; RV32I-NEXT:    sw s6, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s11, s11, s6
-; RV32I-NEXT:    lw s6, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor ra, ra, s6
-; RV32I-NEXT:    lw s6, 552(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 484(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, s9, s6
-; RV32I-NEXT:    lw s6, 408(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 736(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 444(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, s6
-; RV32I-NEXT:    sw s6, 736(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s6, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s6, s4
-; RV32I-NEXT:    sw s4, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s4, 300(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s5, s5, s4
-; RV32I-NEXT:    lw s4, 232(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s7, s4
-; RV32I-NEXT:    sw s4, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s4, 168(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s0, s4
-; RV32I-NEXT:    lw s0, 96(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s1, s0
-; RV32I-NEXT:    sw s0, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s0, 36(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s2, s0
-; RV32I-NEXT:    sw s0, 680(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s0, 724(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s3, s0
-; RV32I-NEXT:    sw s0, 724(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    xor s0, s8, t0
-; RV32I-NEXT:    lw t0, 308(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s7, s6
+; RV32I-NEXT:    sw s7, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 532(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 460(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 392(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 496(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 436(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s7, s6
+; RV32I-NEXT:    sw s7, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 416(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 468(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 396(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 444(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 424(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 708(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 384(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s7
+; RV32I-NEXT:    sw s7, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s6, s7
+; RV32I-NEXT:    sw s6, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s7, 600(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, s9, s7
+; RV32I-NEXT:    lw s7, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s10, s10, s7
+; RV32I-NEXT:    lw s7, 428(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s11, s11, s7
+; RV32I-NEXT:    lw s7, 388(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor ra, ra, s7
+; RV32I-NEXT:    lw s6, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s6, s4
+; RV32I-NEXT:    lw s4, 284(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, s5, s4
+; RV32I-NEXT:    sw s4, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s4, 228(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, t6, s4
+; RV32I-NEXT:    sw t6, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t6, 164(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s0, t6
+; RV32I-NEXT:    sw t6, 664(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t6, 100(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s1, t6
+; RV32I-NEXT:    sw t6, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t6, 32(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s2, t6
+; RV32I-NEXT:    sw t6, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t6, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, s3, t6
+; RV32I-NEXT:    sw t6, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    xor t6, s8, t0
+; RV32I-NEXT:    lw t0, 296(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t1, t1, t0
-; RV32I-NEXT:    lw t0, 244(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t0, 240(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t2, t2, t0
-; RV32I-NEXT:    lw t0, 172(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t0, 168(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t3, t3, t0
-; RV32I-NEXT:    lw t0, 108(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t0, 112(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t4, t4, t0
-; RV32I-NEXT:    lw t0, 40(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t0, 36(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t5, t5, t0
-; RV32I-NEXT:    lw t0, 732(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t6, t0
-; RV32I-NEXT:    sw t0, 732(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t0, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t0
+; RV32I-NEXT:    sw a6, 712(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    xor a7, a7, a0
-; RV32I-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, a1, a0
-; RV32I-NEXT:    lw a0, 260(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, a1, a0
+; RV32I-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
+; RV32I-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a3, a0
 ; RV32I-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a0
-; RV32I-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, a0
-; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a5, a0
-; RV32I-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a6, a0
-; RV32I-NEXT:    sw a0, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, a1, 4
-; RV32I-NEXT:    lw a0, 760(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a6, a1, a0
-; RV32I-NEXT:    and a5, a5, a0
+; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a4, a0
+; RV32I-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a0
+; RV32I-NEXT:    lw a4, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, a4, 4
+; RV32I-NEXT:    lw a2, 744(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a4, a4, a2
+; RV32I-NEXT:    and a3, a3, a2
+; RV32I-NEXT:    slli a4, a4, 4
+; RV32I-NEXT:    or a3, a3, a4
+; RV32I-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a4, a1, 4
+; RV32I-NEXT:    and a6, a1, a2
+; RV32I-NEXT:    and a4, a4, a2
 ; RV32I-NEXT:    slli a6, a6, 4
-; RV32I-NEXT:    or a1, a5, a6
-; RV32I-NEXT:    sw a1, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a1, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, a1, 4
-; RV32I-NEXT:    and t0, a1, a0
-; RV32I-NEXT:    and a6, a6, a0
-; RV32I-NEXT:    mv a1, a0
-; RV32I-NEXT:    slli t0, t0, 4
-; RV32I-NEXT:    or a0, a6, t0
-; RV32I-NEXT:    sw a0, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a0, a4, a6
+; RV32I-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a0, a1
+; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, a1, a0
+; RV32I-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    sw a0, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a0, a2
-; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, a2, a0
-; RV32I-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a2, a0
-; RV32I-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
+; RV32I-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, a1, a0
+; RV32I-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, a1, a0
+; RV32I-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s5, a1, a0
+; RV32I-NEXT:    lw a0, 420(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a0
+; RV32I-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a3
 ; RV32I-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
+; RV32I-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, s9, a0
 ; RV32I-NEXT:    sw a0, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s11
-; RV32I-NEXT:    sw a0, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor ra, ra, a0
-; RV32I-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s7, a2, a0
-; RV32I-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s10, a0
-; RV32I-NEXT:    lw a0, 428(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s11, a2, a0
+; RV32I-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s10, s10, a0
+; RV32I-NEXT:    lw a0, 476(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, s11, a0
+; RV32I-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 404(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, ra, a0
+; RV32I-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 368(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s11, a0, 4
+; RV32I-NEXT:    and ra, a0, a2
+; RV32I-NEXT:    and s11, s11, a2
+; RV32I-NEXT:    slli ra, ra, 4
+; RV32I-NEXT:    or ra, s11, ra
 ; RV32I-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s6, a0, 4
-; RV32I-NEXT:    and s10, a0, a1
-; RV32I-NEXT:    and s6, s6, a1
-; RV32I-NEXT:    slli s10, s10, 4
-; RV32I-NEXT:    or a0, s6, s10
-; RV32I-NEXT:    sw a0, 704(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s10, a0, 4
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    and s10, s10, a1
+; RV32I-NEXT:    srli s11, a0, 4
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    and s11, s11, a2
 ; RV32I-NEXT:    slli a0, a0, 4
-; RV32I-NEXT:    or a0, s10, a0
-; RV32I-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, a0, s5
-; RV32I-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s5, a1, a0
+; RV32I-NEXT:    or s11, s11, a0
+; RV32I-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, s7, a0
+; RV32I-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s0, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s0, s0, a0
+; RV32I-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s1, a0
+; RV32I-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, a2, a0
+; RV32I-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, a2, a0
+; RV32I-NEXT:    xor s8, t6, t1
+; RV32I-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t2, a0
 ; RV32I-NEXT:    lw a0, 236(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s1, s4, a0
-; RV32I-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, a1, a0
-; RV32I-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, a1, a0
-; RV32I-NEXT:    xor s4, s0, t1
-; RV32I-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, t2, a0
-; RV32I-NEXT:    lw a0, 240(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, a0
+; RV32I-NEXT:    xor t2, t3, a0
 ; RV32I-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, a0
-; RV32I-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, a0
-; RV32I-NEXT:    xor t6, a7, t6
-; RV32I-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a1, a0
-; RV32I-NEXT:    lw a0, 252(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a3, a0
-; RV32I-NEXT:    lw a0, 164(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a4, a0
+; RV32I-NEXT:    xor t3, t4, a0
 ; RV32I-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a1, a0
-; RV32I-NEXT:    xor s9, a5, s9
-; RV32I-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a6, a0
-; RV32I-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t5, a0
+; RV32I-NEXT:    xor t5, a7, t0
+; RV32I-NEXT:    lw a0, 300(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, a2, a0
+; RV32I-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a2, a0
+; RV32I-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a2, a0
+; RV32I-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, a5, a0
+; RV32I-NEXT:    xor s6, a4, s6
+; RV32I-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a0
+; RV32I-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, a0
+; RV32I-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a5, 616(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, a0
-; RV32I-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a1, a0
+; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, a0, s3
+; RV32I-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, s4, a0
+; RV32I-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s5, s5, a0
+; RV32I-NEXT:    lw a2, 456(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a1, a2
 ; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a0, a3
-; RV32I-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a1, a0
-; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 452(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s10, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, s10, a2
-; RV32I-NEXT:    lw s10, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor ra, s10, ra
-; RV32I-NEXT:    lw s10, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s7, s7, s10
-; RV32I-NEXT:    lw s10, 560(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s10
-; RV32I-NEXT:    lw s10, 464(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s11, s11, s10
-; RV32I-NEXT:    xor s5, s6, s5
-; RV32I-NEXT:    lw s6, 272(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s1, s1, s6
-; RV32I-NEXT:    lw s6, 176(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s2, s6
-; RV32I-NEXT:    lw s6, 84(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, s6
-; RV32I-NEXT:    xor s0, s4, s0
-; RV32I-NEXT:    lw s4, 276(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, s4
-; RV32I-NEXT:    lw s4, 180(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, s4
-; RV32I-NEXT:    lw s4, 88(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, s4
-; RV32I-NEXT:    xor t0, t6, t0
-; RV32I-NEXT:    lw t6, 284(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t1, t6
-; RV32I-NEXT:    lw t6, 184(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, t2, t6
-; RV32I-NEXT:    lw t6, 92(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, t6
-; RV32I-NEXT:    xor a4, s9, a4
-; RV32I-NEXT:    lw t6, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, a5, t6
-; RV32I-NEXT:    lw a5, 472(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, a5
-; RV32I-NEXT:    xor a0, a3, a0
-; RV32I-NEXT:    lw a3, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, a3
-; RV32I-NEXT:    lw a3, 476(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    xor a3, ra, s7
-; RV32I-NEXT:    lw a5, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s8, a5
-; RV32I-NEXT:    lw a5, 480(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s11, a5
-; RV32I-NEXT:    xor s1, s5, s1
-; RV32I-NEXT:    lw a5, 196(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s2, a5
-; RV32I-NEXT:    lw a5, 100(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, a5
-; RV32I-NEXT:    xor t3, s0, t3
-; RV32I-NEXT:    lw a5, 200(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, a5
-; RV32I-NEXT:    lw a5, 104(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, a5
-; RV32I-NEXT:    xor t0, t0, t1
-; RV32I-NEXT:    lw a5, 208(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t2, a5
-; RV32I-NEXT:    lw a5, 112(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, a5
-; RV32I-NEXT:    lw t2, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, t2, 2
-; RV32I-NEXT:    lw s5, 740(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and t2, t2, s5
-; RV32I-NEXT:    and a5, a5, s5
-; RV32I-NEXT:    slli t2, t2, 2
-; RV32I-NEXT:    or t2, a5, t2
-; RV32I-NEXT:    lw s0, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, s0, 2
-; RV32I-NEXT:    and s0, s0, s5
-; RV32I-NEXT:    and a5, a5, s5
-; RV32I-NEXT:    slli s0, s0, 2
-; RV32I-NEXT:    or a5, a5, s0
-; RV32I-NEXT:    xor a4, a4, t6
-; RV32I-NEXT:    lw t6, 492(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, a6, t6
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, a3, s4
-; RV32I-NEXT:    lw a3, 496(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, s6, a3
-; RV32I-NEXT:    lw s0, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, s0, 2
-; RV32I-NEXT:    and s0, s0, s5
-; RV32I-NEXT:    and a6, a6, s5
-; RV32I-NEXT:    slli s0, s0, 2
-; RV32I-NEXT:    or s0, a6, s0
-; RV32I-NEXT:    lw s4, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, s4, 2
-; RV32I-NEXT:    and s4, s4, s5
-; RV32I-NEXT:    and a6, a6, s5
-; RV32I-NEXT:    slli s4, s4, 2
-; RV32I-NEXT:    or s4, a6, s4
-; RV32I-NEXT:    xor s1, s1, s2
-; RV32I-NEXT:    lw a6, 132(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s3, a6
-; RV32I-NEXT:    xor t3, t3, t4
-; RV32I-NEXT:    lw a6, 124(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t5, a6
-; RV32I-NEXT:    xor t0, t0, t1
-; RV32I-NEXT:    lw a6, 136(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, a6
-; RV32I-NEXT:    xor a4, a4, t6
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    xor a1, s1, s2
-; RV32I-NEXT:    xor a3, t3, t4
+; RV32I-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, s10, a0
+; RV32I-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, s10, a0
+; RV32I-NEXT:    sw a0, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 432(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, s10, a0
+; RV32I-NEXT:    xor s0, s9, s0
+; RV32I-NEXT:    lw s9, 260(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s1, s9
+; RV32I-NEXT:    lw s9, 172(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s2, s9
+; RV32I-NEXT:    lw s9, 88(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s7, s9
+; RV32I-NEXT:    xor s8, s8, t1
+; RV32I-NEXT:    lw t1, 264(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, t2, t1
+; RV32I-NEXT:    lw t1, 176(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, t3, t1
+; RV32I-NEXT:    lw t1, 92(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, t1
+; RV32I-NEXT:    lw t1, 352(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t5, t1
+; RV32I-NEXT:    lw t3, 336(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t6, t3
+; RV32I-NEXT:    lw t3, 216(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t3
+; RV32I-NEXT:    lw t3, 144(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, a7, t3
+; RV32I-NEXT:    lw a7, 64(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a7, t0, a7
-; RV32I-NEXT:    lw a6, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, a6
-; RV32I-NEXT:    lw a6, 728(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a6
-; RV32I-NEXT:    lw a6, 736(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a6
-; RV32I-NEXT:    lw a6, 724(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a1, a6
-; RV32I-NEXT:    lw a1, 732(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a1
-; RV32I-NEXT:    lw a1, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, a1
-; RV32I-NEXT:    srli a1, t2, 1
-; RV32I-NEXT:    lw s2, 744(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and t1, t2, s2
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    slli t1, t1, 1
-; RV32I-NEXT:    or a1, a1, t1
+; RV32I-NEXT:    xor t0, s6, a3
+; RV32I-NEXT:    lw a3, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, a3
+; RV32I-NEXT:    lw a3, 472(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a3
+; RV32I-NEXT:    xor t6, s3, s4
+; RV32I-NEXT:    lw a3, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s5, a3
+; RV32I-NEXT:    lw a3, 480(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a3
+; RV32I-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a3
+; RV32I-NEXT:    lw a3, 440(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a3
+; RV32I-NEXT:    xor s0, s0, s1
+; RV32I-NEXT:    lw a3, 188(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s2, a3
+; RV32I-NEXT:    lw a3, 104(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s7, a3
+; RV32I-NEXT:    xor t2, s8, t2
+; RV32I-NEXT:    lw a3, 192(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, s9, a3
+; RV32I-NEXT:    lw a3, 108(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, a3
+; RV32I-NEXT:    lw a3, 244(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, a3
+; RV32I-NEXT:    lw a3, 80(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, a3
+; RV32I-NEXT:    lw s5, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, s5, 2
+; RV32I-NEXT:    lw s8, 724(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and s5, s5, s8
+; RV32I-NEXT:    and a3, a3, s8
+; RV32I-NEXT:    slli s5, s5, 2
+; RV32I-NEXT:    or s5, a3, s5
+; RV32I-NEXT:    lw s6, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, s6, 2
+; RV32I-NEXT:    and s6, s6, s8
+; RV32I-NEXT:    and a3, a3, s8
+; RV32I-NEXT:    slli s6, s6, 2
+; RV32I-NEXT:    or a3, a3, s6
+; RV32I-NEXT:    xor t0, t0, a4
+; RV32I-NEXT:    lw a4, 492(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a4
+; RV32I-NEXT:    xor t6, t6, s3
+; RV32I-NEXT:    lw a4, 488(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a4
+; RV32I-NEXT:    lw s7, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, s7, a4
+; RV32I-NEXT:    xor a1, a4, a1
+; RV32I-NEXT:    lw a4, 448(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a4
-; RV32I-NEXT:    sw a0, 736(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a0, s0, 1
-; RV32I-NEXT:    and a4, s0, s2
-; RV32I-NEXT:    and a0, a0, s2
-; RV32I-NEXT:    slli a4, a4, 1
-; RV32I-NEXT:    or t2, a0, a4
-; RV32I-NEXT:    xor a0, a3, t0
-; RV32I-NEXT:    sw a0, 732(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a0, a2, 8
-; RV32I-NEXT:    lw a6, 756(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a0, a0, a6
-; RV32I-NEXT:    srli a3, a2, 24
-; RV32I-NEXT:    or a3, a0, a3
-; RV32I-NEXT:    slli a0, a2, 24
-; RV32I-NEXT:    and a2, a2, a6
-; RV32I-NEXT:    slli a2, a2, 8
-; RV32I-NEXT:    or a2, a0, a2
-; RV32I-NEXT:    srli a0, a7, 8
-; RV32I-NEXT:    and a0, a0, a6
-; RV32I-NEXT:    srli a4, a7, 24
-; RV32I-NEXT:    or a4, a0, a4
-; RV32I-NEXT:    slli a0, a7, 24
-; RV32I-NEXT:    and a7, a7, a6
-; RV32I-NEXT:    slli a7, a7, 8
-; RV32I-NEXT:    or a7, a0, a7
-; RV32I-NEXT:    srli a0, a5, 1
-; RV32I-NEXT:    and a5, a5, s2
-; RV32I-NEXT:    and a0, a0, s2
+; RV32I-NEXT:    srli a4, ra, 2
+; RV32I-NEXT:    and s3, ra, s8
+; RV32I-NEXT:    and a4, a4, s8
+; RV32I-NEXT:    slli s3, s3, 2
+; RV32I-NEXT:    or s3, a4, s3
+; RV32I-NEXT:    srli a4, s11, 2
+; RV32I-NEXT:    and s6, s11, s8
+; RV32I-NEXT:    and a4, a4, s8
+; RV32I-NEXT:    slli s6, s6, 2
+; RV32I-NEXT:    or a4, a4, s6
+; RV32I-NEXT:    xor s0, s0, s1
+; RV32I-NEXT:    lw s1, 136(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s2, s1
+; RV32I-NEXT:    xor t2, t2, s4
+; RV32I-NEXT:    lw s2, 132(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, s2
+; RV32I-NEXT:    xor t5, t1, t5
+; RV32I-NEXT:    xor a6, t5, a6
+; RV32I-NEXT:    lw t5, 96(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t5
+; RV32I-NEXT:    xor a5, t0, a5
+; RV32I-NEXT:    xor a2, t6, a2
+; RV32I-NEXT:    lw t0, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t0
+; RV32I-NEXT:    lw t0, 720(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t0
+; RV32I-NEXT:    xor s0, s0, s1
+; RV32I-NEXT:    xor t0, t2, t4
+; RV32I-NEXT:    xor a6, a6, t3
+; RV32I-NEXT:    lw t2, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t2
+; RV32I-NEXT:    lw t2, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t2
+; RV32I-NEXT:    lw t2, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t2
+; RV32I-NEXT:    lw t2, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, s0, t2
+; RV32I-NEXT:    lw t2, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, t2
+; RV32I-NEXT:    srli t2, s5, 1
+; RV32I-NEXT:    lw s2, 728(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and t4, s5, s2
+; RV32I-NEXT:    and t2, t2, s2
+; RV32I-NEXT:    slli t4, t4, 1
+; RV32I-NEXT:    or t4, t2, t4
+; RV32I-NEXT:    xor a2, a2, a5
+; RV32I-NEXT:    sw a2, 720(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a2, s3, 1
+; RV32I-NEXT:    and a5, s3, s2
+; RV32I-NEXT:    and a2, a2, s2
 ; RV32I-NEXT:    slli a5, a5, 1
-; RV32I-NEXT:    or a0, a0, a5
-; RV32I-NEXT:    srli a5, a5, 31
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli t0, a1, 31
-; RV32I-NEXT:    and a5, a5, t0
-; RV32I-NEXT:    sw a5, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a2, a2, a3
+; RV32I-NEXT:    or t2, a2, a5
+; RV32I-NEXT:    xor a2, t0, t3
 ; RV32I-NEXT:    sw a2, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a2, s4, 1
-; RV32I-NEXT:    and a3, s4, s2
-; RV32I-NEXT:    and a2, a2, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or t4, a2, a3
-; RV32I-NEXT:    srli a3, a3, 31
-; RV32I-NEXT:    seqz a2, a3
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t2, 31
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 728(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a2, a7, a4
-; RV32I-NEXT:    sw a2, 724(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 1
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 712(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 2
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 704(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 8
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 3
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 16
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 4
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 32
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 5
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 64
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 6
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 128
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 7
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 256
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 8
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 512
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 9
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 1024
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 10
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a4, 456(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a2, a0, a4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 11
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a5, 1
-; RV32I-NEXT:    and a2, a0, a5
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 12
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a6, 2
-; RV32I-NEXT:    and a2, a0, a6
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 13
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a7, 4
-; RV32I-NEXT:    and a2, a0, a7
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 14
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t0, 8
-; RV32I-NEXT:    and a2, a0, t0
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 15
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t1, 16
-; RV32I-NEXT:    and a2, a0, t1
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 16
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s3, 32
-; RV32I-NEXT:    and a2, a0, s3
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 17
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t5, 64
-; RV32I-NEXT:    and a2, a0, t5
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 18
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, s7, 24
+; RV32I-NEXT:    lw t0, 740(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a5, a1, t0
+; RV32I-NEXT:    slli a5, a5, 8
+; RV32I-NEXT:    or a2, a2, a5
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    srli a1, a1, 8
+; RV32I-NEXT:    and a1, a1, t0
+; RV32I-NEXT:    srli a0, a0, 24
+; RV32I-NEXT:    or a0, a1, a0
+; RV32I-NEXT:    slli t1, t1, 24
+; RV32I-NEXT:    and a1, a6, t0
+; RV32I-NEXT:    slli a1, a1, 8
+; RV32I-NEXT:    or a1, t1, a1
+; RV32I-NEXT:    xor a5, a6, a7
+; RV32I-NEXT:    srli a6, a6, 8
+; RV32I-NEXT:    and a6, a6, t0
+; RV32I-NEXT:    srli a5, a5, 24
+; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    or a0, a2, a0
+; RV32I-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a1, a1, a5
+; RV32I-NEXT:    sw a1, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a0, a3, 1
+; RV32I-NEXT:    and a1, a3, s2
+; RV32I-NEXT:    and a0, a0, s2
+; RV32I-NEXT:    slli a1, a1, 1
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    srli a1, a1, 31
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 31
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 708(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a1, a4, 1
+; RV32I-NEXT:    and a2, a4, s2
+; RV32I-NEXT:    and a1, a1, s2
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or t5, a1, a2
+; RV32I-NEXT:    srli a2, a2, 31
+; RV32I-NEXT:    seqz a1, a2
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t2, 31
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 2
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 1
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 2
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 8
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 3
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 676(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 16
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 4
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 32
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 5
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 64
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 6
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 128
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 7
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 256
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 8
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 512
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 9
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 1024
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 10
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a3, 464(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a1, a0, a3
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 11
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a4, 1
+; RV32I-NEXT:    and a1, a0, a4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 12
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a5, 2
+; RV32I-NEXT:    and a1, a0, a5
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 13
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s1, 4
+; RV32I-NEXT:    and a1, a0, s1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 14
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a7, 8
+; RV32I-NEXT:    and a1, a0, a7
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 15
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t0, 16
+; RV32I-NEXT:    and a1, a0, t0
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 16
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t1, 32
+; RV32I-NEXT:    and a1, a0, t1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 17
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t3, 64
+; RV32I-NEXT:    and a1, a0, t3
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 18
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 664(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t6, 128
-; RV32I-NEXT:    and a2, a0, t6
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 19
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s0, 256
-; RV32I-NEXT:    and a2, a0, s0
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 20
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, t6
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 19
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s3, 256
+; RV32I-NEXT:    and a1, a0, s3
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 20
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui s4, 512
-; RV32I-NEXT:    and a2, a0, s4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 21
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s6, 1024
-; RV32I-NEXT:    and a2, a0, s6
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 22
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s8, 2048
-; RV32I-NEXT:    and a2, a0, s8
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 23
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, s4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 21
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 1024
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 22
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 2048
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 23
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui s10, 4096
-; RV32I-NEXT:    and a2, a0, s10
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 24
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 8192
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 25
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 16384
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 26
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 32768
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 27
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 65536
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 28
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 131072
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, a1, 29
-; RV32I-NEXT:    and a2, a2, a3
-; RV32I-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 1
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    and a2, a2, a1
-; RV32I-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a1, a1, 30
-; RV32I-NEXT:    lui t3, 262144
-; RV32I-NEXT:    and a0, a0, t3
+; RV32I-NEXT:    and a1, a0, s10
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 24
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui ra, 8192
+; RV32I-NEXT:    and a1, a0, ra
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 25
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 16384
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 26
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 32768
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 27
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 65536
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 28
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 131072
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 29
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    and a1, a1, t4
+; RV32I-NEXT:    sw a1, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t4, t4, 30
+; RV32I-NEXT:    lui a6, 262144
+; RV32I-NEXT:    and a0, a0, a6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 2
+; RV32I-NEXT:    and a0, a0, t4
+; RV32I-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 1
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 4
+; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 2
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 8
+; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 8
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 3
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 16
+; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 16
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 4
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 32
+; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 32
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 5
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 64
+; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 64
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 6
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 128
+; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 128
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 7
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 256
+; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 256
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 8
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 512
+; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 512
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t2, 9
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t4, 1024
+; RV32I-NEXT:    slli s0, t2, 9
+; RV32I-NEXT:    and a0, a0, s0
+; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 1024
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 10
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, a4
+; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, a3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 11
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, a5
+; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, a4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 12
-; RV32I-NEXT:    and s9, a0, a1
-; RV32I-NEXT:    and a0, t4, a6
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, a5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s1, t2, 13
-; RV32I-NEXT:    and a0, a0, s1
-; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, a7
+; RV32I-NEXT:    slli a1, t2, 13
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, s1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 14
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, t0
+; RV32I-NEXT:    and s6, a0, a1
+; RV32I-NEXT:    and a0, t5, a7
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 15
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, t1
+; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a4, t2, 16
-; RV32I-NEXT:    and s7, a0, a4
-; RV32I-NEXT:    and a0, t4, s3
+; RV32I-NEXT:    slli a1, t2, 16
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a2, t2, 17
-; RV32I-NEXT:    and s3, a0, a2
-; RV32I-NEXT:    and a0, t4, t5
+; RV32I-NEXT:    slli s1, t2, 17
+; RV32I-NEXT:    and a0, a0, s1
+; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 18
-; RV32I-NEXT:    and s11, a0, a1
-; RV32I-NEXT:    and a0, t4, t6
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t2, 19
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, s0
+; RV32I-NEXT:    slli a4, t2, 19
+; RV32I-NEXT:    and s1, a0, a4
+; RV32I-NEXT:    and a0, t5, s3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t2, 20
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, s4
+; RV32I-NEXT:    slli a2, t2, 20
+; RV32I-NEXT:    and t6, a0, a2
+; RV32I-NEXT:    and a0, t5, s4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s0, t2, 21
-; RV32I-NEXT:    and a0, a0, s0
-; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, s6
+; RV32I-NEXT:    slli a1, t2, 21
+; RV32I-NEXT:    and s5, a0, a1
+; RV32I-NEXT:    lui a0, 1024
+; RV32I-NEXT:    and a0, t5, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    slli a1, t2, 22
-; RV32I-NEXT:    and s0, a0, a1
-; RV32I-NEXT:    and a1, t4, s8
+; RV32I-NEXT:    and s9, a0, a1
+; RV32I-NEXT:    lui a0, 2048
+; RV32I-NEXT:    and a0, t5, a0
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, t2, 23
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, s10
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, t2, 24
+; RV32I-NEXT:    and s10, a0, a1
+; RV32I-NEXT:    and a0, t5, ra
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, t2, 25
+; RV32I-NEXT:    and ra, a0, a1
+; RV32I-NEXT:    lui a0, 16384
+; RV32I-NEXT:    and a0, t5, a0
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, t2, 26
+; RV32I-NEXT:    and t3, a0, a1
+; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    and a1, t5, a0
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a3, t2, 23
-; RV32I-NEXT:    and t6, a1, a3
-; RV32I-NEXT:    and a2, t4, s10
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a3, t2, 24
-; RV32I-NEXT:    and s1, a2, a3
-; RV32I-NEXT:    lui a0, 8192
-; RV32I-NEXT:    and a3, t4, a0
+; RV32I-NEXT:    slli a3, t2, 27
+; RV32I-NEXT:    and t4, a1, a3
+; RV32I-NEXT:    lui a0, 65536
+; RV32I-NEXT:    and a3, t5, a0
 ; RV32I-NEXT:    seqz a3, a3
 ; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli a5, t2, 25
-; RV32I-NEXT:    and s4, a3, a5
-; RV32I-NEXT:    lui a0, 16384
-; RV32I-NEXT:    and a5, t4, a0
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a7, t2, 26
-; RV32I-NEXT:    and s6, a5, a7
-; RV32I-NEXT:    lui a0, 32768
-; RV32I-NEXT:    and a7, t4, a0
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    slli t0, t2, 27
-; RV32I-NEXT:    and s8, a7, t0
-; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and t0, t4, a0
-; RV32I-NEXT:    seqz t0, t0
-; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    slli t1, t2, 28
-; RV32I-NEXT:    and s10, t0, t1
+; RV32I-NEXT:    slli a5, t2, 28
+; RV32I-NEXT:    and s3, a3, a5
 ; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and t1, t4, a0
-; RV32I-NEXT:    seqz t1, t1
-; RV32I-NEXT:    addi t1, t1, -1
-; RV32I-NEXT:    slli a6, t2, 29
-; RV32I-NEXT:    and t5, t1, a6
-; RV32I-NEXT:    and t1, t4, t3
-; RV32I-NEXT:    andi t4, t4, 1
-; RV32I-NEXT:    seqz t4, t4
-; RV32I-NEXT:    addi t4, t4, -1
-; RV32I-NEXT:    and t4, t4, t2
+; RV32I-NEXT:    and a5, t5, a0
+; RV32I-NEXT:    seqz a5, a5
+; RV32I-NEXT:    addi a0, a5, -1
+; RV32I-NEXT:    slli a5, t2, 29
+; RV32I-NEXT:    and s4, a0, a5
+; RV32I-NEXT:    and a0, t5, a6
+; RV32I-NEXT:    andi t5, t5, 1
+; RV32I-NEXT:    seqz t5, t5
+; RV32I-NEXT:    addi t5, t5, -1
+; RV32I-NEXT:    and t5, t5, t2
 ; RV32I-NEXT:    slli t2, t2, 30
-; RV32I-NEXT:    seqz t1, t1
-; RV32I-NEXT:    addi t1, t1, -1
-; RV32I-NEXT:    and t1, t1, t2
-; RV32I-NEXT:    lw a0, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a1, a0
-; RV32I-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    lw a3, 652(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    lw a4, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a5, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a6, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a6
-; RV32I-NEXT:    lw a6, 600(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a7, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, a7
-; RV32I-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, a7
-; RV32I-NEXT:    lw a7, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw t0, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw t3, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t3
-; RV32I-NEXT:    lw t3, 548(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw ra, 544(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, ra
-; RV32I-NEXT:    lw ra, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, ra, s9
-; RV32I-NEXT:    xor s3, s7, s3
-; RV32I-NEXT:    xor t6, s0, t6
-; RV32I-NEXT:    xor t1, t5, t1
-; RV32I-NEXT:    xor a0, t2, a0
-; RV32I-NEXT:    lw t2, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t2
-; RV32I-NEXT:    lw t2, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, t2
-; RV32I-NEXT:    lw t2, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t2
-; RV32I-NEXT:    lw t2, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a4, t2
-; RV32I-NEXT:    lw a4, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a4
-; RV32I-NEXT:    lw a4, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, a4
-; RV32I-NEXT:    lw t5, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a4, t5, 4
-; RV32I-NEXT:    lw s7, 760(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and t5, t5, s7
-; RV32I-NEXT:    and a4, a4, s7
-; RV32I-NEXT:    slli t5, t5, 4
-; RV32I-NEXT:    or t5, a4, t5
-; RV32I-NEXT:    xor a7, t4, a7
-; RV32I-NEXT:    lw a4, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, a4
-; RV32I-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, a4
-; RV32I-NEXT:    lw a4, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, s9, a4
-; RV32I-NEXT:    xor s0, s3, s11
-; RV32I-NEXT:    xor t6, t6, s1
-; RV32I-NEXT:    lw a4, 728(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, t1, a4
-; RV32I-NEXT:    lw s1, 724(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli t1, s1, 4
-; RV32I-NEXT:    and s1, s1, s7
-; RV32I-NEXT:    and t1, t1, s7
-; RV32I-NEXT:    slli s1, s1, 4
-; RV32I-NEXT:    or t1, t1, s1
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    lw a3, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, t2, a3
-; RV32I-NEXT:    lw t2, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t2
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t3, t0
-; RV32I-NEXT:    lw t2, 552(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, t4, t2
-; RV32I-NEXT:    lw t3, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, s0, t3
-; RV32I-NEXT:    xor t4, t6, s4
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    and t2, a0, t2
+; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, a1, a0
+; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a0, a1
+; RV32I-NEXT:    lw a0, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a0, a1
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, a0, a1
+; RV32I-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a3, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a5, a3
-; RV32I-NEXT:    xor a5, a7, t0
-; RV32I-NEXT:    lw a7, 556(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, t2, a7
-; RV32I-NEXT:    lw t0, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t3, t0
-; RV32I-NEXT:    xor t2, t4, s6
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a3, a2
-; RV32I-NEXT:    srli a3, t5, 2
-; RV32I-NEXT:    and t3, t5, s5
-; RV32I-NEXT:    and a3, a3, s5
-; RV32I-NEXT:    slli t3, t3, 2
-; RV32I-NEXT:    or a3, a3, t3
-; RV32I-NEXT:    xor a5, a5, a7
-; RV32I-NEXT:    lw a7, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a0, a3
+; RV32I-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a0, a4
+; RV32I-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a5, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a0, a5
+; RV32I-NEXT:    lw a1, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a0, a1, 4
+; RV32I-NEXT:    lw s0, 744(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a1, a1, s0
+; RV32I-NEXT:    and a0, a0, s0
+; RV32I-NEXT:    slli a1, a1, 4
+; RV32I-NEXT:    or a2, a0, a1
+; RV32I-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t5, a0
+; RV32I-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw t5, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, a0, t5
+; RV32I-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s11, 544(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, s11
+; RV32I-NEXT:    lw s11, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s11, s11, s7
+; RV32I-NEXT:    lw s7, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    xor t6, s1, t6
+; RV32I-NEXT:    xor s1, s10, ra
+; RV32I-NEXT:    lw s10, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s7, s10, 4
+; RV32I-NEXT:    and s10, s10, s0
+; RV32I-NEXT:    and s7, s7, s0
+; RV32I-NEXT:    slli s10, s10, 4
+; RV32I-NEXT:    or s7, s7, s10
+; RV32I-NEXT:    xor a6, t1, a6
+; RV32I-NEXT:    lw t1, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t1
+; RV32I-NEXT:    lw t1, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, t1
+; RV32I-NEXT:    lw t1, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t1
+; RV32I-NEXT:    lw t1, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t1
+; RV32I-NEXT:    lw t1, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t1
+; RV32I-NEXT:    xor a1, a1, t5
+; RV32I-NEXT:    lw t1, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t1
+; RV32I-NEXT:    lw t1, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, s11, t1
+; RV32I-NEXT:    lw t5, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, s6, t5
+; RV32I-NEXT:    xor t6, t6, s5
+; RV32I-NEXT:    xor t3, s1, t3
+; RV32I-NEXT:    xor a6, a6, a7
+; RV32I-NEXT:    lw a7, 672(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a7, t0, a7
-; RV32I-NEXT:    xor t0, t2, s8
-; RV32I-NEXT:    srli t2, t1, 2
-; RV32I-NEXT:    and t1, t1, s5
-; RV32I-NEXT:    and t2, t2, s5
-; RV32I-NEXT:    slli t1, t1, 2
-; RV32I-NEXT:    or t1, t2, t1
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a1
-; RV32I-NEXT:    xor a5, a5, a7
-; RV32I-NEXT:    xor a7, t0, s10
-; RV32I-NEXT:    srli a1, a3, 1
-; RV32I-NEXT:    xor a2, a0, a2
-; RV32I-NEXT:    srli a0, t1, 1
-; RV32I-NEXT:    and a3, a3, s2
-; RV32I-NEXT:    and t0, t1, s2
+; RV32I-NEXT:    lw t0, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t0
+; RV32I-NEXT:    lw t0, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t0
+; RV32I-NEXT:    lw t0, 596(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t0
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t1, a1
+; RV32I-NEXT:    lw t0, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t5, t0
+; RV32I-NEXT:    xor t1, t6, s9
+; RV32I-NEXT:    xor t3, t3, t4
+; RV32I-NEXT:    lw t4, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t4
+; RV32I-NEXT:    lw t4, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t4
+; RV32I-NEXT:    lw t4, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t4
+; RV32I-NEXT:    lw t4, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t4
+; RV32I-NEXT:    lw t4, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t4
+; RV32I-NEXT:    srli t4, a2, 2
+; RV32I-NEXT:    and a2, a2, s8
+; RV32I-NEXT:    and t4, t4, s8
+; RV32I-NEXT:    slli a2, a2, 2
+; RV32I-NEXT:    or a2, t4, a2
+; RV32I-NEXT:    lw t4, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, a0, t4
+; RV32I-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t0, a1
+; RV32I-NEXT:    lw t0, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t1, t0
+; RV32I-NEXT:    xor t1, t3, s3
+; RV32I-NEXT:    srli t3, s7, 2
+; RV32I-NEXT:    and t5, s7, s8
+; RV32I-NEXT:    and t3, t3, s8
+; RV32I-NEXT:    slli t5, t5, 2
+; RV32I-NEXT:    or t3, t3, t5
+; RV32I-NEXT:    lw t5, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t5
+; RV32I-NEXT:    lw t5, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t5
+; RV32I-NEXT:    lw t5, 532(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t5
+; RV32I-NEXT:    xor t1, t1, s4
+; RV32I-NEXT:    xor a7, a6, a7
+; RV32I-NEXT:    xor a3, a7, a3
+; RV32I-NEXT:    lw a7, 608(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, a7
-; RV32I-NEXT:    and a7, a1, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    xor a6, a2, a6
+; RV32I-NEXT:    xor a0, t4, a0
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    xor a7, t1, t2
+; RV32I-NEXT:    xor a4, a3, a4
+; RV32I-NEXT:    slli a6, a6, 24
+; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a1
+; RV32I-NEXT:    srli a1, a2, 1
+; RV32I-NEXT:    xor t0, a0, t0
+; RV32I-NEXT:    srli a0, t3, 1
+; RV32I-NEXT:    and a2, a2, s2
+; RV32I-NEXT:    and a3, t3, s2
+; RV32I-NEXT:    lw t1, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, t1
+; RV32I-NEXT:    and t1, a1, s2
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or a2, t1, a2
 ; RV32I-NEXT:    and t1, a0, s2
-; RV32I-NEXT:    slli t0, t0, 1
-; RV32I-NEXT:    xor a4, a5, a4
-; RV32I-NEXT:    or a2, a7, a3
-; RV32I-NEXT:    or a3, t1, t0
-; RV32I-NEXT:    srli a5, a6, 8
-; RV32I-NEXT:    srli a7, a6, 24
-; RV32I-NEXT:    slli t0, a6, 24
-; RV32I-NEXT:    lw t2, 756(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a6, a6, t2
-; RV32I-NEXT:    and a5, a5, t2
-; RV32I-NEXT:    or a5, a5, a7
-; RV32I-NEXT:    srli a7, a4, 8
-; RV32I-NEXT:    slli a6, a6, 8
-; RV32I-NEXT:    or a6, t0, a6
-; RV32I-NEXT:    srli t0, a4, 24
-; RV32I-NEXT:    and a7, a7, t2
-; RV32I-NEXT:    or a7, a7, t0
-; RV32I-NEXT:    slli t0, a4, 24
+; RV32I-NEXT:    slli a3, a3, 1
+; RV32I-NEXT:    or a3, t1, a3
+; RV32I-NEXT:    lw t2, 740(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and t1, a4, t2
+; RV32I-NEXT:    slli t1, t1, 8
+; RV32I-NEXT:    or a6, a6, t1
+; RV32I-NEXT:    slli t4, t4, 24
+; RV32I-NEXT:    xor a5, a4, a5
+; RV32I-NEXT:    srli a4, a4, 8
 ; RV32I-NEXT:    and a4, a4, t2
-; RV32I-NEXT:    slli a4, a4, 8
-; RV32I-NEXT:    or t0, t0, a4
-; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    srli a5, a5, 24
+; RV32I-NEXT:    or a4, a4, a5
+; RV32I-NEXT:    and a5, t0, t2
+; RV32I-NEXT:    slli a5, a5, 8
+; RV32I-NEXT:    or a5, t4, a5
+; RV32I-NEXT:    xor a7, t0, a7
+; RV32I-NEXT:    srli t0, t0, 8
+; RV32I-NEXT:    and t0, t0, t2
+; RV32I-NEXT:    srli a7, a7, 24
+; RV32I-NEXT:    or a7, t0, a7
+; RV32I-NEXT:    or a6, a6, a4
 ; RV32I-NEXT:    lui a4, 349525
 ; RV32I-NEXT:    addi a4, a4, 1364
-; RV32I-NEXT:    or a6, t0, a7
-; RV32I-NEXT:    srli a7, a5, 4
-; RV32I-NEXT:    and a5, a5, s7
-; RV32I-NEXT:    and a7, a7, s7
-; RV32I-NEXT:    slli a5, a5, 4
-; RV32I-NEXT:    or a5, a7, a5
+; RV32I-NEXT:    or a5, a5, a7
 ; RV32I-NEXT:    srli a7, a6, 4
-; RV32I-NEXT:    and a6, a6, s7
-; RV32I-NEXT:    and a7, a7, s7
+; RV32I-NEXT:    and a6, a6, s0
+; RV32I-NEXT:    and a7, a7, s0
 ; RV32I-NEXT:    slli a6, a6, 4
 ; RV32I-NEXT:    or a6, a7, a6
-; RV32I-NEXT:    srli a7, a5, 2
-; RV32I-NEXT:    and a5, a5, s5
-; RV32I-NEXT:    and a7, a7, s5
-; RV32I-NEXT:    slli a5, a5, 2
+; RV32I-NEXT:    srli a7, a5, 4
+; RV32I-NEXT:    and a5, a5, s0
+; RV32I-NEXT:    and a7, a7, s0
+; RV32I-NEXT:    slli a5, a5, 4
 ; RV32I-NEXT:    or a5, a7, a5
 ; RV32I-NEXT:    srli a7, a6, 2
-; RV32I-NEXT:    and a6, a6, s5
-; RV32I-NEXT:    and a7, a7, s5
+; RV32I-NEXT:    and a6, a6, s8
+; RV32I-NEXT:    and a7, a7, s8
 ; RV32I-NEXT:    slli a6, a6, 2
 ; RV32I-NEXT:    or a6, a7, a6
-; RV32I-NEXT:    srli a7, a5, 1
-; RV32I-NEXT:    and a5, a5, s2
-; RV32I-NEXT:    and a7, a7, a4
-; RV32I-NEXT:    slli a5, a5, 1
+; RV32I-NEXT:    srli a7, a5, 2
+; RV32I-NEXT:    and a5, a5, s8
+; RV32I-NEXT:    and a7, a7, s8
+; RV32I-NEXT:    slli a5, a5, 2
 ; RV32I-NEXT:    or a5, a7, a5
 ; RV32I-NEXT:    srli a7, a6, 1
 ; RV32I-NEXT:    and a6, a6, s2
 ; RV32I-NEXT:    and a7, a7, a4
 ; RV32I-NEXT:    slli a6, a6, 1
 ; RV32I-NEXT:    or a6, a7, a6
-; RV32I-NEXT:    srli a5, a5, 1
+; RV32I-NEXT:    srli a7, a5, 1
+; RV32I-NEXT:    and a5, a5, s2
+; RV32I-NEXT:    and a7, a7, a4
+; RV32I-NEXT:    slli a5, a5, 1
+; RV32I-NEXT:    or a5, a7, a5
 ; RV32I-NEXT:    srli a6, a6, 1
-; RV32I-NEXT:    lw a7, 736(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a7
-; RV32I-NEXT:    lw a7, 732(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a5, a5, 1
+; RV32I-NEXT:    lw a7, 720(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a6, a6, a7
-; RV32I-NEXT:    srli a7, a5, 8
-; RV32I-NEXT:    srli t0, a5, 24
-; RV32I-NEXT:    slli t1, a5, 24
-; RV32I-NEXT:    and a5, a5, t2
+; RV32I-NEXT:    lw a7, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a7
+; RV32I-NEXT:    srli a7, a6, 8
+; RV32I-NEXT:    srli t0, a6, 24
+; RV32I-NEXT:    slli t1, a6, 24
+; RV32I-NEXT:    and a6, a6, t2
 ; RV32I-NEXT:    and a7, a7, t2
 ; RV32I-NEXT:    or a7, a7, t0
-; RV32I-NEXT:    srli t0, a6, 8
-; RV32I-NEXT:    slli a5, a5, 8
-; RV32I-NEXT:    or a5, t1, a5
-; RV32I-NEXT:    srli t1, a6, 24
+; RV32I-NEXT:    srli t0, a5, 8
+; RV32I-NEXT:    slli a6, a6, 8
+; RV32I-NEXT:    or a6, t1, a6
+; RV32I-NEXT:    srli t1, a5, 24
 ; RV32I-NEXT:    and t0, t0, t2
 ; RV32I-NEXT:    or t0, t0, t1
-; RV32I-NEXT:    and t1, a6, t2
-; RV32I-NEXT:    slli a6, a6, 24
+; RV32I-NEXT:    and t1, a5, t2
+; RV32I-NEXT:    slli a5, a5, 24
 ; RV32I-NEXT:    slli t1, t1, 8
-; RV32I-NEXT:    or a6, a6, t1
-; RV32I-NEXT:    or a5, a5, a7
-; RV32I-NEXT:    or a6, a6, t0
-; RV32I-NEXT:    srli a7, a5, 4
-; RV32I-NEXT:    and a5, a5, s7
-; RV32I-NEXT:    srli t0, a6, 4
-; RV32I-NEXT:    and a6, a6, s7
-; RV32I-NEXT:    and a7, a7, s7
-; RV32I-NEXT:    and t0, t0, s7
-; RV32I-NEXT:    slli a5, a5, 4
+; RV32I-NEXT:    or a5, a5, t1
+; RV32I-NEXT:    or a6, a6, a7
+; RV32I-NEXT:    or a5, a5, t0
+; RV32I-NEXT:    srli a7, a6, 4
+; RV32I-NEXT:    and a6, a6, s0
+; RV32I-NEXT:    srli t0, a5, 4
+; RV32I-NEXT:    and a5, a5, s0
+; RV32I-NEXT:    and a7, a7, s0
+; RV32I-NEXT:    and t0, t0, s0
 ; RV32I-NEXT:    slli a6, a6, 4
-; RV32I-NEXT:    or a5, a7, a5
-; RV32I-NEXT:    or a6, t0, a6
-; RV32I-NEXT:    srli a7, a5, 2
-; RV32I-NEXT:    and a5, a5, s5
-; RV32I-NEXT:    srli t0, a6, 2
-; RV32I-NEXT:    and a6, a6, s5
-; RV32I-NEXT:    and a7, a7, s5
-; RV32I-NEXT:    and t0, t0, s5
-; RV32I-NEXT:    slli a5, a5, 2
-; RV32I-NEXT:    or a5, a7, a5
+; RV32I-NEXT:    slli a5, a5, 4
+; RV32I-NEXT:    or a6, a7, a6
+; RV32I-NEXT:    or a5, t0, a5
+; RV32I-NEXT:    srli a7, a6, 2
+; RV32I-NEXT:    and a6, a6, s8
+; RV32I-NEXT:    srli t0, a5, 2
+; RV32I-NEXT:    and a5, a5, s8
+; RV32I-NEXT:    and a7, a7, s8
+; RV32I-NEXT:    and t0, t0, s8
 ; RV32I-NEXT:    slli a6, a6, 2
-; RV32I-NEXT:    or a6, t0, a6
-; RV32I-NEXT:    srli a7, a5, 1
-; RV32I-NEXT:    and a5, a5, s2
-; RV32I-NEXT:    and t0, a6, s2
-; RV32I-NEXT:    srli a6, a6, 1
+; RV32I-NEXT:    or a6, a7, a6
+; RV32I-NEXT:    slli a5, a5, 2
+; RV32I-NEXT:    or a5, t0, a5
+; RV32I-NEXT:    srli a7, a6, 1
+; RV32I-NEXT:    and a6, a6, s2
+; RV32I-NEXT:    and t0, a5, s2
+; RV32I-NEXT:    srli a5, a5, 1
 ; RV32I-NEXT:    and a7, a7, a4
-; RV32I-NEXT:    and a4, a6, a4
-; RV32I-NEXT:    slli a5, a5, 1
-; RV32I-NEXT:    or a5, a7, a5
+; RV32I-NEXT:    and a4, a5, a4
+; RV32I-NEXT:    slli a6, a6, 1
+; RV32I-NEXT:    or a5, a7, a6
 ; RV32I-NEXT:    slli t0, t0, 1
 ; RV32I-NEXT:    or a4, a4, t0
 ; RV32I-NEXT:    slli a1, a1, 31
@@ -4841,30 +4829,30 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    or a0, a4, a0
 ; RV32I-NEXT:    srli a2, a2, 1
 ; RV32I-NEXT:    srli a3, a3, 1
-; RV32I-NEXT:    lw a4, 748(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    sw a1, 0(a4)
 ; RV32I-NEXT:    sw a2, 4(a4)
 ; RV32I-NEXT:    sw a0, 8(a4)
 ; RV32I-NEXT:    sw a3, 12(a4)
-; RV32I-NEXT:    lw a4, 752(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 736(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    sw a1, 0(a4)
 ; RV32I-NEXT:    sw a2, 4(a4)
 ; RV32I-NEXT:    sw a0, 8(a4)
 ; RV32I-NEXT:    sw a3, 12(a4)
-; RV32I-NEXT:    lw ra, 812(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s0, 808(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s1, 804(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s2, 800(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s3, 796(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s4, 792(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s5, 788(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s6, 784(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s7, 780(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s8, 776(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 772(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s10, 768(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s11, 764(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    addi sp, sp, 816
+; RV32I-NEXT:    lw ra, 796(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s0, 792(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 788(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s2, 784(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s3, 780(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s4, 776(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s5, 772(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s6, 768(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 764(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 760(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s9, 756(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 752(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s11, 748(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    addi sp, sp, 800
 ; RV32I-NEXT:    ret
 ;
 ; RV64I-LABEL: commutative_clmulh_v2i64:
@@ -4885,115 +4873,116 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    sd s11, 1016(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sd a5, 1008(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sd a4, 1000(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    mv a4, a0
-; RV64I-NEXT:    srli a5, a2, 24
-; RV64I-NEXT:    lui s3, 4080
-; RV64I-NEXT:    srli a6, a2, 8
+; RV64I-NEXT:    mv s2, a1
+; RV64I-NEXT:    mv a5, a0
+; RV64I-NEXT:    srli a7, a2, 24
+; RV64I-NEXT:    lui a4, 4080
+; RV64I-NEXT:    srli t0, a2, 8
 ; RV64I-NEXT:    li t4, 255
-; RV64I-NEXT:    srli t0, a2, 40
-; RV64I-NEXT:    lui a0, 16
-; RV64I-NEXT:    srli t1, a2, 56
-; RV64I-NEXT:    srliw t2, a2, 24
-; RV64I-NEXT:    slli a7, a2, 56
-; RV64I-NEXT:    lui s6, 61681
-; RV64I-NEXT:    lui t6, 209715
+; RV64I-NEXT:    srli t1, a2, 40
+; RV64I-NEXT:    lui s6, 16
+; RV64I-NEXT:    srli t2, a2, 56
+; RV64I-NEXT:    srliw s0, a2, 24
+; RV64I-NEXT:    slli a0, a2, 56
+; RV64I-NEXT:    sd a0, 952(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui t6, 61681
+; RV64I-NEXT:    lui t3, 209715
 ; RV64I-NEXT:    lui s4, 349525
-; RV64I-NEXT:    srli s5, a4, 24
-; RV64I-NEXT:    srli t3, a4, 8
-; RV64I-NEXT:    srli t5, a4, 40
-; RV64I-NEXT:    srli s2, a4, 56
-; RV64I-NEXT:    srliw s0, a4, 24
-; RV64I-NEXT:    slli ra, a4, 56
+; RV64I-NEXT:    srli s5, a5, 24
+; RV64I-NEXT:    srli s3, a5, 8
+; RV64I-NEXT:    srli t5, a5, 40
+; RV64I-NEXT:    srli a6, a5, 56
+; RV64I-NEXT:    srliw s1, a5, 24
+; RV64I-NEXT:    slli ra, a5, 56
 ; RV64I-NEXT:    srli s8, a3, 24
 ; RV64I-NEXT:    srli s10, a3, 8
 ; RV64I-NEXT:    srli s7, a3, 40
 ; RV64I-NEXT:    srli s9, a3, 56
-; RV64I-NEXT:    and a5, a5, s3
-; RV64I-NEXT:    slli s1, t4, 24
-; RV64I-NEXT:    and a6, a6, s1
-; RV64I-NEXT:    or a6, a6, a5
-; RV64I-NEXT:    addi a0, a0, -256
-; RV64I-NEXT:    and a5, t0, a0
-; RV64I-NEXT:    or t0, a5, t1
-; RV64I-NEXT:    and a5, a2, s3
-; RV64I-NEXT:    slli t2, t2, 32
-; RV64I-NEXT:    addi t1, s6, -241
-; RV64I-NEXT:    addi s11, t6, 819
-; RV64I-NEXT:    addi t4, s4, 1365
-; RV64I-NEXT:    slli a5, a5, 24
-; RV64I-NEXT:    or a5, a5, t2
-; RV64I-NEXT:    slli s4, t1, 32
-; RV64I-NEXT:    add s4, t1, s4
-; RV64I-NEXT:    slli t1, s11, 32
-; RV64I-NEXT:    add s11, s11, t1
-; RV64I-NEXT:    slli t1, t4, 32
-; RV64I-NEXT:    add s6, t4, t1
-; RV64I-NEXT:    srliw t2, a3, 24
-; RV64I-NEXT:    and t1, s5, s3
-; RV64I-NEXT:    and t3, t3, s1
-; RV64I-NEXT:    or t1, t3, t1
-; RV64I-NEXT:    srli t3, a1, 24
-; RV64I-NEXT:    and t4, t5, a0
-; RV64I-NEXT:    or t4, t4, s2
-; RV64I-NEXT:    and t5, a4, s3
+; RV64I-NEXT:    and a7, a7, a4
+; RV64I-NEXT:    slli a0, t4, 24
+; RV64I-NEXT:    and t0, t0, a0
+; RV64I-NEXT:    or t0, t0, a7
+; RV64I-NEXT:    addi a1, s6, -256
+; RV64I-NEXT:    and a7, t1, a1
+; RV64I-NEXT:    or t1, a7, t2
+; RV64I-NEXT:    and a7, a2, a4
 ; RV64I-NEXT:    slli s0, s0, 32
+; RV64I-NEXT:    addi t2, t6, -241
+; RV64I-NEXT:    addi t3, t3, 819
+; RV64I-NEXT:    addi t4, s4, 1365
+; RV64I-NEXT:    slli a7, a7, 24
+; RV64I-NEXT:    or a7, a7, s0
+; RV64I-NEXT:    slli s4, t2, 32
+; RV64I-NEXT:    add s4, t2, s4
+; RV64I-NEXT:    slli t2, t3, 32
+; RV64I-NEXT:    add s11, t3, t2
+; RV64I-NEXT:    slli t2, t4, 32
+; RV64I-NEXT:    add s6, t4, t2
+; RV64I-NEXT:    srliw t3, a3, 24
+; RV64I-NEXT:    and t2, s5, a4
+; RV64I-NEXT:    and t4, s3, a0
+; RV64I-NEXT:    or t2, t4, t2
+; RV64I-NEXT:    srli t4, s2, 24
+; RV64I-NEXT:    and t5, t5, a1
+; RV64I-NEXT:    or a6, t5, a6
+; RV64I-NEXT:    and t5, a5, a4
+; RV64I-NEXT:    slli s1, s1, 32
 ; RV64I-NEXT:    slli t5, t5, 24
-; RV64I-NEXT:    or t6, t5, s0
-; RV64I-NEXT:    srli t5, a1, 8
-; RV64I-NEXT:    and s0, s8, s3
-; RV64I-NEXT:    mv s8, s1
-; RV64I-NEXT:    sd s1, 992(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and s1, s10, s1
+; RV64I-NEXT:    or t6, t5, s1
+; RV64I-NEXT:    srli t5, s2, 8
+; RV64I-NEXT:    and s0, s8, a4
+; RV64I-NEXT:    sd a0, 992(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and s1, s10, a0
 ; RV64I-NEXT:    or s0, s1, s0
-; RV64I-NEXT:    srli s1, a1, 40
-; RV64I-NEXT:    and s2, s7, a0
-; RV64I-NEXT:    or s2, s2, s9
-; RV64I-NEXT:    and s5, a3, s3
-; RV64I-NEXT:    slli t2, t2, 32
+; RV64I-NEXT:    srli s1, s2, 40
+; RV64I-NEXT:    and s3, s7, a1
+; RV64I-NEXT:    or s3, s3, s9
+; RV64I-NEXT:    and s5, a3, a4
+; RV64I-NEXT:    slli t3, t3, 32
 ; RV64I-NEXT:    slli s5, s5, 24
-; RV64I-NEXT:    or t2, s5, t2
-; RV64I-NEXT:    srli s5, a1, 56
-; RV64I-NEXT:    and t3, t3, s3
-; RV64I-NEXT:    and t5, t5, s8
-; RV64I-NEXT:    or t3, t5, t3
-; RV64I-NEXT:    srliw t5, a1, 24
-; RV64I-NEXT:    and s1, s1, a0
+; RV64I-NEXT:    or t3, s5, t3
+; RV64I-NEXT:    srli s5, s2, 56
+; RV64I-NEXT:    and t4, t4, a4
+; RV64I-NEXT:    and t5, t5, a0
+; RV64I-NEXT:    or t4, t5, t4
+; RV64I-NEXT:    srliw t5, s2, 24
+; RV64I-NEXT:    and s1, s1, a1
 ; RV64I-NEXT:    or s1, s1, s5
-; RV64I-NEXT:    and s5, a1, s3
+; RV64I-NEXT:    and s5, s2, a4
 ; RV64I-NEXT:    slli t5, t5, 32
 ; RV64I-NEXT:    slli s5, s5, 24
 ; RV64I-NEXT:    or s5, s5, t5
 ; RV64I-NEXT:    li t5, 1
-; RV64I-NEXT:    or a6, a6, t0
-; RV64I-NEXT:    slli t0, a3, 56
-; RV64I-NEXT:    mv s3, a0
-; RV64I-NEXT:    sd a0, 976(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, a2, a0
+; RV64I-NEXT:    or t0, t0, t1
+; RV64I-NEXT:    slli t1, a3, 56
+; RV64I-NEXT:    sd a1, 968(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, a2, a1
 ; RV64I-NEXT:    slli a2, a2, 40
-; RV64I-NEXT:    or a2, a7, a2
-; RV64I-NEXT:    slli a7, a1, 56
-; RV64I-NEXT:    or t1, t1, t4
+; RV64I-NEXT:    ld a0, 952(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    or a2, a0, a2
+; RV64I-NEXT:    slli a4, s2, 56
+; RV64I-NEXT:    or a6, t2, a6
 ; RV64I-NEXT:    slli s7, t5, 11
-; RV64I-NEXT:    sd s7, 440(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a0, a4, a0
-; RV64I-NEXT:    and a3, a3, s3
-; RV64I-NEXT:    and a1, a1, s3
+; RV64I-NEXT:    sd s7, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a0, a5, a1
+; RV64I-NEXT:    and a3, a3, a1
+; RV64I-NEXT:    and a1, s2, a1
 ; RV64I-NEXT:    slli a0, a0, 40
 ; RV64I-NEXT:    slli a3, a3, 40
 ; RV64I-NEXT:    slli a1, a1, 40
 ; RV64I-NEXT:    or a0, ra, a0
-; RV64I-NEXT:    or a4, s0, s2
-; RV64I-NEXT:    or a3, t0, a3
-; RV64I-NEXT:    or t0, t3, s1
-; RV64I-NEXT:    or a1, a7, a1
-; RV64I-NEXT:    or a2, a2, a5
+; RV64I-NEXT:    or a5, s0, s3
+; RV64I-NEXT:    or a3, t1, a3
+; RV64I-NEXT:    or t1, t4, s1
+; RV64I-NEXT:    or a1, a4, a1
+; RV64I-NEXT:    or a2, a2, a7
 ; RV64I-NEXT:    or a0, a0, t6
-; RV64I-NEXT:    or a3, a3, t2
+; RV64I-NEXT:    or a3, a3, t3
 ; RV64I-NEXT:    or a1, a1, s5
-; RV64I-NEXT:    or a2, a2, a6
-; RV64I-NEXT:    or a0, a0, t1
-; RV64I-NEXT:    or a3, a3, a4
-; RV64I-NEXT:    or a1, a1, t0
+; RV64I-NEXT:    or a2, a2, t0
+; RV64I-NEXT:    or a0, a0, a6
+; RV64I-NEXT:    or a3, a3, a5
+; RV64I-NEXT:    or a1, a1, t1
 ; RV64I-NEXT:    srli a4, a2, 4
 ; RV64I-NEXT:    sd s4, 984(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, a2, s4
@@ -5016,7 +5005,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    or a3, a6, a3
 ; RV64I-NEXT:    or a1, a7, a1
 ; RV64I-NEXT:    srli a4, a2, 2
-; RV64I-NEXT:    sd s11, 968(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd s11, 976(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, a2, s11
 ; RV64I-NEXT:    srli a5, a0, 2
 ; RV64I-NEXT:    and a0, a0, s11
@@ -5069,10 +5058,10 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    andi t3, s1, 16
 ; RV64I-NEXT:    slli t4, s0, 5
 ; RV64I-NEXT:    andi t6, s1, 32
-; RV64I-NEXT:    slli s2, s0, 63
+; RV64I-NEXT:    slli s3, s0, 63
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    and a2, a2, s2
+; RV64I-NEXT:    and a2, a2, s3
 ; RV64I-NEXT:    sd a2, 944(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, a1, 63
 ; RV64I-NEXT:    seqz a3, a3
@@ -5083,269 +5072,269 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a3, a5
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 456(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a3, 448(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a3, s1, 64
 ; RV64I-NEXT:    seqz a4, a7
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    and a4, a4, a6
-; RV64I-NEXT:    sd a4, 448(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a4, 440(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a4, s0, 7
 ; RV64I-NEXT:    seqz a5, t1
 ; RV64I-NEXT:    addi a5, a5, -1
 ; RV64I-NEXT:    and a0, a5, a0
-; RV64I-NEXT:    sd a0, 912(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a5, s1, 128
 ; RV64I-NEXT:    seqz a6, t3
 ; RV64I-NEXT:    addi a6, a6, -1
 ; RV64I-NEXT:    and a0, a6, t2
-; RV64I-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 888(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a6, s0, 8
 ; RV64I-NEXT:    seqz a7, t6
 ; RV64I-NEXT:    addi a7, a7, -1
 ; RV64I-NEXT:    and a0, a7, t4
-; RV64I-NEXT:    sd a0, 472(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 464(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a7, s1, 256
 ; RV64I-NEXT:    seqz a3, a3
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a2, a3, a2
-; RV64I-NEXT:    sd a2, 928(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 920(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, s0, 9
 ; RV64I-NEXT:    seqz a3, a5
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 464(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a3, 936(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a3, s1, 512
 ; RV64I-NEXT:    seqz a4, a7
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    and a0, a4, a6
-; RV64I-NEXT:    sd a0, 872(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 456(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a4, s0, 10
 ; RV64I-NEXT:    seqz a3, a3
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a2, a3, a2
-; RV64I-NEXT:    sd a2, 904(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 856(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a2, s1, 1024
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    and a2, a2, a4
-; RV64I-NEXT:    sd a2, 936(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 880(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, s7
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 11
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 848(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 912(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 1
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 12
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 928(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 2
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 13
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 4
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 14
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 888(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 816(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 8
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 15
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 920(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 848(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 16
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 16
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 800(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 32
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 17
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 784(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 872(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 64
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 18
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 816(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 904(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 128
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 19
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 768(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 256
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 20
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 856(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 760(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 512
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 21
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 880(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 784(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 1024
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 22
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 736(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 808(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 2048
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 23
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 728(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 4096
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 24
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 760(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 8192
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 25
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 776(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 704(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 16384
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 26
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 792(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 736(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 32768
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 27
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 808(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 752(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 65536
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 28
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 776(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 131072
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 29
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 792(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 262144
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 30
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 800(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sraiw a2, s1, 31
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 31
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 32
-; RV64I-NEXT:    sd a2, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 32
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 712(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 33
-; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 33
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 34
-; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 34
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 744(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 35
-; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 35
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 752(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 36
-; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 36
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 768(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 37
-; RV64I-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 37
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 600(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 712(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 38
-; RV64I-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 38
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 584(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 728(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 39
-; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 360(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 39
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 744(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 40
-; RV64I-NEXT:    sd a2, 360(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 40
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 592(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 41
 ; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
@@ -5353,517 +5342,516 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 41
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 576(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli ra, t5, 42
 ; RV64I-NEXT:    and a2, s1, ra
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 42
 ; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 608(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s10, t5, 43
+; RV64I-NEXT:    and a2, s1, s10
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 43
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 624(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s9, t5, 44
+; RV64I-NEXT:    and a2, s1, s9
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 44
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a5, t5, 45
+; RV64I-NEXT:    and a2, s1, a5
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 45
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a4, t5, 46
+; RV64I-NEXT:    and a2, s1, a4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 46
+; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a3, t5, 43
-; RV64I-NEXT:    and a2, s1, a3
+; RV64I-NEXT:    slli a0, t5, 47
+; RV64I-NEXT:    and a2, s1, a0
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a4, s0, 43
-; RV64I-NEXT:    and a2, a2, a4
+; RV64I-NEXT:    slli a3, s0, 47
+; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a2, t5, 44
-; RV64I-NEXT:    and a4, s1, a2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 44
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 688(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s11, t5, 45
-; RV64I-NEXT:    and a4, s1, s11
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 45
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 704(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s8, t5, 46
-; RV64I-NEXT:    and a4, s1, s8
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 46
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 544(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s7, t5, 47
-; RV64I-NEXT:    and a4, s1, s7
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 47
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 536(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s6, t5, 48
-; RV64I-NEXT:    and a4, s1, s6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 48
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 552(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s5, t5, 49
-; RV64I-NEXT:    and a4, s1, s5
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 49
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 560(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s4, t5, 50
-; RV64I-NEXT:    and a4, s1, s4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 50
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 568(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s3, t5, 51
-; RV64I-NEXT:    and a4, s1, s3
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 51
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 576(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli t1, t5, 52
-; RV64I-NEXT:    and a4, s1, t1
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 52
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 592(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a7, t5, 53
-; RV64I-NEXT:    and a4, s1, a7
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 53
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 608(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a6, t5, 54
-; RV64I-NEXT:    and a4, s1, a6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 54
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 624(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a0, t5, 55
-; RV64I-NEXT:    and a4, s1, a0
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 55
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 616(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s8, t5, 48
+; RV64I-NEXT:    and a2, s1, s8
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 48
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s6, t5, 49
+; RV64I-NEXT:    and a2, s1, s6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 49
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 520(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s5, t5, 50
+; RV64I-NEXT:    and a2, s1, s5
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 50
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 552(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s4, t5, 51
+; RV64I-NEXT:    and a2, s1, s4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 51
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 560(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s3, t5, 52
+; RV64I-NEXT:    and a2, s1, s3
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 52
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 568(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli t1, t5, 53
+; RV64I-NEXT:    and a2, s1, t1
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 53
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 584(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a7, t5, 54
+; RV64I-NEXT:    and a2, s1, a7
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 54
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 600(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a6, t5, 55
+; RV64I-NEXT:    and a2, s1, a6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 55
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 616(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli s2, t5, 56
-; RV64I-NEXT:    and a4, s1, s2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 56
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 488(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 56
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 488(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t6, t5, 57
-; RV64I-NEXT:    and a4, s1, t6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 57
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 480(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 57
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 480(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t4, t5, 58
-; RV64I-NEXT:    and a4, s1, t4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 58
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 496(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 58
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 496(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t3, t5, 59
-; RV64I-NEXT:    and a4, s1, t3
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 59
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 504(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s10, t5, 60
-; RV64I-NEXT:    and a4, s1, s10
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 60
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 512(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s9, t5, 61
-; RV64I-NEXT:    and a4, s1, s9
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 61
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 520(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t3
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 59
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 504(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s11, t5, 60
+; RV64I-NEXT:    and a2, s1, s11
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 60
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 512(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s7, t5, 61
+; RV64I-NEXT:    and a2, s1, s7
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 61
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 528(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t2, t5, 62
-; RV64I-NEXT:    andi a4, s1, 1
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    and t5, a4, s0
+; RV64I-NEXT:    andi a2, s1, 1
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    and t5, a2, s0
 ; RV64I-NEXT:    slli s0, s0, 62
-; RV64I-NEXT:    and a4, s1, t2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    and a4, a4, s0
-; RV64I-NEXT:    sd a4, 528(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 1
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 384(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 2
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 344(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 8
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 3
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 320(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 16
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 4
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 312(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 32
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 5
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 296(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 64
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 6
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 352(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 128
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 7
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 280(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 256
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 8
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 264(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 512
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 9
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 304(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 1024
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 10
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 336(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 440(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 11
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 240(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 1
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 12
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 216(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 2
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 13
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 256(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 4
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 14
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 288(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 8
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 15
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 440(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 16
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 16
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 184(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 32
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 17
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 176(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 64
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 18
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 200(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 128
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 19
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 232(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 256
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 20
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 248(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 512
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 21
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 272(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 1024
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 22
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 152(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 2048
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 23
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 136(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 4096
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 24
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 160(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 8192
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 25
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 168(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 16384
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 26
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 192(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 32768
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 27
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 208(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 65536
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 28
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 224(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 131072
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli s1, a1, 29
-; RV64I-NEXT:    and a4, a4, s1
-; RV64I-NEXT:    sd a4, 112(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 262144
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 30
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 104(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    sraiw a4, t0, 31
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 31
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 120(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 432(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 32
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 128(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 424(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 33
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 144(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 416(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 34
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 416(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 408(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 35
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 424(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 400(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 36
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 432(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 392(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 37
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 64(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 376(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 38
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 48(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 368(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 39
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 80(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 360(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 40
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 360(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 328(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli s0, a1, 41
-; RV64I-NEXT:    and a4, a4, s0
-; RV64I-NEXT:    sd a4, 368(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a4, t0, ra
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 42
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 376(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a3, t0, a3
-; RV64I-NEXT:    seqz a3, a3
-; RV64I-NEXT:    addi a3, a3, -1
-; RV64I-NEXT:    slli a4, a1, 43
-; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 392(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    and a2, a2, s0
+; RV64I-NEXT:    sd a2, 536(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 1
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 2
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 8
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 3
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 16
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 4
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 32
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 5
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 64
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 6
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 344(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 128
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 7
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 472(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 256
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 8
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 512
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 9
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 1024
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 10
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 432(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 44
+; RV64I-NEXT:    slli a3, a1, 11
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 1
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 12
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 2
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 13
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 4
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 14
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 8
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 15
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 16
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 16
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 32
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 17
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 64
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 18
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 128
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 19
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 256
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 20
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 512
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 21
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 1024
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 22
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 2048
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 23
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 4096
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 24
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 8192
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 25
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 120(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 16384
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 26
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 32768
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 27
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 65536
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 28
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 131072
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 29
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 262144
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 30
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sraiw a2, t0, 31
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 31
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 424(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli s0, a1, 32
+; RV64I-NEXT:    and a2, a2, s0
+; RV64I-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 416(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 33
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 408(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli s1, a1, 34
+; RV64I-NEXT:    and a2, a2, s1
+; RV64I-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 400(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 35
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 392(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 36
 ; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s11
+; RV64I-NEXT:    ld a2, 384(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 45
+; RV64I-NEXT:    slli a3, a1, 37
 ; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s8
+; RV64I-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a5, a1, 46
-; RV64I-NEXT:    and a2, a2, a5
-; RV64I-NEXT:    sd a2, 16(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s7
+; RV64I-NEXT:    slli a3, a1, 38
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 360(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a4, a1, 47
-; RV64I-NEXT:    and s11, a2, a4
-; RV64I-NEXT:    and a2, t0, s6
+; RV64I-NEXT:    slli a3, a1, 39
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 352(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 48
+; RV64I-NEXT:    slli a3, a1, 40
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s5
+; RV64I-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 328(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 49
+; RV64I-NEXT:    slli a3, a1, 41
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 32(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s4
+; RV64I-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, ra
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 42
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s10
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 43
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s9
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 44
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 360(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a5
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 45
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 46
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a0
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 47
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s8
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a5, a1, 48
+; RV64I-NEXT:    and ra, a2, a5
+; RV64I-NEXT:    and a2, t0, s6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a4, a1, 49
+; RV64I-NEXT:    and s10, a2, a4
+; RV64I-NEXT:    and a2, t0, s5
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 50
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s3
+; RV64I-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s4
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 51
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, t1
+; RV64I-NEXT:    sd a2, 32(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s3
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 52
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, a7
+; RV64I-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, t1
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 53
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, a6
+; RV64I-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a7
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 54
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, a0
+; RV64I-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a6
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 55
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, s2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
@@ -5878,22 +5866,23 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a4, a4
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    slli a5, a1, 58
-; RV64I-NEXT:    and s7, a4, a5
+; RV64I-NEXT:    and s8, a4, a5
 ; RV64I-NEXT:    and a5, t0, t3
 ; RV64I-NEXT:    seqz a5, a5
 ; RV64I-NEXT:    addi a5, a5, -1
 ; RV64I-NEXT:    slli a0, a1, 59
-; RV64I-NEXT:    and s8, a5, a0
-; RV64I-NEXT:    and a0, t0, s10
+; RV64I-NEXT:    and s9, a5, a0
+; RV64I-NEXT:    and a0, t0, s11
 ; RV64I-NEXT:    seqz a0, a0
 ; RV64I-NEXT:    addi a0, a0, -1
-; RV64I-NEXT:    slli s10, a1, 60
-; RV64I-NEXT:    and s10, a0, s10
-; RV64I-NEXT:    and a0, t0, s9
+; RV64I-NEXT:    slli s11, a1, 60
+; RV64I-NEXT:    and s11, a0, s11
+; RV64I-NEXT:    and a0, t0, s7
 ; RV64I-NEXT:    seqz a0, a0
 ; RV64I-NEXT:    addi a0, a0, -1
-; RV64I-NEXT:    slli s9, a1, 61
-; RV64I-NEXT:    and s9, a0, s9
+; RV64I-NEXT:    slli s7, a1, 61
+; RV64I-NEXT:    and a0, a0, s7
+; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a0, t0, t2
 ; RV64I-NEXT:    andi t0, t0, 1
 ; RV64I-NEXT:    seqz t0, t0
@@ -5903,297 +5892,297 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a0, a0
 ; RV64I-NEXT:    addi a0, a0, -1
 ; RV64I-NEXT:    and a0, a0, a1
-; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a0, 456(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s4, t5, a0
-; RV64I-NEXT:    ld a0, 912(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 448(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t3, a1, a0
 ; RV64I-NEXT:    ld a0, 896(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 472(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, a0, a1
-; RV64I-NEXT:    ld a0, 872(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 440(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t3, a1, a0
+; RV64I-NEXT:    ld a0, 888(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 464(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, a0, a1
+; RV64I-NEXT:    ld a0, 856(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 456(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, a1, a0
-; RV64I-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 840(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 816(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, a0, a1
-; RV64I-NEXT:    ld a0, 800(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld s0, 784(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 768(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 760(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, a0, s0
-; RV64I-NEXT:    ld a0, 736(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld s1, 728(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 720(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 704(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, a0, s1
-; RV64I-NEXT:    ld a0, 672(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 656(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 656(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 640(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, a0, a1
-; RV64I-NEXT:    ld a0, 600(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 584(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 592(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 576(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s3, a0, a1
 ; RV64I-NEXT:    ld a0, 544(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 536(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 520(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, a0, a1
 ; RV64I-NEXT:    ld a0, 488(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 480(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, a0, a1
-; RV64I-NEXT:    ld a0, 384(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 376(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t0, t0, a0
-; RV64I-NEXT:    ld a0, 344(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 336(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a2, 296(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 296(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a2, 288(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a1, a1, a2
-; RV64I-NEXT:    ld a2, 280(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a3, 264(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a3, 248(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a2, a2, a3
-; RV64I-NEXT:    ld a3, 240(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a4, 216(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a3, 216(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 200(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a3, a3, a4
-; RV64I-NEXT:    ld a4, 184(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a5, 176(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 160(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 144(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a4, a5
-; RV64I-NEXT:    ld a5, 152(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a6, 136(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 128(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 120(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a5, a6
-; RV64I-NEXT:    ld a6, 112(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a7, 104(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 96(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a7, 88(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a6, a7
-; RV64I-NEXT:    ld a7, 64(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld ra, 48(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, a7, ra
-; RV64I-NEXT:    ld ra, 16(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor s11, ra, s11
+; RV64I-NEXT:    ld a7, 56(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s7, 40(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s7
+; RV64I-NEXT:    xor s10, ra, s10
 ; RV64I-NEXT:    xor s5, s6, s5
 ; RV64I-NEXT:    xor t3, s4, t3
-; RV64I-NEXT:    ld s4, 928(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 920(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t4, s4
-; RV64I-NEXT:    ld s4, 904(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 880(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t5, s4
-; RV64I-NEXT:    ld s4, 864(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 848(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, t6, s4
-; RV64I-NEXT:    ld s4, 816(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 784(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s0, s4
-; RV64I-NEXT:    ld s4, 760(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 736(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s1, s4
-; RV64I-NEXT:    ld s4, 696(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 672(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, s2, s4
-; RV64I-NEXT:    ld s4, 632(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 608(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s3, s3, s4
 ; RV64I-NEXT:    ld s4, 552(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s4
 ; RV64I-NEXT:    ld s4, 496(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s4
 ; RV64I-NEXT:    xor a0, t0, a0
-; RV64I-NEXT:    ld t0, 352(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 344(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a1, a1, t0
-; RV64I-NEXT:    ld t0, 304(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 272(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a2, a2, t0
-; RV64I-NEXT:    ld t0, 256(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 240(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a3, a3, t0
-; RV64I-NEXT:    ld t0, 200(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 168(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a4, t0
-; RV64I-NEXT:    ld t0, 160(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 136(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a5, t0
-; RV64I-NEXT:    ld t0, 120(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 104(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a6, t0
-; RV64I-NEXT:    ld t0, 80(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 72(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a7, a7, t0
 ; RV64I-NEXT:    ld t0, 24(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t0, s11, t0
-; RV64I-NEXT:    xor s4, s5, s7
+; RV64I-NEXT:    xor t0, s10, t0
+; RV64I-NEXT:    xor s4, s5, s8
 ; RV64I-NEXT:    xor t3, t3, t4
-; RV64I-NEXT:    ld t4, 936(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t4, 912(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t5, t4
-; RV64I-NEXT:    ld t5, 888(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t5, 864(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t6, t5
-; RV64I-NEXT:    ld t6, 832(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t6, 808(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, s0, t6
-; RV64I-NEXT:    ld s0, 776(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 752(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s1, s0
-; RV64I-NEXT:    ld s1, 712(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 688(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s2, s1
-; RV64I-NEXT:    ld s2, 640(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s2, 624(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, s3, s2
 ; RV64I-NEXT:    ld s3, 560(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s3
 ; RV64I-NEXT:    ld s3, 504(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s3
 ; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 288(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 232(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 168(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 128(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    ld a6, 360(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a6, a7, a6
-; RV64I-NEXT:    ld a7, 32(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t0, a7
-; RV64I-NEXT:    xor t0, s4, s8
-; RV64I-NEXT:    xor t3, t3, t4
-; RV64I-NEXT:    ld t4, 920(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, a1
+; RV64I-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, a1
+; RV64I-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a4, a4, a1
+; RV64I-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, a1
+; RV64I-NEXT:    ld a1, 112(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, a1
+; RV64I-NEXT:    ld a1, 352(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, a1
+; RV64I-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, a1
+; RV64I-NEXT:    xor s3, s4, s9
+; RV64I-NEXT:    ld a1, 936(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a1, t3, a1
+; RV64I-NEXT:    ld t3, 928(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t3, t4, t3
+; RV64I-NEXT:    ld t4, 872(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t5, t4
-; RV64I-NEXT:    ld t5, 856(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t5, 832(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t6, t5
-; RV64I-NEXT:    ld t6, 792(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t6, 776(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, s0, t6
-; RV64I-NEXT:    ld s0, 720(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 696(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s1, s0
-; RV64I-NEXT:    ld s1, 648(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 632(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s2, s1
 ; RV64I-NEXT:    ld s2, 568(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s2
 ; RV64I-NEXT:    ld s2, 512(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s2
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 440(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 248(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 192(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 144(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s2, 472(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a0, a0, s2
+; RV64I-NEXT:    ld s2, 432(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, s2
+; RV64I-NEXT:    ld s2, 280(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, s2
+; RV64I-NEXT:    ld s2, 232(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a4, a4, s2
+; RV64I-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, s2
+; RV64I-NEXT:    ld s2, 400(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, s2
+; RV64I-NEXT:    ld s2, 360(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s2
+; RV64I-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, s2
+; RV64I-NEXT:    xor s2, s3, s11
+; RV64I-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t4, s3
+; RV64I-NEXT:    ld s3, 792(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, t6, s3
+; RV64I-NEXT:    ld s3, 712(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s0, s0, s3
+; RV64I-NEXT:    ld s3, 648(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s1, s1, s3
+; RV64I-NEXT:    ld s3, 584(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t1, t1, s3
+; RV64I-NEXT:    ld s3, 528(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t2, t2, s3
+; RV64I-NEXT:    ld s3, 304(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, s3
+; RV64I-NEXT:    ld s3, 184(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, s3
+; RV64I-NEXT:    ld s3, 408(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, s3
+; RV64I-NEXT:    ld s3, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s3
+; RV64I-NEXT:    ld s3, 64(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, s3
+; RV64I-NEXT:    ld s3, 8(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s2, s2, s3
+; RV64I-NEXT:    xor t3, a1, t3
+; RV64I-NEXT:    xor t3, t3, t4
+; RV64I-NEXT:    ld t4, 800(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t6, t4
+; RV64I-NEXT:    ld t6, 728(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, s0, t6
+; RV64I-NEXT:    ld s0, 664(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s0, s1, s0
+; RV64I-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t1, t1, s1
+; RV64I-NEXT:    ld s1, 536(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t2, t2, s1
+; RV64I-NEXT:    xor a2, a0, a2
+; RV64I-NEXT:    xor a2, a2, a3
+; RV64I-NEXT:    ld a3, 208(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a5, a3
+; RV64I-NEXT:    ld a5, 416(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    ld a6, 40(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 384(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a7, a6
-; RV64I-NEXT:    xor a7, t0, s10
-; RV64I-NEXT:    xor t0, t3, t4
-; RV64I-NEXT:    ld t3, 880(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t3, t5, t3
-; RV64I-NEXT:    ld t4, 808(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, t6, t4
+; RV64I-NEXT:    ld a7, 80(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, t0, a7
+; RV64I-NEXT:    ld t0, 16(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, s2, t0
+; RV64I-NEXT:    xor t3, t3, t5
+; RV64I-NEXT:    ld t5, 824(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t4, t5
 ; RV64I-NEXT:    ld t5, 744(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t5, s0, t5
-; RV64I-NEXT:    ld t6, 664(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t6, s1, t6
-; RV64I-NEXT:    ld s0, 576(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t5, t6, t5
+; RV64I-NEXT:    ld t6, 680(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, s0, t6
+; RV64I-NEXT:    ld s0, 616(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s0
-; RV64I-NEXT:    ld s0, 520(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 944(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s0
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 272(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 208(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 416(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 376(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 56(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    xor a6, a7, s9
-; RV64I-NEXT:    xor a7, t0, t3
-; RV64I-NEXT:    ld t0, 824(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t0, t4, t0
-; RV64I-NEXT:    ld t3, 752(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t3, t5, t3
-; RV64I-NEXT:    ld t4, 680(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, t6, t4
-; RV64I-NEXT:    ld t5, 592(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t1, t1, t5
-; RV64I-NEXT:    ld t5, 528(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t2, t2, t5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 224(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 424(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 392(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 72(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, a4
+; RV64I-NEXT:    ld a4, 224(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, a4
+; RV64I-NEXT:    ld a4, 424(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 8(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 392(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    xor a6, a7, t0
-; RV64I-NEXT:    ld a7, 768(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t3, a7
-; RV64I-NEXT:    ld t0, 688(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t0, t4, t0
-; RV64I-NEXT:    ld t3, 608(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t1, t1, t3
-; RV64I-NEXT:    ld t3, 944(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t2, t2, t3
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 432(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 400(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 88(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 952(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    xor a5, a6, a7
-; RV64I-NEXT:    ld a6, 704(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a6, t0, a6
-; RV64I-NEXT:    ld a7, 624(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t1, a7
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 408(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 328(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    xor a3, a5, a6
-; RV64I-NEXT:    ld a5, 616(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a7, a5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    xor a3, a3, a5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    xor a1, a3, t2
-; RV64I-NEXT:    xor a0, a0, a4
-; RV64I-NEXT:    srli a2, a1, 40
-; RV64I-NEXT:    srli a3, a1, 56
-; RV64I-NEXT:    srli a4, a1, 24
-; RV64I-NEXT:    srli a5, a1, 8
-; RV64I-NEXT:    srli a6, a0, 8
-; RV64I-NEXT:    ld a7, 992(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a5, a5, a7
-; RV64I-NEXT:    and a6, a6, a7
-; RV64I-NEXT:    srliw a7, a1, 24
-; RV64I-NEXT:    ld t1, 976(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a2, a2, t1
-; RV64I-NEXT:    or a2, a2, a3
-; RV64I-NEXT:    lui t0, 4080
-; RV64I-NEXT:    and a3, a1, t0
-; RV64I-NEXT:    and a4, a4, t0
-; RV64I-NEXT:    or a4, a5, a4
-; RV64I-NEXT:    slli a5, a1, 56
-; RV64I-NEXT:    and a1, a1, t1
-; RV64I-NEXT:    slli a7, a7, 32
-; RV64I-NEXT:    slli a3, a3, 24
-; RV64I-NEXT:    or a3, a3, a7
-; RV64I-NEXT:    srli a7, a0, 40
-; RV64I-NEXT:    slli a1, a1, 40
-; RV64I-NEXT:    or a1, a5, a1
-; RV64I-NEXT:    srli a5, a0, 56
-; RV64I-NEXT:    and a7, a7, t1
-; RV64I-NEXT:    or a5, a7, a5
-; RV64I-NEXT:    srli a7, a0, 24
-; RV64I-NEXT:    and a7, a7, t0
-; RV64I-NEXT:    or a6, a6, a7
-; RV64I-NEXT:    srliw a7, a0, 24
-; RV64I-NEXT:    and t0, a0, t0
-; RV64I-NEXT:    slli a7, a7, 32
-; RV64I-NEXT:    slli t0, t0, 24
-; RV64I-NEXT:    or a7, t0, a7
-; RV64I-NEXT:    and t0, a0, t1
+; RV64I-NEXT:    ld a6, 328(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a7, a6
+; RV64I-NEXT:    ld a7, 952(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, t0, a7
+; RV64I-NEXT:    xor t0, t3, t4
+; RV64I-NEXT:    xor t0, t0, t5
+; RV64I-NEXT:    xor a3, a2, a3
+; RV64I-NEXT:    xor a3, a3, a4
+; RV64I-NEXT:    slli a1, a1, 56
 ; RV64I-NEXT:    slli a0, a0, 56
-; RV64I-NEXT:    slli t0, t0, 40
-; RV64I-NEXT:    or a0, a0, t0
-; RV64I-NEXT:    or a2, a4, a2
-; RV64I-NEXT:    or a1, a1, a3
-; RV64I-NEXT:    or a3, a6, a5
-; RV64I-NEXT:    or a0, a0, a7
-; RV64I-NEXT:    or a1, a1, a2
+; RV64I-NEXT:    ld t5, 968(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a4, t3, t5
+; RV64I-NEXT:    and a2, a2, t5
+; RV64I-NEXT:    slli a4, a4, 40
+; RV64I-NEXT:    slli a2, a2, 40
+; RV64I-NEXT:    or a1, a1, a4
+; RV64I-NEXT:    srli a4, t0, 8
+; RV64I-NEXT:    or a0, a0, a2
+; RV64I-NEXT:    srli a2, a3, 8
+; RV64I-NEXT:    ld t3, 992(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a4, a4, t3
+; RV64I-NEXT:    and a2, a2, t3
+; RV64I-NEXT:    xor t3, t0, t6
+; RV64I-NEXT:    lui t4, 4080
+; RV64I-NEXT:    and t0, t0, t4
+; RV64I-NEXT:    xor a5, a3, a5
+; RV64I-NEXT:    and a3, a3, t4
+; RV64I-NEXT:    xor t1, t3, t1
+; RV64I-NEXT:    srli t3, t3, 24
+; RV64I-NEXT:    xor a6, a5, a6
+; RV64I-NEXT:    srli a5, a5, 24
+; RV64I-NEXT:    and t3, t3, t4
+; RV64I-NEXT:    and a5, a5, t4
+; RV64I-NEXT:    or a4, a4, t3
+; RV64I-NEXT:    srli t3, t1, 40
+; RV64I-NEXT:    or a2, a2, a5
+; RV64I-NEXT:    srli a5, a6, 40
+; RV64I-NEXT:    and t3, t3, t5
+; RV64I-NEXT:    and a5, a5, t5
+; RV64I-NEXT:    slli t0, t0, 24
+; RV64I-NEXT:    xor t2, t1, t2
+; RV64I-NEXT:    srliw t1, t1, 24
+; RV64I-NEXT:    slli t1, t1, 32
+; RV64I-NEXT:    or t0, t0, t1
+; RV64I-NEXT:    srli t1, t2, 56
+; RV64I-NEXT:    or t1, t3, t1
+; RV64I-NEXT:    slli a3, a3, 24
+; RV64I-NEXT:    xor a7, a6, a7
+; RV64I-NEXT:    srliw a6, a6, 24
+; RV64I-NEXT:    slli a6, a6, 32
+; RV64I-NEXT:    or a3, a3, a6
+; RV64I-NEXT:    srli a6, a7, 56
+; RV64I-NEXT:    or a5, a5, a6
+; RV64I-NEXT:    or a1, a1, t0
+; RV64I-NEXT:    or a4, a4, t1
 ; RV64I-NEXT:    or a0, a0, a3
+; RV64I-NEXT:    or a2, a2, a5
+; RV64I-NEXT:    or a1, a1, a4
+; RV64I-NEXT:    or a0, a0, a2
 ; RV64I-NEXT:    srli a2, a1, 4
 ; RV64I-NEXT:    ld a4, 984(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    and a1, a1, a4
@@ -6206,7 +6195,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    or a1, a2, a1
 ; RV64I-NEXT:    or a0, a3, a0
 ; RV64I-NEXT:    srli a2, a1, 2
-; RV64I-NEXT:    ld a4, 968(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 976(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    and a1, a1, a4
 ; RV64I-NEXT:    srli a3, a0, 2
 ; RV64I-NEXT:    and a0, a0, a4
@@ -6269,148 +6258,148 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    sw s9, 660(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    sw s10, 656(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    sw s11, 652(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a2, 0(a0)
 ; RV32IM-NEXT:    lw s6, 4(a0)
 ; RV32IM-NEXT:    lw t2, 8(a0)
 ; RV32IM-NEXT:    lw t3, 12(a0)
-; RV32IM-NEXT:    lw t1, 0(a1)
+; RV32IM-NEXT:    lw t5, 0(a1)
 ; RV32IM-NEXT:    lw s2, 4(a1)
 ; RV32IM-NEXT:    lw a5, 8(a1)
-; RV32IM-NEXT:    lw t5, 12(a1)
+; RV32IM-NEXT:    lw s0, 12(a1)
 ; RV32IM-NEXT:    lui a3, 16
 ; RV32IM-NEXT:    lui a0, 61681
 ; RV32IM-NEXT:    lui a1, 209715
 ; RV32IM-NEXT:    lui s7, 349525
 ; RV32IM-NEXT:    li t0, 1
-; RV32IM-NEXT:    addi s11, a3, -256
-; RV32IM-NEXT:    addi s10, a0, -241
+; RV32IM-NEXT:    addi s10, a3, -256
+; RV32IM-NEXT:    addi s9, a0, -241
 ; RV32IM-NEXT:    addi s8, a1, 819
-; RV32IM-NEXT:    srli t4, s2, 8
+; RV32IM-NEXT:    srli a0, s2, 8
 ; RV32IM-NEXT:    srli s3, s2, 24
-; RV32IM-NEXT:    and a0, s2, s11
+; RV32IM-NEXT:    and a1, s2, s10
 ; RV32IM-NEXT:    slli s2, s2, 24
-; RV32IM-NEXT:    srli a1, s6, 8
+; RV32IM-NEXT:    srli a3, s6, 8
 ; RV32IM-NEXT:    srli a6, s6, 24
-; RV32IM-NEXT:    and s5, s6, s11
+; RV32IM-NEXT:    and t4, s6, s10
 ; RV32IM-NEXT:    slli s6, s6, 24
-; RV32IM-NEXT:    srli a3, t1, 8
-; RV32IM-NEXT:    srli a7, t1, 24
-; RV32IM-NEXT:    and a4, t1, s11
-; RV32IM-NEXT:    slli t1, t1, 24
-; RV32IM-NEXT:    and t4, t4, s11
-; RV32IM-NEXT:    or t4, t4, s3
+; RV32IM-NEXT:    srli a4, t5, 8
+; RV32IM-NEXT:    srli t1, t5, 24
+; RV32IM-NEXT:    and a7, t5, s10
+; RV32IM-NEXT:    slli t5, t5, 24
+; RV32IM-NEXT:    and a0, a0, s10
+; RV32IM-NEXT:    or a0, a0, s3
 ; RV32IM-NEXT:    srli s3, a2, 8
-; RV32IM-NEXT:    slli a0, a0, 8
-; RV32IM-NEXT:    or a0, s2, a0
-; RV32IM-NEXT:    srli s4, a2, 24
-; RV32IM-NEXT:    and a1, a1, s11
-; RV32IM-NEXT:    or a1, a1, a6
-; RV32IM-NEXT:    and a6, a2, s11
+; RV32IM-NEXT:    slli a1, a1, 8
+; RV32IM-NEXT:    or a1, s2, a1
+; RV32IM-NEXT:    srli t6, a2, 24
+; RV32IM-NEXT:    and a3, a3, s10
+; RV32IM-NEXT:    or a3, a3, a6
+; RV32IM-NEXT:    and a6, a2, s10
 ; RV32IM-NEXT:    slli s2, a2, 24
-; RV32IM-NEXT:    slli s5, s5, 8
-; RV32IM-NEXT:    or a2, s6, s5
-; RV32IM-NEXT:    srli t6, t5, 8
-; RV32IM-NEXT:    and a3, a3, s11
-; RV32IM-NEXT:    or a3, a3, a7
-; RV32IM-NEXT:    srli s1, t5, 24
-; RV32IM-NEXT:    slli a4, a4, 8
-; RV32IM-NEXT:    or a4, t1, a4
-; RV32IM-NEXT:    and s0, t5, s11
-; RV32IM-NEXT:    slli s5, t5, 24
-; RV32IM-NEXT:    and a7, s3, s11
-; RV32IM-NEXT:    or a7, a7, s4
-; RV32IM-NEXT:    srli t5, t3, 8
+; RV32IM-NEXT:    slli t4, t4, 8
+; RV32IM-NEXT:    or a2, s6, t4
+; RV32IM-NEXT:    srli t4, s0, 8
+; RV32IM-NEXT:    and a4, a4, s10
+; RV32IM-NEXT:    or a4, a4, t1
+; RV32IM-NEXT:    srli s4, s0, 24
+; RV32IM-NEXT:    slli a7, a7, 8
+; RV32IM-NEXT:    or a7, t5, a7
+; RV32IM-NEXT:    and s1, s0, s10
+; RV32IM-NEXT:    slli s5, s0, 24
+; RV32IM-NEXT:    and t1, s3, s10
+; RV32IM-NEXT:    or t1, t1, t6
+; RV32IM-NEXT:    srli s3, t3, 8
 ; RV32IM-NEXT:    slli a6, a6, 8
-; RV32IM-NEXT:    or t1, s2, a6
-; RV32IM-NEXT:    srli s3, t3, 24
-; RV32IM-NEXT:    and a6, t6, s11
-; RV32IM-NEXT:    or s2, a6, s1
-; RV32IM-NEXT:    and s4, t3, s11
-; RV32IM-NEXT:    slli t3, t3, 24
-; RV32IM-NEXT:    slli s0, s0, 8
-; RV32IM-NEXT:    or a6, s5, s0
+; RV32IM-NEXT:    or t5, s2, a6
+; RV32IM-NEXT:    srli a6, t3, 24
+; RV32IM-NEXT:    and t4, t4, s10
+; RV32IM-NEXT:    or s0, t4, s4
+; RV32IM-NEXT:    and s2, t3, s10
+; RV32IM-NEXT:    slli t4, t3, 24
+; RV32IM-NEXT:    slli s1, s1, 8
+; RV32IM-NEXT:    or t3, s5, s1
 ; RV32IM-NEXT:    srli t6, a5, 8
-; RV32IM-NEXT:    and t5, t5, s11
-; RV32IM-NEXT:    or t5, t5, s3
-; RV32IM-NEXT:    srli s0, a5, 24
-; RV32IM-NEXT:    slli s4, s4, 8
-; RV32IM-NEXT:    or t3, t3, s4
-; RV32IM-NEXT:    and s3, a5, s11
-; RV32IM-NEXT:    slli s4, a5, 24
-; RV32IM-NEXT:    and a5, t6, s11
-; RV32IM-NEXT:    or a5, a5, s0
+; RV32IM-NEXT:    and s1, s3, s10
+; RV32IM-NEXT:    or a6, s1, a6
+; RV32IM-NEXT:    srli s1, a5, 24
+; RV32IM-NEXT:    slli s2, s2, 8
+; RV32IM-NEXT:    or s2, t4, s2
+; RV32IM-NEXT:    and s3, a5, s10
+; RV32IM-NEXT:    slli t4, a5, 24
+; RV32IM-NEXT:    and a5, t6, s10
+; RV32IM-NEXT:    or a5, a5, s1
 ; RV32IM-NEXT:    srli t6, t2, 8
 ; RV32IM-NEXT:    slli s3, s3, 8
-; RV32IM-NEXT:    or s0, s4, s3
+; RV32IM-NEXT:    or t4, t4, s3
 ; RV32IM-NEXT:    srli s1, t2, 24
-; RV32IM-NEXT:    and t6, t6, s11
+; RV32IM-NEXT:    and t6, t6, s10
 ; RV32IM-NEXT:    or t6, t6, s1
-; RV32IM-NEXT:    and s1, t2, s11
+; RV32IM-NEXT:    and s1, t2, s10
 ; RV32IM-NEXT:    slli t2, t2, 24
 ; RV32IM-NEXT:    slli s1, s1, 8
 ; RV32IM-NEXT:    or s1, t2, s1
 ; RV32IM-NEXT:    addi t2, s7, 1365
-; RV32IM-NEXT:    slli s3, t0, 11
-; RV32IM-NEXT:    or a0, a0, t4
-; RV32IM-NEXT:    or a1, a2, a1
-; RV32IM-NEXT:    or a3, a4, a3
-; RV32IM-NEXT:    or a2, t1, a7
-; RV32IM-NEXT:    or a4, a6, s2
-; RV32IM-NEXT:    or a6, t3, t5
-; RV32IM-NEXT:    or a5, s0, a5
+; RV32IM-NEXT:    slli s4, t0, 11
+; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    or a2, a2, a3
+; RV32IM-NEXT:    or a1, a7, a4
+; RV32IM-NEXT:    or a3, t5, t1
+; RV32IM-NEXT:    or a4, t3, s0
+; RV32IM-NEXT:    or a6, s2, a6
+; RV32IM-NEXT:    or a5, t4, a5
 ; RV32IM-NEXT:    or a7, s1, t6
 ; RV32IM-NEXT:    srli t0, a0, 4
-; RV32IM-NEXT:    sw s10, 648(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, s10
-; RV32IM-NEXT:    srli t1, a1, 4
-; RV32IM-NEXT:    and a1, a1, s10
-; RV32IM-NEXT:    srli t3, a3, 4
-; RV32IM-NEXT:    and a3, a3, s10
-; RV32IM-NEXT:    srli t4, a2, 4
-; RV32IM-NEXT:    and a2, a2, s10
+; RV32IM-NEXT:    sw s9, 648(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, s9
+; RV32IM-NEXT:    srli t1, a2, 4
+; RV32IM-NEXT:    and a2, a2, s9
+; RV32IM-NEXT:    srli t3, a1, 4
+; RV32IM-NEXT:    and a1, a1, s9
+; RV32IM-NEXT:    srli t4, a3, 4
+; RV32IM-NEXT:    and a3, a3, s9
 ; RV32IM-NEXT:    srli t5, a4, 4
-; RV32IM-NEXT:    and a4, a4, s10
+; RV32IM-NEXT:    and a4, a4, s9
 ; RV32IM-NEXT:    srli t6, a6, 4
-; RV32IM-NEXT:    and a6, a6, s10
+; RV32IM-NEXT:    and a6, a6, s9
 ; RV32IM-NEXT:    srli s0, a5, 4
-; RV32IM-NEXT:    and a5, a5, s10
+; RV32IM-NEXT:    and a5, a5, s9
 ; RV32IM-NEXT:    srli s1, a7, 4
-; RV32IM-NEXT:    and a7, a7, s10
-; RV32IM-NEXT:    and t0, t0, s10
+; RV32IM-NEXT:    and a7, a7, s9
+; RV32IM-NEXT:    and t0, t0, s9
 ; RV32IM-NEXT:    slli a0, a0, 4
-; RV32IM-NEXT:    and t1, t1, s10
+; RV32IM-NEXT:    and t1, t1, s9
+; RV32IM-NEXT:    slli a2, a2, 4
+; RV32IM-NEXT:    and t3, t3, s9
 ; RV32IM-NEXT:    slli a1, a1, 4
-; RV32IM-NEXT:    and t3, t3, s10
+; RV32IM-NEXT:    and t4, t4, s9
 ; RV32IM-NEXT:    slli a3, a3, 4
-; RV32IM-NEXT:    and t4, t4, s10
-; RV32IM-NEXT:    slli a2, a2, 4
-; RV32IM-NEXT:    and t5, t5, s10
+; RV32IM-NEXT:    and t5, t5, s9
 ; RV32IM-NEXT:    slli a4, a4, 4
-; RV32IM-NEXT:    and t6, t6, s10
+; RV32IM-NEXT:    and t6, t6, s9
 ; RV32IM-NEXT:    slli a6, a6, 4
-; RV32IM-NEXT:    and s0, s0, s10
+; RV32IM-NEXT:    and s0, s0, s9
 ; RV32IM-NEXT:    slli a5, a5, 4
-; RV32IM-NEXT:    and s1, s1, s10
+; RV32IM-NEXT:    and s1, s1, s9
 ; RV32IM-NEXT:    slli a7, a7, 4
 ; RV32IM-NEXT:    or a0, t0, a0
-; RV32IM-NEXT:    or a1, t1, a1
-; RV32IM-NEXT:    or a3, t3, a3
-; RV32IM-NEXT:    or a2, t4, a2
+; RV32IM-NEXT:    or a2, t1, a2
+; RV32IM-NEXT:    or a1, t3, a1
+; RV32IM-NEXT:    or a3, t4, a3
 ; RV32IM-NEXT:    or a4, t5, a4
 ; RV32IM-NEXT:    or a6, t6, a6
 ; RV32IM-NEXT:    or a5, s0, a5
 ; RV32IM-NEXT:    or a7, s1, a7
 ; RV32IM-NEXT:    srli t0, a0, 2
-; RV32IM-NEXT:    sw s8, 628(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s8, 632(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, s8
-; RV32IM-NEXT:    srli t1, a1, 2
+; RV32IM-NEXT:    srli t1, a2, 2
+; RV32IM-NEXT:    and a2, a2, s8
+; RV32IM-NEXT:    srli t3, a1, 2
 ; RV32IM-NEXT:    and a1, a1, s8
-; RV32IM-NEXT:    srli t3, a3, 2
+; RV32IM-NEXT:    srli t4, a3, 2
 ; RV32IM-NEXT:    and a3, a3, s8
-; RV32IM-NEXT:    srli t4, a2, 2
-; RV32IM-NEXT:    and a2, a2, s8
 ; RV32IM-NEXT:    srli t5, a4, 2
 ; RV32IM-NEXT:    and a4, a4, s8
 ; RV32IM-NEXT:    srli t6, a6, 2
@@ -6422,11 +6411,11 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    and t0, t0, s8
 ; RV32IM-NEXT:    slli a0, a0, 2
 ; RV32IM-NEXT:    and t1, t1, s8
-; RV32IM-NEXT:    slli a1, a1, 2
+; RV32IM-NEXT:    slli a2, a2, 2
 ; RV32IM-NEXT:    and t3, t3, s8
-; RV32IM-NEXT:    slli a3, a3, 2
+; RV32IM-NEXT:    slli a1, a1, 2
 ; RV32IM-NEXT:    and t4, t4, s8
-; RV32IM-NEXT:    slli a2, a2, 2
+; RV32IM-NEXT:    slli a3, a3, 2
 ; RV32IM-NEXT:    and t5, t5, s8
 ; RV32IM-NEXT:    slli a4, a4, 2
 ; RV32IM-NEXT:    and t6, t6, s8
@@ -6436,22 +6425,22 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    and s1, s1, s8
 ; RV32IM-NEXT:    slli a7, a7, 2
 ; RV32IM-NEXT:    or a0, t0, a0
-; RV32IM-NEXT:    or a1, t1, a1
-; RV32IM-NEXT:    or a3, t3, a3
-; RV32IM-NEXT:    or a2, t4, a2
+; RV32IM-NEXT:    or a2, t1, a2
+; RV32IM-NEXT:    or a1, t3, a1
+; RV32IM-NEXT:    or a3, t4, a3
 ; RV32IM-NEXT:    or a4, t5, a4
 ; RV32IM-NEXT:    or a6, t6, a6
 ; RV32IM-NEXT:    or a5, s0, a5
 ; RV32IM-NEXT:    or a7, s1, a7
 ; RV32IM-NEXT:    srli t0, a0, 1
-; RV32IM-NEXT:    sw t2, 644(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t2, 628(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, t2
-; RV32IM-NEXT:    srli t1, a1, 1
+; RV32IM-NEXT:    srli t1, a2, 1
+; RV32IM-NEXT:    and a2, a2, t2
+; RV32IM-NEXT:    srli t3, a1, 1
 ; RV32IM-NEXT:    and a1, a1, t2
-; RV32IM-NEXT:    srli t3, a3, 1
+; RV32IM-NEXT:    srli t4, a3, 1
 ; RV32IM-NEXT:    and a3, a3, t2
-; RV32IM-NEXT:    srli t4, a2, 1
-; RV32IM-NEXT:    and a2, a2, t2
 ; RV32IM-NEXT:    srli t5, a4, 1
 ; RV32IM-NEXT:    and a4, a4, t2
 ; RV32IM-NEXT:    srli t6, a6, 1
@@ -6463,11 +6452,11 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    and t0, t0, t2
 ; RV32IM-NEXT:    slli a0, a0, 1
 ; RV32IM-NEXT:    and t1, t1, t2
-; RV32IM-NEXT:    slli a1, a1, 1
+; RV32IM-NEXT:    slli a2, a2, 1
 ; RV32IM-NEXT:    and t3, t3, t2
-; RV32IM-NEXT:    slli a3, a3, 1
+; RV32IM-NEXT:    slli s2, a1, 1
 ; RV32IM-NEXT:    and t4, t4, t2
-; RV32IM-NEXT:    slli s2, a2, 1
+; RV32IM-NEXT:    slli a3, a3, 1
 ; RV32IM-NEXT:    and t5, t5, t2
 ; RV32IM-NEXT:    slli a4, a4, 1
 ; RV32IM-NEXT:    and t6, t6, t2
@@ -6477,1824 +6466,1828 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    and s1, s1, t2
 ; RV32IM-NEXT:    slli a7, a7, 1
 ; RV32IM-NEXT:    or a0, t0, a0
-; RV32IM-NEXT:    or a1, t1, a1
-; RV32IM-NEXT:    or a2, t3, a3
-; RV32IM-NEXT:    or a3, t4, s2
-; RV32IM-NEXT:    or s4, t5, a4
+; RV32IM-NEXT:    or a1, t1, a2
+; RV32IM-NEXT:    or a2, t3, s2
+; RV32IM-NEXT:    or a3, t4, a3
+; RV32IM-NEXT:    or s7, t5, a4
 ; RV32IM-NEXT:    or a4, t6, a6
-; RV32IM-NEXT:    or s6, s0, a5
-; RV32IM-NEXT:    or s5, s1, a7
+; RV32IM-NEXT:    or s9, s0, a5
+; RV32IM-NEXT:    or s8, s1, a7
 ; RV32IM-NEXT:    srli a5, a0, 8
 ; RV32IM-NEXT:    srli a6, a0, 24
 ; RV32IM-NEXT:    slli a7, a0, 24
-; RV32IM-NEXT:    and t0, a0, s11
+; RV32IM-NEXT:    and t0, a0, s10
 ; RV32IM-NEXT:    srli t1, a1, 8
 ; RV32IM-NEXT:    srli t3, a1, 24
-; RV32IM-NEXT:    slli t5, a1, 24
-; RV32IM-NEXT:    and t4, a1, s11
-; RV32IM-NEXT:    and a5, a5, s11
+; RV32IM-NEXT:    slli t4, a1, 24
+; RV32IM-NEXT:    and t5, a1, s10
+; RV32IM-NEXT:    and a5, a5, s10
 ; RV32IM-NEXT:    or a5, a5, a6
-; RV32IM-NEXT:    sw a5, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mv s10, s3
-; RV32IM-NEXT:    and t6, a1, s3
+; RV32IM-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, a1, s4
+; RV32IM-NEXT:    sw a6, 576(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli t0, t0, 8
 ; RV32IM-NEXT:    or a5, a7, t0
-; RV32IM-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t2, 1
-; RV32IM-NEXT:    and a7, a1, t2
-; RV32IM-NEXT:    and a5, t1, s11
-; RV32IM-NEXT:    slli a6, t4, 8
+; RV32IM-NEXT:    sw a5, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 1
+; RV32IM-NEXT:    and t0, a1, a7
+; RV32IM-NEXT:    sw t0, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, t1, s10
+; RV32IM-NEXT:    slli t5, t5, 8
 ; RV32IM-NEXT:    or a5, a5, t3
 ; RV32IM-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, a2, t6
-; RV32IM-NEXT:    or t4, t5, a6
-; RV32IM-NEXT:    mul a6, a2, a7
+; RV32IM-NEXT:    mul a5, a2, a6
+; RV32IM-NEXT:    or a6, t4, t5
+; RV32IM-NEXT:    sw a6, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, a2, t0
 ; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s1, 64
-; RV32IM-NEXT:    and t0, a1, s1
-; RV32IM-NEXT:    lui s2, 128
-; RV32IM-NEXT:    and s0, a1, s2
-; RV32IM-NEXT:    mul a5, a2, t0
-; RV32IM-NEXT:    mul a6, a2, s0
+; RV32IM-NEXT:    sw a5, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t0, 64
+; RV32IM-NEXT:    and a5, a1, t0
+; RV32IM-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 128
+; RV32IM-NEXT:    and a6, a1, t1
+; RV32IM-NEXT:    sw a6, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a2, a5
+; RV32IM-NEXT:    mul a6, a2, a6
 ; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a5, 16384
 ; RV32IM-NEXT:    lui a6, 32768
 ; RV32IM-NEXT:    and a5, a1, a5
-; RV32IM-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s7, 16384
+; RV32IM-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t2, 16384
 ; RV32IM-NEXT:    and a6, a1, a6
-; RV32IM-NEXT:    sw a6, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s8, 32768
+; RV32IM-NEXT:    sw a6, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t3, 32768
 ; RV32IM-NEXT:    mul a5, a2, a5
-; RV32IM-NEXT:    mul a6, a2, a6
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, a3, s3
-; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    and t1, a3, t2
-; RV32IM-NEXT:    lui a5, 1
-; RV32IM-NEXT:    mul t1, a0, t1
-; RV32IM-NEXT:    xor s9, a6, t1
-; RV32IM-NEXT:    and a6, a3, s1
-; RV32IM-NEXT:    lui t1, 64
+; RV32IM-NEXT:    mul s0, a2, a6
+; RV32IM-NEXT:    xor s0, a5, s0
+; RV32IM-NEXT:    and a5, a3, s4
+; RV32IM-NEXT:    mul a5, a0, a5
+; RV32IM-NEXT:    and a6, a3, a7
+; RV32IM-NEXT:    lui s5, 1
 ; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    and s1, a3, s2
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    mul s1, a0, s1
-; RV32IM-NEXT:    xor ra, a6, s1
-; RV32IM-NEXT:    and a6, a3, s7
-; RV32IM-NEXT:    lui t2, 16384
+; RV32IM-NEXT:    xor t5, a5, a6
+; RV32IM-NEXT:    and a5, a3, t0
+; RV32IM-NEXT:    lui t6, 64
+; RV32IM-NEXT:    mul a5, a0, a5
+; RV32IM-NEXT:    and a6, a3, t1
+; RV32IM-NEXT:    lui s6, 128
 ; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    and s1, a3, s8
-; RV32IM-NEXT:    lui s7, 32768
-; RV32IM-NEXT:    mul s1, a0, s1
-; RV32IM-NEXT:    xor s3, a6, s1
-; RV32IM-NEXT:    mul t6, a0, t6
-; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    xor a6, t6, a7
-; RV32IM-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, t0
-; RV32IM-NEXT:    mul t0, a0, s0
-; RV32IM-NEXT:    xor a6, a7, t0
-; RV32IM-NEXT:    sw a6, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a7, 4096
-; RV32IM-NEXT:    lui t6, 8192
-; RV32IM-NEXT:    and t0, a1, a7
-; RV32IM-NEXT:    lui s8, 4096
-; RV32IM-NEXT:    and a6, a1, t6
-; RV32IM-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 8192
-; RV32IM-NEXT:    mul t6, a0, t0
-; RV32IM-NEXT:    mul s0, a0, a6
-; RV32IM-NEXT:    xor a6, t6, s0
-; RV32IM-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli t6, s4, 8
-; RV32IM-NEXT:    sw s11, 640(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, t6, s11
-; RV32IM-NEXT:    srli s0, s4, 24
-; RV32IM-NEXT:    or a6, t6, s0
-; RV32IM-NEXT:    sw a6, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, s4, s11
-; RV32IM-NEXT:    slli t6, t6, 8
-; RV32IM-NEXT:    slli s0, s4, 24
-; RV32IM-NEXT:    or a6, s0, t6
-; RV32IM-NEXT:    sw a6, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli t6, a4, 8
-; RV32IM-NEXT:    and t6, t6, s11
-; RV32IM-NEXT:    srli s0, a4, 24
-; RV32IM-NEXT:    or a6, t6, s0
-; RV32IM-NEXT:    sw a6, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a4, s11
-; RV32IM-NEXT:    slli t6, t6, 8
-; RV32IM-NEXT:    slli s0, a4, 24
-; RV32IM-NEXT:    or a6, s0, t6
-; RV32IM-NEXT:    sw a6, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, a4, s10
-; RV32IM-NEXT:    sw s10, 624(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, a4, a5
-; RV32IM-NEXT:    mul t6, s6, a7
-; RV32IM-NEXT:    mul s0, s6, s11
-; RV32IM-NEXT:    xor a6, t6, s0
-; RV32IM-NEXT:    sw a6, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a4, t1
-; RV32IM-NEXT:    and s0, a4, t3
-; RV32IM-NEXT:    mul s1, s6, t6
-; RV32IM-NEXT:    mul s2, s6, s0
-; RV32IM-NEXT:    xor a6, s1, s2
-; RV32IM-NEXT:    sw a6, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s1, a4, t2
-; RV32IM-NEXT:    sw s1, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a6, 16384
-; RV32IM-NEXT:    and s7, a4, s7
-; RV32IM-NEXT:    sw s7, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t2, 32768
-; RV32IM-NEXT:    mul s1, s6, s1
-; RV32IM-NEXT:    mul s2, s6, s7
-; RV32IM-NEXT:    xor s1, s1, s2
-; RV32IM-NEXT:    sw s1, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s1, s5, s10
-; RV32IM-NEXT:    mul s1, s4, s1
-; RV32IM-NEXT:    and s2, s5, a5
-; RV32IM-NEXT:    mul s2, s4, s2
-; RV32IM-NEXT:    xor a5, s1, s2
-; RV32IM-NEXT:    sw a5, 440(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s1, s5, t1
-; RV32IM-NEXT:    mul s1, s4, s1
-; RV32IM-NEXT:    and s2, s5, t3
-; RV32IM-NEXT:    mul s2, s4, s2
-; RV32IM-NEXT:    xor a5, s1, s2
-; RV32IM-NEXT:    sw a5, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s1, s5, a6
-; RV32IM-NEXT:    mul s1, s4, s1
-; RV32IM-NEXT:    and s2, s5, t2
-; RV32IM-NEXT:    mul s2, s4, s2
-; RV32IM-NEXT:    xor a5, s1, s2
-; RV32IM-NEXT:    sw a5, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s1, s4, a7
-; RV32IM-NEXT:    mul s2, s4, s11
-; RV32IM-NEXT:    xor a5, s1, s2
-; RV32IM-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t6, s4, t6
-; RV32IM-NEXT:    mul s0, s4, s0
-; RV32IM-NEXT:    xor a5, t6, s0
-; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a4, s8
-; RV32IM-NEXT:    sw a5, 396(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a6, a4, t5
-; RV32IM-NEXT:    sw a6, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s0, s4, a5
-; RV32IM-NEXT:    mul s1, s4, a6
-; RV32IM-NEXT:    xor s0, s0, s1
-; RV32IM-NEXT:    sw s0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a5, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a6, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a5, a6, a5
-; RV32IM-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a5, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a5, t4, a5
-; RV32IM-NEXT:    sw a5, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a6, a5, a6
+; RV32IM-NEXT:    and a5, a3, t2
+; RV32IM-NEXT:    mul a5, a0, a5
+; RV32IM-NEXT:    and a7, a3, t3
+; RV32IM-NEXT:    lui s11, 32768
+; RV32IM-NEXT:    mul s1, a0, a7
+; RV32IM-NEXT:    xor s1, a5, s1
 ; RV32IM-NEXT:    lui a5, 2
-; RV32IM-NEXT:    and a6, a1, a5
-; RV32IM-NEXT:    sw a6, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s0, a2, a6
-; RV32IM-NEXT:    lw a6, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a6, s0
-; RV32IM-NEXT:    sw a6, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a7, 256
-; RV32IM-NEXT:    and a6, a1, a7
-; RV32IM-NEXT:    sw a6, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s0, a2, a6
-; RV32IM-NEXT:    lw a6, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a6, s0
-; RV32IM-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a6, 65536
-; RV32IM-NEXT:    and t1, a1, a6
-; RV32IM-NEXT:    sw t1, 360(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s0, a2, t1
-; RV32IM-NEXT:    lw t1, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, t1, s0
-; RV32IM-NEXT:    sw t1, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, a5
+; RV32IM-NEXT:    lui t0, 4
+; RV32IM-NEXT:    and a7, a1, a5
+; RV32IM-NEXT:    and t0, a1, t0
+; RV32IM-NEXT:    sw t0, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s3, 4
+; RV32IM-NEXT:    mul a5, a0, a7
+; RV32IM-NEXT:    mul t0, a0, t0
+; RV32IM-NEXT:    xor a5, a5, t0
+; RV32IM-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 512
+; RV32IM-NEXT:    lui t0, 1024
+; RV32IM-NEXT:    and a5, a1, a5
+; RV32IM-NEXT:    sw a5, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a1, t0
+; RV32IM-NEXT:    sw t0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 1024
 ; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    xor a5, s9, a5
+; RV32IM-NEXT:    mul t0, a0, t0
+; RV32IM-NEXT:    xor a5, a5, t0
+; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 4096
+; RV32IM-NEXT:    lui t0, 8192
+; RV32IM-NEXT:    and a5, a1, a5
+; RV32IM-NEXT:    sw a5, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a1, t0
+; RV32IM-NEXT:    mul t3, a0, a5
+; RV32IM-NEXT:    mul t4, a0, s2
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli t3, s7, 8
+; RV32IM-NEXT:    sw s10, 644(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, t3, s10
+; RV32IM-NEXT:    srli t4, s7, 24
+; RV32IM-NEXT:    or a5, t3, t4
+; RV32IM-NEXT:    sw a5, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, s7, s10
+; RV32IM-NEXT:    slli t3, t3, 8
+; RV32IM-NEXT:    slli t4, s7, 24
+; RV32IM-NEXT:    or a5, t4, t3
+; RV32IM-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli t3, a4, 8
+; RV32IM-NEXT:    and t3, t3, s10
+; RV32IM-NEXT:    srli t4, a4, 24
+; RV32IM-NEXT:    or a5, t3, t4
+; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a4, s10
+; RV32IM-NEXT:    slli t3, t3, 8
+; RV32IM-NEXT:    slli t4, a4, 24
+; RV32IM-NEXT:    or a5, t4, t3
 ; RV32IM-NEXT:    sw a5, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, a7
-; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    xor a5, ra, a5
-; RV32IM-NEXT:    sw a5, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, a6
-; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    xor a5, s3, a5
-; RV32IM-NEXT:    sw a5, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 2
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 2
+; RV32IM-NEXT:    and a5, a4, s4
+; RV32IM-NEXT:    sw a5, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s4, 624(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t4, a4, s5
+; RV32IM-NEXT:    sw t4, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t0, 1
+; RV32IM-NEXT:    mul t3, s9, a5
+; RV32IM-NEXT:    mul t4, s9, t4
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a4, t6
+; RV32IM-NEXT:    sw t3, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 64
+; RV32IM-NEXT:    and t4, a4, s6
+; RV32IM-NEXT:    sw t4, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t6, 128
+; RV32IM-NEXT:    mul t3, s9, t3
+; RV32IM-NEXT:    mul t4, s9, t4
+; RV32IM-NEXT:    xor t3, t3, t4
+; RV32IM-NEXT:    sw t3, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a4, t2
+; RV32IM-NEXT:    sw t3, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s6, a4, s11
+; RV32IM-NEXT:    sw s6, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s5, 32768
+; RV32IM-NEXT:    mul t3, s9, t3
+; RV32IM-NEXT:    mul t4, s9, s6
+; RV32IM-NEXT:    xor t3, t3, t4
+; RV32IM-NEXT:    sw t3, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, s8, s4
+; RV32IM-NEXT:    mul t3, s7, t3
+; RV32IM-NEXT:    and t4, s8, t0
+; RV32IM-NEXT:    mul t4, s7, t4
+; RV32IM-NEXT:    xor t0, t3, t4
+; RV32IM-NEXT:    sw t0, 416(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, s8, a5
+; RV32IM-NEXT:    mul t3, s7, t3
+; RV32IM-NEXT:    and t4, s8, t6
+; RV32IM-NEXT:    mul t4, s7, t4
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 376(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, s8, t2
+; RV32IM-NEXT:    mul t3, s7, t3
+; RV32IM-NEXT:    and t4, s8, s5
+; RV32IM-NEXT:    mul t4, s7, t4
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 332(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t0, 2
+; RV32IM-NEXT:    and ra, a4, t0
+; RV32IM-NEXT:    and a5, a4, s3
+; RV32IM-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t3, s7, ra
+; RV32IM-NEXT:    mul t4, s7, a5
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 512
+; RV32IM-NEXT:    and a5, a4, a5
+; RV32IM-NEXT:    sw a5, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t1, a4, t1
+; RV32IM-NEXT:    sw t1, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t3, s7, a5
+; RV32IM-NEXT:    mul t4, s7, t1
+; RV32IM-NEXT:    xor a5, t3, t4
+; RV32IM-NEXT:    sw a5, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 4096
+; RV32IM-NEXT:    and a5, a4, a5
+; RV32IM-NEXT:    sw a5, 356(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 8192
+; RV32IM-NEXT:    and t1, a4, t1
+; RV32IM-NEXT:    sw t1, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t3, s7, a5
+; RV32IM-NEXT:    mul t6, s7, t1
+; RV32IM-NEXT:    xor a5, t3, t6
+; RV32IM-NEXT:    sw a5, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a5, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t1, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a5, t1, a5
+; RV32IM-NEXT:    sw a5, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a5, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t1, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a5, t1, a5
+; RV32IM-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a2, a7
+; RV32IM-NEXT:    lw a5, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a7
+; RV32IM-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 256
+; RV32IM-NEXT:    and t6, a1, a5
+; RV32IM-NEXT:    lui t4, 256
+; RV32IM-NEXT:    mul a7, a2, t6
+; RV32IM-NEXT:    lw a5, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a7
+; RV32IM-NEXT:    sw a5, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 65536
+; RV32IM-NEXT:    and s3, a1, a5
+; RV32IM-NEXT:    mul t3, a2, s3
+; RV32IM-NEXT:    xor a7, s0, t3
+; RV32IM-NEXT:    sw a7, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a3, t0
+; RV32IM-NEXT:    mul t3, a0, t3
+; RV32IM-NEXT:    xor a7, t5, t3
+; RV32IM-NEXT:    sw a7, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t3, a3, t4
+; RV32IM-NEXT:    mul t3, a0, t3
+; RV32IM-NEXT:    xor a6, a6, t3
+; RV32IM-NEXT:    sw a6, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, a3, a5
+; RV32IM-NEXT:    mul a6, a0, a6
+; RV32IM-NEXT:    xor a5, s1, a6
+; RV32IM-NEXT:    sw a5, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 2
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 2
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 1
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 1
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 4
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 4
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 1
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 1
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 4
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 4
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 2
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 2
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 8
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 8
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 2
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 2
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 8
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 8
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 3
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 3
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 16
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 16
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 3
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 3
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 432(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 16
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 16
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 4
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 4
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 32
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 32
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 4
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 392(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 4
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 400(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 32
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 32
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 5
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 5
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 412(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 64
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 64
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 5
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 364(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 5
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 388(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 64
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 64
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 6
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 6
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 128
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 128
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 6
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 428(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 6
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 444(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 128
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 128
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 7
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 352(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 7
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 364(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 376(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 256
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 256
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 7
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 316(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 7
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 324(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 256
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 256
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 8
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 328(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 8
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 340(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 348(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a1, 512
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    andi a6, a3, 512
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 8
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 288(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 8
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 300(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 512
 ; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    andi t3, a3, 512
+; RV32IM-NEXT:    seqz t3, t3
 ; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    slli t1, a2, 9
-; RV32IM-NEXT:    and a7, a5, t1
-; RV32IM-NEXT:    sw a7, 388(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t1, a0, 9
-; RV32IM-NEXT:    and a6, a6, t1
-; RV32IM-NEXT:    sw a6, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, t1
-; RV32IM-NEXT:    sw a5, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a7, 4
-; RV32IM-NEXT:    lui t3, 8
-; RV32IM-NEXT:    lui t4, 32
-; RV32IM-NEXT:    lui s9, 512
-; RV32IM-NEXT:    lui t5, 1024
-; RV32IM-NEXT:    lui s8, 2048
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    slli t5, a2, 9
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 340(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t5, a0, 9
+; RV32IM-NEXT:    and a5, t3, t5
+; RV32IM-NEXT:    sw a5, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, a6, t5
+; RV32IM-NEXT:    sw a5, 284(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 8
+; RV32IM-NEXT:    lui s1, 32
+; RV32IM-NEXT:    lui s5, 2048
 ; RV32IM-NEXT:    lui a5, 131072
-; RV32IM-NEXT:    lui t6, 262144
-; RV32IM-NEXT:    lui s7, 524288
-; RV32IM-NEXT:    andi a6, a1, 1
-; RV32IM-NEXT:    andi t1, a1, 1024
-; RV32IM-NEXT:    sw t1, 320(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, a1, a7
-; RV32IM-NEXT:    and s0, a1, t3
-; RV32IM-NEXT:    lui t2, 16
-; RV32IM-NEXT:    and s1, a1, t2
-; RV32IM-NEXT:    and s2, a1, t4
-; RV32IM-NEXT:    and s3, a1, s9
-; RV32IM-NEXT:    and s10, a1, t5
-; RV32IM-NEXT:    and s11, a1, s8
-; RV32IM-NEXT:    and ra, a1, a5
-; RV32IM-NEXT:    and a5, a1, t6
-; RV32IM-NEXT:    and a1, a1, s7
-; RV32IM-NEXT:    seqz a6, a6
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    sw t0, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    sw t0, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t0, a3, 1
-; RV32IM-NEXT:    seqz t0, t0
-; RV32IM-NEXT:    and t6, a3, a7
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 284(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t3
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 336(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t2
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 432(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t4
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, s9
-; RV32IM-NEXT:    mul a7, a0, t6
+; RV32IM-NEXT:    lui a6, 262144
+; RV32IM-NEXT:    lui s4, 524288
+; RV32IM-NEXT:    andi t3, a1, 1
+; RV32IM-NEXT:    andi t0, a1, 1024
+; RV32IM-NEXT:    and t5, a1, s6
+; RV32IM-NEXT:    lui t4, 16
+; RV32IM-NEXT:    and s0, a1, t4
+; RV32IM-NEXT:    and s1, a1, s1
+; RV32IM-NEXT:    lui a7, 32
+; RV32IM-NEXT:    and s5, a1, s5
+; RV32IM-NEXT:    lui t2, 2048
+; RV32IM-NEXT:    and a5, a1, a5
+; RV32IM-NEXT:    lui s10, 131072
+; RV32IM-NEXT:    and a6, a1, a6
+; RV32IM-NEXT:    lui s11, 262144
+; RV32IM-NEXT:    and a1, a1, s4
+; RV32IM-NEXT:    seqz t3, t3
+; RV32IM-NEXT:    lw t1, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t1, a2, t1
+; RV32IM-NEXT:    sw t1, 252(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t1, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t1, a2, t1
+; RV32IM-NEXT:    sw t1, 248(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t1, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t1, a2, t1
+; RV32IM-NEXT:    sw t1, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t1, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t1, a2, t1
+; RV32IM-NEXT:    sw t1, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t1, a2, s2
+; RV32IM-NEXT:    sw t1, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi t1, a3, 1
+; RV32IM-NEXT:    seqz t1, t1
+; RV32IM-NEXT:    lui s2, 4
+; RV32IM-NEXT:    and s2, a3, s2
+; RV32IM-NEXT:    mul s2, a0, s2
+; RV32IM-NEXT:    sw s2, 244(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, s6
+; RV32IM-NEXT:    mul s2, a0, s2
+; RV32IM-NEXT:    sw s2, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, t4
+; RV32IM-NEXT:    mul t4, a0, s2
+; RV32IM-NEXT:    sw t4, 396(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, a7
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 512
+; RV32IM-NEXT:    and s2, a3, s6
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 1024
+; RV32IM-NEXT:    and s2, a3, a7
+; RV32IM-NEXT:    mul a7, a0, s2
 ; RV32IM-NEXT:    sw a7, 280(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t5
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 324(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, s8
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, t2
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 372(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a7, 4096
-; RV32IM-NEXT:    and t6, a3, a7
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, a7
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 452(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a7, 8192
-; RV32IM-NEXT:    and t6, a3, a7
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a7, 131072
-; RV32IM-NEXT:    and t6, a3, a7
-; RV32IM-NEXT:    mul a7, a0, t6
+; RV32IM-NEXT:    and s2, a3, a7
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s2, a3, s10
+; RV32IM-NEXT:    mul s10, a0, s2
+; RV32IM-NEXT:    and s2, a3, s11
+; RV32IM-NEXT:    mul a7, a0, s2
 ; RV32IM-NEXT:    sw a7, 272(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a7, 262144
-; RV32IM-NEXT:    and t6, a3, a7
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 312(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, s7
-; RV32IM-NEXT:    mul a7, a0, t6
-; RV32IM-NEXT:    sw a7, 384(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t4, a0, a7
-; RV32IM-NEXT:    mul a7, a2, t1
+; RV32IM-NEXT:    and s2, a3, s4
+; RV32IM-NEXT:    mul a7, a0, s2
+; RV32IM-NEXT:    sw a7, 344(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a7, a0, a7
+; RV32IM-NEXT:    sw a7, 348(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a7, a0, a7
+; RV32IM-NEXT:    sw a7, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a2, t5
 ; RV32IM-NEXT:    sw a7, 260(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, t1
-; RV32IM-NEXT:    sw a7, 268(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t5, a0, t5
 ; RV32IM-NEXT:    mul a7, a2, s0
-; RV32IM-NEXT:    sw a7, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 328(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a7, a0, s0
-; RV32IM-NEXT:    sw a7, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 228(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a7, a2, s1
-; RV32IM-NEXT:    sw a7, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 404(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a7, a0, s1
-; RV32IM-NEXT:    sw a7, 380(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, s2
-; RV32IM-NEXT:    sw a7, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, s2
-; RV32IM-NEXT:    sw a7, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t1, a0, a7
-; RV32IM-NEXT:    mul a7, a2, s3
-; RV32IM-NEXT:    sw a7, 252(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, s3
 ; RV32IM-NEXT:    sw a7, 264(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, s10
-; RV32IM-NEXT:    sw a7, 288(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, s10
-; RV32IM-NEXT:    sw a7, 300(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, s11
-; RV32IM-NEXT:    sw a7, 344(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, s11
-; RV32IM-NEXT:    sw a7, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t5, a0, a7
-; RV32IM-NEXT:    lw a7, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    sw a7, 256(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 336(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a7, a0, a7
+; RV32IM-NEXT:    sw a7, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a0, t6
+; RV32IM-NEXT:    sw a7, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a2, s5
+; RV32IM-NEXT:    sw a7, 312(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t6, a0, s5
+; RV32IM-NEXT:    lw a7, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s0, a0, a7
+; RV32IM-NEXT:    lw a7, 568(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    sw a7, 292(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, ra
-; RV32IM-NEXT:    sw a7, 248(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a0, ra
-; RV32IM-NEXT:    sw a7, 360(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, a5
-; RV32IM-NEXT:    sw a7, 276(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 224(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a0, s3
+; RV32IM-NEXT:    sw a7, 256(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s11, a2, a5
 ; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    sw a5, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a5, 320(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a2, a6
+; RV32IM-NEXT:    sw a5, 240(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a0, a6
+; RV32IM-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a5, a2, a1
-; RV32IM-NEXT:    sw a5, 332(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a5, 292(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a1, a0, a1
-; RV32IM-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a6, a6, -1
-; RV32IM-NEXT:    addi t0, t0, -1
+; RV32IM-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi t3, t3, -1
+; RV32IM-NEXT:    addi t1, t1, -1
 ; RV32IM-NEXT:    slli a1, a2, 10
-; RV32IM-NEXT:    and a2, a6, a2
-; RV32IM-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t0, a0
-; RV32IM-NEXT:    sw a2, 240(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, a6, a0
-; RV32IM-NEXT:    sw a2, 244(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t3, a2
+; RV32IM-NEXT:    sw a2, 204(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t1, a0
+; RV32IM-NEXT:    sw a2, 216(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t3, a0
+; RV32IM-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a0, a0, 10
 ; RV32IM-NEXT:    andi a2, a3, 1024
-; RV32IM-NEXT:    lw a3, 320(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz a3, a3
+; RV32IM-NEXT:    seqz a3, t0
 ; RV32IM-NEXT:    seqz a2, a2
 ; RV32IM-NEXT:    addi a3, a3, -1
 ; RV32IM-NEXT:    addi a2, a2, -1
 ; RV32IM-NEXT:    and a1, a3, a1
-; RV32IM-NEXT:    sw a1, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 268(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, a2, a0
-; RV32IM-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 276(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a3, a0
-; RV32IM-NEXT:    sw a0, 320(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, t4
-; RV32IM-NEXT:    sw a0, 236(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, t1
 ; RV32IM-NEXT:    sw a0, 232(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, t5
+; RV32IM-NEXT:    sw a0, 212(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, t6
 ; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, s0
+; RV32IM-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    or a0, a1, a0
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a3, 2
-; RV32IM-NEXT:    and s7, a4, a3
-; RV32IM-NEXT:    mul a0, s6, s7
-; RV32IM-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a2, 256
-; RV32IM-NEXT:    and a0, a4, a2
-; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s6, a0
-; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s9, ra
+; RV32IM-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a1, 65536
-; RV32IM-NEXT:    and a0, a4, a1
-; RV32IM-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s6, a0
-; RV32IM-NEXT:    lw a5, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a5, a0
-; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, s5, a3
-; RV32IM-NEXT:    mul a0, s4, a0
-; RV32IM-NEXT:    lw a3, 440(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a3, a0
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, s5, a2
-; RV32IM-NEXT:    mul a0, s4, a0
-; RV32IM-NEXT:    lw a2, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a1, 256
+; RV32IM-NEXT:    and t1, a4, a1
+; RV32IM-NEXT:    mul a0, s9, t1
+; RV32IM-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a2, a0
-; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, s5, a1
-; RV32IM-NEXT:    mul a0, s4, a0
-; RV32IM-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a2, 65536
+; RV32IM-NEXT:    and t2, a4, a2
+; RV32IM-NEXT:    mul a0, s9, t2
+; RV32IM-NEXT:    lw a3, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a3, a0
+; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a0, 2
+; RV32IM-NEXT:    and a0, s8, a0
+; RV32IM-NEXT:    mul a0, s7, a0
+; RV32IM-NEXT:    lw a3, 416(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a3, a0
+; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, s8, a1
+; RV32IM-NEXT:    mul a0, s7, a0
+; RV32IM-NEXT:    lw a1, 376(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, s8, a2
+; RV32IM-NEXT:    mul a0, s7, a0
+; RV32IM-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 2
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 2
+; RV32IM-NEXT:    andi a1, s8, 2
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 1
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 220(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 1
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s9, 1
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 1
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 376(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 4
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 4
+; RV32IM-NEXT:    andi a1, s8, 4
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 2
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 204(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 2
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 212(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 224(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s9, 2
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 2
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 196(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 8
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 8
+; RV32IM-NEXT:    andi a1, s8, 8
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 3
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 172(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 3
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 184(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 200(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s9, 3
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 3
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 16
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 16
+; RV32IM-NEXT:    andi a1, s8, 16
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 4
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 156(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 4
-; RV32IM-NEXT:    and a1, a1, a5
+; RV32IM-NEXT:    slli a2, s9, 4
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 4
+; RV32IM-NEXT:    and a1, a1, a2
 ; RV32IM-NEXT:    sw a1, 160(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 168(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 32
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 32
+; RV32IM-NEXT:    andi a1, s8, 32
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 5
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 124(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 5
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 136(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
+; RV32IM-NEXT:    slli a2, s9, 5
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 5
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 132(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 148(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 64
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 64
+; RV32IM-NEXT:    andi a1, s8, 64
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 6
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 192(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 6
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 196(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s9, 6
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 6
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 180(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 192(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 128
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 128
+; RV32IM-NEXT:    andi a1, s8, 128
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 7
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 96(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 7
-; RV32IM-NEXT:    and a1, a1, a5
+; RV32IM-NEXT:    slli a2, s9, 7
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 7
+; RV32IM-NEXT:    and a1, a1, a2
 ; RV32IM-NEXT:    sw a1, 100(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 256
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 256
+; RV32IM-NEXT:    andi a1, s8, 256
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 8
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 72(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 8
-; RV32IM-NEXT:    and a1, a1, a5
-; RV32IM-NEXT:    sw a1, 80(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s9, 8
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 8
+; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a0, a4, 512
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s5, 512
+; RV32IM-NEXT:    andi a1, s8, 512
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a5, s6, 9
-; RV32IM-NEXT:    and a5, a0, a5
-; RV32IM-NEXT:    sw a5, 112(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a5, s4, 9
-; RV32IM-NEXT:    and a1, a1, a5
+; RV32IM-NEXT:    slli a2, s9, 9
+; RV32IM-NEXT:    and a2, a0, a2
+; RV32IM-NEXT:    sw a2, 112(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s7, 9
+; RV32IM-NEXT:    and a1, a1, a2
 ; RV32IM-NEXT:    sw a1, 120(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a5
-; RV32IM-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, a0, a2
+; RV32IM-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi a1, a4, 1
-; RV32IM-NEXT:    andi a0, a4, 1024
-; RV32IM-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s10, 4
-; RV32IM-NEXT:    and a5, a4, s10
-; RV32IM-NEXT:    lui ra, 8
-; RV32IM-NEXT:    and t4, a4, ra
-; RV32IM-NEXT:    lui t5, 16
-; RV32IM-NEXT:    and t6, a4, t5
-; RV32IM-NEXT:    lui s9, 32
-; RV32IM-NEXT:    and s2, a4, s9
-; RV32IM-NEXT:    lui s1, 512
-; RV32IM-NEXT:    and a3, a4, s1
-; RV32IM-NEXT:    lui s3, 1024
-; RV32IM-NEXT:    and a0, a4, s3
-; RV32IM-NEXT:    and a2, a4, s8
-; RV32IM-NEXT:    lui t0, 131072
-; RV32IM-NEXT:    and a6, a4, t0
-; RV32IM-NEXT:    lui t1, 262144
-; RV32IM-NEXT:    and s0, a4, t1
-; RV32IM-NEXT:    lui t2, 524288
-; RV32IM-NEXT:    and a4, a4, t2
-; RV32IM-NEXT:    seqz s11, a1
-; RV32IM-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a1, s6, a1
-; RV32IM-NEXT:    sw a1, 440(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 392(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a1, s6, a1
-; RV32IM-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, s5, 1
-; RV32IM-NEXT:    seqz t3, a7
-; RV32IM-NEXT:    and a7, s5, s10
-; RV32IM-NEXT:    mul a1, s4, a7
+; RV32IM-NEXT:    andi t3, a4, 1024
+; RV32IM-NEXT:    lui t4, 8
+; RV32IM-NEXT:    and a2, a4, t4
+; RV32IM-NEXT:    lui s5, 16
+; RV32IM-NEXT:    and t6, a4, s5
+; RV32IM-NEXT:    lui s4, 32
+; RV32IM-NEXT:    and a0, a4, s4
+; RV32IM-NEXT:    lui s3, 2048
+; RV32IM-NEXT:    and a7, a4, s3
+; RV32IM-NEXT:    lui t5, 131072
+; RV32IM-NEXT:    and a3, a4, t5
+; RV32IM-NEXT:    lui s1, 262144
+; RV32IM-NEXT:    and s0, a4, s1
+; RV32IM-NEXT:    lui s2, 524288
+; RV32IM-NEXT:    and a4, a4, s2
+; RV32IM-NEXT:    seqz t0, a1
+; RV32IM-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s9, a1
 ; RV32IM-NEXT:    sw a1, 36(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, ra
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 84(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, t5
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 188(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, s9
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, s1
-; RV32IM-NEXT:    mul ra, s4, a7
-; RV32IM-NEXT:    and a7, s5, s3
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, s8
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    sw a1, 32(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    sw a1, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    sw a1, 424(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 352(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, s8, 1
+; RV32IM-NEXT:    seqz a5, a6
+; RV32IM-NEXT:    lui a1, 4
+; RV32IM-NEXT:    and a6, s8, a1
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, t4
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 80(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s5
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s4
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s6
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a1, 1024
+; RV32IM-NEXT:    and a6, s8, a1
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 72(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s3
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 156(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a1, 4096
-; RV32IM-NEXT:    and a7, s5, a1
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 216(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, a1
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 356(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a1, 8192
-; RV32IM-NEXT:    and a7, s5, a1
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 396(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, t0
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, t1
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, s5, t2
-; RV32IM-NEXT:    mul a1, s4, a7
-; RV32IM-NEXT:    sw a1, 152(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s4, s7
-; RV32IM-NEXT:    mul a7, s6, a5
-; RV32IM-NEXT:    mul a5, s4, a5
-; RV32IM-NEXT:    sw a5, 20(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s6, t4
-; RV32IM-NEXT:    sw a5, 44(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s4, t4
-; RV32IM-NEXT:    sw a5, 52(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s6, t6
-; RV32IM-NEXT:    sw a5, 116(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s4, t6
-; RV32IM-NEXT:    sw a5, 140(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s6, s2
-; RV32IM-NEXT:    sw a5, 164(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s4, s2
-; RV32IM-NEXT:    sw a5, 180(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a5, 128(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul s7, s4, a5
-; RV32IM-NEXT:    mul t2, s6, a3
-; RV32IM-NEXT:    mul a5, s4, a3
-; RV32IM-NEXT:    mul a3, s6, a0
-; RV32IM-NEXT:    sw a3, 32(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s4, a0
+; RV32IM-NEXT:    and a6, s8, a1
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, t5
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s1
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 56(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s8, s2
+; RV32IM-NEXT:    mul a1, s7, a6
+; RV32IM-NEXT:    sw a1, 140(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s7, a1
+; RV32IM-NEXT:    sw a1, 144(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a1, s7, a1
+; RV32IM-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a1, s9, a2
+; RV32IM-NEXT:    sw a1, 44(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a1, s7, a2
+; RV32IM-NEXT:    mul a2, s9, t6
+; RV32IM-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s7, t6
+; RV32IM-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s9, a0
+; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s7, a0
 ; RV32IM-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s6, a2
-; RV32IM-NEXT:    sw a0, 108(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s4, a2
-; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a0, s4, a0
+; RV32IM-NEXT:    mul a0, s7, a0
+; RV32IM-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a0, s7, a0
+; RV32IM-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s7, t1
+; RV32IM-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s9, a7
+; RV32IM-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, s7, a7
+; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a0, s7, a0
 ; RV32IM-NEXT:    lw a2, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a2, s4, a2
-; RV32IM-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 144(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a2, s4, a2
+; RV32IM-NEXT:    mul a2, s7, a2
+; RV32IM-NEXT:    sw a2, 4(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s7, t2
 ; RV32IM-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a3, s6, a6
-; RV32IM-NEXT:    mul a2, s4, a6
-; RV32IM-NEXT:    sw a2, 144(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s6, s0
-; RV32IM-NEXT:    sw a2, 28(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s4, s0
-; RV32IM-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s6, a4
-; RV32IM-NEXT:    sw a2, 88(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s4, a4
-; RV32IM-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi t1, s11, -1
-; RV32IM-NEXT:    addi t0, t3, -1
-; RV32IM-NEXT:    slli a4, s6, 10
-; RV32IM-NEXT:    and a6, t1, s6
-; RV32IM-NEXT:    and t0, t0, s4
-; RV32IM-NEXT:    and a2, t1, s4
-; RV32IM-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli s4, s4, 10
-; RV32IM-NEXT:    andi s5, s5, 1024
-; RV32IM-NEXT:    lw a2, 68(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz t3, a2
-; RV32IM-NEXT:    seqz s5, s5
+; RV32IM-NEXT:    mul a6, s9, a3
+; RV32IM-NEXT:    mul a2, s7, a3
+; RV32IM-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s9, s0
+; RV32IM-NEXT:    sw a2, 20(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s7, s0
+; RV32IM-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s9, a4
+; RV32IM-NEXT:    sw a2, 84(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s7, a4
+; RV32IM-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi t0, t0, -1
+; RV32IM-NEXT:    addi a5, a5, -1
+; RV32IM-NEXT:    slli a4, s9, 10
+; RV32IM-NEXT:    and s9, t0, s9
+; RV32IM-NEXT:    and a5, a5, s7
+; RV32IM-NEXT:    and a3, t0, s7
+; RV32IM-NEXT:    slli s7, s7, 10
+; RV32IM-NEXT:    andi t0, s8, 1024
+; RV32IM-NEXT:    seqz t3, t3
+; RV32IM-NEXT:    seqz t0, t0
 ; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    addi s5, s5, -1
+; RV32IM-NEXT:    addi s8, t0, -1
 ; RV32IM-NEXT:    and a2, t3, a4
-; RV32IM-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, s5, s4
-; RV32IM-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t3, s4
-; RV32IM-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a2, 52(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, s8, s7
+; RV32IM-NEXT:    sw a2, 60(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t3, s7
+; RV32IM-NEXT:    sw a2, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a2, a1
-; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, s7
-; RV32IM-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a7
+; RV32IM-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 228(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 204(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 428(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 328(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 260(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 288(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 252(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 240(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 364(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 340(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, s11
+; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 284(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 300(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 236(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, a0, s10
+; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 220(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a0, a1
+; RV32IM-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 388(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s6, a0, a1
-; RV32IM-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 284(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s7, a0, a1
-; RV32IM-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 348(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a0, a1
-; RV32IM-NEXT:    lw a0, 268(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 236(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, a1, a0
-; RV32IM-NEXT:    lw a0, 264(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 232(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s10, a1, a0
-; RV32IM-NEXT:    lw a0, 256(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, a1, a0
-; RV32IM-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a6, a0
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 204(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 172(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 228(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a1, a0
+; RV32IM-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s4, a1, a0
+; RV32IM-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, s9, a0
+; RV32IM-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 164(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, a0, a1
-; RV32IM-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw s0, 124(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, a0, s0
 ; RV32IM-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 72(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, a0, s1
-; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s2, a0, a7
-; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, a0, t2
-; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, a0, a3
-; RV32IM-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t5, t0, a0
-; RV32IM-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, a0, a1
+; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 32(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, a0, a1
+; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, a0, a6
+; RV32IM-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a5, a0
+; RV32IM-NEXT:    lw a0, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 176(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a0, a1
 ; RV32IM-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 136(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 132(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a0, a1
 ; RV32IM-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 80(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 76(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, a0, a1
-; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, a0, a1
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a0, ra
-; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t4, a0, a1
-; RV32IM-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a1, a0
-; RV32IM-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 200(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a0, a1
+; RV32IM-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 16(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a0, a5
+; RV32IM-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a3, a0
+; RV32IM-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 176(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 168(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 148(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 104(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 92(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 88(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 64(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    lw a3, 20(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 12(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a4, a3
-; RV32IM-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    lw a5, 16(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, ra, a5
-; RV32IM-NEXT:    lw ra, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, ra, s5
-; RV32IM-NEXT:    sw ra, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 388(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 4(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, s10, a4
+; RV32IM-NEXT:    lw s10, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s10, s11
+; RV32IM-NEXT:    sw s10, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 340(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 260(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 304(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 448(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 240(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s10, s11
+; RV32IM-NEXT:    sw s10, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 432(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 428(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 296(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 368(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 280(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s11, s11, s10
+; RV32IM-NEXT:    lw s10, 272(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, ra, s10
+; RV32IM-NEXT:    lw s10, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, s10, s5
+; RV32IM-NEXT:    sw s5, 436(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw s5, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 296(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 428(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 288(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 276(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, ra, s5
-; RV32IM-NEXT:    sw ra, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 404(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 412(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 336(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 324(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 312(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 412(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s5, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, s5, s6
-; RV32IM-NEXT:    sw s6, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s6, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, s7, s6
-; RV32IM-NEXT:    lw s6, 416(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, s8, s6
-; RV32IM-NEXT:    lw s6, 308(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, s9, s6
-; RV32IM-NEXT:    lw s6, 300(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s10, s10, s6
-; RV32IM-NEXT:    lw s6, 292(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, s11, s6
-; RV32IM-NEXT:    lw s5, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, s5, t6
-; RV32IM-NEXT:    sw t6, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 192(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, s6, s5
+; RV32IM-NEXT:    lw s5, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, s7, s5
+; RV32IM-NEXT:    lw s5, 264(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, s8, s5
+; RV32IM-NEXT:    lw s5, 256(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s4, s4, s5
+; RV32IM-NEXT:    xor t6, s9, t6
+; RV32IM-NEXT:    sw t6, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 172(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s0, t6
-; RV32IM-NEXT:    sw t6, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t6, 536(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw t6, 112(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s1, t6
-; RV32IM-NEXT:    sw t6, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t6, 528(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw t6, 44(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s2, t6
-; RV32IM-NEXT:    sw t6, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 32(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 92(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s3, t6
-; RV32IM-NEXT:    sw t6, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 28(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, s4, t6
-; RV32IM-NEXT:    sw t6, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t6, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 20(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, t4, t6
+; RV32IM-NEXT:    sw t4, 516(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a7, t5, a7
-; RV32IM-NEXT:    sw a7, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 196(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 180(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t0, a7
-; RV32IM-NEXT:    sw a7, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 504(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a7, 120(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t1, a7
-; RV32IM-NEXT:    sw a7, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, t1, a7
+; RV32IM-NEXT:    lw a7, 80(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t2, a7
-; RV32IM-NEXT:    sw a7, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 76(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a7, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 72(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, t3, a7
-; RV32IM-NEXT:    sw a7, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 60(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t4, a7
-; RV32IM-NEXT:    sw a7, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a7, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a7, 56(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a7
+; RV32IM-NEXT:    sw a5, 492(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    xor a0, a6, a0
-; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a2, a0
 ; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a3, a0
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a4, a0
-; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, a1, a0
+; RV32IM-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, a2, a0
+; RV32IM-NEXT:    lw s1, 48(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, a3, s1
 ; RV32IM-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a5, a0
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a2, a3, 4
+; RV32IM-NEXT:    xor a0, a4, a0
+; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a3, a4, 4
 ; RV32IM-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a4, a4, a0
 ; RV32IM-NEXT:    and a3, a3, a0
-; RV32IM-NEXT:    and a2, a2, a0
-; RV32IM-NEXT:    slli a3, a3, 4
-; RV32IM-NEXT:    or a2, a2, a3
-; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a3, a1, 4
-; RV32IM-NEXT:    and t3, a1, a0
-; RV32IM-NEXT:    and a3, a3, a0
-; RV32IM-NEXT:    slli t3, t3, 4
-; RV32IM-NEXT:    or ra, a3, t3
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, a1, a2
-; RV32IM-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    slli a4, a4, 4
+; RV32IM-NEXT:    or s0, a3, a4
+; RV32IM-NEXT:    lw a1, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a4, a1, 4
+; RV32IM-NEXT:    and t1, a1, a0
+; RV32IM-NEXT:    and a4, a4, a0
+; RV32IM-NEXT:    slli t1, t1, 4
+; RV32IM-NEXT:    or a1, a4, t1
+; RV32IM-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, a2, a1
-; RV32IM-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, a2, a1
-; RV32IM-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, a1, a2
+; RV32IM-NEXT:    lw a1, 268(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a2, a1
+; RV32IM-NEXT:    lw a1, 328(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, a2, a1
-; RV32IM-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, a2, a1
+; RV32IM-NEXT:    lw a1, 312(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a2, a1
+; RV32IM-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 440(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s2, a1, a2
-; RV32IM-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, a2, a1
-; RV32IM-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 428(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s0, s0, a1
-; RV32IM-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 424(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, a1
-; RV32IM-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 412(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, a1, s7
-; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, s8, a1
-; RV32IM-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, s9, a1
+; RV32IM-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 432(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t0, a1, a2
+; RV32IM-NEXT:    lw a1, 276(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t1, a2, a1
+; RV32IM-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, a2, a1
 ; RV32IM-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, s10, a1
-; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 360(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s11, s11, a1
-; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t3, a1, 4
-; RV32IM-NEXT:    and t4, a1, a0
+; RV32IM-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, ra, a1
+; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a1, s6
+; RV32IM-NEXT:    lw a1, 348(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, s7, a1
+; RV32IM-NEXT:    lw a1, 336(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, s8, a1
+; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, s4, a1
+; RV32IM-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t3, a2, 4
+; RV32IM-NEXT:    mv a1, a0
+; RV32IM-NEXT:    and s4, a2, a0
 ; RV32IM-NEXT:    and t3, t3, a0
-; RV32IM-NEXT:    slli t4, t4, 4
-; RV32IM-NEXT:    or t5, t3, t4
-; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t4, a1, 4
-; RV32IM-NEXT:    and s10, a1, a0
-; RV32IM-NEXT:    and t4, t4, a0
-; RV32IM-NEXT:    slli s10, s10, 4
-; RV32IM-NEXT:    or t4, t4, s10
+; RV32IM-NEXT:    slli s4, s4, 4
+; RV32IM-NEXT:    or s4, t3, s4
 ; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a0, a1
-; RV32IM-NEXT:    lw a0, 56(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, a1, a0
-; RV32IM-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a1, a0
-; RV32IM-NEXT:    lw a0, 108(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, a1, a0
-; RV32IM-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a0, a1
-; RV32IM-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t3, a0, 4
+; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    and t3, t3, a1
+; RV32IM-NEXT:    slli a0, a0, 4
+; RV32IM-NEXT:    or t3, t3, a0
+; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a0, a1
+; RV32IM-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a6, a1, a0
-; RV32IM-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 524(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, a0
-; RV32IM-NEXT:    lw a0, 168(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 104(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 520(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 516(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 504(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a0, a3
-; RV32IM-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a0
-; RV32IM-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s3, a0
+; RV32IM-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 500(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a0
-; RV32IM-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, s10, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a0
+; RV32IM-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, ra, a0
+; RV32IM-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, a0, s2
 ; RV32IM-NEXT:    lw a0, 144(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, s10, a0
+; RV32IM-NEXT:    xor s9, s9, a0
+; RV32IM-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, a0
+; RV32IM-NEXT:    lw a0, 108(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, ra, a0
+; RV32IM-NEXT:    xor t2, t6, t2
+; RV32IM-NEXT:    lw t6, 404(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, t4, t6
+; RV32IM-NEXT:    lw t6, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, t5, t6
+; RV32IM-NEXT:    xor t1, t0, t1
+; RV32IM-NEXT:    lw t0, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, s10, t0
+; RV32IM-NEXT:    lw t0, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, t0
+; RV32IM-NEXT:    lw t0, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t0, s5, t0
+; RV32IM-NEXT:    lw s5, 576(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s5, s6, s5
-; RV32IM-NEXT:    lw s6, 452(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, s3, s6
-; RV32IM-NEXT:    lw s6, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, s4, s6
-; RV32IM-NEXT:    xor s2, s2, t6
-; RV32IM-NEXT:    lw t6, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s0, s0, t6
-; RV32IM-NEXT:    lw t6, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, t6
-; RV32IM-NEXT:    xor t6, s7, s8
-; RV32IM-NEXT:    lw s6, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, s9, s6
-; RV32IM-NEXT:    lw s7, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, s11, s7
-; RV32IM-NEXT:    xor t1, t3, t1
-; RV32IM-NEXT:    lw t3, 164(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, t2, t3
-; RV32IM-NEXT:    lw t3, 440(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, t3
+; RV32IM-NEXT:    lw s6, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, s7, s6
+; RV32IM-NEXT:    lw s7, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, s8, s7
 ; RV32IM-NEXT:    xor a6, a7, a6
-; RV32IM-NEXT:    lw a7, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a7, 600(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a4, a4, a7
-; RV32IM-NEXT:    lw a7, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a7, 424(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    xor a1, a3, a1
-; RV32IM-NEXT:    lw a3, 180(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    lw a3, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a3
-; RV32IM-NEXT:    xor a3, s5, s3
-; RV32IM-NEXT:    lw a7, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, s4, a7
-; RV32IM-NEXT:    xor t3, s2, s0
-; RV32IM-NEXT:    lw s0, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s0, s1, s0
-; RV32IM-NEXT:    lw s1, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s7, s1
+; RV32IM-NEXT:    xor a3, a3, s3
+; RV32IM-NEXT:    lw a7, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a2, a7
+; RV32IM-NEXT:    lw a2, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, a1, a2
+; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, s2, a1
+; RV32IM-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, s9, a2
+; RV32IM-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, a2
+; RV32IM-NEXT:    lw a2, 136(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    xor t2, t2, t4
+; RV32IM-NEXT:    lw a2, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, t5, a2
+; RV32IM-NEXT:    xor t1, t1, t6
+; RV32IM-NEXT:    lw a2, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, s10, a2
+; RV32IM-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, s6, a2
+; RV32IM-NEXT:    lw a2, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, s7, a2
+; RV32IM-NEXT:    xor a4, a6, a4
+; RV32IM-NEXT:    lw a6, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a5, a6
+; RV32IM-NEXT:    xor a3, a3, a7
+; RV32IM-NEXT:    lw a5, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, s3, a5
+; RV32IM-NEXT:    lw a5, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, a5
+; RV32IM-NEXT:    lw a5, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a0, a5
+; RV32IM-NEXT:    srli a0, s0, 2
+; RV32IM-NEXT:    lw s6, 632(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and s0, s0, s6
+; RV32IM-NEXT:    and a0, a0, s6
+; RV32IM-NEXT:    slli s0, s0, 2
+; RV32IM-NEXT:    or a0, a0, s0
+; RV32IM-NEXT:    lw s3, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli s0, s3, 2
+; RV32IM-NEXT:    and s3, s3, s6
+; RV32IM-NEXT:    and s0, s0, s6
+; RV32IM-NEXT:    slli s3, s3, 2
+; RV32IM-NEXT:    or s0, s0, s3
+; RV32IM-NEXT:    xor t2, t2, t4
+; RV32IM-NEXT:    xor t1, t1, t5
+; RV32IM-NEXT:    xor t4, t0, s5
+; RV32IM-NEXT:    xor t4, t4, t6
+; RV32IM-NEXT:    srli t5, s4, 2
+; RV32IM-NEXT:    and t6, s4, s6
+; RV32IM-NEXT:    and t5, t5, s6
+; RV32IM-NEXT:    slli t6, t6, 2
+; RV32IM-NEXT:    or t5, t5, t6
+; RV32IM-NEXT:    srli t6, t3, 2
+; RV32IM-NEXT:    and t3, t3, s6
+; RV32IM-NEXT:    and t6, t6, s6
+; RV32IM-NEXT:    mv s3, s6
+; RV32IM-NEXT:    slli t3, t3, 2
+; RV32IM-NEXT:    or t3, t6, t3
+; RV32IM-NEXT:    xor a4, a4, a6
+; RV32IM-NEXT:    xor a3, a3, a7
+; RV32IM-NEXT:    xor a6, a1, s2
+; RV32IM-NEXT:    xor a6, a6, s1
+; RV32IM-NEXT:    lw a7, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, t2, a7
+; RV32IM-NEXT:    lw t2, 592(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, t1, t2
-; RV32IM-NEXT:    lw t2, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, t2
-; RV32IM-NEXT:    xor a6, a6, a4
-; RV32IM-NEXT:    lw a4, 396(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a4
-; RV32IM-NEXT:    lw a4, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a0, a4
 ; RV32IM-NEXT:    lw t2, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a0, t2, 2
-; RV32IM-NEXT:    lw s3, 628(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and t2, t2, s3
-; RV32IM-NEXT:    and a0, a0, s3
-; RV32IM-NEXT:    slli t2, t2, 2
-; RV32IM-NEXT:    or a0, a0, t2
-; RV32IM-NEXT:    srli t2, ra, 2
-; RV32IM-NEXT:    and s2, ra, s3
-; RV32IM-NEXT:    and t2, t2, s3
-; RV32IM-NEXT:    slli s2, s2, 2
-; RV32IM-NEXT:    or t2, t2, s2
-; RV32IM-NEXT:    xor a3, a3, a7
-; RV32IM-NEXT:    xor a7, t3, s0
-; RV32IM-NEXT:    xor t3, t6, s6
-; RV32IM-NEXT:    lw s0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, t3, s0
-; RV32IM-NEXT:    srli s0, t5, 2
-; RV32IM-NEXT:    and t5, t5, s3
-; RV32IM-NEXT:    and s0, s0, s3
-; RV32IM-NEXT:    slli t5, t5, 2
-; RV32IM-NEXT:    or t5, s0, t5
-; RV32IM-NEXT:    srli s0, t4, 2
-; RV32IM-NEXT:    and t4, t4, s3
-; RV32IM-NEXT:    and s0, s0, s3
-; RV32IM-NEXT:    mv s2, s3
-; RV32IM-NEXT:    slli t4, t4, 2
-; RV32IM-NEXT:    or t4, s0, t4
-; RV32IM-NEXT:    xor t0, t1, t0
-; RV32IM-NEXT:    xor a5, a6, a5
-; RV32IM-NEXT:    xor a2, a1, a2
-; RV32IM-NEXT:    lw a6, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a2, a6
-; RV32IM-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a7, a3
-; RV32IM-NEXT:    lw a7, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t0, a7
-; RV32IM-NEXT:    lw t0, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t0
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a2, a5, a7
-; RV32IM-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli a2, a0, 1
-; RV32IM-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a0, a0, t1
-; RV32IM-NEXT:    and a2, a2, t1
+; RV32IM-NEXT:    xor t2, t4, t2
+; RV32IM-NEXT:    lw t4, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t4
+; RV32IM-NEXT:    lw t4, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t4
+; RV32IM-NEXT:    lw t4, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t4
+; RV32IM-NEXT:    xor a7, t1, a7
+; RV32IM-NEXT:    sw a7, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a3, a3, a4
+; RV32IM-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli a3, a0, 1
+; RV32IM-NEXT:    lw s9, 628(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a0, a0, s9
+; RV32IM-NEXT:    and a3, a3, s9
 ; RV32IM-NEXT:    slli a0, a0, 1
-; RV32IM-NEXT:    or ra, a2, a0
-; RV32IM-NEXT:    srli a0, t2, 1
-; RV32IM-NEXT:    and a2, t2, t1
-; RV32IM-NEXT:    and a0, a0, t1
-; RV32IM-NEXT:    slli a2, a2, 1
-; RV32IM-NEXT:    or a0, a0, a2
-; RV32IM-NEXT:    slli t6, t6, 24
-; RV32IM-NEXT:    lw t2, 640(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a2, t3, t2
-; RV32IM-NEXT:    slli a2, a2, 8
-; RV32IM-NEXT:    or a5, t6, a2
-; RV32IM-NEXT:    xor a2, t3, s1
-; RV32IM-NEXT:    srli a3, t3, 8
-; RV32IM-NEXT:    and a3, a3, t2
-; RV32IM-NEXT:    srli a2, a2, 24
-; RV32IM-NEXT:    or a7, a3, a2
-; RV32IM-NEXT:    srli a2, t5, 1
-; RV32IM-NEXT:    and a3, t5, t1
-; RV32IM-NEXT:    and a2, a2, t1
+; RV32IM-NEXT:    or s7, a3, a0
+; RV32IM-NEXT:    srli a0, s0, 1
+; RV32IM-NEXT:    and a3, s0, s9
+; RV32IM-NEXT:    and a0, a0, s9
 ; RV32IM-NEXT:    slli a3, a3, 1
-; RV32IM-NEXT:    or a2, a2, a3
-; RV32IM-NEXT:    srli a3, t4, 1
-; RV32IM-NEXT:    and t0, t4, t1
-; RV32IM-NEXT:    and a3, a3, t1
-; RV32IM-NEXT:    slli t0, t0, 1
-; RV32IM-NEXT:    or a3, a3, t0
+; RV32IM-NEXT:    or a0, a0, a3
+; RV32IM-NEXT:    srli a3, t5, 1
+; RV32IM-NEXT:    and a4, t5, s9
+; RV32IM-NEXT:    and a3, a3, s9
+; RV32IM-NEXT:    slli a4, a4, 1
+; RV32IM-NEXT:    or a3, a3, a4
+; RV32IM-NEXT:    srli a4, t3, 1
+; RV32IM-NEXT:    and a7, t3, s9
+; RV32IM-NEXT:    and a4, a4, s9
+; RV32IM-NEXT:    slli a7, a7, 1
+; RV32IM-NEXT:    or a4, a4, a7
+; RV32IM-NEXT:    slli t0, t0, 24
+; RV32IM-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a7, t2, t1
+; RV32IM-NEXT:    slli a7, a7, 8
+; RV32IM-NEXT:    or a7, t0, a7
+; RV32IM-NEXT:    xor a2, t2, a2
+; RV32IM-NEXT:    srli t0, t2, 8
+; RV32IM-NEXT:    and t0, t0, t1
+; RV32IM-NEXT:    srli a2, a2, 24
+; RV32IM-NEXT:    or a2, t0, a2
 ; RV32IM-NEXT:    slli a1, a1, 24
-; RV32IM-NEXT:    and t0, a6, t2
+; RV32IM-NEXT:    and t0, a6, t1
 ; RV32IM-NEXT:    slli t0, t0, 8
-; RV32IM-NEXT:    or t0, a1, t0
-; RV32IM-NEXT:    xor a1, a6, a4
-; RV32IM-NEXT:    srli a4, a6, 8
-; RV32IM-NEXT:    and a4, a4, t2
-; RV32IM-NEXT:    srli a1, a1, 24
-; RV32IM-NEXT:    or a4, a4, a1
-; RV32IM-NEXT:    or a1, a5, a7
-; RV32IM-NEXT:    or a4, t0, a4
-; RV32IM-NEXT:    sw a4, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a6, 624(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a4, a0, a6
-; RV32IM-NEXT:    mul a4, ra, a4
-; RV32IM-NEXT:    lui t2, 1
-; RV32IM-NEXT:    and a5, a0, t2
-; RV32IM-NEXT:    mul a5, ra, a5
-; RV32IM-NEXT:    xor t1, a4, a5
-; RV32IM-NEXT:    lui t0, 64
-; RV32IM-NEXT:    and a4, a0, t0
-; RV32IM-NEXT:    mul a4, ra, a4
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    and a5, a0, t3
-; RV32IM-NEXT:    mul a5, ra, a5
-; RV32IM-NEXT:    xor a7, a4, a5
-; RV32IM-NEXT:    lui t4, 4096
-; RV32IM-NEXT:    and a4, a0, t4
-; RV32IM-NEXT:    mul a4, ra, a4
-; RV32IM-NEXT:    lui t5, 8192
-; RV32IM-NEXT:    and a5, a0, t5
-; RV32IM-NEXT:    mul a5, ra, a5
-; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    and a5, a3, a6
-; RV32IM-NEXT:    and a6, a3, t2
-; RV32IM-NEXT:    mul a5, a2, a5
-; RV32IM-NEXT:    mul a6, a2, a6
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 624(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, t0
-; RV32IM-NEXT:    and a6, a3, t3
-; RV32IM-NEXT:    mul a5, a2, a5
-; RV32IM-NEXT:    mul a6, a2, a6
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, t4
-; RV32IM-NEXT:    and a6, a3, t5
-; RV32IM-NEXT:    mul a5, a2, a5
-; RV32IM-NEXT:    mul a6, a2, a6
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    sw a5, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 2
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 1
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 4
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 2
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 8
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 3
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 16
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 4
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 32
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 5
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 64
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 6
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 128
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 7
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 256
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 8
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 512
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    slli a6, ra, 9
-; RV32IM-NEXT:    and a5, a5, a6
-; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a5, a0, 1
-; RV32IM-NEXT:    seqz a5, a5
-; RV32IM-NEXT:    lui t6, 2
-; RV32IM-NEXT:    and a6, a0, t6
-; RV32IM-NEXT:    mul a6, ra, a6
-; RV32IM-NEXT:    lui t0, 4
-; RV32IM-NEXT:    and t0, a0, t0
-; RV32IM-NEXT:    mul t0, ra, t0
-; RV32IM-NEXT:    sw t0, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 8
-; RV32IM-NEXT:    and t0, a0, t0
-; RV32IM-NEXT:    mul t0, ra, t0
-; RV32IM-NEXT:    sw t0, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 16
-; RV32IM-NEXT:    and t0, a0, t0
-; RV32IM-NEXT:    mul t0, ra, t0
-; RV32IM-NEXT:    sw t0, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t0, 32
-; RV32IM-NEXT:    and t0, a0, t0
-; RV32IM-NEXT:    mul t0, ra, t0
-; RV32IM-NEXT:    sw t0, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s8, 256
-; RV32IM-NEXT:    and t0, a0, s8
-; RV32IM-NEXT:    mul t0, ra, t0
-; RV32IM-NEXT:    lui s7, 512
-; RV32IM-NEXT:    and t2, a0, s7
-; RV32IM-NEXT:    mul t2, ra, t2
+; RV32IM-NEXT:    or a1, a1, t0
+; RV32IM-NEXT:    xor a5, a6, a5
+; RV32IM-NEXT:    srli a6, a6, 8
+; RV32IM-NEXT:    and a6, a6, t1
+; RV32IM-NEXT:    srli a5, a5, 24
+; RV32IM-NEXT:    or a5, a6, a5
+; RV32IM-NEXT:    or a2, a7, a2
+; RV32IM-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    or a1, a1, a5
+; RV32IM-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 2
+; RV32IM-NEXT:    and a1, a0, a5
+; RV32IM-NEXT:    mul a1, s7, a1
+; RV32IM-NEXT:    lui a6, 4
+; RV32IM-NEXT:    and a2, a0, a6
+; RV32IM-NEXT:    mul a2, s7, a2
+; RV32IM-NEXT:    xor s0, a1, a2
+; RV32IM-NEXT:    lui t0, 512
+; RV32IM-NEXT:    and a1, a0, t0
+; RV32IM-NEXT:    mul a1, s7, a1
+; RV32IM-NEXT:    lui t2, 1024
+; RV32IM-NEXT:    and a2, a0, t2
+; RV32IM-NEXT:    mul a2, s7, a2
+; RV32IM-NEXT:    xor a7, a1, a2
+; RV32IM-NEXT:    lui t3, 4096
+; RV32IM-NEXT:    and a1, a0, t3
+; RV32IM-NEXT:    mul a1, s7, a1
+; RV32IM-NEXT:    lui t4, 8192
+; RV32IM-NEXT:    and a2, a0, t4
+; RV32IM-NEXT:    mul a2, s7, a2
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    and a2, a4, a5
+; RV32IM-NEXT:    and a5, a4, a6
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, a4, t0
+; RV32IM-NEXT:    and a5, a4, t2
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, a4, t3
+; RV32IM-NEXT:    and a5, a4, t4
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 2
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 1
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 4
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 2
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 8
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 3
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 16
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 4
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 32
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 5
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 64
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 6
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 128
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 7
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 256
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 8
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 512
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s7, 9
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 1
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    lw t4, 624(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a5, a0, t4
+; RV32IM-NEXT:    mul a5, s7, a5
+; RV32IM-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 1
+; RV32IM-NEXT:    and a5, a0, a5
+; RV32IM-NEXT:    mul a5, s7, a5
+; RV32IM-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 8
+; RV32IM-NEXT:    and a5, a0, a5
+; RV32IM-NEXT:    mul a5, s7, a5
+; RV32IM-NEXT:    lui a6, 16
+; RV32IM-NEXT:    and a6, a0, a6
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    sw a6, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a6, 32
+; RV32IM-NEXT:    and a6, a0, a6
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 64
+; RV32IM-NEXT:    and a6, a0, s6
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    sw a6, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s10, 128
+; RV32IM-NEXT:    and a6, a0, s10
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s11, 256
+; RV32IM-NEXT:    and a6, a0, s11
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui ra, 2048
+; RV32IM-NEXT:    and a6, a0, ra
+; RV32IM-NEXT:    mul a6, s7, a6
+; RV32IM-NEXT:    lui t5, 16384
+; RV32IM-NEXT:    and t0, a0, t5
+; RV32IM-NEXT:    mul t0, s7, t0
+; RV32IM-NEXT:    lui s4, 32768
+; RV32IM-NEXT:    and t2, a0, s4
+; RV32IM-NEXT:    mul t1, s7, t2
+; RV32IM-NEXT:    sw t1, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s5, 65536
+; RV32IM-NEXT:    and t2, a0, s5
+; RV32IM-NEXT:    mul t1, s7, t2
+; RV32IM-NEXT:    sw t1, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 131072
+; RV32IM-NEXT:    and t2, a0, t1
+; RV32IM-NEXT:    mul t2, s7, t2
 ; RV32IM-NEXT:    sw t2, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s11, 1024
-; RV32IM-NEXT:    and t2, a0, s11
-; RV32IM-NEXT:    mul t2, ra, t2
-; RV32IM-NEXT:    sw t2, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s9, 2048
-; RV32IM-NEXT:    and t2, a0, s9
-; RV32IM-NEXT:    mul t2, ra, t2
-; RV32IM-NEXT:    sw t2, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s10, 16384
-; RV32IM-NEXT:    and t2, a0, s10
-; RV32IM-NEXT:    mul t2, ra, t2
-; RV32IM-NEXT:    lui s5, 32768
-; RV32IM-NEXT:    and t3, a0, s5
-; RV32IM-NEXT:    mul t3, ra, t3
-; RV32IM-NEXT:    sw t3, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s4, 65536
-; RV32IM-NEXT:    and t3, a0, s4
-; RV32IM-NEXT:    mul t3, ra, t3
-; RV32IM-NEXT:    sw t3, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s3, 131072
-; RV32IM-NEXT:    and t3, a0, s3
-; RV32IM-NEXT:    mul t3, ra, t3
-; RV32IM-NEXT:    sw t3, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t4, 262144
-; RV32IM-NEXT:    and t3, a0, t4
-; RV32IM-NEXT:    mul t3, ra, t3
-; RV32IM-NEXT:    sw t3, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 524288
-; RV32IM-NEXT:    and t3, a0, t5
-; RV32IM-NEXT:    mul t3, ra, t3
-; RV32IM-NEXT:    sw t3, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a5, a5, -1
-; RV32IM-NEXT:    and a5, a5, ra
-; RV32IM-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli ra, ra, 10
+; RV32IM-NEXT:    lui t6, 262144
+; RV32IM-NEXT:    and t2, a0, t6
+; RV32IM-NEXT:    mul t2, s7, t2
+; RV32IM-NEXT:    sw t2, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t3, 524288
+; RV32IM-NEXT:    and t2, a0, t3
+; RV32IM-NEXT:    mul t2, s7, t2
+; RV32IM-NEXT:    sw t2, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    and a2, a2, s7
+; RV32IM-NEXT:    sw a2, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli s7, s7, 10
 ; RV32IM-NEXT:    andi a0, a0, 1024
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and a0, a0, ra
-; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, t1, a6
-; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a7, t0
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a4, t2
-; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli a0, a1, 4
-; RV32IM-NEXT:    lw a4, 648(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a1, a1, a4
-; RV32IM-NEXT:    and a0, a0, a4
-; RV32IM-NEXT:    slli a1, a1, 4
-; RV32IM-NEXT:    or a0, a0, a1
-; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 2
+; RV32IM-NEXT:    and a0, a0, s7
+; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a5, s0, a5
+; RV32IM-NEXT:    sw a5, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a7, a6
+; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a1, t0
+; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 2
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 1
+; RV32IM-NEXT:    slli a1, a3, 1
 ; RV32IM-NEXT:    and a0, a0, a1
 ; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 4
+; RV32IM-NEXT:    andi a0, a4, 4
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli s1, a2, 2
+; RV32IM-NEXT:    slli s1, a3, 2
 ; RV32IM-NEXT:    and a0, a0, s1
-; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 8
+; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli s0, a2, 3
-; RV32IM-NEXT:    and a0, a0, s0
-; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 16
+; RV32IM-NEXT:    slli a1, a3, 3
+; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 4
+; RV32IM-NEXT:    slli a1, a3, 4
 ; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 32
+; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 5
+; RV32IM-NEXT:    slli a1, a3, 5
 ; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 64
+; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 6
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 128
+; RV32IM-NEXT:    slli s0, a3, 6
+; RV32IM-NEXT:    and a0, a0, s0
+; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 7
-; RV32IM-NEXT:    and ra, a0, a1
-; RV32IM-NEXT:    andi a0, a3, 256
+; RV32IM-NEXT:    slli a1, a3, 7
+; RV32IM-NEXT:    and a0, a0, a1
+; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, a4, 256
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a4, a2, 8
-; RV32IM-NEXT:    and s6, a0, a4
-; RV32IM-NEXT:    andi a0, a3, 512
+; RV32IM-NEXT:    slli a2, a3, 8
+; RV32IM-NEXT:    and s2, a0, a2
+; RV32IM-NEXT:    andi a0, a4, 512
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 9
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t6
-; RV32IM-NEXT:    lui a1, 4
-; RV32IM-NEXT:    and a1, a3, a1
-; RV32IM-NEXT:    lui a5, 8
-; RV32IM-NEXT:    and a5, a3, a5
+; RV32IM-NEXT:    slli a1, a3, 9
+; RV32IM-NEXT:    and s1, a0, a1
+; RV32IM-NEXT:    and a1, a4, t4
+; RV32IM-NEXT:    lui a0, 1
+; RV32IM-NEXT:    and a6, a4, a0
+; RV32IM-NEXT:    lui a0, 8
+; RV32IM-NEXT:    and a7, a4, a0
 ; RV32IM-NEXT:    lui a0, 16
-; RV32IM-NEXT:    and a7, a3, a0
+; RV32IM-NEXT:    and t0, a4, a0
 ; RV32IM-NEXT:    lui a0, 32
-; RV32IM-NEXT:    and t1, a3, a0
-; RV32IM-NEXT:    and t2, a3, s8
-; RV32IM-NEXT:    and s7, a3, s7
-; RV32IM-NEXT:    and s8, a3, s11
-; RV32IM-NEXT:    and s9, a3, s9
-; RV32IM-NEXT:    and a4, a3, s10
-; RV32IM-NEXT:    and a6, a3, s5
-; RV32IM-NEXT:    and t0, a3, s4
-; RV32IM-NEXT:    and t3, a3, s3
-; RV32IM-NEXT:    and t4, a3, t4
-; RV32IM-NEXT:    and t5, a3, t5
-; RV32IM-NEXT:    andi s3, a3, 1
-; RV32IM-NEXT:    seqz a0, s3
-; RV32IM-NEXT:    mul t6, a2, t6
-; RV32IM-NEXT:    mul s1, a2, a1
-; RV32IM-NEXT:    mul s4, a2, a5
-; RV32IM-NEXT:    mul s11, a2, a7
-; RV32IM-NEXT:    mul a1, a2, t1
-; RV32IM-NEXT:    sw a1, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t1, a2, t2
-; RV32IM-NEXT:    mul s7, a2, s7
-; RV32IM-NEXT:    mul s8, a2, s8
-; RV32IM-NEXT:    mul s10, a2, s9
-; RV32IM-NEXT:    mul s9, a2, a4
-; RV32IM-NEXT:    mul s0, a2, a6
-; RV32IM-NEXT:    mul s3, a2, t0
-; RV32IM-NEXT:    mul s5, a2, t3
-; RV32IM-NEXT:    mul a1, a2, t4
+; RV32IM-NEXT:    and t4, a4, a0
+; RV32IM-NEXT:    and s6, a4, s6
+; RV32IM-NEXT:    and s10, a4, s10
+; RV32IM-NEXT:    and s11, a4, s11
+; RV32IM-NEXT:    and ra, a4, ra
+; RV32IM-NEXT:    and t5, a4, t5
+; RV32IM-NEXT:    and a2, a4, s4
+; RV32IM-NEXT:    and a5, a4, s5
+; RV32IM-NEXT:    and t1, a4, t1
+; RV32IM-NEXT:    and t2, a4, t6
+; RV32IM-NEXT:    and t3, a4, t3
+; RV32IM-NEXT:    andi s0, a4, 1
+; RV32IM-NEXT:    seqz a0, s0
+; RV32IM-NEXT:    mul s5, a3, a1
+; RV32IM-NEXT:    mul a1, a3, a6
 ; RV32IM-NEXT:    sw a1, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, a2, t5
-; RV32IM-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a7, a3, a7
+; RV32IM-NEXT:    mul t0, a3, t0
+; RV32IM-NEXT:    mul t6, a3, t4
+; RV32IM-NEXT:    mul s4, a3, s6
+; RV32IM-NEXT:    mul s7, a3, s10
+; RV32IM-NEXT:    mul a1, a3, s11
+; RV32IM-NEXT:    sw a1, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s11, a3, ra
+; RV32IM-NEXT:    mul t5, a3, t5
+; RV32IM-NEXT:    mul a6, a3, a2
+; RV32IM-NEXT:    mul t4, a3, a5
+; RV32IM-NEXT:    mul s0, a3, t1
+; RV32IM-NEXT:    mul s6, a3, t2
+; RV32IM-NEXT:    mul a1, a3, t3
+; RV32IM-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and a7, a0, a2
-; RV32IM-NEXT:    slli a2, a2, 10
-; RV32IM-NEXT:    andi a3, a3, 1024
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and t3, a3, a2
-; RV32IM-NEXT:    lw a0, 624(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a0, t6
-; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, a0, t1
-; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t5, a0, s9
-; RV32IM-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t6, a0, 4
-; RV32IM-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and s9, a0, a1
-; RV32IM-NEXT:    and t6, t6, a1
-; RV32IM-NEXT:    slli s9, s9, 4
-; RV32IM-NEXT:    or t6, t6, s9
+; RV32IM-NEXT:    and a2, a0, a3
+; RV32IM-NEXT:    slli a3, a3, 10
+; RV32IM-NEXT:    andi a4, a4, 1024
+; RV32IM-NEXT:    seqz a4, a4
+; RV32IM-NEXT:    addi a4, a4, -1
+; RV32IM-NEXT:    and t1, a4, a3
 ; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, a1, a0
+; RV32IM-NEXT:    xor a7, a0, a7
 ; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, a0, a1
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a0, a2
-; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a0
+; RV32IM-NEXT:    xor a0, a0, s11
+; RV32IM-NEXT:    sw a0, 624(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a0, t5
+; RV32IM-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a1, a0
+; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a0, a1
+; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s11, a0, a1
+; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a0, a4
 ; RV32IM-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 488(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a0
-; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, a0
-; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw t4, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, t4
-; RV32IM-NEXT:    xor s6, ra, s6
-; RV32IM-NEXT:    xor t2, t2, s1
-; RV32IM-NEXT:    xor t1, t1, s7
-; RV32IM-NEXT:    xor t5, t5, s0
-; RV32IM-NEXT:    xor a6, s9, a6
-; RV32IM-NEXT:    lw s0, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, s0
-; RV32IM-NEXT:    lw s0, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, s0
-; RV32IM-NEXT:    lw s0, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, s0
-; RV32IM-NEXT:    lw s0, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, s0
-; RV32IM-NEXT:    lw s0, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, s0
-; RV32IM-NEXT:    xor a0, a7, a0
-; RV32IM-NEXT:    lw a7, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a7
-; RV32IM-NEXT:    lw a7, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, s6, a7
-; RV32IM-NEXT:    xor t2, t2, s4
-; RV32IM-NEXT:    xor t1, t1, s8
-; RV32IM-NEXT:    xor t5, t5, s3
-; RV32IM-NEXT:    xor a6, a6, t0
-; RV32IM-NEXT:    lw t0, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, t0
-; RV32IM-NEXT:    lw t0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, t0
-; RV32IM-NEXT:    lw t0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, t0
-; RV32IM-NEXT:    lw t0, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t0
-; RV32IM-NEXT:    lw s0, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t0, s0, 2
-; RV32IM-NEXT:    and s0, s0, s2
-; RV32IM-NEXT:    and t0, t0, s2
-; RV32IM-NEXT:    slli s0, s0, 2
-; RV32IM-NEXT:    or t0, t0, s0
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    xor a1, a7, t3
-; RV32IM-NEXT:    xor a7, t2, s11
-; RV32IM-NEXT:    xor t1, t1, s10
-; RV32IM-NEXT:    xor t2, t5, s5
-; RV32IM-NEXT:    srli t3, t6, 2
-; RV32IM-NEXT:    and t5, t6, s2
-; RV32IM-NEXT:    and t3, t3, s2
-; RV32IM-NEXT:    slli t5, t5, 2
-; RV32IM-NEXT:    or t3, t3, t5
-; RV32IM-NEXT:    xor a2, a6, a2
-; RV32IM-NEXT:    lw a6, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a6
-; RV32IM-NEXT:    lw a6, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, a0
+; RV32IM-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a0, a1, 4
+; RV32IM-NEXT:    lw ra, 648(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a1, a1, ra
+; RV32IM-NEXT:    and a0, a0, ra
+; RV32IM-NEXT:    slli a1, a1, 4
+; RV32IM-NEXT:    or a0, a0, a1
+; RV32IM-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    lw a2, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s8, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, s8
+; RV32IM-NEXT:    lw s8, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, s8, s10
+; RV32IM-NEXT:    xor s1, s2, s1
+; RV32IM-NEXT:    xor a7, a7, t0
+; RV32IM-NEXT:    xor t0, t2, a6
+; RV32IM-NEXT:    lw a6, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t2, a6, 4
+; RV32IM-NEXT:    and s2, a6, ra
+; RV32IM-NEXT:    and t2, t2, ra
+; RV32IM-NEXT:    slli s2, s2, 4
+; RV32IM-NEXT:    or t2, t2, s2
+; RV32IM-NEXT:    xor t3, t3, t5
+; RV32IM-NEXT:    lw a6, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, s11, a6
+; RV32IM-NEXT:    lw a6, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, a6
+; RV32IM-NEXT:    lw a6, 536(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, a0
+; RV32IM-NEXT:    lw a6, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, a6
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    lw a2, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, s8, a2
+; RV32IM-NEXT:    xor a6, s1, t1
+; RV32IM-NEXT:    xor a7, a7, t6
+; RV32IM-NEXT:    xor t0, t0, t4
+; RV32IM-NEXT:    xor t3, t3, t5
+; RV32IM-NEXT:    lw t1, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t1
+; RV32IM-NEXT:    lw t1, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, t1
+; RV32IM-NEXT:    lw t1, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t1
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    xor a2, a6, s5
+; RV32IM-NEXT:    xor a6, a7, s4
+; RV32IM-NEXT:    xor a7, t0, s0
+; RV32IM-NEXT:    lw t0, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t0, t3, t0
+; RV32IM-NEXT:    lw t1, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t1
+; RV32IM-NEXT:    lw t1, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, t1
+; RV32IM-NEXT:    lw t1, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t1
+; RV32IM-NEXT:    srli t1, a0, 2
+; RV32IM-NEXT:    and a0, a0, s3
+; RV32IM-NEXT:    and t1, t1, s3
+; RV32IM-NEXT:    slli a0, a0, 2
+; RV32IM-NEXT:    or t1, t1, a0
+; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a1, a0
 ; RV32IM-NEXT:    lw a0, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, t2, a0
-; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a1
-; RV32IM-NEXT:    lw a1, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a0, a1
-; RV32IM-NEXT:    srli a0, t0, 1
-; RV32IM-NEXT:    xor a3, a2, a3
-; RV32IM-NEXT:    xor a4, a3, a4
-; RV32IM-NEXT:    srli a1, t3, 1
-; RV32IM-NEXT:    lw t4, 644(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a3, t0, t4
-; RV32IM-NEXT:    and t0, t3, t4
-; RV32IM-NEXT:    slli t3, a2, 24
-; RV32IM-NEXT:    xor a2, a6, a7
-; RV32IM-NEXT:    xor a7, a2, t1
-; RV32IM-NEXT:    and a2, a0, t4
-; RV32IM-NEXT:    slli a3, a3, 1
-; RV32IM-NEXT:    or a2, a2, a3
-; RV32IM-NEXT:    and a3, a1, t4
-; RV32IM-NEXT:    slli t0, t0, 1
-; RV32IM-NEXT:    or a3, a3, t0
-; RV32IM-NEXT:    lw t1, 640(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and t0, a4, t1
-; RV32IM-NEXT:    slli t0, t0, 8
-; RV32IM-NEXT:    or t0, t3, t0
-; RV32IM-NEXT:    slli a6, a6, 24
-; RV32IM-NEXT:    xor a5, a4, a5
+; RV32IM-NEXT:    xor a0, a2, a0
+; RV32IM-NEXT:    xor a1, a6, s7
+; RV32IM-NEXT:    xor a2, a7, s6
+; RV32IM-NEXT:    srli a6, t2, 2
+; RV32IM-NEXT:    and a7, t2, s3
+; RV32IM-NEXT:    and a6, a6, s3
+; RV32IM-NEXT:    slli a7, a7, 2
+; RV32IM-NEXT:    or a6, a6, a7
+; RV32IM-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a7
+; RV32IM-NEXT:    lw a7, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a3, a7
+; RV32IM-NEXT:    lw a3, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a3
+; RV32IM-NEXT:    lw a3, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a2, a3
+; RV32IM-NEXT:    xor a2, t0, a4
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    slli t0, t0, 24
+; RV32IM-NEXT:    xor a0, t3, a0
+; RV32IM-NEXT:    xor a3, a0, a1
+; RV32IM-NEXT:    srli a1, t1, 1
+; RV32IM-NEXT:    lw a4, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a2, a4
+; RV32IM-NEXT:    srli a0, a6, 1
+; RV32IM-NEXT:    and a2, t1, s9
+; RV32IM-NEXT:    and a5, a6, s9
+; RV32IM-NEXT:    lw a6, 624(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a3, a6
+; RV32IM-NEXT:    and a3, a1, s9
+; RV32IM-NEXT:    slli a2, a2, 1
+; RV32IM-NEXT:    or a2, a3, a2
+; RV32IM-NEXT:    and a3, a0, s9
+; RV32IM-NEXT:    slli a5, a5, 1
+; RV32IM-NEXT:    or a3, a3, a5
+; RV32IM-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a5, a4, t1
+; RV32IM-NEXT:    slli a5, a5, 8
+; RV32IM-NEXT:    or a5, t0, a5
+; RV32IM-NEXT:    slli t3, t3, 24
+; RV32IM-NEXT:    xor a7, a4, a7
 ; RV32IM-NEXT:    srli a4, a4, 8
 ; RV32IM-NEXT:    and a4, a4, t1
-; RV32IM-NEXT:    srli a5, a5, 24
-; RV32IM-NEXT:    or a4, a4, a5
-; RV32IM-NEXT:    and a5, a7, t1
-; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    or a5, a6, a5
-; RV32IM-NEXT:    xor a6, a7, t2
-; RV32IM-NEXT:    srli a7, a7, 8
-; RV32IM-NEXT:    and a7, a7, t1
-; RV32IM-NEXT:    mv t2, t1
-; RV32IM-NEXT:    srli a6, a6, 24
-; RV32IM-NEXT:    or a6, a7, a6
-; RV32IM-NEXT:    or a7, t0, a4
+; RV32IM-NEXT:    srli a7, a7, 24
+; RV32IM-NEXT:    or a4, a4, a7
+; RV32IM-NEXT:    and a7, a6, t1
+; RV32IM-NEXT:    slli a7, a7, 8
+; RV32IM-NEXT:    or a7, t3, a7
+; RV32IM-NEXT:    xor t0, a6, t2
+; RV32IM-NEXT:    srli a6, a6, 8
+; RV32IM-NEXT:    and a6, a6, t1
+; RV32IM-NEXT:    mv t3, t1
+; RV32IM-NEXT:    srli t0, t0, 24
+; RV32IM-NEXT:    or a6, a6, t0
+; RV32IM-NEXT:    or a5, a5, a4
 ; RV32IM-NEXT:    lui a4, 349525
 ; RV32IM-NEXT:    addi a4, a4, 1364
-; RV32IM-NEXT:    or a5, a5, a6
-; RV32IM-NEXT:    srli a6, a7, 4
-; RV32IM-NEXT:    lw t3, 648(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a7, a7, t3
-; RV32IM-NEXT:    and a6, a6, t3
-; RV32IM-NEXT:    slli a7, a7, 4
-; RV32IM-NEXT:    or a6, a6, a7
+; RV32IM-NEXT:    or a6, a7, a6
 ; RV32IM-NEXT:    srli a7, a5, 4
-; RV32IM-NEXT:    and a5, a5, t3
-; RV32IM-NEXT:    and a7, a7, t3
+; RV32IM-NEXT:    and a5, a5, ra
+; RV32IM-NEXT:    and a7, a7, ra
 ; RV32IM-NEXT:    slli a5, a5, 4
 ; RV32IM-NEXT:    or a5, a7, a5
-; RV32IM-NEXT:    srli a7, a6, 2
-; RV32IM-NEXT:    and a6, a6, s2
-; RV32IM-NEXT:    and a7, a7, s2
-; RV32IM-NEXT:    slli a6, a6, 2
+; RV32IM-NEXT:    srli a7, a6, 4
+; RV32IM-NEXT:    and a6, a6, ra
+; RV32IM-NEXT:    and a7, a7, ra
+; RV32IM-NEXT:    slli a6, a6, 4
 ; RV32IM-NEXT:    or a6, a7, a6
 ; RV32IM-NEXT:    srli a7, a5, 2
-; RV32IM-NEXT:    and a5, a5, s2
-; RV32IM-NEXT:    and a7, a7, s2
+; RV32IM-NEXT:    and a5, a5, s3
+; RV32IM-NEXT:    and a7, a7, s3
 ; RV32IM-NEXT:    slli a5, a5, 2
 ; RV32IM-NEXT:    or a5, a7, a5
-; RV32IM-NEXT:    srli a7, a6, 1
-; RV32IM-NEXT:    and a6, a6, t4
-; RV32IM-NEXT:    and a7, a7, a4
-; RV32IM-NEXT:    slli a6, a6, 1
+; RV32IM-NEXT:    srli a7, a6, 2
+; RV32IM-NEXT:    and a6, a6, s3
+; RV32IM-NEXT:    and a7, a7, s3
+; RV32IM-NEXT:    slli a6, a6, 2
 ; RV32IM-NEXT:    or a6, a7, a6
 ; RV32IM-NEXT:    srli a7, a5, 1
-; RV32IM-NEXT:    and a5, a5, t4
+; RV32IM-NEXT:    and a5, a5, s9
 ; RV32IM-NEXT:    and a7, a7, a4
 ; RV32IM-NEXT:    slli a5, a5, 1
 ; RV32IM-NEXT:    or a5, a7, a5
-; RV32IM-NEXT:    srli a6, a6, 1
+; RV32IM-NEXT:    srli a7, a6, 1
+; RV32IM-NEXT:    and a6, a6, s9
+; RV32IM-NEXT:    and a7, a7, a4
+; RV32IM-NEXT:    slli a6, a6, 1
+; RV32IM-NEXT:    or a6, a7, a6
 ; RV32IM-NEXT:    srli a5, a5, 1
+; RV32IM-NEXT:    srli a6, a6, 1
 ; RV32IM-NEXT:    lw a7, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 616(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    srli a7, a6, 8
-; RV32IM-NEXT:    srli t0, a6, 24
-; RV32IM-NEXT:    slli t1, a6, 24
-; RV32IM-NEXT:    and a6, a6, t2
-; RV32IM-NEXT:    and a7, a7, t2
-; RV32IM-NEXT:    or a7, a7, t0
-; RV32IM-NEXT:    srli t0, a5, 8
-; RV32IM-NEXT:    slli a6, a6, 8
-; RV32IM-NEXT:    or a6, t1, a6
-; RV32IM-NEXT:    srli t1, a5, 24
-; RV32IM-NEXT:    and t0, t0, t2
-; RV32IM-NEXT:    or t0, t0, t1
-; RV32IM-NEXT:    and t1, a5, t2
-; RV32IM-NEXT:    slli a5, a5, 24
-; RV32IM-NEXT:    slli t1, t1, 8
-; RV32IM-NEXT:    or a5, a5, t1
-; RV32IM-NEXT:    or a6, a6, a7
-; RV32IM-NEXT:    or a5, a5, t0
-; RV32IM-NEXT:    srli a7, a6, 4
-; RV32IM-NEXT:    and a6, a6, t3
-; RV32IM-NEXT:    srli t0, a5, 4
+; RV32IM-NEXT:    lw a7, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, a7
+; RV32IM-NEXT:    srli a7, a5, 8
+; RV32IM-NEXT:    srli t0, a5, 24
+; RV32IM-NEXT:    slli t1, a5, 24
 ; RV32IM-NEXT:    and a5, a5, t3
 ; RV32IM-NEXT:    and a7, a7, t3
+; RV32IM-NEXT:    or a7, a7, t0
+; RV32IM-NEXT:    srli t0, a6, 8
+; RV32IM-NEXT:    slli a5, a5, 8
+; RV32IM-NEXT:    or a5, t1, a5
+; RV32IM-NEXT:    srli t1, a6, 24
 ; RV32IM-NEXT:    and t0, t0, t3
-; RV32IM-NEXT:    slli a6, a6, 4
+; RV32IM-NEXT:    or t0, t0, t1
+; RV32IM-NEXT:    and t1, a6, t3
+; RV32IM-NEXT:    slli a6, a6, 24
+; RV32IM-NEXT:    slli t1, t1, 8
+; RV32IM-NEXT:    or a6, a6, t1
+; RV32IM-NEXT:    or a5, a5, a7
+; RV32IM-NEXT:    or a6, a6, t0
+; RV32IM-NEXT:    srli a7, a5, 4
+; RV32IM-NEXT:    and a5, a5, ra
+; RV32IM-NEXT:    srli t0, a6, 4
+; RV32IM-NEXT:    and a6, a6, ra
+; RV32IM-NEXT:    and a7, a7, ra
+; RV32IM-NEXT:    and t0, t0, ra
 ; RV32IM-NEXT:    slli a5, a5, 4
-; RV32IM-NEXT:    or a6, a7, a6
-; RV32IM-NEXT:    or a5, t0, a5
-; RV32IM-NEXT:    srli a7, a6, 2
-; RV32IM-NEXT:    and a6, a6, s2
-; RV32IM-NEXT:    srli t0, a5, 2
-; RV32IM-NEXT:    and a5, a5, s2
-; RV32IM-NEXT:    and a7, a7, s2
-; RV32IM-NEXT:    and t0, t0, s2
-; RV32IM-NEXT:    slli a6, a6, 2
-; RV32IM-NEXT:    or a6, a7, a6
+; RV32IM-NEXT:    slli a6, a6, 4
+; RV32IM-NEXT:    or a5, a7, a5
+; RV32IM-NEXT:    or a6, t0, a6
+; RV32IM-NEXT:    srli a7, a5, 2
+; RV32IM-NEXT:    and a5, a5, s3
+; RV32IM-NEXT:    srli t0, a6, 2
+; RV32IM-NEXT:    and a6, a6, s3
+; RV32IM-NEXT:    and a7, a7, s3
+; RV32IM-NEXT:    and t0, t0, s3
 ; RV32IM-NEXT:    slli a5, a5, 2
-; RV32IM-NEXT:    or a5, t0, a5
-; RV32IM-NEXT:    srli a7, a6, 1
-; RV32IM-NEXT:    and a6, a6, t4
-; RV32IM-NEXT:    and t0, a5, t4
-; RV32IM-NEXT:    srli a5, a5, 1
+; RV32IM-NEXT:    or a5, a7, a5
+; RV32IM-NEXT:    slli a6, a6, 2
+; RV32IM-NEXT:    or a6, t0, a6
+; RV32IM-NEXT:    srli a7, a5, 1
+; RV32IM-NEXT:    and a5, a5, s9
+; RV32IM-NEXT:    and t0, a6, s9
+; RV32IM-NEXT:    srli a6, a6, 1
 ; RV32IM-NEXT:    and a7, a7, a4
-; RV32IM-NEXT:    and a4, a5, a4
-; RV32IM-NEXT:    slli a6, a6, 1
-; RV32IM-NEXT:    or a5, a7, a6
+; RV32IM-NEXT:    and a4, a6, a4
+; RV32IM-NEXT:    slli a5, a5, 1
+; RV32IM-NEXT:    or a5, a7, a5
 ; RV32IM-NEXT:    slli t0, t0, 1
 ; RV32IM-NEXT:    or a4, a4, t0
-; RV32IM-NEXT:    slli a0, a0, 31
-; RV32IM-NEXT:    srli a5, a5, 1
-; RV32IM-NEXT:    or a0, a5, a0
 ; RV32IM-NEXT:    slli a1, a1, 31
+; RV32IM-NEXT:    srli a5, a5, 1
+; RV32IM-NEXT:    or a1, a5, a1
+; RV32IM-NEXT:    slli a0, a0, 31
 ; RV32IM-NEXT:    srli a4, a4, 1
-; RV32IM-NEXT:    or a1, a4, a1
+; RV32IM-NEXT:    or a0, a4, a0
 ; RV32IM-NEXT:    srli a2, a2, 1
 ; RV32IM-NEXT:    srli a3, a3, 1
-; RV32IM-NEXT:    lw a4, 632(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    sw a0, 0(a4)
+; RV32IM-NEXT:    lw a4, 636(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a1, 0(a4)
 ; RV32IM-NEXT:    sw a2, 4(a4)
-; RV32IM-NEXT:    sw a1, 8(a4)
+; RV32IM-NEXT:    sw a0, 8(a4)
 ; RV32IM-NEXT:    sw a3, 12(a4)
-; RV32IM-NEXT:    lw a4, 636(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    sw a0, 0(a4)
+; RV32IM-NEXT:    lw a4, 640(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw a1, 0(a4)
 ; RV32IM-NEXT:    sw a2, 4(a4)
-; RV32IM-NEXT:    sw a1, 8(a4)
+; RV32IM-NEXT:    sw a0, 8(a4)
 ; RV32IM-NEXT:    sw a3, 12(a4)
 ; RV32IM-NEXT:    lw ra, 700(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw s0, 696(sp) # 4-byte Folded Reload
@@ -8314,1031 +8307,1033 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ;
 ; RV64IM-LABEL: commutative_clmulh_v2i64:
 ; RV64IM:       # %bb.0:
-; RV64IM-NEXT:    addi sp, sp, -960
-; RV64IM-NEXT:    sd ra, 952(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s0, 944(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s1, 936(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s2, 928(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s3, 920(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s4, 912(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s5, 904(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s6, 896(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s7, 888(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s8, 880(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s9, 872(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s10, 864(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s11, 856(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd a5, 824(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd a4, 816(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mv s6, a1
-; RV64IM-NEXT:    mv t6, a0
+; RV64IM-NEXT:    addi sp, sp, -944
+; RV64IM-NEXT:    sd ra, 936(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s0, 928(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s1, 920(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s2, 912(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s3, 904(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s4, 896(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s5, 888(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s6, 880(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s7, 872(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s8, 864(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s9, 856(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s10, 848(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s11, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a5, 800(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a4, 792(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    srli t0, a2, 24
 ; RV64IM-NEXT:    lui t5, 4080
 ; RV64IM-NEXT:    srli t1, a2, 8
 ; RV64IM-NEXT:    li t4, 255
 ; RV64IM-NEXT:    srli t2, a2, 40
-; RV64IM-NEXT:    lui a0, 16
+; RV64IM-NEXT:    lui t3, 16
 ; RV64IM-NEXT:    srli s0, a2, 56
 ; RV64IM-NEXT:    srliw a6, a2, 24
-; RV64IM-NEXT:    slli a1, a2, 56
-; RV64IM-NEXT:    sd a1, 848(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui t3, 61681
-; RV64IM-NEXT:    lui s3, 209715
+; RV64IM-NEXT:    slli a4, a2, 56
+; RV64IM-NEXT:    sd a4, 832(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui s10, 61681
+; RV64IM-NEXT:    lui s11, 209715
 ; RV64IM-NEXT:    lui s2, 349525
-; RV64IM-NEXT:    srli s4, t6, 24
-; RV64IM-NEXT:    srli s1, t6, 8
-; RV64IM-NEXT:    srli a4, t6, 40
-; RV64IM-NEXT:    srli a5, t6, 56
-; RV64IM-NEXT:    srliw a7, t6, 24
-; RV64IM-NEXT:    slli a1, t6, 56
-; RV64IM-NEXT:    sd a1, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    srli s4, a0, 24
+; RV64IM-NEXT:    srli s5, a0, 8
+; RV64IM-NEXT:    srli a4, a0, 40
+; RV64IM-NEXT:    srli a5, a0, 56
+; RV64IM-NEXT:    srliw a7, a0, 24
+; RV64IM-NEXT:    slli t6, a0, 56
 ; RV64IM-NEXT:    srli s7, a3, 24
 ; RV64IM-NEXT:    srli s9, a3, 8
-; RV64IM-NEXT:    srli s5, a3, 40
+; RV64IM-NEXT:    srli s6, a3, 40
 ; RV64IM-NEXT:    srli s8, a3, 56
 ; RV64IM-NEXT:    and t0, t0, t5
-; RV64IM-NEXT:    slli t4, t4, 24
-; RV64IM-NEXT:    and t1, t1, t4
+; RV64IM-NEXT:    slli s1, t4, 24
+; RV64IM-NEXT:    and t1, t1, s1
 ; RV64IM-NEXT:    or t0, t1, t0
-; RV64IM-NEXT:    addi a0, a0, -256
-; RV64IM-NEXT:    and t1, t2, a0
-; RV64IM-NEXT:    or a1, t1, s0
-; RV64IM-NEXT:    and t1, a2, t5
+; RV64IM-NEXT:    addi s3, t3, -256
+; RV64IM-NEXT:    and t1, t2, s3
+; RV64IM-NEXT:    or t1, t1, s0
+; RV64IM-NEXT:    and t2, a2, t5
 ; RV64IM-NEXT:    slli a6, a6, 32
-; RV64IM-NEXT:    addi t2, t3, -241
-; RV64IM-NEXT:    addi t3, s3, 819
+; RV64IM-NEXT:    addi t3, s10, -241
+; RV64IM-NEXT:    addi t4, s11, 819
 ; RV64IM-NEXT:    addi s0, s2, 1365
-; RV64IM-NEXT:    slli t1, t1, 24
-; RV64IM-NEXT:    or t1, t1, a6
-; RV64IM-NEXT:    slli a6, t2, 32
-; RV64IM-NEXT:    add s10, t2, a6
+; RV64IM-NEXT:    slli t2, t2, 24
+; RV64IM-NEXT:    or t2, t2, a6
 ; RV64IM-NEXT:    slli a6, t3, 32
-; RV64IM-NEXT:    add s11, t3, a6
+; RV64IM-NEXT:    add s10, t3, a6
+; RV64IM-NEXT:    slli a6, t4, 32
+; RV64IM-NEXT:    add ra, t4, a6
 ; RV64IM-NEXT:    slli a6, s0, 32
-; RV64IM-NEXT:    add ra, s0, a6
-; RV64IM-NEXT:    srliw t2, a3, 24
+; RV64IM-NEXT:    add s11, s0, a6
+; RV64IM-NEXT:    srliw t3, a3, 24
 ; RV64IM-NEXT:    and a6, s4, t5
-; RV64IM-NEXT:    and t3, s1, t4
-; RV64IM-NEXT:    or a6, t3, a6
-; RV64IM-NEXT:    srli t3, s6, 24
-; RV64IM-NEXT:    and a4, a4, a0
+; RV64IM-NEXT:    and t4, s5, s1
+; RV64IM-NEXT:    or a6, t4, a6
+; RV64IM-NEXT:    srli t4, a1, 24
+; RV64IM-NEXT:    sd s3, 760(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a4, a4, s3
 ; RV64IM-NEXT:    or a5, a4, a5
-; RV64IM-NEXT:    and a4, t6, t5
+; RV64IM-NEXT:    and a4, a0, t5
 ; RV64IM-NEXT:    slli a7, a7, 32
 ; RV64IM-NEXT:    slli a4, a4, 24
 ; RV64IM-NEXT:    or a4, a4, a7
-; RV64IM-NEXT:    srli a7, s6, 8
+; RV64IM-NEXT:    srli a7, a1, 8
 ; RV64IM-NEXT:    and s0, s7, t5
-; RV64IM-NEXT:    sd t4, 808(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s1, s9, t4
-; RV64IM-NEXT:    or s1, s1, s0
-; RV64IM-NEXT:    srli s0, s6, 40
-; RV64IM-NEXT:    and s2, s5, a0
-; RV64IM-NEXT:    or s3, s2, s8
-; RV64IM-NEXT:    and s2, a3, t5
-; RV64IM-NEXT:    slli t2, t2, 32
-; RV64IM-NEXT:    slli s2, s2, 24
-; RV64IM-NEXT:    or t2, s2, t2
-; RV64IM-NEXT:    srli s2, s6, 56
-; RV64IM-NEXT:    and t3, t3, t5
-; RV64IM-NEXT:    and a7, a7, t4
-; RV64IM-NEXT:    or a7, a7, t3
-; RV64IM-NEXT:    srliw t3, s6, 24
-; RV64IM-NEXT:    mv s8, a0
-; RV64IM-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, s0, a0
-; RV64IM-NEXT:    or s4, s0, s2
-; RV64IM-NEXT:    and s0, s6, t5
+; RV64IM-NEXT:    mv s4, s1
+; RV64IM-NEXT:    sd s1, 784(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s1, s9, s1
+; RV64IM-NEXT:    or s2, s1, s0
+; RV64IM-NEXT:    srli s0, a1, 40
+; RV64IM-NEXT:    and s1, s6, s3
+; RV64IM-NEXT:    or s8, s1, s8
+; RV64IM-NEXT:    and s1, a3, t5
 ; RV64IM-NEXT:    slli t3, t3, 32
+; RV64IM-NEXT:    slli s1, s1, 24
+; RV64IM-NEXT:    or t3, s1, t3
+; RV64IM-NEXT:    srli s1, a1, 56
+; RV64IM-NEXT:    and t4, t4, t5
+; RV64IM-NEXT:    and a7, a7, s4
+; RV64IM-NEXT:    or a7, a7, t4
+; RV64IM-NEXT:    srliw t4, a1, 24
+; RV64IM-NEXT:    and s0, s0, s3
+; RV64IM-NEXT:    or s4, s0, s1
+; RV64IM-NEXT:    and s0, a1, t5
+; RV64IM-NEXT:    slli t4, t4, 32
 ; RV64IM-NEXT:    slli s0, s0, 24
-; RV64IM-NEXT:    or t3, s0, t3
+; RV64IM-NEXT:    or s5, s0, t4
 ; RV64IM-NEXT:    li s0, 1
-; RV64IM-NEXT:    or s5, t0, a1
-; RV64IM-NEXT:    lui s2, 1
-; RV64IM-NEXT:    and a2, a2, a0
+; RV64IM-NEXT:    or s6, t0, t1
+; RV64IM-NEXT:    lui t4, 2
+; RV64IM-NEXT:    and a2, a2, s3
 ; RV64IM-NEXT:    slli a2, a2, 40
-; RV64IM-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    or a2, a0, a2
-; RV64IM-NEXT:    lui t0, 64
+; RV64IM-NEXT:    ld t0, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    or a2, t0, a2
+; RV64IM-NEXT:    lui s7, 4
 ; RV64IM-NEXT:    or t5, a6, a5
-; RV64IM-NEXT:    lui t4, 128
-; RV64IM-NEXT:    and a0, t6, s8
+; RV64IM-NEXT:    lui a6, 512
+; RV64IM-NEXT:    and a0, a0, s3
 ; RV64IM-NEXT:    slli a0, a0, 40
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    or a0, a1, a0
-; RV64IM-NEXT:    lui s7, 4096
-; RV64IM-NEXT:    or t6, s1, s3
-; RV64IM-NEXT:    slli a6, a3, 56
-; RV64IM-NEXT:    and a3, a3, s8
+; RV64IM-NEXT:    or a0, t6, a0
+; RV64IM-NEXT:    lui t0, 1024
+; RV64IM-NEXT:    or t6, s2, s8
+; RV64IM-NEXT:    slli a5, a3, 56
+; RV64IM-NEXT:    and a3, a3, s3
 ; RV64IM-NEXT:    slli a3, a3, 40
-; RV64IM-NEXT:    or s1, a6, a3
-; RV64IM-NEXT:    lui a6, 8192
+; RV64IM-NEXT:    or s2, a5, a3
+; RV64IM-NEXT:    lui a5, 4096
 ; RV64IM-NEXT:    or a7, a7, s4
-; RV64IM-NEXT:    slli a3, s6, 56
-; RV64IM-NEXT:    and a1, s6, s8
+; RV64IM-NEXT:    slli a3, a1, 56
+; RV64IM-NEXT:    and a1, a1, s3
 ; RV64IM-NEXT:    slli a1, a1, 40
 ; RV64IM-NEXT:    or a1, a3, a1
-; RV64IM-NEXT:    slli s3, s0, 11
-; RV64IM-NEXT:    or t1, a2, t1
-; RV64IM-NEXT:    slli a3, s0, 33
+; RV64IM-NEXT:    lui t1, 8192
+; RV64IM-NEXT:    or t2, a2, t2
+; RV64IM-NEXT:    slli a3, s0, 34
 ; RV64IM-NEXT:    or a0, a0, a4
-; RV64IM-NEXT:    slli a4, s0, 34
-; RV64IM-NEXT:    or t2, s1, t2
+; RV64IM-NEXT:    slli a4, s0, 35
+; RV64IM-NEXT:    or t3, s2, t3
 ; RV64IM-NEXT:    slli a2, s0, 40
-; RV64IM-NEXT:    or a1, a1, t3
-; RV64IM-NEXT:    or t1, t1, s5
+; RV64IM-NEXT:    or a1, a1, s5
+; RV64IM-NEXT:    or t2, t2, s6
 ; RV64IM-NEXT:    or a0, a0, t5
-; RV64IM-NEXT:    or t2, t2, t6
+; RV64IM-NEXT:    or t3, t3, t6
 ; RV64IM-NEXT:    or a1, a1, a7
-; RV64IM-NEXT:    srli a7, t1, 4
-; RV64IM-NEXT:    sd s10, 800(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t1, t1, s10
-; RV64IM-NEXT:    srli t3, a0, 4
-; RV64IM-NEXT:    and a0, a0, s10
-; RV64IM-NEXT:    srli t5, t2, 4
+; RV64IM-NEXT:    srli a7, t2, 4
+; RV64IM-NEXT:    sd s10, 776(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and t2, t2, s10
-; RV64IM-NEXT:    srli t6, a1, 4
+; RV64IM-NEXT:    srli t5, a0, 4
+; RV64IM-NEXT:    and a0, a0, s10
+; RV64IM-NEXT:    srli t6, t3, 4
+; RV64IM-NEXT:    and t3, t3, s10
+; RV64IM-NEXT:    srli s2, a1, 4
 ; RV64IM-NEXT:    and a1, a1, s10
 ; RV64IM-NEXT:    and a7, a7, s10
-; RV64IM-NEXT:    slli t1, t1, 4
-; RV64IM-NEXT:    and t3, t3, s10
-; RV64IM-NEXT:    slli a0, a0, 4
-; RV64IM-NEXT:    and t5, t5, s10
 ; RV64IM-NEXT:    slli t2, t2, 4
+; RV64IM-NEXT:    and t5, t5, s10
+; RV64IM-NEXT:    slli a0, a0, 4
 ; RV64IM-NEXT:    and t6, t6, s10
+; RV64IM-NEXT:    slli t3, t3, 4
+; RV64IM-NEXT:    and s2, s2, s10
 ; RV64IM-NEXT:    slli a1, a1, 4
-; RV64IM-NEXT:    or a7, a7, t1
-; RV64IM-NEXT:    or a0, t3, a0
-; RV64IM-NEXT:    or t1, t5, t2
-; RV64IM-NEXT:    or a1, t6, a1
-; RV64IM-NEXT:    srli t2, a7, 2
-; RV64IM-NEXT:    sd s11, 792(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    or a7, a7, t2
+; RV64IM-NEXT:    or a0, t5, a0
+; RV64IM-NEXT:    or t2, t6, t3
+; RV64IM-NEXT:    or a1, s2, a1
+; RV64IM-NEXT:    srli t3, a7, 2
+; RV64IM-NEXT:    sd ra, 768(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, a7, ra
+; RV64IM-NEXT:    srli t5, a0, 2
+; RV64IM-NEXT:    and a0, a0, ra
+; RV64IM-NEXT:    srli t6, t2, 2
+; RV64IM-NEXT:    and t2, t2, ra
+; RV64IM-NEXT:    srli s2, a1, 2
+; RV64IM-NEXT:    and a1, a1, ra
+; RV64IM-NEXT:    and t3, t3, ra
+; RV64IM-NEXT:    slli a7, a7, 2
+; RV64IM-NEXT:    and t5, t5, ra
+; RV64IM-NEXT:    slli a0, a0, 2
+; RV64IM-NEXT:    and t6, t6, ra
+; RV64IM-NEXT:    slli t2, t2, 2
+; RV64IM-NEXT:    and s2, s2, ra
+; RV64IM-NEXT:    slli a1, a1, 2
+; RV64IM-NEXT:    or a7, t3, a7
+; RV64IM-NEXT:    or a0, t5, a0
+; RV64IM-NEXT:    or t2, t6, t2
+; RV64IM-NEXT:    or a1, s2, a1
+; RV64IM-NEXT:    srli t3, a7, 1
+; RV64IM-NEXT:    sd s11, 752(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and a7, a7, s11
-; RV64IM-NEXT:    srli t3, a0, 2
+; RV64IM-NEXT:    srli t5, a0, 1
 ; RV64IM-NEXT:    and a0, a0, s11
-; RV64IM-NEXT:    srli t5, t1, 2
-; RV64IM-NEXT:    and t1, t1, s11
-; RV64IM-NEXT:    srli t6, a1, 2
-; RV64IM-NEXT:    and a1, a1, s11
+; RV64IM-NEXT:    srli t6, t2, 1
 ; RV64IM-NEXT:    and t2, t2, s11
-; RV64IM-NEXT:    slli a7, a7, 2
+; RV64IM-NEXT:    srli s2, a1, 1
+; RV64IM-NEXT:    and a1, a1, s11
 ; RV64IM-NEXT:    and t3, t3, s11
-; RV64IM-NEXT:    slli a0, a0, 2
-; RV64IM-NEXT:    and t5, t5, s11
-; RV64IM-NEXT:    slli t1, t1, 2
-; RV64IM-NEXT:    and t6, t6, s11
-; RV64IM-NEXT:    slli a1, a1, 2
-; RV64IM-NEXT:    or a7, t2, a7
-; RV64IM-NEXT:    or a0, t3, a0
-; RV64IM-NEXT:    or t1, t5, t1
-; RV64IM-NEXT:    or a1, t6, a1
-; RV64IM-NEXT:    srli t2, a7, 1
-; RV64IM-NEXT:    sd ra, 776(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, a7, ra
-; RV64IM-NEXT:    srli t3, a0, 1
-; RV64IM-NEXT:    and a0, a0, ra
-; RV64IM-NEXT:    srli t5, t1, 1
-; RV64IM-NEXT:    and t1, t1, ra
-; RV64IM-NEXT:    srli t6, a1, 1
-; RV64IM-NEXT:    and a1, a1, ra
-; RV64IM-NEXT:    and t2, t2, ra
 ; RV64IM-NEXT:    slli a7, a7, 1
-; RV64IM-NEXT:    and t3, t3, ra
+; RV64IM-NEXT:    and s3, t5, s11
 ; RV64IM-NEXT:    slli a0, a0, 1
-; RV64IM-NEXT:    and s1, t5, ra
-; RV64IM-NEXT:    slli t1, t1, 1
-; RV64IM-NEXT:    and s4, t6, ra
+; RV64IM-NEXT:    and s4, t6, s11
+; RV64IM-NEXT:    slli t2, t2, 1
+; RV64IM-NEXT:    and s2, s2, s11
 ; RV64IM-NEXT:    slli a1, a1, 1
-; RV64IM-NEXT:    or t5, t2, a7
-; RV64IM-NEXT:    or t6, t3, a0
-; RV64IM-NEXT:    or a0, s1, t1
-; RV64IM-NEXT:    or a5, s4, a1
-; RV64IM-NEXT:    and a7, t6, s3
-; RV64IM-NEXT:    and t1, t6, s2
-; RV64IM-NEXT:    and t2, t6, t0
-; RV64IM-NEXT:    and t3, t6, t4
-; RV64IM-NEXT:    and s1, t6, s7
+; RV64IM-NEXT:    or t5, t3, a7
+; RV64IM-NEXT:    or t6, s3, a0
+; RV64IM-NEXT:    or a0, s4, t2
+; RV64IM-NEXT:    or s1, s2, a1
+; RV64IM-NEXT:    and a7, t6, t4
+; RV64IM-NEXT:    and t2, t6, s7
+; RV64IM-NEXT:    and t3, t6, a6
+; RV64IM-NEXT:    and s2, t6, t0
+; RV64IM-NEXT:    and s3, t6, a5
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    mul t1, t5, t1
-; RV64IM-NEXT:    xor a1, a7, t1
-; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, a6
-; RV64IM-NEXT:    mul t1, t5, t2
+; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    xor a1, a7, t2
+; RV64IM-NEXT:    sd a1, 464(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t1
 ; RV64IM-NEXT:    mul t2, t5, t3
-; RV64IM-NEXT:    xor a1, t1, t2
-; RV64IM-NEXT:    sd a1, 352(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t1, t6, a3
-; RV64IM-NEXT:    mul t2, t5, s1
+; RV64IM-NEXT:    mul t3, t5, s2
+; RV64IM-NEXT:    xor a1, t2, t3
+; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t2, t6, a3
+; RV64IM-NEXT:    mul t3, t5, s3
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    xor a1, t2, a7
-; RV64IM-NEXT:    sd a1, 376(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    xor a1, t3, a7
+; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and a7, t6, a4
-; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    mul t2, t5, t2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    xor a1, t1, a7
-; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    xor a1, t2, a7
+; RV64IM-NEXT:    sd a1, 320(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and a7, t6, a2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    slli s1, s0, 41
-; RV64IM-NEXT:    and t1, t6, s1
-; RV64IM-NEXT:    mul t1, t5, t1
-; RV64IM-NEXT:    xor a1, a7, t1
-; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s4, s0, 48
-; RV64IM-NEXT:    and a7, t6, s4
+; RV64IM-NEXT:    slli s4, s0, 41
+; RV64IM-NEXT:    and t2, t6, s4
+; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    xor a1, a7, t2
+; RV64IM-NEXT:    sd a1, 720(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s3, s0, 48
+; RV64IM-NEXT:    and a7, t6, s3
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    slli s6, s0, 49
-; RV64IM-NEXT:    and t1, t6, s6
-; RV64IM-NEXT:    mul t1, t5, t1
-; RV64IM-NEXT:    xor a1, a7, t1
-; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s2, s0, 49
+; RV64IM-NEXT:    and t2, t6, s2
+; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    xor a1, a7, t2
+; RV64IM-NEXT:    sd a1, 712(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    slli a7, s0, 56
-; RV64IM-NEXT:    and t1, t6, a7
-; RV64IM-NEXT:    mul t2, t5, t1
-; RV64IM-NEXT:    slli t1, s0, 57
-; RV64IM-NEXT:    and t3, t6, t1
-; RV64IM-NEXT:    mul t3, t5, t3
-; RV64IM-NEXT:    xor a1, t2, t3
-; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, a5, s3
-; RV64IM-NEXT:    and t3, a5, s2
-; RV64IM-NEXT:    mul t2, a0, t2
+; RV64IM-NEXT:    and t2, t6, a7
+; RV64IM-NEXT:    mul t3, t5, t2
+; RV64IM-NEXT:    slli t2, s0, 57
+; RV64IM-NEXT:    and s5, t6, t2
+; RV64IM-NEXT:    mul s5, t5, s5
+; RV64IM-NEXT:    xor a1, t3, s5
+; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, s1, t4
+; RV64IM-NEXT:    and a1, s1, s7
 ; RV64IM-NEXT:    mul t3, a0, t3
-; RV64IM-NEXT:    xor a1, t2, t3
-; RV64IM-NEXT:    sd a1, 768(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t0, a5, t0
-; RV64IM-NEXT:    and t2, a5, t4
+; RV64IM-NEXT:    mul t4, a0, a1
+; RV64IM-NEXT:    xor a1, t3, t4
+; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a6, s1, a6
+; RV64IM-NEXT:    and t0, s1, t0
+; RV64IM-NEXT:    mul a6, a0, a6
 ; RV64IM-NEXT:    mul t0, a0, t0
-; RV64IM-NEXT:    mul t2, a0, t2
-; RV64IM-NEXT:    xor a1, t0, t2
-; RV64IM-NEXT:    sd a1, 760(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, s7
-; RV64IM-NEXT:    and a6, a5, a6
-; RV64IM-NEXT:    mul a1, a0, a1
+; RV64IM-NEXT:    xor a1, a6, t0
+; RV64IM-NEXT:    sd a1, 736(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a5, s1, a5
+; RV64IM-NEXT:    and a6, s1, t1
+; RV64IM-NEXT:    mul a5, a0, a5
 ; RV64IM-NEXT:    mul a6, a0, a6
-; RV64IM-NEXT:    xor a1, a1, a6
-; RV64IM-NEXT:    sd a1, 752(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a3, a5, a3
-; RV64IM-NEXT:    and a4, a5, a4
+; RV64IM-NEXT:    xor a1, a5, a6
+; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a3, s1, a3
+; RV64IM-NEXT:    and a4, s1, a4
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    mul a4, a0, a4
 ; RV64IM-NEXT:    xor a3, a3, a4
-; RV64IM-NEXT:    sd a3, 736(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a2, a5, a2
-; RV64IM-NEXT:    and s1, a5, s1
+; RV64IM-NEXT:    sd a3, 704(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, a2
+; RV64IM-NEXT:    and a3, s1, s4
 ; RV64IM-NEXT:    mul a2, a0, a2
-; RV64IM-NEXT:    mul a3, a0, s1
+; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    xor a2, a2, a3
-; RV64IM-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a2, a5, s4
-; RV64IM-NEXT:    and a3, a5, s6
+; RV64IM-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, s3
+; RV64IM-NEXT:    and a3, s1, s2
 ; RV64IM-NEXT:    mul a2, a0, a2
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    xor a2, a2, a3
-; RV64IM-NEXT:    sd a2, 712(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a2, a5, a7
-; RV64IM-NEXT:    and a3, a5, t1
+; RV64IM-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, a7
+; RV64IM-NEXT:    and a3, s1, t2
 ; RV64IM-NEXT:    mul a2, a0, a2
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    xor a2, a2, a3
-; RV64IM-NEXT:    sd a2, 704(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 2
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 1
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 4
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 2
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 8
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 3
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 16
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 4
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 32
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 5
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 624(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 64
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 6
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 128
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 7
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 256
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 8
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 616(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 592(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 512
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 9
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t3, s0, 31
-; RV64IM-NEXT:    sd t3, 240(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s8, s0, 32
-; RV64IM-NEXT:    sd s8, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a7, s0, 35
-; RV64IM-NEXT:    sd a7, 224(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s3, s0, 36
-; RV64IM-NEXT:    slli s4, s0, 37
-; RV64IM-NEXT:    slli s5, s0, 38
-; RV64IM-NEXT:    slli s6, s0, 39
-; RV64IM-NEXT:    slli s7, s0, 42
-; RV64IM-NEXT:    slli a1, s0, 43
-; RV64IM-NEXT:    slli s10, s0, 44
-; RV64IM-NEXT:    sd s10, 216(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a3, s0, 45
-; RV64IM-NEXT:    slli a4, s0, 46
+; RV64IM-NEXT:    sd a2, 560(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a7, s0, 11
+; RV64IM-NEXT:    sd a7, 256(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a3, s0, 31
+; RV64IM-NEXT:    sd a3, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a4, s0, 32
 ; RV64IM-NEXT:    sd a4, 208(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t0, s0, 47
-; RV64IM-NEXT:    sd t0, 200(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t1, s0, 50
-; RV64IM-NEXT:    sd t1, 192(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t4, s0, 51
-; RV64IM-NEXT:    sd t4, 184(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 52
-; RV64IM-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 53
-; RV64IM-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s1, s0, 54
-; RV64IM-NEXT:    sd s1, 168(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s2, s0, 55
-; RV64IM-NEXT:    sd s2, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 58
-; RV64IM-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s9, s0, 59
-; RV64IM-NEXT:    sd s9, 160(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s11, s0, 60
-; RV64IM-NEXT:    sd s11, 176(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli ra, s0, 61
+; RV64IM-NEXT:    slli s3, s0, 33
+; RV64IM-NEXT:    sd s3, 200(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t0, s0, 36
+; RV64IM-NEXT:    sd t0, 192(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t1, s0, 37
+; RV64IM-NEXT:    slli s5, s0, 38
+; RV64IM-NEXT:    sd s5, 176(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a5, s0, 39
+; RV64IM-NEXT:    slli s8, s0, 42
+; RV64IM-NEXT:    sd s8, 168(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a6, s0, 43
+; RV64IM-NEXT:    sd a6, 160(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t2, s0, 44
+; RV64IM-NEXT:    slli t4, s0, 45
+; RV64IM-NEXT:    sd t4, 152(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s2, s0, 46
+; RV64IM-NEXT:    sd s2, 144(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s4, s0, 47
+; RV64IM-NEXT:    sd s4, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s6, s0, 50
+; RV64IM-NEXT:    sd s6, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 51
+; RV64IM-NEXT:    sd a1, 808(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 52
+; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s7, s0, 53
+; RV64IM-NEXT:    sd s7, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s9, s0, 54
+; RV64IM-NEXT:    sd s9, 104(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s10, s0, 55
+; RV64IM-NEXT:    sd s10, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 58
+; RV64IM-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s11, s0, 59
+; RV64IM-NEXT:    sd s11, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli ra, s0, 60
+; RV64IM-NEXT:    sd ra, 112(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 61
+; RV64IM-NEXT:    sd a1, 816(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    slli s0, s0, 62
-; RV64IM-NEXT:    sd s0, 848(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s0, 832(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    li a2, -1
 ; RV64IM-NEXT:    slli a2, a2, 63
-; RV64IM-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 1
-; RV64IM-NEXT:    seqz a2, a2
-; RV64IM-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 2
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    seqz a1, a2
+; RV64IM-NEXT:    sd a1, 304(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, t6, a7
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 584(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 1
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 616(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 8
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 288(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 16
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 4
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    sd a2, 504(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 32
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 528(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 8
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 64
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a2, t5, a2
+; RV64IM-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 128
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 576(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 16
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 256
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 608(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 32
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 256
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 512
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 480(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 1024
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 2048
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 584(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 16384
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 2048
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 280(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 16384
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    lui a6, 32768
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 448(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 65536
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 504(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 131072
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 568(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 262144
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 592(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, t3
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 600(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, s8
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 624(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, a7
-; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    lui a1, 32768
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 432(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 65536
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 480(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 131072
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 520(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 262144
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 536(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, a3
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 552(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, a4
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 568(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and t3, t6, s3
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 416(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s4
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 464(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s5
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 512(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s6
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 560(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s7
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 600(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, t0
 ; RV64IM-NEXT:    mul t3, t5, t3
-; RV64IM-NEXT:    and s0, t6, a1
-; RV64IM-NEXT:    mv s8, a1
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 400(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, s10
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 432(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, a3
-; RV64IM-NEXT:    mv s10, a3
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 472(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, a4
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 536(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, t0
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 552(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and s0, t6, t1
+; RV64IM-NEXT:    mv s3, t1
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 384(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, s5
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 424(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, a5
+; RV64IM-NEXT:    mv s5, a5
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 472(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, s8
 ; RV64IM-NEXT:    mul s0, t5, s0
-; RV64IM-NEXT:    and a6, t6, t4
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 368(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld t1, 136(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, t1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 408(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld t0, 144(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, t0
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 440(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a6, t6, s1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 496(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a6, t6, s2
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 520(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, a1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    and a7, t6, s9
-; RV64IM-NEXT:    mul a1, t5, a7
-; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, s11
+; RV64IM-NEXT:    and a7, t6, a6
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 392(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, ra
-; RV64IM-NEXT:    mv s9, ra
+; RV64IM-NEXT:    sd a7, 368(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t2
+; RV64IM-NEXT:    mv s8, t2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 424(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a7, t6, a1
+; RV64IM-NEXT:    sd a7, 400(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t4
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 456(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a7, t6, a1
+; RV64IM-NEXT:    sd a7, 440(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 488(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a4, 384(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and a1, a4, t5
-; RV64IM-NEXT:    sd a1, 320(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t5, t5, 10
-; RV64IM-NEXT:    andi a4, t6, 1024
-; RV64IM-NEXT:    seqz a4, a4
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and a4, a4, t5
-; RV64IM-NEXT:    sd a4, 384(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a4, 360(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a4, a1
-; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 352(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a3, 304(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a3
+; RV64IM-NEXT:    sd a7, 496(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s4
+; RV64IM-NEXT:    mul a7, t5, a7
+; RV64IM-NEXT:    sd a7, 512(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s6
+; RV64IM-NEXT:    mul a7, t5, a7
+; RV64IM-NEXT:    ld a1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, a1
+; RV64IM-NEXT:    mul a1, t5, t0
 ; RV64IM-NEXT:    sd a1, 352(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 376(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a2
-; RV64IM-NEXT:    sd a1, 376(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, t2
+; RV64IM-NEXT:    ld t2, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, t2
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 376(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s7
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 408(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s9
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 456(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s10
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 488(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a6, 80(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, a6
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    and t1, t6, s11
+; RV64IM-NEXT:    mul a1, t5, t1
+; RV64IM-NEXT:    sd a1, 312(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, t6, ra
+; RV64IM-NEXT:    mul a1, t5, t1
+; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a1
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 392(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a3
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 416(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a3
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 448(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a5, 304(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    addi a5, a5, -1
+; RV64IM-NEXT:    and a1, a5, t5
+; RV64IM-NEXT:    sd a1, 296(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t5, t5, 10
+; RV64IM-NEXT:    andi a5, t6, 1024
+; RV64IM-NEXT:    seqz a5, a5
+; RV64IM-NEXT:    addi a5, a5, -1
+; RV64IM-NEXT:    and a1, a5, t5
+; RV64IM-NEXT:    sd a1, 304(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a5, 464(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a5, a1
+; RV64IM-NEXT:    sd a1, 288(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a4, 336(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a3, 280(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a4, a3
+; RV64IM-NEXT:    sd a3, 464(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 328(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a3, a2
+; RV64IM-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 320(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, t3
+; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 720(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s0
+; RV64IM-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 712(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, a7
+; RV64IM-NEXT:    sd a1, 712(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, t0
 ; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, t3
-; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 744(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, s0
-; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 728(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a6
-; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 2
+; RV64IM-NEXT:    andi a2, s1, 2
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 1
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 4
+; RV64IM-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 4
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 2
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 8
+; RV64IM-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 8
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 3
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 16
+; RV64IM-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 16
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 4
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 32
+; RV64IM-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 32
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 5
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 64
+; RV64IM-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 64
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 6
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 128
+; RV64IM-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 128
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 7
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 256
+; RV64IM-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 256
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 8
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 512
+; RV64IM-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 512
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 9
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a1, 2
-; RV64IM-NEXT:    and a7, a5, a1
-; RV64IM-NEXT:    lui a1, 4
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a4, s1, a1
+; RV64IM-NEXT:    lui a1, 1
+; RV64IM-NEXT:    and a5, s1, a1
 ; RV64IM-NEXT:    lui a1, 8
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, s1, a1
 ; RV64IM-NEXT:    lui a1, 16
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 112(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 256(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 32
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 104(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a3, 256
-; RV64IM-NEXT:    and a3, a5, a3
-; RV64IM-NEXT:    lui s1, 512
-; RV64IM-NEXT:    and s1, a5, s1
-; RV64IM-NEXT:    lui a1, 1024
-; RV64IM-NEXT:    and t6, a5, a1
-; RV64IM-NEXT:    lui a2, 2048
-; RV64IM-NEXT:    and a2, a5, a2
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 64
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 128
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a2, 256
+; RV64IM-NEXT:    and a2, s1, a2
+; RV64IM-NEXT:    lui s0, 2048
+; RV64IM-NEXT:    and s0, s1, s0
 ; RV64IM-NEXT:    lui a1, 16384
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 32768
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 65536
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a1, 131072
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 56(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t4, s1, a1
+; RV64IM-NEXT:    lui a3, 131072
+; RV64IM-NEXT:    and a3, s1, a3
 ; RV64IM-NEXT:    lui a1, 262144
-; RV64IM-NEXT:    and t4, a5, a1
-; RV64IM-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and ra, a5, a1
-; RV64IM-NEXT:    ld s0, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s0, a5, s0
-; RV64IM-NEXT:    ld a1, 224(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s2, a5, a1
-; RV64IM-NEXT:    and s3, a5, s3
-; RV64IM-NEXT:    and s4, a5, s4
-; RV64IM-NEXT:    and s5, a5, s5
-; RV64IM-NEXT:    and s6, a5, s6
-; RV64IM-NEXT:    and s7, a5, s7
-; RV64IM-NEXT:    and s8, a5, s8
+; RV64IM-NEXT:    and t6, s1, a1
 ; RV64IM-NEXT:    ld a1, 216(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s10, a5, s10
+; RV64IM-NEXT:    and s11, s1, a1
 ; RV64IM-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s11, a5, a1
+; RV64IM-NEXT:    and ra, s1, a1
 ; RV64IM-NEXT:    ld a1, 200(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 184(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, t1
-; RV64IM-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, t0
-; RV64IM-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s2, s1, a1
+; RV64IM-NEXT:    and s3, s1, s3
+; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s4, s1, a1
+; RV64IM-NEXT:    and s5, s1, s5
 ; RV64IM-NEXT:    ld a1, 168(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s6, s1, a1
 ; RV64IM-NEXT:    ld a1, 160(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t3, a5, a1
-; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t0, a5, a1
-; RV64IM-NEXT:    and t5, a5, s9
-; RV64IM-NEXT:    ld a1, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t2, a5, a1
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, a5, a1
-; RV64IM-NEXT:    andi a1, a5, 1
-; RV64IM-NEXT:    seqz a4, a1
-; RV64IM-NEXT:    mul t1, a0, a7
+; RV64IM-NEXT:    and s7, s1, a1
+; RV64IM-NEXT:    and s8, s1, s8
+; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s9, s1, a1
+; RV64IM-NEXT:    ld a1, 144(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s10, s1, a1
+; RV64IM-NEXT:    ld a1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 176(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 128(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 152(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, t2
+; RV64IM-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 144(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 112(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 224(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 104(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 840(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a7, a0, a3
-; RV64IM-NEXT:    mul a1, a0, s1
-; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, t6
-; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, a2
-; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a3, a0, a1
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 0(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a6
+; RV64IM-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t5, s1, a1
+; RV64IM-NEXT:    ld a1, 112(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t3, s1, a1
+; RV64IM-NEXT:    ld a1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t2, s1, a1
+; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, s1, a1
+; RV64IM-NEXT:    ld a1, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a7, s1, a1
+; RV64IM-NEXT:    andi a1, s1, 1
+; RV64IM-NEXT:    seqz a6, a1
+; RV64IM-NEXT:    mul a1, a0, a4
+; RV64IM-NEXT:    sd a1, 192(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a5
+; RV64IM-NEXT:    sd a1, 808(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul t1, a0, t1
+; RV64IM-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 56(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 64(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
 ; RV64IM-NEXT:    sd a1, 112(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 56(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 48(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a1, a0, a1
+; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a1, a0, a1
+; RV64IM-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a2
+; RV64IM-NEXT:    sd a1, 816(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a5, a0, s0
+; RV64IM-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a4, a0, a1
+; RV64IM-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 184(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, t4
-; RV64IM-NEXT:    sd a1, 240(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a3
+; RV64IM-NEXT:    sd a1, 144(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, t6
+; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s11
+; RV64IM-NEXT:    sd a1, 256(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, ra
+; RV64IM-NEXT:    sd a1, 824(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 200(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a1, a0, a1
 ; RV64IM-NEXT:    sd a1, 832(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s0
-; RV64IM-NEXT:    sd a1, 848(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul t4, a0, s2
-; RV64IM-NEXT:    mul ra, a0, s3
+; RV64IM-NEXT:    mul ra, a0, s2
+; RV64IM-NEXT:    mul s11, a0, s3
 ; RV64IM-NEXT:    mul a1, a0, s4
-; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, s5
-; RV64IM-NEXT:    sd a1, 160(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s6
-; RV64IM-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a3, a0, s6
 ; RV64IM-NEXT:    mul s7, a0, s7
-; RV64IM-NEXT:    mul s9, a0, s8
-; RV64IM-NEXT:    ld a1, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s8
+; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s9
+; RV64IM-NEXT:    sd a1, 104(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, s10
-; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s11
-; RV64IM-NEXT:    sd a1, 192(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 160(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a2, a0, a1
-; RV64IM-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul s8, a0, a1
-; RV64IM-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul s6, a0, a1
 ; RV64IM-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul s9, a0, a1
+; RV64IM-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 0(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 176(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 80(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    mul s6, a0, t3
-; RV64IM-NEXT:    mul s10, a0, t0
-; RV64IM-NEXT:    mul t0, a0, t5
-; RV64IM-NEXT:    sd t0, 104(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul t0, a0, t2
-; RV64IM-NEXT:    sd t0, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a6, a0, a6
-; RV64IM-NEXT:    sd a6, 176(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and s2, a4, a0
+; RV64IM-NEXT:    mul s4, a0, t5
+; RV64IM-NEXT:    mul s8, a0, t3
+; RV64IM-NEXT:    mul t2, a0, t2
+; RV64IM-NEXT:    sd t2, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul t0, a0, t0
+; RV64IM-NEXT:    sd t0, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a7, a0, a7
+; RV64IM-NEXT:    sd a7, 152(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    addi a6, a6, -1
+; RV64IM-NEXT:    and s0, a6, a0
 ; RV64IM-NEXT:    slli a0, a0, 10
-; RV64IM-NEXT:    andi a5, a5, 1024
-; RV64IM-NEXT:    seqz a5, a5
-; RV64IM-NEXT:    addi a5, a5, -1
-; RV64IM-NEXT:    and a0, a5, a0
-; RV64IM-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a0, 768(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, a0, t1
-; RV64IM-NEXT:    ld a0, 760(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, a0, a7
-; RV64IM-NEXT:    ld s0, 752(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, a3
+; RV64IM-NEXT:    andi s1, s1, 1024
+; RV64IM-NEXT:    seqz s1, s1
+; RV64IM-NEXT:    addi s1, s1, -1
+; RV64IM-NEXT:    and s5, s1, a0
+; RV64IM-NEXT:    ld a0, 744(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s3, a0, t1
 ; RV64IM-NEXT:    ld a0, 736(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, a0, t4
-; RV64IM-NEXT:    ld a0, 720(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s5, a0, s7
-; RV64IM-NEXT:    ld a0, 712(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, a0, a2
+; RV64IM-NEXT:    xor a0, a0, a5
+; RV64IM-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a0, 728(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, a0, a4
 ; RV64IM-NEXT:    ld a0, 704(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s3, a0, a1
+; RV64IM-NEXT:    xor s1, a0, ra
 ; RV64IM-NEXT:    ld a0, 696(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s7, a1, a0
-; RV64IM-NEXT:    ld a0, 680(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 672(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t2, a0, a1
+; RV64IM-NEXT:    xor t5, a0, a3
+; RV64IM-NEXT:    ld a0, 688(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, a0, a2
+; RV64IM-NEXT:    ld a0, 672(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s2, a0, a1
 ; RV64IM-NEXT:    ld a0, 664(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 648(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, a0, a1
+; RV64IM-NEXT:    ld a1, 296(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor ra, a1, a0
+; RV64IM-NEXT:    ld a0, 656(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 640(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t1, a0, a1
 ; RV64IM-NEXT:    ld a0, 632(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 616(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, a0, a1
-; RV64IM-NEXT:    ld a0, 528(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a3, 360(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 624(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, a0, a1
+; RV64IM-NEXT:    ld a0, 592(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 560(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, a0, a1
+; RV64IM-NEXT:    ld a0, 504(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a3, 288(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a3, a3, a0
-; RV64IM-NEXT:    ld a0, 480(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a4, 352(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 432(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 336(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a4, a4, a0
-; RV64IM-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a5, 376(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 384(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a5, 328(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a5, a5, a0
-; RV64IM-NEXT:    ld a0, 416(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 368(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a6, a1, a0
-; RV64IM-NEXT:    ld a0, 400(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 352(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 712(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a1, a0
-; RV64IM-NEXT:    ld a0, 368(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 744(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, a1, a0
-; RV64IM-NEXT:    ld a0, 328(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 728(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, a1, a0
 ; RV64IM-NEXT:    ld a0, 312(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s2, a0
-; RV64IM-NEXT:    ld a0, 296(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, a1, a0
+; RV64IM-NEXT:    ld a0, 280(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s0, a0
+; RV64IM-NEXT:    ld a0, 272(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 248(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 280(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 232(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a1, a1, a2
-; RV64IM-NEXT:    ld a2, 256(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s11, 248(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, s11
-; RV64IM-NEXT:    ld s11, 80(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, s4, s11
-; RV64IM-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s11
-; RV64IM-NEXT:    ld s11, 48(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, s11
-; RV64IM-NEXT:    xor s1, s1, ra
-; RV64IM-NEXT:    xor s5, s5, s9
-; RV64IM-NEXT:    xor t5, t5, s8
-; RV64IM-NEXT:    xor s3, s3, s6
-; RV64IM-NEXT:    xor t2, s7, t2
-; RV64IM-NEXT:    ld s6, 688(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, t3, s6
-; RV64IM-NEXT:    ld s6, 656(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, t4, s6
-; RV64IM-NEXT:    ld s6, 576(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a3, a3, s6
-; RV64IM-NEXT:    ld s6, 544(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a4, s6
-; RV64IM-NEXT:    ld s6, 504(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, s6
-; RV64IM-NEXT:    ld s6, 464(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a6, a6, s6
-; RV64IM-NEXT:    ld s6, 432(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a7, a7, s6
-; RV64IM-NEXT:    ld s6, 408(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, t0, s6
-; RV64IM-NEXT:    ld s6, 392(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, s6
-; RV64IM-NEXT:    xor a0, s2, a0
-; RV64IM-NEXT:    ld s2, 304(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, s2
-; RV64IM-NEXT:    ld s2, 272(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, s2
-; RV64IM-NEXT:    ld s2, 144(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s4, s2
-; RV64IM-NEXT:    ld s4, 128(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s4
-; RV64IM-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, s4
-; RV64IM-NEXT:    ld s4, 96(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, s1, s4
-; RV64IM-NEXT:    ld s4, 88(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, s5, s4
-; RV64IM-NEXT:    ld s5, 72(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, t5, s5
-; RV64IM-NEXT:    xor s3, s3, s10
-; RV64IM-NEXT:    xor t2, t2, t3
-; RV64IM-NEXT:    ld t3, 384(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, t4, t3
-; RV64IM-NEXT:    ld t4, 608(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a3, a3, t4
-; RV64IM-NEXT:    ld t4, 584(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a4, t4
-; RV64IM-NEXT:    ld t4, 568(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, t4
-; RV64IM-NEXT:    ld t4, 512(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a6, a6, t4
-; RV64IM-NEXT:    ld t4, 472(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a7, a7, t4
-; RV64IM-NEXT:    ld t4, 440(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, t0, t4
-; RV64IM-NEXT:    ld t4, 424(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, t4
-; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 56(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a2, a1
 ; RV64IM-NEXT:    ld a2, 224(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, s2, a2
-; RV64IM-NEXT:    ld t4, 200(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, t6, t4
-; RV64IM-NEXT:    ld t6, 184(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, s0, t6
-; RV64IM-NEXT:    ld s0, 160(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s1, s0
-; RV64IM-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, s4, s1
-; RV64IM-NEXT:    ld s2, 120(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, t5, s2
-; RV64IM-NEXT:    ld s2, 104(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s3, s2
-; RV64IM-NEXT:    xor t2, t2, t3
-; RV64IM-NEXT:    ld t3, 640(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s10, 184(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s10
+; RV64IM-NEXT:    ld s10, 56(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s3, s3, s10
+; RV64IM-NEXT:    ld s10, 48(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, t6, s10
+; RV64IM-NEXT:    xor s1, s1, s11
+; RV64IM-NEXT:    xor t5, t5, s7
+; RV64IM-NEXT:    xor t4, t4, s6
+; RV64IM-NEXT:    xor s2, s2, s4
+; RV64IM-NEXT:    xor t1, ra, t1
+; RV64IM-NEXT:    ld s4, 648(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t2, s4
+; RV64IM-NEXT:    ld s4, 304(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s4
+; RV64IM-NEXT:    ld s4, 528(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s4
+; RV64IM-NEXT:    ld s4, 480(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s4
+; RV64IM-NEXT:    ld s4, 424(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a5, a5, s4
+; RV64IM-NEXT:    ld s4, 400(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s4
+; RV64IM-NEXT:    ld s4, 376(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a7, a7, s4
+; RV64IM-NEXT:    ld s4, 360(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, t0, s4
+; RV64IM-NEXT:    xor a0, s0, a0
+; RV64IM-NEXT:    ld s0, 264(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, s0
+; RV64IM-NEXT:    xor a2, a2, s5
+; RV64IM-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s3, s0
+; RV64IM-NEXT:    ld s3, 96(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, t6, s3
+; RV64IM-NEXT:    ld s3, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s1, s1, s3
+; RV64IM-NEXT:    ld s3, 64(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t5, t5, s3
+; RV64IM-NEXT:    xor t4, t4, s9
+; RV64IM-NEXT:    xor s2, s2, s8
+; RV64IM-NEXT:    xor t1, t1, t2
+; RV64IM-NEXT:    ld t2, 584(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t3, t2
+; RV64IM-NEXT:    ld t3, 544(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a3, a3, t3
-; RV64IM-NEXT:    ld t3, 592(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 520(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t3
+; RV64IM-NEXT:    ld t3, 472(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a5, a5, t3
-; RV64IM-NEXT:    ld t3, 560(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 440(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a6, a6, t3
-; RV64IM-NEXT:    ld t3, 536(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 408(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a7, t3
-; RV64IM-NEXT:    ld t3, 496(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 392(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t0, t0, t3
-; RV64IM-NEXT:    ld t3, 456(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, t3
 ; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a1, a2, a1
-; RV64IM-NEXT:    ld a2, 240(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, t6, a2
-; RV64IM-NEXT:    ld t3, 216(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, s0, t3
-; RV64IM-NEXT:    ld t6, 192(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, s0, a2
+; RV64IM-NEXT:    ld t3, 144(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t6, t3
+; RV64IM-NEXT:    ld t6, 128(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t6, s1, t6
-; RV64IM-NEXT:    ld s0, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 104(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t5, t5, s0
-; RV64IM-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 88(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s0
+; RV64IM-NEXT:    ld s0, 80(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor s0, s2, s0
-; RV64IM-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, s1
-; RV64IM-NEXT:    ld s1, 552(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 680(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t1, t1, s1
+; RV64IM-NEXT:    ld s1, 616(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t2, s1
+; RV64IM-NEXT:    ld s1, 576(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s1
+; RV64IM-NEXT:    ld s1, 536(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s1
+; RV64IM-NEXT:    ld s1, 496(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s1
+; RV64IM-NEXT:    ld s1, 456(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a7, s1
-; RV64IM-NEXT:    ld s1, 520(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 416(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t0, t0, s1
-; RV64IM-NEXT:    ld s1, 488(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, s1
-; RV64IM-NEXT:    ld s1, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 720(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a0, a0, s1
+; RV64IM-NEXT:    ld s1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, s1
+; RV64IM-NEXT:    ld s1, 216(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a2, a2, s1
-; RV64IM-NEXT:    ld s1, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s1
 ; RV64IM-NEXT:    ld s1, 208(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s1
+; RV64IM-NEXT:    ld s1, 160(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t5, t5, s1
+; RV64IM-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s1
+; RV64IM-NEXT:    ld s1, 120(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s0, s1
+; RV64IM-NEXT:    ld s1, 608(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s1
+; RV64IM-NEXT:    ld s1, 552(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s1
+; RV64IM-NEXT:    ld s1, 512(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s1
+; RV64IM-NEXT:    ld s1, 488(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a7, a7, s1
+; RV64IM-NEXT:    ld s1, 448(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, t0, s1
+; RV64IM-NEXT:    ld s1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s1
+; RV64IM-NEXT:    ld s1, 256(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s1
+; RV64IM-NEXT:    ld s1, 200(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t5, t5, s1
 ; RV64IM-NEXT:    ld s1, 176(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s1
+; RV64IM-NEXT:    ld s1, 152(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor s0, s0, s1
+; RV64IM-NEXT:    xor t2, t1, t2
 ; RV64IM-NEXT:    xor a3, t2, a3
-; RV64IM-NEXT:    xor a3, a3, a4
-; RV64IM-NEXT:    ld a4, 624(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a5, a4
+; RV64IM-NEXT:    ld t2, 568(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t2
 ; RV64IM-NEXT:    xor a1, a0, a1
-; RV64IM-NEXT:    xor a1, a1, t4
-; RV64IM-NEXT:    ld a5, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, a5
+; RV64IM-NEXT:    xor a1, a1, a2
+; RV64IM-NEXT:    ld a2, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, t3, a2
+; RV64IM-NEXT:    ld t2, 464(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, t2
+; RV64IM-NEXT:    ld t2, 600(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t2
+; RV64IM-NEXT:    ld t2, 744(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, t2
+; RV64IM-NEXT:    ld t2, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, t2
 ; RV64IM-NEXT:    xor a4, a3, a4
-; RV64IM-NEXT:    xor a4, a4, a6
+; RV64IM-NEXT:    xor a4, a4, a5
 ; RV64IM-NEXT:    xor a2, a1, a2
-; RV64IM-NEXT:    xor a2, a2, t3
-; RV64IM-NEXT:    slli t2, t2, 56
+; RV64IM-NEXT:    xor a2, a2, t6
+; RV64IM-NEXT:    slli t1, t1, 56
 ; RV64IM-NEXT:    slli a0, a0, 56
-; RV64IM-NEXT:    ld t4, 784(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a3, a3, t4
-; RV64IM-NEXT:    and a1, a1, t4
+; RV64IM-NEXT:    ld t6, 760(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a3, a3, t6
+; RV64IM-NEXT:    and a1, a1, t6
 ; RV64IM-NEXT:    slli a3, a3, 40
 ; RV64IM-NEXT:    slli a1, a1, 40
-; RV64IM-NEXT:    or a3, t2, a3
+; RV64IM-NEXT:    or a3, t1, a3
 ; RV64IM-NEXT:    srli a5, a4, 8
 ; RV64IM-NEXT:    or a0, a0, a1
 ; RV64IM-NEXT:    srli a1, a2, 8
-; RV64IM-NEXT:    ld a6, 808(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a5, a5, a6
-; RV64IM-NEXT:    and a1, a1, a6
-; RV64IM-NEXT:    xor a6, a4, a7
+; RV64IM-NEXT:    ld t1, 784(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a5, a5, t1
+; RV64IM-NEXT:    and a1, a1, t1
+; RV64IM-NEXT:    xor a6, a4, a6
 ; RV64IM-NEXT:    lui t3, 4080
 ; RV64IM-NEXT:    and a4, a4, t3
-; RV64IM-NEXT:    xor a7, a2, t6
+; RV64IM-NEXT:    xor t1, a2, t5
 ; RV64IM-NEXT:    and a2, a2, t3
-; RV64IM-NEXT:    xor t0, a6, t0
+; RV64IM-NEXT:    xor a7, a6, a7
 ; RV64IM-NEXT:    srli a6, a6, 24
-; RV64IM-NEXT:    xor t2, a7, t5
-; RV64IM-NEXT:    srli a7, a7, 24
+; RV64IM-NEXT:    xor t2, t1, t4
+; RV64IM-NEXT:    srli t1, t1, 24
 ; RV64IM-NEXT:    and a6, a6, t3
-; RV64IM-NEXT:    and a7, a7, t3
+; RV64IM-NEXT:    and t1, t1, t3
 ; RV64IM-NEXT:    or a5, a5, a6
-; RV64IM-NEXT:    srli a6, t0, 40
-; RV64IM-NEXT:    or a1, a1, a7
-; RV64IM-NEXT:    srli a7, t2, 40
-; RV64IM-NEXT:    and a6, a6, t4
-; RV64IM-NEXT:    and a7, a7, t4
+; RV64IM-NEXT:    srli a6, a7, 40
+; RV64IM-NEXT:    or a1, a1, t1
+; RV64IM-NEXT:    srli t1, t2, 40
+; RV64IM-NEXT:    and a6, a6, t6
+; RV64IM-NEXT:    and t1, t1, t6
 ; RV64IM-NEXT:    slli a4, a4, 24
-; RV64IM-NEXT:    xor t1, t0, t1
-; RV64IM-NEXT:    srliw t0, t0, 24
-; RV64IM-NEXT:    slli t0, t0, 32
-; RV64IM-NEXT:    or a4, a4, t0
-; RV64IM-NEXT:    srli t0, t1, 56
-; RV64IM-NEXT:    or a6, a6, t0
+; RV64IM-NEXT:    xor t0, a7, t0
+; RV64IM-NEXT:    srliw a7, a7, 24
+; RV64IM-NEXT:    slli a7, a7, 32
+; RV64IM-NEXT:    or a4, a4, a7
+; RV64IM-NEXT:    srli a7, t0, 56
+; RV64IM-NEXT:    or a6, a6, a7
 ; RV64IM-NEXT:    slli a2, a2, 24
-; RV64IM-NEXT:    xor t0, t2, s0
-; RV64IM-NEXT:    srliw t1, t2, 24
-; RV64IM-NEXT:    slli t1, t1, 32
-; RV64IM-NEXT:    or a2, a2, t1
-; RV64IM-NEXT:    srli t0, t0, 56
-; RV64IM-NEXT:    or a7, a7, t0
+; RV64IM-NEXT:    xor a7, t2, s0
+; RV64IM-NEXT:    srliw t0, t2, 24
+; RV64IM-NEXT:    slli t0, t0, 32
+; RV64IM-NEXT:    or a2, a2, t0
+; RV64IM-NEXT:    srli a7, a7, 56
+; RV64IM-NEXT:    or a7, t1, a7
 ; RV64IM-NEXT:    or a3, a3, a4
 ; RV64IM-NEXT:    or a4, a5, a6
 ; RV64IM-NEXT:    or a0, a0, a2
@@ -9346,7 +9341,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a3, a3, a4
 ; RV64IM-NEXT:    or a0, a0, a1
 ; RV64IM-NEXT:    srli a1, a3, 4
-; RV64IM-NEXT:    ld a4, 800(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 776(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a2, a3, a4
 ; RV64IM-NEXT:    srli a3, a0, 4
 ; RV64IM-NEXT:    and a0, a0, a4
@@ -9357,7 +9352,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a1, a1, a2
 ; RV64IM-NEXT:    or a0, a3, a0
 ; RV64IM-NEXT:    srli a2, a1, 2
-; RV64IM-NEXT:    ld a4, 792(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 768(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a1, a1, a4
 ; RV64IM-NEXT:    srli a3, a0, 2
 ; RV64IM-NEXT:    and a0, a0, a4
@@ -9370,7 +9365,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    slli a0, a0, 2
 ; RV64IM-NEXT:    or a0, a3, a0
 ; RV64IM-NEXT:    srli a3, a1, 1
-; RV64IM-NEXT:    ld a4, 776(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 752(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a1, a1, a4
 ; RV64IM-NEXT:    and a4, a0, a4
 ; RV64IM-NEXT:    srli a0, a0, 1
@@ -9382,26 +9377,26 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a0, a0, a4
 ; RV64IM-NEXT:    srli a1, a1, 1
 ; RV64IM-NEXT:    srli a0, a0, 1
-; RV64IM-NEXT:    ld a2, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 792(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    sd a1, 0(a2)
 ; RV64IM-NEXT:    sd a0, 8(a2)
-; RV64IM-NEXT:    ld a2, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 800(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    sd a1, 0(a2)
 ; RV64IM-NEXT:    sd a0, 8(a2)
-; RV64IM-NEXT:    ld ra, 952(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s0, 944(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s1, 936(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s2, 928(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s3, 920(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s4, 912(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s5, 904(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s6, 896(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s7, 888(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s8, 880(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s9, 872(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s10, 864(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s11, 856(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    addi sp, sp, 960
+; RV64IM-NEXT:    ld ra, 936(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 928(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 920(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s2, 912(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s4, 896(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s5, 888(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s6, 880(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s7, 872(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s8, 864(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s9, 856(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s10, 848(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s11, 840(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    addi sp, sp, 944
 ; RV64IM-NEXT:    ret
 ;
 ; RV32IMZBS-LABEL: commutative_clmulh_v2i64:
@@ -9420,11 +9415,11 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    sw s9, 756(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s10, 752(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s11, 748(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    sw a3, 736(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    sw a2, 732(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 732(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 728(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw s7, 0(a0)
 ; RV32IMZBS-NEXT:    lw a4, 4(a0)
-; RV32IMZBS-NEXT:    lw a7, 8(a0)
+; RV32IMZBS-NEXT:    lw a3, 8(a0)
 ; RV32IMZBS-NEXT:    lw t1, 12(a0)
 ; RV32IMZBS-NEXT:    lw s4, 0(a1)
 ; RV32IMZBS-NEXT:    lw t6, 4(a1)
@@ -9433,86 +9428,86 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    lui a0, 16
 ; RV32IMZBS-NEXT:    lui a1, 61681
 ; RV32IMZBS-NEXT:    lui a2, 209715
-; RV32IMZBS-NEXT:    lui a3, 349525
+; RV32IMZBS-NEXT:    lui a5, 349525
 ; RV32IMZBS-NEXT:    addi s10, a0, -256
 ; RV32IMZBS-NEXT:    addi s9, a1, -241
-; RV32IMZBS-NEXT:    addi s8, a2, 819
-; RV32IMZBS-NEXT:    addi s6, a3, 1365
+; RV32IMZBS-NEXT:    addi s6, a2, 819
+; RV32IMZBS-NEXT:    addi s5, a5, 1365
 ; RV32IMZBS-NEXT:    srli s0, t6, 8
-; RV32IMZBS-NEXT:    srli s1, t6, 24
+; RV32IMZBS-NEXT:    srli a5, t6, 24
 ; RV32IMZBS-NEXT:    and t5, t6, s10
 ; RV32IMZBS-NEXT:    slli t6, t6, 24
-; RV32IMZBS-NEXT:    srli a3, a4, 8
-; RV32IMZBS-NEXT:    srli a5, a4, 24
+; RV32IMZBS-NEXT:    srli s2, a4, 8
+; RV32IMZBS-NEXT:    srli a6, a4, 24
 ; RV32IMZBS-NEXT:    and t3, a4, s10
 ; RV32IMZBS-NEXT:    slli a4, a4, 24
 ; RV32IMZBS-NEXT:    srli a2, s4, 8
-; RV32IMZBS-NEXT:    srli s2, s4, 24
+; RV32IMZBS-NEXT:    srli s8, s4, 24
 ; RV32IMZBS-NEXT:    and a0, s4, s10
 ; RV32IMZBS-NEXT:    slli a1, s4, 24
 ; RV32IMZBS-NEXT:    srli s4, s7, 8
 ; RV32IMZBS-NEXT:    srli t4, s7, 24
-; RV32IMZBS-NEXT:    and a6, s7, s10
+; RV32IMZBS-NEXT:    and a7, s7, s10
 ; RV32IMZBS-NEXT:    slli s7, s7, 24
-; RV32IMZBS-NEXT:    srli s3, t2, 8
+; RV32IMZBS-NEXT:    srli s1, t2, 8
 ; RV32IMZBS-NEXT:    and s0, s0, s10
-; RV32IMZBS-NEXT:    or s0, s0, s1
-; RV32IMZBS-NEXT:    srli s5, t2, 24
+; RV32IMZBS-NEXT:    or s0, s0, a5
+; RV32IMZBS-NEXT:    srli s3, t2, 24
 ; RV32IMZBS-NEXT:    slli t5, t5, 8
 ; RV32IMZBS-NEXT:    or t5, t6, t5
 ; RV32IMZBS-NEXT:    and t6, t2, s10
-; RV32IMZBS-NEXT:    slli s1, t2, 24
-; RV32IMZBS-NEXT:    and a3, a3, s10
-; RV32IMZBS-NEXT:    or t2, a3, a5
-; RV32IMZBS-NEXT:    srli a3, t1, 8
+; RV32IMZBS-NEXT:    slli a5, t2, 24
+; RV32IMZBS-NEXT:    and t2, s2, s10
+; RV32IMZBS-NEXT:    or t2, t2, a6
+; RV32IMZBS-NEXT:    srli s2, t1, 8
 ; RV32IMZBS-NEXT:    slli t3, t3, 8
 ; RV32IMZBS-NEXT:    or t3, a4, t3
-; RV32IMZBS-NEXT:    srli a5, t1, 24
+; RV32IMZBS-NEXT:    srli a6, t1, 24
 ; RV32IMZBS-NEXT:    and a2, a2, s10
-; RV32IMZBS-NEXT:    or a2, a2, s2
+; RV32IMZBS-NEXT:    or a2, a2, s8
 ; RV32IMZBS-NEXT:    and a4, t1, s10
 ; RV32IMZBS-NEXT:    slli t1, t1, 24
 ; RV32IMZBS-NEXT:    slli a0, a0, 8
 ; RV32IMZBS-NEXT:    or a0, a1, a0
-; RV32IMZBS-NEXT:    srli s2, t0, 8
+; RV32IMZBS-NEXT:    srli s8, t0, 8
 ; RV32IMZBS-NEXT:    and a1, s4, s10
 ; RV32IMZBS-NEXT:    or a1, a1, t4
 ; RV32IMZBS-NEXT:    srli t4, t0, 24
-; RV32IMZBS-NEXT:    slli a6, a6, 8
-; RV32IMZBS-NEXT:    or s4, s7, a6
+; RV32IMZBS-NEXT:    slli a7, a7, 8
+; RV32IMZBS-NEXT:    or s4, s7, a7
 ; RV32IMZBS-NEXT:    and s7, t0, s10
-; RV32IMZBS-NEXT:    slli a6, t0, 24
-; RV32IMZBS-NEXT:    and t0, s3, s10
-; RV32IMZBS-NEXT:    or t0, t0, s5
-; RV32IMZBS-NEXT:    srli s3, a7, 8
+; RV32IMZBS-NEXT:    slli a7, t0, 24
+; RV32IMZBS-NEXT:    and t0, s1, s10
+; RV32IMZBS-NEXT:    or t0, t0, s3
+; RV32IMZBS-NEXT:    srli s1, a3, 8
 ; RV32IMZBS-NEXT:    slli t6, t6, 8
-; RV32IMZBS-NEXT:    or t6, s1, t6
-; RV32IMZBS-NEXT:    srli s1, a7, 24
-; RV32IMZBS-NEXT:    and a3, a3, s10
-; RV32IMZBS-NEXT:    or a3, a3, a5
-; RV32IMZBS-NEXT:    and a5, a7, s10
-; RV32IMZBS-NEXT:    slli a7, a7, 24
-; RV32IMZBS-NEXT:    slli a4, a4, 8
+; RV32IMZBS-NEXT:    or a5, a5, t6
+; RV32IMZBS-NEXT:    srli t6, a3, 24
 ; RV32IMZBS-NEXT:    and s2, s2, s10
+; RV32IMZBS-NEXT:    or a6, s2, a6
+; RV32IMZBS-NEXT:    and s2, a3, s10
+; RV32IMZBS-NEXT:    slli a3, a3, 24
+; RV32IMZBS-NEXT:    slli a4, a4, 8
+; RV32IMZBS-NEXT:    and s3, s8, s10
 ; RV32IMZBS-NEXT:    slli s7, s7, 8
-; RV32IMZBS-NEXT:    and s3, s3, s10
-; RV32IMZBS-NEXT:    slli a5, a5, 8
+; RV32IMZBS-NEXT:    and s1, s1, s10
+; RV32IMZBS-NEXT:    slli s2, s2, 8
 ; RV32IMZBS-NEXT:    or a4, t1, a4
-; RV32IMZBS-NEXT:    or t1, s2, t4
-; RV32IMZBS-NEXT:    or a6, a6, s7
-; RV32IMZBS-NEXT:    or t4, s3, s1
-; RV32IMZBS-NEXT:    or a5, a7, a5
-; RV32IMZBS-NEXT:    or a7, t5, s0
+; RV32IMZBS-NEXT:    or t1, s3, t4
+; RV32IMZBS-NEXT:    or a7, a7, s7
+; RV32IMZBS-NEXT:    or t4, s1, t6
+; RV32IMZBS-NEXT:    or a3, a3, s2
+; RV32IMZBS-NEXT:    or t5, t5, s0
 ; RV32IMZBS-NEXT:    or t2, t3, t2
 ; RV32IMZBS-NEXT:    or a0, a0, a2
 ; RV32IMZBS-NEXT:    or a1, s4, a1
-; RV32IMZBS-NEXT:    or a2, t6, t0
-; RV32IMZBS-NEXT:    or a3, a4, a3
-; RV32IMZBS-NEXT:    or a4, a6, t1
-; RV32IMZBS-NEXT:    or a5, a5, t4
-; RV32IMZBS-NEXT:    srli a6, a7, 4
-; RV32IMZBS-NEXT:    sw s9, 744(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a7, a7, s9
+; RV32IMZBS-NEXT:    or a2, a5, t0
+; RV32IMZBS-NEXT:    or a4, a4, a6
+; RV32IMZBS-NEXT:    or a5, a7, t1
+; RV32IMZBS-NEXT:    or a3, a3, t4
+; RV32IMZBS-NEXT:    srli a6, t5, 4
+; RV32IMZBS-NEXT:    sw s9, 740(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a7, t5, s9
 ; RV32IMZBS-NEXT:    srli t0, t2, 4
 ; RV32IMZBS-NEXT:    and t1, t2, s9
 ; RV32IMZBS-NEXT:    srli t2, a0, 4
@@ -9521,12 +9516,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and a1, a1, s9
 ; RV32IMZBS-NEXT:    srli t4, a2, 4
 ; RV32IMZBS-NEXT:    and a2, a2, s9
-; RV32IMZBS-NEXT:    srli t5, a3, 4
-; RV32IMZBS-NEXT:    and a3, a3, s9
-; RV32IMZBS-NEXT:    srli t6, a4, 4
+; RV32IMZBS-NEXT:    srli t5, a4, 4
 ; RV32IMZBS-NEXT:    and a4, a4, s9
-; RV32IMZBS-NEXT:    srli s0, a5, 4
+; RV32IMZBS-NEXT:    srli t6, a5, 4
 ; RV32IMZBS-NEXT:    and a5, a5, s9
+; RV32IMZBS-NEXT:    srli s0, a3, 4
+; RV32IMZBS-NEXT:    and a3, a3, s9
 ; RV32IMZBS-NEXT:    and a6, a6, s9
 ; RV32IMZBS-NEXT:    slli a7, a7, 4
 ; RV32IMZBS-NEXT:    and t0, t0, s9
@@ -9538,2091 +9533,2081 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and t4, t4, s9
 ; RV32IMZBS-NEXT:    slli a2, a2, 4
 ; RV32IMZBS-NEXT:    and t5, t5, s9
-; RV32IMZBS-NEXT:    slli a3, a3, 4
-; RV32IMZBS-NEXT:    and t6, t6, s9
 ; RV32IMZBS-NEXT:    slli a4, a4, 4
-; RV32IMZBS-NEXT:    and s0, s0, s9
+; RV32IMZBS-NEXT:    and t6, t6, s9
 ; RV32IMZBS-NEXT:    slli a5, a5, 4
+; RV32IMZBS-NEXT:    and s0, s0, s9
+; RV32IMZBS-NEXT:    slli a3, a3, 4
 ; RV32IMZBS-NEXT:    or a6, a6, a7
 ; RV32IMZBS-NEXT:    or a7, t0, t1
 ; RV32IMZBS-NEXT:    or a0, t2, a0
 ; RV32IMZBS-NEXT:    or a1, t3, a1
 ; RV32IMZBS-NEXT:    or a2, t4, a2
-; RV32IMZBS-NEXT:    or a3, t5, a3
-; RV32IMZBS-NEXT:    or a4, t6, a4
-; RV32IMZBS-NEXT:    or a5, s0, a5
+; RV32IMZBS-NEXT:    or a4, t5, a4
+; RV32IMZBS-NEXT:    or a5, t6, a5
+; RV32IMZBS-NEXT:    or a3, s0, a3
 ; RV32IMZBS-NEXT:    srli t0, a6, 2
-; RV32IMZBS-NEXT:    sw s8, 728(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a6, a6, s8
+; RV32IMZBS-NEXT:    sw s6, 724(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, s6
 ; RV32IMZBS-NEXT:    srli t1, a7, 2
-; RV32IMZBS-NEXT:    and a7, a7, s8
+; RV32IMZBS-NEXT:    and a7, a7, s6
 ; RV32IMZBS-NEXT:    srli t2, a0, 2
-; RV32IMZBS-NEXT:    and a0, a0, s8
+; RV32IMZBS-NEXT:    and a0, a0, s6
 ; RV32IMZBS-NEXT:    srli t3, a1, 2
-; RV32IMZBS-NEXT:    and a1, a1, s8
+; RV32IMZBS-NEXT:    and a1, a1, s6
 ; RV32IMZBS-NEXT:    srli t4, a2, 2
-; RV32IMZBS-NEXT:    and a2, a2, s8
-; RV32IMZBS-NEXT:    srli t5, a3, 2
-; RV32IMZBS-NEXT:    and a3, a3, s8
-; RV32IMZBS-NEXT:    srli t6, a4, 2
-; RV32IMZBS-NEXT:    and a4, a4, s8
-; RV32IMZBS-NEXT:    srli s0, a5, 2
-; RV32IMZBS-NEXT:    and a5, a5, s8
-; RV32IMZBS-NEXT:    and t0, t0, s8
+; RV32IMZBS-NEXT:    and a2, a2, s6
+; RV32IMZBS-NEXT:    srli t5, a4, 2
+; RV32IMZBS-NEXT:    and a4, a4, s6
+; RV32IMZBS-NEXT:    srli t6, a5, 2
+; RV32IMZBS-NEXT:    and a5, a5, s6
+; RV32IMZBS-NEXT:    srli s0, a3, 2
+; RV32IMZBS-NEXT:    and a3, a3, s6
+; RV32IMZBS-NEXT:    and t0, t0, s6
 ; RV32IMZBS-NEXT:    slli a6, a6, 2
-; RV32IMZBS-NEXT:    and t1, t1, s8
+; RV32IMZBS-NEXT:    and t1, t1, s6
 ; RV32IMZBS-NEXT:    slli a7, a7, 2
-; RV32IMZBS-NEXT:    and t2, t2, s8
+; RV32IMZBS-NEXT:    and t2, t2, s6
 ; RV32IMZBS-NEXT:    slli a0, a0, 2
-; RV32IMZBS-NEXT:    and t3, t3, s8
+; RV32IMZBS-NEXT:    and t3, t3, s6
 ; RV32IMZBS-NEXT:    slli a1, a1, 2
-; RV32IMZBS-NEXT:    and t4, t4, s8
+; RV32IMZBS-NEXT:    and t4, t4, s6
 ; RV32IMZBS-NEXT:    slli a2, a2, 2
-; RV32IMZBS-NEXT:    and t5, t5, s8
-; RV32IMZBS-NEXT:    slli a3, a3, 2
-; RV32IMZBS-NEXT:    and t6, t6, s8
+; RV32IMZBS-NEXT:    and t5, t5, s6
 ; RV32IMZBS-NEXT:    slli a4, a4, 2
-; RV32IMZBS-NEXT:    and s0, s0, s8
+; RV32IMZBS-NEXT:    and t6, t6, s6
 ; RV32IMZBS-NEXT:    slli a5, a5, 2
+; RV32IMZBS-NEXT:    and s0, s0, s6
+; RV32IMZBS-NEXT:    slli a3, a3, 2
 ; RV32IMZBS-NEXT:    or a6, t0, a6
 ; RV32IMZBS-NEXT:    or a7, t1, a7
 ; RV32IMZBS-NEXT:    or a0, t2, a0
 ; RV32IMZBS-NEXT:    or a1, t3, a1
 ; RV32IMZBS-NEXT:    or a2, t4, a2
-; RV32IMZBS-NEXT:    or a3, t5, a3
-; RV32IMZBS-NEXT:    or a4, t6, a4
-; RV32IMZBS-NEXT:    or a5, s0, a5
+; RV32IMZBS-NEXT:    or a4, t5, a4
+; RV32IMZBS-NEXT:    or a5, t6, a5
+; RV32IMZBS-NEXT:    or a3, s0, a3
 ; RV32IMZBS-NEXT:    srli t0, a6, 1
-; RV32IMZBS-NEXT:    sw s6, 724(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a6, a6, s6
+; RV32IMZBS-NEXT:    sw s5, 744(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, s5
 ; RV32IMZBS-NEXT:    srli t1, a7, 1
-; RV32IMZBS-NEXT:    and a7, a7, s6
+; RV32IMZBS-NEXT:    and a7, a7, s5
 ; RV32IMZBS-NEXT:    srli t2, a0, 1
-; RV32IMZBS-NEXT:    and a0, a0, s6
+; RV32IMZBS-NEXT:    and a0, a0, s5
 ; RV32IMZBS-NEXT:    srli t3, a1, 1
-; RV32IMZBS-NEXT:    and a1, a1, s6
+; RV32IMZBS-NEXT:    and a1, a1, s5
 ; RV32IMZBS-NEXT:    srli t4, a2, 1
-; RV32IMZBS-NEXT:    and a2, a2, s6
-; RV32IMZBS-NEXT:    srli t5, a3, 1
-; RV32IMZBS-NEXT:    and a3, a3, s6
-; RV32IMZBS-NEXT:    srli t6, a4, 1
-; RV32IMZBS-NEXT:    and a4, a4, s6
-; RV32IMZBS-NEXT:    srli s0, a5, 1
-; RV32IMZBS-NEXT:    and a5, a5, s6
-; RV32IMZBS-NEXT:    and t0, t0, s6
+; RV32IMZBS-NEXT:    and a2, a2, s5
+; RV32IMZBS-NEXT:    srli t5, a4, 1
+; RV32IMZBS-NEXT:    and a4, a4, s5
+; RV32IMZBS-NEXT:    srli t6, a5, 1
+; RV32IMZBS-NEXT:    and a5, a5, s5
+; RV32IMZBS-NEXT:    srli s0, a3, 1
+; RV32IMZBS-NEXT:    and a3, a3, s5
+; RV32IMZBS-NEXT:    and t0, t0, s5
 ; RV32IMZBS-NEXT:    slli a6, a6, 1
-; RV32IMZBS-NEXT:    and t1, t1, s6
+; RV32IMZBS-NEXT:    and t1, t1, s5
 ; RV32IMZBS-NEXT:    slli a7, a7, 1
-; RV32IMZBS-NEXT:    and t2, t2, s6
+; RV32IMZBS-NEXT:    and t2, t2, s5
 ; RV32IMZBS-NEXT:    slli s1, a0, 1
-; RV32IMZBS-NEXT:    and t3, t3, s6
+; RV32IMZBS-NEXT:    and t3, t3, s5
 ; RV32IMZBS-NEXT:    slli s2, a1, 1
-; RV32IMZBS-NEXT:    and t4, t4, s6
-; RV32IMZBS-NEXT:    slli s3, a2, 1
-; RV32IMZBS-NEXT:    and s4, t5, s6
-; RV32IMZBS-NEXT:    slli s5, a3, 1
-; RV32IMZBS-NEXT:    and t6, t6, s6
-; RV32IMZBS-NEXT:    slli a4, a4, 1
-; RV32IMZBS-NEXT:    and s0, s0, s6
-; RV32IMZBS-NEXT:    slli t5, a5, 1
+; RV32IMZBS-NEXT:    and t4, t4, s5
+; RV32IMZBS-NEXT:    slli a2, a2, 1
+; RV32IMZBS-NEXT:    and s3, t5, s5
+; RV32IMZBS-NEXT:    slli s4, a4, 1
+; RV32IMZBS-NEXT:    and t6, t6, s5
+; RV32IMZBS-NEXT:    slli a5, a5, 1
+; RV32IMZBS-NEXT:    and s0, s0, s5
+; RV32IMZBS-NEXT:    slli t5, a3, 1
 ; RV32IMZBS-NEXT:    or s7, t0, a6
 ; RV32IMZBS-NEXT:    or a0, t1, a7
-; RV32IMZBS-NEXT:    or ra, t2, s1
-; RV32IMZBS-NEXT:    srli a2, a7, 31
+; RV32IMZBS-NEXT:    or s8, t2, s1
+; RV32IMZBS-NEXT:    srli a3, a7, 31
 ; RV32IMZBS-NEXT:    or a1, t3, s2
-; RV32IMZBS-NEXT:    srli a3, s2, 31
-; RV32IMZBS-NEXT:    or a7, t4, s3
-; RV32IMZBS-NEXT:    or t1, s4, s5
-; RV32IMZBS-NEXT:    or t0, t6, a4
-; RV32IMZBS-NEXT:    srli t3, s5, 31
-; RV32IMZBS-NEXT:    or t2, s0, t5
-; RV32IMZBS-NEXT:    srli t5, t5, 31
-; RV32IMZBS-NEXT:    srli a4, s7, 8
-; RV32IMZBS-NEXT:    srli a5, s7, 24
-; RV32IMZBS-NEXT:    srli a6, a0, 8
-; RV32IMZBS-NEXT:    srli t4, a0, 24
-; RV32IMZBS-NEXT:    slli t6, a0, 24
-; RV32IMZBS-NEXT:    and s0, a0, s10
-; RV32IMZBS-NEXT:    slli s1, ra, 31
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    slli s2, s7, 31
+; RV32IMZBS-NEXT:    srli a4, s2, 31
+; RV32IMZBS-NEXT:    or t0, t4, a2
+; RV32IMZBS-NEXT:    or t2, s3, s4
+; RV32IMZBS-NEXT:    or t1, t6, a5
+; RV32IMZBS-NEXT:    srli a2, s4, 31
+; RV32IMZBS-NEXT:    or t3, s0, t5
+; RV32IMZBS-NEXT:    srli t4, t5, 31
+; RV32IMZBS-NEXT:    srli a5, s7, 8
+; RV32IMZBS-NEXT:    srli a6, s7, 24
+; RV32IMZBS-NEXT:    srli a7, a0, 8
+; RV32IMZBS-NEXT:    srli t5, a0, 24
+; RV32IMZBS-NEXT:    slli s0, a0, 24
+; RV32IMZBS-NEXT:    and s1, a0, s10
+; RV32IMZBS-NEXT:    slli s2, s8, 31
 ; RV32IMZBS-NEXT:    seqz a3, a3
-; RV32IMZBS-NEXT:    srli s3, a7, 8
-; RV32IMZBS-NEXT:    and a4, a4, s10
-; RV32IMZBS-NEXT:    or a4, a4, a5
-; RV32IMZBS-NEXT:    srli s4, a7, 24
-; RV32IMZBS-NEXT:    and a5, a6, s10
-; RV32IMZBS-NEXT:    or a5, a5, t4
-; RV32IMZBS-NEXT:    srli t4, t1, 8
-; RV32IMZBS-NEXT:    slli s0, s0, 8
-; RV32IMZBS-NEXT:    or a6, t6, s0
-; RV32IMZBS-NEXT:    srli t6, t1, 24
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and s1, a2, s1
-; RV32IMZBS-NEXT:    sw s1, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a3, a3, s2
-; RV32IMZBS-NEXT:    sw a3, 712(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, s2
-; RV32IMZBS-NEXT:    sw a2, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s0, t1, 24
-; RV32IMZBS-NEXT:    and a2, s3, s10
-; RV32IMZBS-NEXT:    or a3, a2, s4
-; RV32IMZBS-NEXT:    and s1, t1, s10
-; RV32IMZBS-NEXT:    and a2, t4, s10
-; RV32IMZBS-NEXT:    or a2, a2, t6
-; RV32IMZBS-NEXT:    slli t6, t0, 31
-; RV32IMZBS-NEXT:    seqz s2, t3
+; RV32IMZBS-NEXT:    slli s3, s7, 31
+; RV32IMZBS-NEXT:    seqz a4, a4
+; RV32IMZBS-NEXT:    srli s4, t0, 8
+; RV32IMZBS-NEXT:    and a5, a5, s10
+; RV32IMZBS-NEXT:    or a5, a5, a6
+; RV32IMZBS-NEXT:    srli s5, t0, 24
+; RV32IMZBS-NEXT:    and a6, a7, s10
+; RV32IMZBS-NEXT:    or t6, a6, t5
+; RV32IMZBS-NEXT:    srli a7, t2, 8
 ; RV32IMZBS-NEXT:    slli s1, s1, 8
-; RV32IMZBS-NEXT:    or t3, s0, s1
-; RV32IMZBS-NEXT:    slli t4, a7, 31
-; RV32IMZBS-NEXT:    seqz s0, t5
-; RV32IMZBS-NEXT:    addi t5, s2, -1
+; RV32IMZBS-NEXT:    or a6, s0, s1
+; RV32IMZBS-NEXT:    srli t5, t2, 24
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and s0, a3, s2
+; RV32IMZBS-NEXT:    sw s0, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a4, a4, s3
+; RV32IMZBS-NEXT:    sw a4, 708(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a3, s3
+; RV32IMZBS-NEXT:    sw a3, 720(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, t2, 24
+; RV32IMZBS-NEXT:    and a3, s4, s10
+; RV32IMZBS-NEXT:    or a4, a3, s5
+; RV32IMZBS-NEXT:    and s1, t2, s10
+; RV32IMZBS-NEXT:    and a3, a7, s10
+; RV32IMZBS-NEXT:    or a3, a3, t5
+; RV32IMZBS-NEXT:    slli t5, t1, 31
+; RV32IMZBS-NEXT:    seqz s2, a2
+; RV32IMZBS-NEXT:    slli a2, s1, 8
+; RV32IMZBS-NEXT:    or a2, s0, a2
+; RV32IMZBS-NEXT:    slli a7, t0, 31
+; RV32IMZBS-NEXT:    seqz s0, t4
+; RV32IMZBS-NEXT:    addi t4, s2, -1
 ; RV32IMZBS-NEXT:    addi s0, s0, -1
-; RV32IMZBS-NEXT:    and t6, t5, t6
-; RV32IMZBS-NEXT:    sw t6, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t6, s0, t4
-; RV32IMZBS-NEXT:    sw t6, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t4, t5, t4
-; RV32IMZBS-NEXT:    sw t4, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t4, s7, s10
-; RV32IMZBS-NEXT:    sw s10, 740(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t4, t4, 8
+; RV32IMZBS-NEXT:    and t5, t4, t5
+; RV32IMZBS-NEXT:    sw t5, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t5, s0, a7
+; RV32IMZBS-NEXT:    sw t5, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a7, t4, a7
+; RV32IMZBS-NEXT:    sw a7, 716(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a7, s7, s10
+; RV32IMZBS-NEXT:    sw s10, 736(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, a7, 8
 ; RV32IMZBS-NEXT:    slli t5, s7, 24
-; RV32IMZBS-NEXT:    or t4, t5, t4
-; RV32IMZBS-NEXT:    or a4, t4, a4
-; RV32IMZBS-NEXT:    sw a4, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a4, a6, a5
-; RV32IMZBS-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 2
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 2
+; RV32IMZBS-NEXT:    or a7, t5, a7
+; RV32IMZBS-NEXT:    or a5, a7, a5
+; RV32IMZBS-NEXT:    sw a5, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a5, a6, t6
+; RV32IMZBS-NEXT:    sw a5, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 2
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 2
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 1
-; RV32IMZBS-NEXT:    and s5, a4, a6
-; RV32IMZBS-NEXT:    slli a6, s7, 1
-; RV32IMZBS-NEXT:    and s3, a5, a6
-; RV32IMZBS-NEXT:    and s2, a4, a6
-; RV32IMZBS-NEXT:    andi a4, a0, 4
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 4
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 1
+; RV32IMZBS-NEXT:    and s5, a5, a7
+; RV32IMZBS-NEXT:    slli a7, s7, 1
+; RV32IMZBS-NEXT:    and s3, a6, a7
+; RV32IMZBS-NEXT:    and s2, a5, a7
+; RV32IMZBS-NEXT:    andi a5, a0, 4
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 4
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 2
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 2
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and s4, a4, a6
-; RV32IMZBS-NEXT:    andi a4, a0, 8
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 8
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 2
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 2
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and s4, a5, a7
+; RV32IMZBS-NEXT:    andi a5, a0, 8
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 8
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 3
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 3
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 16
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 16
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 3
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 3
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and s6, a5, a7
+; RV32IMZBS-NEXT:    andi a5, a0, 16
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 16
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 4
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 4
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 32
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 32
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 4
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 4
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 32
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 32
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 5
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 5
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 64
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 64
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 5
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 5
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 64
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 64
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 6
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 6
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 128
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 128
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 6
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 6
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 128
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 128
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 7
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 7
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 256
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 256
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 7
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 7
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 256
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 256
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 8
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 516(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 8
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 512
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 512
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 8
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 8
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 512
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 9
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 9
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a0, 1024
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    andi a5, a1, 1024
+; RV32IMZBS-NEXT:    andi a6, a1, 512
+; RV32IMZBS-NEXT:    seqz a6, a6
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 9
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 9
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a5, a0, 1024
 ; RV32IMZBS-NEXT:    seqz a5, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    andi a6, a1, 1024
+; RV32IMZBS-NEXT:    seqz a6, a6
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 10
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 10
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 10
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 10
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    not t6, a0
-; RV32IMZBS-NEXT:    bexti a4, t6, 11
-; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    bexti a5, t6, 11
+; RV32IMZBS-NEXT:    addi a5, a5, -1
 ; RV32IMZBS-NEXT:    not s0, a1
-; RV32IMZBS-NEXT:    bexti a5, s0, 11
+; RV32IMZBS-NEXT:    bexti a6, s0, 11
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 11
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 472(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 11
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 492(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 12
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 11
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 464(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 11
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 488(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 12
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 12
+; RV32IMZBS-NEXT:    bexti a6, s0, 12
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 12
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 460(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 12
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 468(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 13
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 12
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 12
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 460(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 468(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 13
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 13
+; RV32IMZBS-NEXT:    bexti a6, s0, 13
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 13
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 13
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 14
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 13
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 508(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 13
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 524(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 544(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 14
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 14
+; RV32IMZBS-NEXT:    bexti a6, s0, 14
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 14
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 14
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 15
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 14
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 14
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 15
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 15
+; RV32IMZBS-NEXT:    bexti a6, s0, 15
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 15
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 15
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 16
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 15
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 15
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 16
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 16
+; RV32IMZBS-NEXT:    bexti a6, s0, 16
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 16
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 16
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 428(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 17
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 16
-; RV32IMZBS-NEXT:    and a6, a4, a6
+; RV32IMZBS-NEXT:    bexti a6, s0, 17
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 17
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 17
+; RV32IMZBS-NEXT:    and a6, a6, a7
 ; RV32IMZBS-NEXT:    sw a6, 416(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 16
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 17
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 17
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 18
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 17
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 408(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 17
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 412(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 420(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 18
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 18
+; RV32IMZBS-NEXT:    bexti a6, s0, 18
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 18
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 444(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 18
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 452(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 19
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 18
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 444(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 18
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 456(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 19
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 19
+; RV32IMZBS-NEXT:    bexti a6, s0, 19
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 19
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 19
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 408(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 20
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 19
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 504(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 19
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 512(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 20
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 20
+; RV32IMZBS-NEXT:    bexti a6, s0, 20
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 20
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 20
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 21
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 20
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 20
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 21
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 21
+; RV32IMZBS-NEXT:    bexti a6, s0, 21
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 21
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 21
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 22
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 21
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 21
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 22
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 22
+; RV32IMZBS-NEXT:    bexti a6, s0, 22
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 22
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 376(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 22
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 380(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 23
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 22
-; RV32IMZBS-NEXT:    and a6, a4, a6
+; RV32IMZBS-NEXT:    bexti a6, s0, 23
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 23
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 368(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 23
+; RV32IMZBS-NEXT:    and a6, a6, a7
 ; RV32IMZBS-NEXT:    sw a6, 372(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 22
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 380(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 384(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 23
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 23
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 23
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 364(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 23
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 368(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 376(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 24
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 24
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 24
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 24
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 396(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a5, a5, t5
-; RV32IMZBS-NEXT:    sw a5, 400(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, t5
-; RV32IMZBS-NEXT:    sw a4, 404(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 25
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 25
+; RV32IMZBS-NEXT:    bexti a6, s0, 24
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 24
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 396(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a6, a6, t5
+; RV32IMZBS-NEXT:    sw a6, 404(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t5, a5, t5
+; RV32IMZBS-NEXT:    bexti a5, t6, 25
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 25
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 432(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 25
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 436(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 440(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 26
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 26
+; RV32IMZBS-NEXT:    bexti a6, s0, 25
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 25
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 436(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 25
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 364(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 26
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 26
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 472(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 26
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 480(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 27
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 27
+; RV32IMZBS-NEXT:    bexti a6, s0, 26
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 26
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 480(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 26
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 488(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 392(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 27
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 27
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 492(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 27
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 500(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 28
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 28
+; RV32IMZBS-NEXT:    bexti a6, s0, 27
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 27
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 500(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 27
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 28
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 28
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 532(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 28
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 528(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a6
-; RV32IMZBS-NEXT:    sw a4, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a4, t6, 29
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    bexti a5, s0, 29
+; RV32IMZBS-NEXT:    bexti a6, s0, 28
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 28
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 28
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 456(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a5, t6, 29
 ; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, ra, 29
-; RV32IMZBS-NEXT:    and a6, a4, a6
-; RV32IMZBS-NEXT:    sw a6, 356(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s7, 29
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    sw a5, 360(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a6, a4, a6
+; RV32IMZBS-NEXT:    bexti a6, s0, 29
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli a7, s8, 29
+; RV32IMZBS-NEXT:    and a7, a5, a7
+; RV32IMZBS-NEXT:    sw a7, 356(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a7, s7, 29
+; RV32IMZBS-NEXT:    and a6, a6, a7
+; RV32IMZBS-NEXT:    and a5, a5, a7
+; RV32IMZBS-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, a0, 1
 ; RV32IMZBS-NEXT:    andi a1, a1, 1
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, ra, 30
-; RV32IMZBS-NEXT:    and a5, a0, ra
-; RV32IMZBS-NEXT:    sw a5, 320(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, s7
-; RV32IMZBS-NEXT:    sw a1, 344(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and ra, a0, s7
+; RV32IMZBS-NEXT:    slli a5, s8, 30
+; RV32IMZBS-NEXT:    and a7, a0, s8
+; RV32IMZBS-NEXT:    sw a7, 332(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and s8, a1, s7
+; RV32IMZBS-NEXT:    and a7, a0, s7
 ; RV32IMZBS-NEXT:    slli s7, s7, 30
 ; RV32IMZBS-NEXT:    bexti a0, t6, 30
 ; RV32IMZBS-NEXT:    bexti a1, s0, 30
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a4, a0, a4
-; RV32IMZBS-NEXT:    sw a4, 312(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a0, a5
+; RV32IMZBS-NEXT:    sw a5, 328(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a1, a1, s7
-; RV32IMZBS-NEXT:    sw a1, 340(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and s7, a0, s7
-; RV32IMZBS-NEXT:    and a0, a7, s10
+; RV32IMZBS-NEXT:    sw a1, 348(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a0, s7
+; RV32IMZBS-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, t0, s10
 ; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    slli s1, a7, 24
-; RV32IMZBS-NEXT:    or a0, s1, a0
-; RV32IMZBS-NEXT:    or a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a0, t3, a2
-; RV32IMZBS-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 2
+; RV32IMZBS-NEXT:    slli t6, t0, 24
+; RV32IMZBS-NEXT:    or a0, t6, a0
+; RV32IMZBS-NEXT:    or a0, a0, a4
+; RV32IMZBS-NEXT:    sw a0, 384(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 388(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 2
+; RV32IMZBS-NEXT:    andi a1, t3, 2
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 1
+; RV32IMZBS-NEXT:    slli a2, t1, 1
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 1
-; RV32IMZBS-NEXT:    and t3, a1, a2
-; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 4
+; RV32IMZBS-NEXT:    sw a2, 324(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 1
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 344(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, a0, a2
+; RV32IMZBS-NEXT:    andi a0, t2, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 4
+; RV32IMZBS-NEXT:    andi a1, t3, 4
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 2
+; RV32IMZBS-NEXT:    slli a2, t1, 2
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 292(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 2
+; RV32IMZBS-NEXT:    sw a2, 296(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 2
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 308(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 312(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 8
+; RV32IMZBS-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 8
+; RV32IMZBS-NEXT:    andi a1, t3, 8
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 3
+; RV32IMZBS-NEXT:    slli a2, t1, 3
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 3
+; RV32IMZBS-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 3
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 284(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 288(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 16
+; RV32IMZBS-NEXT:    andi a0, t2, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 16
+; RV32IMZBS-NEXT:    andi a1, t3, 16
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 4
+; RV32IMZBS-NEXT:    slli a2, t1, 4
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 248(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 4
+; RV32IMZBS-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 4
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 264(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 272(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 32
+; RV32IMZBS-NEXT:    sw a0, 280(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 32
+; RV32IMZBS-NEXT:    andi a1, t3, 32
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 5
+; RV32IMZBS-NEXT:    slli a2, t1, 5
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 224(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 5
+; RV32IMZBS-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 5
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 236(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 244(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 256(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 64
+; RV32IMZBS-NEXT:    sw a0, 260(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 64
+; RV32IMZBS-NEXT:    andi a1, t3, 64
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 6
+; RV32IMZBS-NEXT:    slli a2, t1, 6
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 296(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 6
+; RV32IMZBS-NEXT:    sw a2, 292(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 6
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 304(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 128
+; RV32IMZBS-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 128
+; RV32IMZBS-NEXT:    andi a1, t3, 128
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 7
+; RV32IMZBS-NEXT:    slli a2, t1, 7
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 184(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 7
+; RV32IMZBS-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 7
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 200(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 208(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 256
+; RV32IMZBS-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 256
+; RV32IMZBS-NEXT:    andi a1, t3, 256
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 8
+; RV32IMZBS-NEXT:    slli a2, t1, 8
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 8
+; RV32IMZBS-NEXT:    sw a2, 180(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 8
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 180(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 188(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 188(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 512
+; RV32IMZBS-NEXT:    sw a0, 200(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 512
+; RV32IMZBS-NEXT:    andi a1, t3, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 9
+; RV32IMZBS-NEXT:    slli a2, t1, 9
 ; RV32IMZBS-NEXT:    and a2, a0, a2
 ; RV32IMZBS-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 9
+; RV32IMZBS-NEXT:    slli a2, t0, 9
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 232(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 236(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 252(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t1, 1024
+; RV32IMZBS-NEXT:    sw a0, 184(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t2, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t2, 1024
+; RV32IMZBS-NEXT:    andi a1, t3, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 10
+; RV32IMZBS-NEXT:    slli a2, t1, 10
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 332(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a7, 10
+; RV32IMZBS-NEXT:    sw a2, 320(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t0, 10
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 336(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 340(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a1, t1
+; RV32IMZBS-NEXT:    sw a0, 224(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a1, t2
 ; RV32IMZBS-NEXT:    bexti a0, a1, 11
 ; RV32IMZBS-NEXT:    addi a2, a0, -1
-; RV32IMZBS-NEXT:    not a0, t2
+; RV32IMZBS-NEXT:    not a0, t3
 ; RV32IMZBS-NEXT:    bexti a3, a0, 11
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 11
+; RV32IMZBS-NEXT:    slli a4, t1, 11
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 112(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 11
+; RV32IMZBS-NEXT:    sw a4, 124(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 11
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 128(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 144(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 308(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 12
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 12
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 12
+; RV32IMZBS-NEXT:    slli a4, t1, 12
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 88(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 12
+; RV32IMZBS-NEXT:    sw a4, 108(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 12
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 104(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 120(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 352(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 13
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 13
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 13
+; RV32IMZBS-NEXT:    slli a4, t1, 13
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 140(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 13
+; RV32IMZBS-NEXT:    sw a4, 156(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 13
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 164(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 176(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 176(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 14
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 14
+; RV32IMZBS-NEXT:    slli a4, t1, 14
 ; RV32IMZBS-NEXT:    and a4, a2, a4
 ; RV32IMZBS-NEXT:    sw a4, 240(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 14
+; RV32IMZBS-NEXT:    slli a4, t0, 14
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 244(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 248(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 15
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 15
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 15
+; RV32IMZBS-NEXT:    slli a4, t1, 15
 ; RV32IMZBS-NEXT:    and a4, a2, a4
 ; RV32IMZBS-NEXT:    sw a4, 276(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 15
+; RV32IMZBS-NEXT:    slli a4, t0, 15
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 280(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 284(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 288(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 16
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 16
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 16
+; RV32IMZBS-NEXT:    slli a4, t1, 16
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 52(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 16
+; RV32IMZBS-NEXT:    sw a4, 60(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 16
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 60(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 68(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 17
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 17
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli s0, t0, 17
-; RV32IMZBS-NEXT:    and s0, a2, s0
-; RV32IMZBS-NEXT:    sw s0, 44(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 17
+; RV32IMZBS-NEXT:    slli s1, t1, 17
+; RV32IMZBS-NEXT:    and s1, a2, s1
+; RV32IMZBS-NEXT:    sw s1, 52(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 17
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 48(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 56(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 252(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 18
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 18
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 18
+; RV32IMZBS-NEXT:    slli a4, t1, 18
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 76(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 18
+; RV32IMZBS-NEXT:    sw a4, 88(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 18
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 84(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 92(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 92(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 19
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 19
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 19
+; RV32IMZBS-NEXT:    slli a4, t1, 19
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 144(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 19
+; RV32IMZBS-NEXT:    sw a4, 160(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 19
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 160(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 172(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 20
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 20
+; RV32IMZBS-NEXT:    slli a4, t1, 20
 ; RV32IMZBS-NEXT:    and a4, a2, a4
 ; RV32IMZBS-NEXT:    sw a4, 192(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 20
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 196(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 204(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, t0, 20
+; RV32IMZBS-NEXT:    and a3, a3, s0
+; RV32IMZBS-NEXT:    sw a3, 204(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, s0
+; RV32IMZBS-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 21
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 21
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 21
+; RV32IMZBS-NEXT:    slli a4, t1, 21
 ; RV32IMZBS-NEXT:    and a4, a2, a4
 ; RV32IMZBS-NEXT:    sw a4, 212(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 21
+; RV32IMZBS-NEXT:    slli a4, t0, 21
 ; RV32IMZBS-NEXT:    and a3, a3, a4
 ; RV32IMZBS-NEXT:    sw a3, 216(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 22
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 22
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 22
+; RV32IMZBS-NEXT:    slli a4, t1, 22
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 20(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, a7, 22
-; RV32IMZBS-NEXT:    and a4, a3, a5
-; RV32IMZBS-NEXT:    and a2, a2, a5
-; RV32IMZBS-NEXT:    sw a2, 28(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 24(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t0, 22
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 28(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 23
-; RV32IMZBS-NEXT:    addi a5, a2, -1
-; RV32IMZBS-NEXT:    bexti a2, a0, 23
-; RV32IMZBS-NEXT:    addi a3, a2, -1
-; RV32IMZBS-NEXT:    slli a2, t0, 23
-; RV32IMZBS-NEXT:    and a2, a5, a2
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    bexti a3, a0, 23
+; RV32IMZBS-NEXT:    addi a4, a3, -1
+; RV32IMZBS-NEXT:    slli a3, t1, 23
+; RV32IMZBS-NEXT:    and a3, a2, a3
+; RV32IMZBS-NEXT:    sw a3, 12(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli t4, t0, 23
+; RV32IMZBS-NEXT:    and a3, a4, t4
+; RV32IMZBS-NEXT:    sw a3, 20(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, t4
+; RV32IMZBS-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 24
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    bexti a4, a0, 24
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    slli t4, t1, 24
+; RV32IMZBS-NEXT:    and a3, a2, t4
+; RV32IMZBS-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a4, t6
+; RV32IMZBS-NEXT:    sw a3, 44(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, t6
 ; RV32IMZBS-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t4, a7, 23
-; RV32IMZBS-NEXT:    and a3, a3, t4
-; RV32IMZBS-NEXT:    and a2, a5, t4
-; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti t4, a1, 24
-; RV32IMZBS-NEXT:    addi t6, t4, -1
-; RV32IMZBS-NEXT:    bexti t4, a0, 24
-; RV32IMZBS-NEXT:    addi t5, t4, -1
-; RV32IMZBS-NEXT:    slli t4, t0, 24
-; RV32IMZBS-NEXT:    and a2, t6, t4
+; RV32IMZBS-NEXT:    bexti a2, a1, 25
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    bexti t4, a0, 25
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    slli t6, t1, 25
+; RV32IMZBS-NEXT:    and a3, a2, t6
+; RV32IMZBS-NEXT:    sw a3, 76(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli t6, t0, 25
+; RV32IMZBS-NEXT:    and a3, t4, t6
+; RV32IMZBS-NEXT:    sw a3, 80(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, t6
+; RV32IMZBS-NEXT:    sw a2, 8(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti t4, a1, 26
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    bexti t6, a0, 26
+; RV32IMZBS-NEXT:    addi t6, t6, -1
+; RV32IMZBS-NEXT:    slli s9, t1, 26
+; RV32IMZBS-NEXT:    and a2, t4, s9
+; RV32IMZBS-NEXT:    sw a2, 104(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s9, t0, 26
+; RV32IMZBS-NEXT:    and a2, t6, s9
+; RV32IMZBS-NEXT:    sw a2, 112(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, t4, s9
 ; RV32IMZBS-NEXT:    sw a2, 32(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, t5, s1
-; RV32IMZBS-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, t6, s1
-; RV32IMZBS-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s1, a1, 25
-; RV32IMZBS-NEXT:    addi s8, s1, -1
-; RV32IMZBS-NEXT:    bexti s1, a0, 25
-; RV32IMZBS-NEXT:    addi s6, s1, -1
-; RV32IMZBS-NEXT:    slli s1, t0, 25
-; RV32IMZBS-NEXT:    and a2, s8, s1
-; RV32IMZBS-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s9, a7, 25
-; RV32IMZBS-NEXT:    and a2, s6, s9
-; RV32IMZBS-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s8, s9
-; RV32IMZBS-NEXT:    sw a2, 80(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s8, a1, 26
-; RV32IMZBS-NEXT:    addi s8, s8, -1
-; RV32IMZBS-NEXT:    bexti s9, a0, 26
-; RV32IMZBS-NEXT:    addi s9, s9, -1
-; RV32IMZBS-NEXT:    slli s10, t0, 26
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s10, a7, 26
-; RV32IMZBS-NEXT:    and a2, s9, s10
-; RV32IMZBS-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s8, a1, 27
-; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    bexti t6, a1, 27
+; RV32IMZBS-NEXT:    addi t6, t6, -1
 ; RV32IMZBS-NEXT:    bexti s9, a0, 27
 ; RV32IMZBS-NEXT:    addi s9, s9, -1
+; RV32IMZBS-NEXT:    slli s10, t1, 27
+; RV32IMZBS-NEXT:    and a2, t6, s10
+; RV32IMZBS-NEXT:    sw a2, 132(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli s10, t0, 27
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 120(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s10, a7, 27
 ; RV32IMZBS-NEXT:    and a2, s9, s10
-; RV32IMZBS-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 132(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s8, a1, 28
-; RV32IMZBS-NEXT:    addi s8, s8, -1
-; RV32IMZBS-NEXT:    bexti s9, a0, 28
+; RV32IMZBS-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, t6, s10
+; RV32IMZBS-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti s9, a1, 28
 ; RV32IMZBS-NEXT:    addi s9, s9, -1
-; RV32IMZBS-NEXT:    slli s10, t0, 28
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s10, a7, 28
-; RV32IMZBS-NEXT:    and a2, s9, s10
-; RV32IMZBS-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s8, s10
-; RV32IMZBS-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s8, a1, 29
-; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    bexti s10, a0, 28
+; RV32IMZBS-NEXT:    addi s10, s10, -1
+; RV32IMZBS-NEXT:    slli s11, t1, 28
+; RV32IMZBS-NEXT:    and a2, s9, s11
+; RV32IMZBS-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s11, t0, 28
+; RV32IMZBS-NEXT:    and a2, s10, s11
+; RV32IMZBS-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, s9, s11
+; RV32IMZBS-NEXT:    sw a2, 84(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti s9, a1, 29
+; RV32IMZBS-NEXT:    addi s10, s9, -1
 ; RV32IMZBS-NEXT:    bexti s9, a0, 29
 ; RV32IMZBS-NEXT:    addi s9, s9, -1
-; RV32IMZBS-NEXT:    slli s10, t0, 29
-; RV32IMZBS-NEXT:    and t4, s8, s10
-; RV32IMZBS-NEXT:    slli s11, a7, 29
-; RV32IMZBS-NEXT:    and a5, s9, s11
-; RV32IMZBS-NEXT:    and a2, s8, s11
-; RV32IMZBS-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi t1, t1, 1
+; RV32IMZBS-NEXT:    slli s11, t1, 29
+; RV32IMZBS-NEXT:    and a4, s10, s11
+; RV32IMZBS-NEXT:    slli ra, t0, 29
+; RV32IMZBS-NEXT:    and a3, s9, ra
+; RV32IMZBS-NEXT:    and a2, s10, ra
+; RV32IMZBS-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi t2, t2, 1
-; RV32IMZBS-NEXT:    seqz t1, t1
+; RV32IMZBS-NEXT:    andi t3, t3, 1
 ; RV32IMZBS-NEXT:    seqz t2, t2
-; RV32IMZBS-NEXT:    addi t1, t1, -1
+; RV32IMZBS-NEXT:    seqz t3, t3
 ; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    slli s11, t0, 30
-; RV32IMZBS-NEXT:    and t0, t1, t0
-; RV32IMZBS-NEXT:    and t2, t2, a7
-; RV32IMZBS-NEXT:    and a2, t1, a7
-; RV32IMZBS-NEXT:    sw a2, 8(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a7, a7, 30
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    slli s10, t1, 30
+; RV32IMZBS-NEXT:    and t1, t2, t1
+; RV32IMZBS-NEXT:    and t3, t3, t0
+; RV32IMZBS-NEXT:    and a2, t2, t0
+; RV32IMZBS-NEXT:    sw a2, 4(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli t0, t0, 30
 ; RV32IMZBS-NEXT:    bexti a1, a1, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and s11, a1, s11
-; RV32IMZBS-NEXT:    and a0, a0, a7
-; RV32IMZBS-NEXT:    and a1, a1, a7
-; RV32IMZBS-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s10, a1, s10
+; RV32IMZBS-NEXT:    and a0, a0, t0
+; RV32IMZBS-NEXT:    and a1, a1, t0
+; RV32IMZBS-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, s5
-; RV32IMZBS-NEXT:    sw a1, 320(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 332(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 628(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 576(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 464(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 452(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 416(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 408(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 364(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 464(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 312(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, s3
-; RV32IMZBS-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 416(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 460(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 412(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 476(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 376(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 368(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 472(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 328(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 360(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 340(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, s8, s3
+; RV32IMZBS-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 636(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 424(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor a1, ra, s2
-; RV32IMZBS-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, s4, a1
-; RV32IMZBS-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 412(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 488(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 428(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 492(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 372(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 468(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 376(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 348(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a6, a1
+; RV32IMZBS-NEXT:    sw a1, 428(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a1, a7, s2
+; RV32IMZBS-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a1, s4, s6
+; RV32IMZBS-NEXT:    sw a1, 416(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 464(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 400(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 428(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor s9, a6, s7
-; RV32IMZBS-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, t0, a1
-; RV32IMZBS-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s6, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s0, 224(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t5, a1
+; RV32IMZBS-NEXT:    sw a1, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 324(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, t1, a1
+; RV32IMZBS-NEXT:    lw a1, 296(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 272(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 256(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s0, 232(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, a1, s0
-; RV32IMZBS-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s1, 168(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s1, 180(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s1, a1, s1
-; RV32IMZBS-NEXT:    lw a1, 112(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 88(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 44(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 108(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 52(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s4, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 16(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 12(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s5, a1, a2
-; RV32IMZBS-NEXT:    xor s11, t4, s11
-; RV32IMZBS-NEXT:    xor s2, t2, t3
-; RV32IMZBS-NEXT:    lw a1, 308(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 284(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, a4, s10
+; RV32IMZBS-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, t3, a1
+; RV32IMZBS-NEXT:    lw a1, 312(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 288(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a1, a2
 ; RV32IMZBS-NEXT:    lw a1, 264(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 236(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 244(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 200(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 180(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 208(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 188(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 128(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 104(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 144(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 120(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 48(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 68(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 56(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, a1, a2
-; RV32IMZBS-NEXT:    xor t6, a4, a3
-; RV32IMZBS-NEXT:    xor t0, a5, a0
-; RV32IMZBS-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 20(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a1, a2
+; RV32IMZBS-NEXT:    xor t0, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a0, a5
+; RV32IMZBS-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 300(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 256(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 260(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 208(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 188(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 200(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 184(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, a3
-; RV32IMZBS-NEXT:    lw a3, 136(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 116(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 116(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 100(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    lw a4, 64(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 56(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 48(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    lw a5, 28(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a6, 24(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, a6
-; RV32IMZBS-NEXT:    lw a6, 12(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s7, 4(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, s7
-; RV32IMZBS-NEXT:    lw s7, 320(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s7, s8
-; RV32IMZBS-NEXT:    sw s7, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 444(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 396(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 464(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 452(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 416(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s7, s8
-; RV32IMZBS-NEXT:    sw s7, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 540(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 448(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 476(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 400(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 460(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 424(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a5, 16(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 8(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, s6
+; RV32IMZBS-NEXT:    lw s6, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s6, s7
+; RV32IMZBS-NEXT:    sw s6, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 656(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s7, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s7, ra
-; RV32IMZBS-NEXT:    sw s7, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 412(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, s8, s7
-; RV32IMZBS-NEXT:    lw s7, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 444(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 396(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 472(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 460(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 420(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s6, s7
+; RV32IMZBS-NEXT:    sw s6, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 492(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 404(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 468(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 428(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 708(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s6, s7
+; RV32IMZBS-NEXT:    sw s6, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, s8, s6
+; RV32IMZBS-NEXT:    lw s6, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, s11, s6
+; RV32IMZBS-NEXT:    lw s6, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, ra, s6
+; RV32IMZBS-NEXT:    lw s6, 432(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s7, 544(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 488(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 456(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 468(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s8, s7
-; RV32IMZBS-NEXT:    sw s7, 548(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s7, 404(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 428(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s8, s7
-; RV32IMZBS-NEXT:    lw s7, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, s9, s7
-; RV32IMZBS-NEXT:    sw s7, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor s6, s10, s6
-; RV32IMZBS-NEXT:    sw s6, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s6, 296(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s6, s0, s6
-; RV32IMZBS-NEXT:    lw s0, 228(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s1, s0
-; RV32IMZBS-NEXT:    lw s0, 140(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, s3, s0
-; RV32IMZBS-NEXT:    lw s0, 76(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s4, s4, s0
-; RV32IMZBS-NEXT:    lw s0, 32(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s5, s0
-; RV32IMZBS-NEXT:    sw s0, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s0, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s11, s0
-; RV32IMZBS-NEXT:    sw s0, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor s0, s2, t1
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    sw s6, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s6, 392(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 464(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s7, s6
+; RV32IMZBS-NEXT:    xor t6, s9, t6
+; RV32IMZBS-NEXT:    sw t6, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw t6, 292(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, t6
+; RV32IMZBS-NEXT:    lw t6, 228(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, t6
+; RV32IMZBS-NEXT:    lw t6, 156(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, s2, t6
+; RV32IMZBS-NEXT:    lw t6, 88(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s4, s4, t6
+; RV32IMZBS-NEXT:    lw t6, 36(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, s5, t6
+; RV32IMZBS-NEXT:    sw t6, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw t6, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, s10, t6
+; RV32IMZBS-NEXT:    sw t6, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor t6, s3, t1
 ; RV32IMZBS-NEXT:    lw t1, 304(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, t2, t1
-; RV32IMZBS-NEXT:    lw t1, 232(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 236(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, t3, t1
-; RV32IMZBS-NEXT:    lw t1, 164(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 176(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, t4, t1
-; RV32IMZBS-NEXT:    lw t1, 84(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 92(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, t5, t1
-; RV32IMZBS-NEXT:    lw t1, 36(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, t6, t1
-; RV32IMZBS-NEXT:    lw t1, 716(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t1
-; RV32IMZBS-NEXT:    sw t0, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor a7, a7, a0
-; RV32IMZBS-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 252(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 176(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a3, a0
-; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw t1, 44(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, a6, t1
+; RV32IMZBS-NEXT:    lw a6, 712(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, t0, a6
+; RV32IMZBS-NEXT:    sw a6, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a6, a7, a0
+; RV32IMZBS-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a0
+; RV32IMZBS-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a4, a0
-; RV32IMZBS-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 40(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a5, a0
-; RV32IMZBS-NEXT:    sw a0, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a6, a0
-; RV32IMZBS-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a4, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a4, 696(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli a3, a4, 4
-; RV32IMZBS-NEXT:    lw a1, 744(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 740(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    and a4, a4, a1
 ; RV32IMZBS-NEXT:    and a3, a3, a1
 ; RV32IMZBS-NEXT:    slli a4, a4, 4
 ; RV32IMZBS-NEXT:    or a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a5, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a3, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a5, 700(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli a4, a5, 4
 ; RV32IMZBS-NEXT:    and a5, a5, a1
 ; RV32IMZBS-NEXT:    and a4, a4, a1
 ; RV32IMZBS-NEXT:    slli a5, a5, 4
 ; RV32IMZBS-NEXT:    or a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a0, a2
+; RV32IMZBS-NEXT:    sw a4, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a0, a3
 ; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 432(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s11, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
+; RV32IMZBS-NEXT:    lw a3, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
 ; RV32IMZBS-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, ra
-; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a2, a0
+; RV32IMZBS-NEXT:    lw a3, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, a3
+; RV32IMZBS-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
 ; RV32IMZBS-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, a2, a0
+; RV32IMZBS-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    sw a0, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 440(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, s8, a0
+; RV32IMZBS-NEXT:    lw a3, 556(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, a0, s8
+; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, s11, a0
+; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, ra, a0
+; RV32IMZBS-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, s6, a0
+; RV32IMZBS-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s6, a0, 4
+; RV32IMZBS-NEXT:    and s7, a0, a1
+; RV32IMZBS-NEXT:    and s6, s6, a1
+; RV32IMZBS-NEXT:    slli s7, s7, 4
+; RV32IMZBS-NEXT:    or a0, s6, s7
+; RV32IMZBS-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 388(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli s7, a0, 4
-; RV32IMZBS-NEXT:    and s8, a0, a1
-; RV32IMZBS-NEXT:    and s7, s7, a1
-; RV32IMZBS-NEXT:    slli s8, s8, 4
-; RV32IMZBS-NEXT:    or a0, s7, s8
-; RV32IMZBS-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli s8, a0, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    and s8, s8, a1
+; RV32IMZBS-NEXT:    and s7, s7, a1
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    or a0, s8, a0
-; RV32IMZBS-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s7, a0, s6
-; RV32IMZBS-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    or a0, s7, a0
+; RV32IMZBS-NEXT:    sw a0, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, a0, s0
+; RV32IMZBS-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s5, s1, a0
 ; RV32IMZBS-NEXT:    lw a0, 240(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s6, s3, a0
-; RV32IMZBS-NEXT:    lw a0, 144(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s2, a0
+; RV32IMZBS-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s2, s4, a0
-; RV32IMZBS-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, a1, a0
-; RV32IMZBS-NEXT:    xor s4, s0, t2
-; RV32IMZBS-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, t3, a0
-; RV32IMZBS-NEXT:    lw a0, 244(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, t4, a0
-; RV32IMZBS-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t5, a0
-; RV32IMZBS-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t6, a0
-; RV32IMZBS-NEXT:    xor t6, a7, t0
-; RV32IMZBS-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, t1, a0
-; RV32IMZBS-NEXT:    lw a0, 260(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, a1, a0
+; RV32IMZBS-NEXT:    xor s4, t6, t2
+; RV32IMZBS-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, t3, a0
+; RV32IMZBS-NEXT:    lw a0, 248(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t4, a0
 ; RV32IMZBS-NEXT:    lw a0, 172(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a1, a0
+; RV32IMZBS-NEXT:    xor t4, t5, a0
 ; RV32IMZBS-NEXT:    lw a0, 80(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, t1, a0
+; RV32IMZBS-NEXT:    xor t6, a6, a7
+; RV32IMZBS-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, a2, a0
+; RV32IMZBS-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, t0, a0
+; RV32IMZBS-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t0, a1, a0
-; RV32IMZBS-NEXT:    xor t1, a3, a4
-; RV32IMZBS-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a5, a0
-; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, a4, a5
+; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 640(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a0
-; RV32IMZBS-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 632(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a5, a5, a0
-; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s11, a0, s11
-; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor ra, a0, ra
-; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, s8, a0
-; RV32IMZBS-NEXT:    lw s8, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, s9, s8
-; RV32IMZBS-NEXT:    lw s8, 484(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a0, a3
+; RV32IMZBS-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a2, a1
+; RV32IMZBS-NEXT:    lw a2, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, s9, a2
+; RV32IMZBS-NEXT:    lw s9, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, s8, s9
+; RV32IMZBS-NEXT:    lw s8, 688(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, s11, s8
+; RV32IMZBS-NEXT:    lw s8, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, ra, s8
+; RV32IMZBS-NEXT:    lw s8, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, s10, s8
+; RV32IMZBS-NEXT:    sw s8, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s8, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s10, 664(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s10, s10, s8
 ; RV32IMZBS-NEXT:    xor s5, s7, s5
 ; RV32IMZBS-NEXT:    lw s7, 276(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s6, s6, s7
 ; RV32IMZBS-NEXT:    lw s7, 192(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s2, s2, s7
-; RV32IMZBS-NEXT:    lw s7, 96(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 104(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, s3, s7
-; RV32IMZBS-NEXT:    xor s0, s4, s0
-; RV32IMZBS-NEXT:    lw s4, 280(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s1, s4
-; RV32IMZBS-NEXT:    lw s4, 196(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, s4
-; RV32IMZBS-NEXT:    lw s4, 100(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, s4, t2
+; RV32IMZBS-NEXT:    lw s4, 284(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s4, t3, s4
+; RV32IMZBS-NEXT:    lw t3, 204(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, t4, t3
+; RV32IMZBS-NEXT:    lw t3, 112(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, t5, t3
+; RV32IMZBS-NEXT:    lw t3, 360(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t4, t6, t3
+; RV32IMZBS-NEXT:    lw t3, 352(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, s0, t3
+; RV32IMZBS-NEXT:    lw s0, 252(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s1, s0
+; RV32IMZBS-NEXT:    lw t3, 152(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, a7, t3
+; RV32IMZBS-NEXT:    lw a7, 84(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t0, a7
+; RV32IMZBS-NEXT:    xor a4, t1, a4
+; RV32IMZBS-NEXT:    lw t0, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t0
+; RV32IMZBS-NEXT:    lw t0, 500(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t0
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a3
+; RV32IMZBS-NEXT:    lw a3, 504(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a3
+; RV32IMZBS-NEXT:    lw a3, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, ra, a3
+; RV32IMZBS-NEXT:    lw t0, 476(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, s10, t0
+; RV32IMZBS-NEXT:    xor t1, s5, s6
+; RV32IMZBS-NEXT:    lw s1, 212(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s2, s1
+; RV32IMZBS-NEXT:    lw s2, 132(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, s3, s2
+; RV32IMZBS-NEXT:    xor t2, t2, s4
+; RV32IMZBS-NEXT:    lw s3, 216(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, s7, s3
+; RV32IMZBS-NEXT:    lw s4, 136(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t5, t5, s4
-; RV32IMZBS-NEXT:    xor t2, t6, t2
-; RV32IMZBS-NEXT:    lw t6, 288(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t3, t6
-; RV32IMZBS-NEXT:    lw t6, 204(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t6
-; RV32IMZBS-NEXT:    lw t6, 108(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t6
-; RV32IMZBS-NEXT:    xor a6, t1, a6
-; RV32IMZBS-NEXT:    lw t1, 588(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t1
-; RV32IMZBS-NEXT:    lw t1, 492(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, t1
-; RV32IMZBS-NEXT:    xor a3, s11, a3
-; RV32IMZBS-NEXT:    lw t1, 596(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, t1
-; RV32IMZBS-NEXT:    lw t1, 496(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, t1
-; RV32IMZBS-NEXT:    xor a0, ra, a0
-; RV32IMZBS-NEXT:    lw t1, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, s9, t1
-; RV32IMZBS-NEXT:    lw t6, 500(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, s10, t6
-; RV32IMZBS-NEXT:    xor s4, s5, s6
-; RV32IMZBS-NEXT:    lw s5, 212(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, s2, s5
-; RV32IMZBS-NEXT:    lw s5, 120(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, s3, s5
-; RV32IMZBS-NEXT:    xor s0, s0, s1
-; RV32IMZBS-NEXT:    lw s1, 216(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, s1
-; RV32IMZBS-NEXT:    lw s1, 124(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, s1
-; RV32IMZBS-NEXT:    xor t2, t2, t3
-; RV32IMZBS-NEXT:    lw t3, 220(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t3
-; RV32IMZBS-NEXT:    lw t3, 132(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t3
-; RV32IMZBS-NEXT:    lw s1, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t3, s1, 2
-; RV32IMZBS-NEXT:    lw s6, 728(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and s1, s1, s6
-; RV32IMZBS-NEXT:    and t3, t3, s6
-; RV32IMZBS-NEXT:    slli s1, s1, 2
-; RV32IMZBS-NEXT:    or t3, t3, s1
+; RV32IMZBS-NEXT:    lw s4, 268(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, s4
+; RV32IMZBS-NEXT:    lw s4, 96(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, s4
 ; RV32IMZBS-NEXT:    lw s5, 696(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli s1, s5, 2
-; RV32IMZBS-NEXT:    and s5, s5, s6
-; RV32IMZBS-NEXT:    and s1, s1, s6
+; RV32IMZBS-NEXT:    srli s4, s5, 2
+; RV32IMZBS-NEXT:    lw s8, 724(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s5, s5, s8
+; RV32IMZBS-NEXT:    and s4, s4, s8
 ; RV32IMZBS-NEXT:    slli s5, s5, 2
-; RV32IMZBS-NEXT:    or s1, s1, s5
-; RV32IMZBS-NEXT:    xor a4, a6, a4
-; RV32IMZBS-NEXT:    lw a6, 532(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, a6
-; RV32IMZBS-NEXT:    xor a1, a3, a1
-; RV32IMZBS-NEXT:    lw a3, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    or s4, s4, s5
+; RV32IMZBS-NEXT:    lw s6, 700(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s5, s6, 2
+; RV32IMZBS-NEXT:    and s6, s6, s8
+; RV32IMZBS-NEXT:    and s5, s5, s8
+; RV32IMZBS-NEXT:    slli s6, s6, 2
+; RV32IMZBS-NEXT:    or s5, s5, s6
+; RV32IMZBS-NEXT:    xor a4, a4, a5
+; RV32IMZBS-NEXT:    lw a5, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a6, a5
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a2, a1
+; RV32IMZBS-NEXT:    xor a2, s9, s11
 ; RV32IMZBS-NEXT:    xor a2, a2, a3
-; RV32IMZBS-NEXT:    xor a0, a0, t1
-; RV32IMZBS-NEXT:    lw a3, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, t6, a3
-; RV32IMZBS-NEXT:    lw t1, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli a6, t1, 2
-; RV32IMZBS-NEXT:    and t1, t1, s6
+; RV32IMZBS-NEXT:    lw a3, 496(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, t0, a3
+; RV32IMZBS-NEXT:    lw t0, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli a6, t0, 2
+; RV32IMZBS-NEXT:    and t0, t0, s8
+; RV32IMZBS-NEXT:    and a6, a6, s8
+; RV32IMZBS-NEXT:    slli t0, t0, 2
+; RV32IMZBS-NEXT:    or a6, a6, t0
+; RV32IMZBS-NEXT:    lw s6, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli t0, s6, 2
+; RV32IMZBS-NEXT:    and s6, s6, s8
+; RV32IMZBS-NEXT:    and t0, t0, s8
+; RV32IMZBS-NEXT:    slli s6, s6, 2
+; RV32IMZBS-NEXT:    or t0, t0, s6
+; RV32IMZBS-NEXT:    xor t1, t1, s1
+; RV32IMZBS-NEXT:    lw s1, 168(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s2, s1
+; RV32IMZBS-NEXT:    xor t2, t2, s3
+; RV32IMZBS-NEXT:    lw s2, 164(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, t5, s2
+; RV32IMZBS-NEXT:    xor t6, t4, t6
+; RV32IMZBS-NEXT:    xor t6, t6, s0
+; RV32IMZBS-NEXT:    lw s0, 128(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, s0
+; RV32IMZBS-NEXT:    xor a4, a4, a5
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a2, a1
+; RV32IMZBS-NEXT:    lw a2, 720(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a3, a2
+; RV32IMZBS-NEXT:    xor a3, t1, s1
+; RV32IMZBS-NEXT:    slli s9, s9, 24
+; RV32IMZBS-NEXT:    slli t4, t4, 24
+; RV32IMZBS-NEXT:    xor a5, t2, t5
+; RV32IMZBS-NEXT:    srli t1, s4, 1
+; RV32IMZBS-NEXT:    lw s6, 744(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and t2, s4, s6
+; RV32IMZBS-NEXT:    xor t3, t6, t3
+; RV32IMZBS-NEXT:    srli t5, s5, 1
+; RV32IMZBS-NEXT:    and t6, s5, s6
+; RV32IMZBS-NEXT:    lw s0, 716(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, s0
+; RV32IMZBS-NEXT:    srli s0, a6, 1
 ; RV32IMZBS-NEXT:    and a6, a6, s6
-; RV32IMZBS-NEXT:    slli t1, t1, 2
-; RV32IMZBS-NEXT:    or a6, a6, t1
-; RV32IMZBS-NEXT:    lw t6, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t1, t6, 2
-; RV32IMZBS-NEXT:    and t6, t6, s6
+; RV32IMZBS-NEXT:    lw s1, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, s1
+; RV32IMZBS-NEXT:    srli s1, t0, 1
+; RV32IMZBS-NEXT:    and t0, t0, s6
 ; RV32IMZBS-NEXT:    and t1, t1, s6
-; RV32IMZBS-NEXT:    mv s5, s6
-; RV32IMZBS-NEXT:    slli t6, t6, 2
-; RV32IMZBS-NEXT:    or t1, t1, t6
-; RV32IMZBS-NEXT:    xor t6, s4, s2
-; RV32IMZBS-NEXT:    lw s2, 152(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, s3, s2
-; RV32IMZBS-NEXT:    xor t4, s0, t4
-; RV32IMZBS-NEXT:    lw s0, 148(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, s0
-; RV32IMZBS-NEXT:    xor a7, t2, a7
-; RV32IMZBS-NEXT:    lw t2, 156(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t2
-; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    srli a2, t3, 1
-; RV32IMZBS-NEXT:    lw s11, 724(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a5, t3, s11
-; RV32IMZBS-NEXT:    xor a0, a0, a3
-; RV32IMZBS-NEXT:    srli a3, s1, 1
-; RV32IMZBS-NEXT:    and t2, s1, s11
-; RV32IMZBS-NEXT:    xor t3, t6, s2
-; RV32IMZBS-NEXT:    srli t6, a6, 1
-; RV32IMZBS-NEXT:    and a6, a6, s11
-; RV32IMZBS-NEXT:    xor t4, t4, t5
-; RV32IMZBS-NEXT:    srli t5, t1, 1
-; RV32IMZBS-NEXT:    and t1, t1, s11
-; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    and a2, a2, s11
-; RV32IMZBS-NEXT:    slli a5, a5, 1
-; RV32IMZBS-NEXT:    and a3, a3, s11
 ; RV32IMZBS-NEXT:    slli t2, t2, 1
-; RV32IMZBS-NEXT:    lw t0, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t0
-; RV32IMZBS-NEXT:    lw t0, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, a1, t0
-; RV32IMZBS-NEXT:    lw s0, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, a0, s0
-; RV32IMZBS-NEXT:    and t6, t6, s11
+; RV32IMZBS-NEXT:    and t5, t5, s6
+; RV32IMZBS-NEXT:    slli t6, t6, 1
+; RV32IMZBS-NEXT:    lw s2, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, a0, s2
+; RV32IMZBS-NEXT:    lw s7, 736(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s4, a1, s7
+; RV32IMZBS-NEXT:    xor a2, a1, a2
+; RV32IMZBS-NEXT:    srli a1, a1, 8
+; RV32IMZBS-NEXT:    and s0, s0, s6
 ; RV32IMZBS-NEXT:    slli a6, a6, 1
-; RV32IMZBS-NEXT:    and t5, t5, s11
-; RV32IMZBS-NEXT:    slli t1, t1, 1
-; RV32IMZBS-NEXT:    lw a0, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, t3, a0
-; RV32IMZBS-NEXT:    lw a0, 716(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t4, a0
-; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, a0
-; RV32IMZBS-NEXT:    or a0, a2, a5
-; RV32IMZBS-NEXT:    or a1, a3, t2
-; RV32IMZBS-NEXT:    srli a2, t2, 31
-; RV32IMZBS-NEXT:    xor a3, t0, a4
-; RV32IMZBS-NEXT:    sw a3, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    srli a3, s0, 8
-; RV32IMZBS-NEXT:    srli a4, s0, 24
-; RV32IMZBS-NEXT:    slli a5, s0, 24
-; RV32IMZBS-NEXT:    lw s4, 740(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and t2, s0, s4
-; RV32IMZBS-NEXT:    or t4, t6, a6
-; RV32IMZBS-NEXT:    or t6, t5, t1
-; RV32IMZBS-NEXT:    srli a6, t1, 31
-; RV32IMZBS-NEXT:    xor t0, t3, s1
-; RV32IMZBS-NEXT:    sw t0, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    srli t1, a7, 8
-; RV32IMZBS-NEXT:    srli t3, a7, 24
-; RV32IMZBS-NEXT:    slli t5, a7, 24
-; RV32IMZBS-NEXT:    and a7, a7, s4
-; RV32IMZBS-NEXT:    slli t0, a0, 1
-; RV32IMZBS-NEXT:    andi s0, a1, 2
-; RV32IMZBS-NEXT:    slli s1, a0, 2
-; RV32IMZBS-NEXT:    andi s2, a1, 4
-; RV32IMZBS-NEXT:    slli s3, a0, 3
-; RV32IMZBS-NEXT:    and a3, a3, s4
-; RV32IMZBS-NEXT:    or a3, a3, a4
-; RV32IMZBS-NEXT:    andi a4, a1, 8
-; RV32IMZBS-NEXT:    slli t2, t2, 8
-; RV32IMZBS-NEXT:    or a5, a5, t2
-; RV32IMZBS-NEXT:    slli t2, a0, 4
-; RV32IMZBS-NEXT:    and t1, t1, s4
-; RV32IMZBS-NEXT:    or t1, t1, t3
-; RV32IMZBS-NEXT:    andi t3, a1, 16
-; RV32IMZBS-NEXT:    slli a7, a7, 8
-; RV32IMZBS-NEXT:    or a7, t5, a7
-; RV32IMZBS-NEXT:    slli t5, a0, 31
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, t5
-; RV32IMZBS-NEXT:    sw a2, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a0, 5
-; RV32IMZBS-NEXT:    or a3, a5, a3
-; RV32IMZBS-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, t4, 31
-; RV32IMZBS-NEXT:    seqz a5, a6
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a3, a5, a3
+; RV32IMZBS-NEXT:    and s1, s1, s6
+; RV32IMZBS-NEXT:    slli t0, t0, 1
+; RV32IMZBS-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 712(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, a0
+; RV32IMZBS-NEXT:    and s5, t3, s7
+; RV32IMZBS-NEXT:    srli s6, t3, 8
+; RV32IMZBS-NEXT:    xor a7, t3, a7
+; RV32IMZBS-NEXT:    or s2, t1, t2
+; RV32IMZBS-NEXT:    or a0, t5, t6
+; RV32IMZBS-NEXT:    srli t3, t6, 31
+; RV32IMZBS-NEXT:    xor a4, s3, a4
+; RV32IMZBS-NEXT:    sw a4, 720(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s4, s4, 8
+; RV32IMZBS-NEXT:    and a1, a1, s7
+; RV32IMZBS-NEXT:    srli a2, a2, 24
+; RV32IMZBS-NEXT:    or t2, s0, a6
+; RV32IMZBS-NEXT:    or t5, s1, t0
+; RV32IMZBS-NEXT:    srli a4, t0, 31
+; RV32IMZBS-NEXT:    xor a3, a5, a3
+; RV32IMZBS-NEXT:    sw a3, 716(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s5, s5, 8
+; RV32IMZBS-NEXT:    and a3, s6, s7
+; RV32IMZBS-NEXT:    srli a5, a7, 24
+; RV32IMZBS-NEXT:    slli a6, s2, 1
+; RV32IMZBS-NEXT:    andi a7, a0, 2
+; RV32IMZBS-NEXT:    slli t0, s2, 2
+; RV32IMZBS-NEXT:    andi t1, a0, 4
+; RV32IMZBS-NEXT:    slli t6, s2, 3
+; RV32IMZBS-NEXT:    or s0, s9, s4
+; RV32IMZBS-NEXT:    andi s1, a0, 8
+; RV32IMZBS-NEXT:    or a1, a1, a2
+; RV32IMZBS-NEXT:    slli a2, s2, 4
+; RV32IMZBS-NEXT:    or t4, t4, s5
+; RV32IMZBS-NEXT:    andi s3, a0, 16
+; RV32IMZBS-NEXT:    or a3, a3, a5
+; RV32IMZBS-NEXT:    slli a5, s2, 5
+; RV32IMZBS-NEXT:    or a1, s0, a1
+; RV32IMZBS-NEXT:    sw a1, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a1, a0, 32
+; RV32IMZBS-NEXT:    or a3, t4, a3
+; RV32IMZBS-NEXT:    sw a3, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s2, 31
+; RV32IMZBS-NEXT:    seqz t3, t3
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    and a3, t3, a3
+; RV32IMZBS-NEXT:    sw a3, 708(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, t2, 31
+; RV32IMZBS-NEXT:    seqz a4, a4
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a3, a4, a3
 ; RV32IMZBS-NEXT:    sw a3, 712(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a3, a1, 32
-; RV32IMZBS-NEXT:    or a5, a7, t1
-; RV32IMZBS-NEXT:    sw a5, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, a0, 6
-; RV32IMZBS-NEXT:    seqz a6, s0
+; RV32IMZBS-NEXT:    slli a3, s2, 6
+; RV32IMZBS-NEXT:    seqz a4, a7
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a4, a4, a6
+; RV32IMZBS-NEXT:    sw a4, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a4, a0, 64
+; RV32IMZBS-NEXT:    seqz a6, t1
 ; RV32IMZBS-NEXT:    addi a6, a6, -1
 ; RV32IMZBS-NEXT:    and a6, a6, t0
-; RV32IMZBS-NEXT:    sw a6, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a6, a1, 64
-; RV32IMZBS-NEXT:    seqz a7, s2
+; RV32IMZBS-NEXT:    sw a6, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, s2, 7
+; RV32IMZBS-NEXT:    seqz a7, s1
 ; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and a7, a7, s1
-; RV32IMZBS-NEXT:    sw a7, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a7, a0, 7
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a4, a4, s3
-; RV32IMZBS-NEXT:    sw a4, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a1, 128
-; RV32IMZBS-NEXT:    seqz t1, t3
-; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    and t0, t1, t2
-; RV32IMZBS-NEXT:    sw t0, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t1, a0, 8
-; RV32IMZBS-NEXT:    seqz a3, a3
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and a2, a3, a2
-; RV32IMZBS-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a2, a1, 256
-; RV32IMZBS-NEXT:    seqz a3, a6
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and a3, a3, a5
-; RV32IMZBS-NEXT:    sw a3, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, a0, 9
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a5, a4, a7
-; RV32IMZBS-NEXT:    andi a4, a1, 512
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and t1, a2, t1
-; RV32IMZBS-NEXT:    slli a2, a0, 10
+; RV32IMZBS-NEXT:    and a7, a7, t6
+; RV32IMZBS-NEXT:    sw a7, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a7, a0, 128
+; RV32IMZBS-NEXT:    seqz t0, s3
+; RV32IMZBS-NEXT:    addi t0, t0, -1
+; RV32IMZBS-NEXT:    and a2, t0, a2
+; RV32IMZBS-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, s2, 8
+; RV32IMZBS-NEXT:    seqz a1, a1
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a1, a0, 256
 ; RV32IMZBS-NEXT:    seqz a4, a4
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
 ; RV32IMZBS-NEXT:    and a3, a4, a3
-; RV32IMZBS-NEXT:    sw a3, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a3, a1, 1024
-; RV32IMZBS-NEXT:    seqz a3, a3
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and a2, a3, a2
-; RV32IMZBS-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a2, a1
-; RV32IMZBS-NEXT:    bexti a3, a2, 11
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 11
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 12
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 12
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 13
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 13
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 14
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 14
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 15
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 15
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 16
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 16
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 17
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 17
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 18
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 18
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 19
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 19
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 20
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 20
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 21
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 21
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 22
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 22
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 23
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 23
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 24
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 24
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 25
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 25
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 26
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 26
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 27
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 27
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 28
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 28
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 29
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 29
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a1, a1, 1
+; RV32IMZBS-NEXT:    sw a3, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s2, 9
+; RV32IMZBS-NEXT:    seqz a4, a7
+; RV32IMZBS-NEXT:    addi a4, a4, -1
+; RV32IMZBS-NEXT:    and a4, a4, a6
+; RV32IMZBS-NEXT:    sw a4, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a4, a0, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a1, a1, a0
-; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a0, a0, 30
-; RV32IMZBS-NEXT:    bexti a1, a2, 30
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 2
+; RV32IMZBS-NEXT:    and a6, a1, a2
+; RV32IMZBS-NEXT:    slli a1, s2, 10
+; RV32IMZBS-NEXT:    seqz a2, a4
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a2, a0, 1024
+; RV32IMZBS-NEXT:    seqz a2, a2
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    and a1, a2, a1
+; RV32IMZBS-NEXT:    sw a1, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a1, a0
+; RV32IMZBS-NEXT:    bexti a2, a1, 11
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 11
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 12
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 12
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 13
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 13
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 14
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 14
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 15
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 15
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 16
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 16
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 17
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 17
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 18
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 18
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 19
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 19
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 20
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 20
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 21
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 21
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 22
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 22
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 23
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 23
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 24
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 24
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 25
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 25
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 26
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 26
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 27
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 27
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 28
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 28
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 29
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 29
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, a0, 1
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 1
-; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 4
+; RV32IMZBS-NEXT:    and a0, a0, s2
+; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s2, s2, 30
+; RV32IMZBS-NEXT:    bexti a0, a1, 30
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, s2
+; RV32IMZBS-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 2
+; RV32IMZBS-NEXT:    slli a1, t2, 1
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 8
+; RV32IMZBS-NEXT:    andi a0, t5, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 3
+; RV32IMZBS-NEXT:    slli a1, t2, 2
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 16
+; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 4
+; RV32IMZBS-NEXT:    slli a1, t2, 3
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 32
+; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 5
+; RV32IMZBS-NEXT:    slli a1, t2, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 64
+; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 6
+; RV32IMZBS-NEXT:    slli a1, t2, 5
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 128
+; RV32IMZBS-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 7
+; RV32IMZBS-NEXT:    slli a1, t2, 6
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 256
+; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli s1, t4, 8
-; RV32IMZBS-NEXT:    and a0, a0, s1
-; RV32IMZBS-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 512
+; RV32IMZBS-NEXT:    slli a1, t2, 7
+; RV32IMZBS-NEXT:    and a0, a0, a1
+; RV32IMZBS-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 9
+; RV32IMZBS-NEXT:    slli a1, t2, 8
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, t6, 1024
+; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 512
+; RV32IMZBS-NEXT:    seqz a0, a0
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    slli s1, t2, 9
+; RV32IMZBS-NEXT:    and a0, a0, s1
+; RV32IMZBS-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t5, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t4, 10
+; RV32IMZBS-NEXT:    slli a1, t2, 10
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a0, t6
+; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a0, t5
 ; RV32IMZBS-NEXT:    bexti a1, a0, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t4, 11
+; RV32IMZBS-NEXT:    slli a2, t2, 11
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 12
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t4, 12
-; RV32IMZBS-NEXT:    and s9, a1, a2
+; RV32IMZBS-NEXT:    slli a2, t2, 12
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 560(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 13
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s0, t4, 13
-; RV32IMZBS-NEXT:    and a1, a1, s0
-; RV32IMZBS-NEXT:    sw a1, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t2, 13
+; RV32IMZBS-NEXT:    and s10, a1, a2
 ; RV32IMZBS-NEXT:    bexti a1, a0, 14
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t4, 14
-; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t2, 14
+; RV32IMZBS-NEXT:    and s7, a1, a2
 ; RV32IMZBS-NEXT:    bexti a1, a0, 15
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t4, 15
+; RV32IMZBS-NEXT:    slli a2, t2, 15
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 16
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, t4, 16
-; RV32IMZBS-NEXT:    and s4, a1, a3
+; RV32IMZBS-NEXT:    slli s0, t2, 16
+; RV32IMZBS-NEXT:    and a1, a1, s0
+; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 17
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t4, 17
-; RV32IMZBS-NEXT:    and s3, a1, a2
+; RV32IMZBS-NEXT:    slli a2, t2, 17
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 18
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 18
-; RV32IMZBS-NEXT:    and s8, a1, a4
+; RV32IMZBS-NEXT:    slli a2, t2, 18
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 19
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 19
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, t2, 19
+; RV32IMZBS-NEXT:    and s2, a1, a4
 ; RV32IMZBS-NEXT:    bexti a1, a0, 20
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 20
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t2, 20
+; RV32IMZBS-NEXT:    and s0, a1, a2
 ; RV32IMZBS-NEXT:    bexti a1, a0, 21
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 21
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, t2, 21
+; RV32IMZBS-NEXT:    and s4, a1, a3
 ; RV32IMZBS-NEXT:    bexti a1, a0, 22
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 22
-; RV32IMZBS-NEXT:    and s1, a1, a4
-; RV32IMZBS-NEXT:    bexti a2, a0, 23
+; RV32IMZBS-NEXT:    slli a3, t2, 22
+; RV32IMZBS-NEXT:    and s9, a1, a3
+; RV32IMZBS-NEXT:    bexti a1, a0, 23
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a3, t2, 23
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a0, 24
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    slli a3, t2, 24
+; RV32IMZBS-NEXT:    and t4, a1, a3
+; RV32IMZBS-NEXT:    bexti a2, a0, 25
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 23
-; RV32IMZBS-NEXT:    and s0, a2, a4
-; RV32IMZBS-NEXT:    bexti a3, a0, 24
+; RV32IMZBS-NEXT:    slli a3, t2, 25
+; RV32IMZBS-NEXT:    and t0, a2, a3
+; RV32IMZBS-NEXT:    bexti a3, a0, 26
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t4, 24
-; RV32IMZBS-NEXT:    and s2, a3, a4
-; RV32IMZBS-NEXT:    bexti a4, a0, 25
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a7, t4, 25
-; RV32IMZBS-NEXT:    and s6, a4, a7
-; RV32IMZBS-NEXT:    bexti a7, a0, 26
+; RV32IMZBS-NEXT:    slli a5, t2, 26
+; RV32IMZBS-NEXT:    and t6, a3, a5
+; RV32IMZBS-NEXT:    bexti a5, a0, 27
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    slli a7, t2, 27
+; RV32IMZBS-NEXT:    and s1, a5, a7
+; RV32IMZBS-NEXT:    bexti a7, a0, 28
 ; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    slli t2, t4, 26
-; RV32IMZBS-NEXT:    and s7, a7, t2
-; RV32IMZBS-NEXT:    bexti t2, a0, 27
-; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    slli t5, t4, 27
-; RV32IMZBS-NEXT:    and s10, t2, t5
-; RV32IMZBS-NEXT:    bexti t5, a0, 28
-; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    slli t0, t4, 28
-; RV32IMZBS-NEXT:    and t5, t5, t0
-; RV32IMZBS-NEXT:    bexti t0, a0, 29
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    slli t3, t4, 29
-; RV32IMZBS-NEXT:    and t2, t0, t3
-; RV32IMZBS-NEXT:    andi t3, t6, 1
-; RV32IMZBS-NEXT:    seqz t3, t3
+; RV32IMZBS-NEXT:    slli t3, t2, 28
+; RV32IMZBS-NEXT:    and s3, a7, t3
+; RV32IMZBS-NEXT:    bexti t3, a0, 29
 ; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    and t3, t3, t4
-; RV32IMZBS-NEXT:    slli t4, t4, 30
+; RV32IMZBS-NEXT:    slli t1, t2, 29
+; RV32IMZBS-NEXT:    and s6, t3, t1
+; RV32IMZBS-NEXT:    andi t1, t5, 1
+; RV32IMZBS-NEXT:    seqz t1, t1
+; RV32IMZBS-NEXT:    addi t1, t1, -1
+; RV32IMZBS-NEXT:    and t1, t1, t2
+; RV32IMZBS-NEXT:    slli t2, t2, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and a6, a0, t4
-; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a1, a5, t1
-; RV32IMZBS-NEXT:    lw a2, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a3
-; RV32IMZBS-NEXT:    lw a3, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    lw a4, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 596(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    lw a5, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a7, 588(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, a7
-; RV32IMZBS-NEXT:    lw a7, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t3, a7
-; RV32IMZBS-NEXT:    lw a7, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw t0, 564(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    lw t0, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s5, a0, t2
+; RV32IMZBS-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 656(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a0, a5
+; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, a0
+; RV32IMZBS-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a0, a3
+; RV32IMZBS-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a0, a4
+; RV32IMZBS-NEXT:    lw a1, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli a0, a1, 4
+; RV32IMZBS-NEXT:    lw t3, 740(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a1, a1, t3
+; RV32IMZBS-NEXT:    and a0, a0, t3
+; RV32IMZBS-NEXT:    slli a1, a1, 4
+; RV32IMZBS-NEXT:    or a2, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t1, a0
+; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw t1, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t1
-; RV32IMZBS-NEXT:    lw t1, 540(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw ra, 532(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t1, ra
-; RV32IMZBS-NEXT:    lw ra, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, ra, s9
-; RV32IMZBS-NEXT:    xor s3, s4, s3
-; RV32IMZBS-NEXT:    xor s0, s1, s0
-; RV32IMZBS-NEXT:    xor t2, t2, a6
-; RV32IMZBS-NEXT:    xor t4, t4, t6
-; RV32IMZBS-NEXT:    lw a6, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a6
-; RV32IMZBS-NEXT:    lw a6, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a6
-; RV32IMZBS-NEXT:    lw a6, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, a2, a6
-; RV32IMZBS-NEXT:    lw a2, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a2
-; RV32IMZBS-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, a2
-; RV32IMZBS-NEXT:    lw a2, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a5, a2
-; RV32IMZBS-NEXT:    lw a5, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli a2, a5, 4
-; RV32IMZBS-NEXT:    lw s4, 744(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a5, a5, s4
-; RV32IMZBS-NEXT:    and a2, a2, s4
-; RV32IMZBS-NEXT:    slli a5, a5, 4
-; RV32IMZBS-NEXT:    or a5, a2, a5
-; RV32IMZBS-NEXT:    xor a7, t3, a7
-; RV32IMZBS-NEXT:    lw a2, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, a2
-; RV32IMZBS-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t1, a2
-; RV32IMZBS-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, s9, a2
-; RV32IMZBS-NEXT:    xor s1, s3, s8
-; RV32IMZBS-NEXT:    xor s0, s0, s2
-; RV32IMZBS-NEXT:    lw a2, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, t2, a2
-; RV32IMZBS-NEXT:    lw s2, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t2, s2, 4
-; RV32IMZBS-NEXT:    and s2, s2, s4
-; RV32IMZBS-NEXT:    and t2, t2, s4
+; RV32IMZBS-NEXT:    xor t1, a0, t1
+; RV32IMZBS-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw ra, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, ra
+; RV32IMZBS-NEXT:    lw ra, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s11, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, ra, s11
+; RV32IMZBS-NEXT:    xor s7, s10, s7
+; RV32IMZBS-NEXT:    xor s0, s2, s0
+; RV32IMZBS-NEXT:    xor t0, t4, t0
+; RV32IMZBS-NEXT:    lw s2, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli t4, s2, 4
+; RV32IMZBS-NEXT:    and s2, s2, t3
+; RV32IMZBS-NEXT:    and t4, t4, t3
 ; RV32IMZBS-NEXT:    slli s2, s2, 4
-; RV32IMZBS-NEXT:    or t2, t2, s2
-; RV32IMZBS-NEXT:    xor a0, t4, a0
-; RV32IMZBS-NEXT:    lw t4, 696(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, t4
-; RV32IMZBS-NEXT:    lw t4, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t6, t4
-; RV32IMZBS-NEXT:    lw t6, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t6
-; RV32IMZBS-NEXT:    lw t6, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t6
-; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    lw t0, 568(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t1, t0
-; RV32IMZBS-NEXT:    lw t1, 544(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t3, t1
-; RV32IMZBS-NEXT:    lw t3, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, s1, t3
-; RV32IMZBS-NEXT:    xor t6, s0, s6
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, t4, a1
-; RV32IMZBS-NEXT:    lw t4, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t4
-; RV32IMZBS-NEXT:    lw t4, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    or t4, t4, s2
+; RV32IMZBS-NEXT:    xor t2, t2, t5
+; RV32IMZBS-NEXT:    lw t5, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t5
+; RV32IMZBS-NEXT:    lw t5, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t5
+; RV32IMZBS-NEXT:    lw t5, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t5
+; RV32IMZBS-NEXT:    lw t5, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t5
+; RV32IMZBS-NEXT:    lw t5, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t5
+; RV32IMZBS-NEXT:    xor a1, a1, t1
+; RV32IMZBS-NEXT:    lw t1, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a0, t1
+; RV32IMZBS-NEXT:    lw t1, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, ra, t1
+; RV32IMZBS-NEXT:    lw t5, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, s7, t5
+; RV32IMZBS-NEXT:    xor s0, s0, s4
+; RV32IMZBS-NEXT:    xor t0, t0, t6
+; RV32IMZBS-NEXT:    xor a5, t2, a5
+; RV32IMZBS-NEXT:    lw t2, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t2
+; RV32IMZBS-NEXT:    lw t2, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t2
+; RV32IMZBS-NEXT:    lw t2, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t2
+; RV32IMZBS-NEXT:    lw t2, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t1, a1
+; RV32IMZBS-NEXT:    lw t1, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t5, t1
+; RV32IMZBS-NEXT:    xor t2, s0, s9
+; RV32IMZBS-NEXT:    xor t0, t0, s1
+; RV32IMZBS-NEXT:    lw t5, 700(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t5
+; RV32IMZBS-NEXT:    lw t5, 688(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t5
+; RV32IMZBS-NEXT:    lw t5, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t5
+; RV32IMZBS-NEXT:    lw t5, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t5
+; RV32IMZBS-NEXT:    lw t5, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t5
+; RV32IMZBS-NEXT:    srli t5, a2, 2
+; RV32IMZBS-NEXT:    and a2, a2, s8
+; RV32IMZBS-NEXT:    and t5, t5, s8
+; RV32IMZBS-NEXT:    slli a2, a2, 2
+; RV32IMZBS-NEXT:    or a2, t5, a2
+; RV32IMZBS-NEXT:    lw t5, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, a0, t5
+; RV32IMZBS-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t1, a1
+; RV32IMZBS-NEXT:    lw t1, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t2, t1
+; RV32IMZBS-NEXT:    xor t0, t0, s3
+; RV32IMZBS-NEXT:    srli t2, t4, 2
+; RV32IMZBS-NEXT:    and t4, t4, s8
+; RV32IMZBS-NEXT:    and t2, t2, s8
+; RV32IMZBS-NEXT:    slli t4, t4, 2
+; RV32IMZBS-NEXT:    or t2, t2, t4
+; RV32IMZBS-NEXT:    lw t4, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t4
+; RV32IMZBS-NEXT:    lw t4, 632(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, t4
-; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    lw t0, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t1, t0
-; RV32IMZBS-NEXT:    lw t1, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t3, t1
-; RV32IMZBS-NEXT:    xor t3, t6, s7
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a3, a1
-; RV32IMZBS-NEXT:    lw a3, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a4, a3
-; RV32IMZBS-NEXT:    srli a4, a5, 2
-; RV32IMZBS-NEXT:    and a5, a5, s5
-; RV32IMZBS-NEXT:    and a4, a4, s5
-; RV32IMZBS-NEXT:    slli a5, a5, 2
-; RV32IMZBS-NEXT:    or a4, a4, a5
-; RV32IMZBS-NEXT:    xor a5, a7, t0
-; RV32IMZBS-NEXT:    lw a7, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, t1, a7
-; RV32IMZBS-NEXT:    xor t0, t3, s10
-; RV32IMZBS-NEXT:    srli t1, t2, 2
-; RV32IMZBS-NEXT:    and t2, t2, s5
-; RV32IMZBS-NEXT:    and t1, t1, s5
-; RV32IMZBS-NEXT:    slli t2, t2, 2
-; RV32IMZBS-NEXT:    or t1, t1, t2
+; RV32IMZBS-NEXT:    lw t4, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t4
+; RV32IMZBS-NEXT:    xor t0, t0, s6
+; RV32IMZBS-NEXT:    xor a6, a5, a6
+; RV32IMZBS-NEXT:    xor a6, a6, a7
+; RV32IMZBS-NEXT:    lw a7, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a7
+; RV32IMZBS-NEXT:    xor a0, t5, a0
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a1
-; RV32IMZBS-NEXT:    xor a5, a5, a7
-; RV32IMZBS-NEXT:    xor a7, t0, t5
-; RV32IMZBS-NEXT:    srli a1, a4, 1
-; RV32IMZBS-NEXT:    xor a3, a0, a3
-; RV32IMZBS-NEXT:    srli a0, t1, 1
-; RV32IMZBS-NEXT:    and a4, a4, s11
-; RV32IMZBS-NEXT:    and t0, t1, s11
-; RV32IMZBS-NEXT:    xor a5, a5, a7
-; RV32IMZBS-NEXT:    and a7, a1, s11
-; RV32IMZBS-NEXT:    slli a4, a4, 1
-; RV32IMZBS-NEXT:    xor a6, a3, a6
-; RV32IMZBS-NEXT:    and a3, a0, s11
-; RV32IMZBS-NEXT:    slli t0, t0, 1
-; RV32IMZBS-NEXT:    xor a5, a5, a2
-; RV32IMZBS-NEXT:    or a2, a7, a4
-; RV32IMZBS-NEXT:    or a3, a3, t0
-; RV32IMZBS-NEXT:    srli a4, a6, 8
-; RV32IMZBS-NEXT:    srli a7, a6, 24
-; RV32IMZBS-NEXT:    slli t0, a6, 24
-; RV32IMZBS-NEXT:    lw t2, 740(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t0, s5
+; RV32IMZBS-NEXT:    xor a6, a6, a3
+; RV32IMZBS-NEXT:    slli a5, a5, 24
+; RV32IMZBS-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a1
+; RV32IMZBS-NEXT:    srli a1, a2, 1
+; RV32IMZBS-NEXT:    xor t0, a0, t1
+; RV32IMZBS-NEXT:    srli a0, t2, 1
+; RV32IMZBS-NEXT:    lw t4, 744(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a2, a2, t4
+; RV32IMZBS-NEXT:    and a3, t2, t4
+; RV32IMZBS-NEXT:    lw t1, 712(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a7, t1
+; RV32IMZBS-NEXT:    and t1, a1, t4
+; RV32IMZBS-NEXT:    slli a2, a2, 1
+; RV32IMZBS-NEXT:    or a2, t1, a2
+; RV32IMZBS-NEXT:    and t1, a0, t4
+; RV32IMZBS-NEXT:    slli a3, a3, 1
+; RV32IMZBS-NEXT:    or a3, t1, a3
+; RV32IMZBS-NEXT:    lw t2, 736(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and t1, a6, t2
+; RV32IMZBS-NEXT:    slli t1, t1, 8
+; RV32IMZBS-NEXT:    or a5, a5, t1
+; RV32IMZBS-NEXT:    slli t5, t5, 24
+; RV32IMZBS-NEXT:    xor a4, a6, a4
+; RV32IMZBS-NEXT:    srli a6, a6, 8
 ; RV32IMZBS-NEXT:    and a6, a6, t2
-; RV32IMZBS-NEXT:    and a4, a4, t2
-; RV32IMZBS-NEXT:    or a4, a4, a7
-; RV32IMZBS-NEXT:    srli a7, a5, 8
+; RV32IMZBS-NEXT:    srli a4, a4, 24
+; RV32IMZBS-NEXT:    or a4, a6, a4
+; RV32IMZBS-NEXT:    and a6, t0, t2
 ; RV32IMZBS-NEXT:    slli a6, a6, 8
-; RV32IMZBS-NEXT:    or a6, t0, a6
-; RV32IMZBS-NEXT:    srli t0, a5, 24
-; RV32IMZBS-NEXT:    and a7, a7, t2
-; RV32IMZBS-NEXT:    or a7, a7, t0
-; RV32IMZBS-NEXT:    slli t0, a5, 24
-; RV32IMZBS-NEXT:    and a5, a5, t2
-; RV32IMZBS-NEXT:    slli a5, a5, 8
-; RV32IMZBS-NEXT:    or a5, t0, a5
-; RV32IMZBS-NEXT:    or a6, a6, a4
+; RV32IMZBS-NEXT:    or a6, t5, a6
+; RV32IMZBS-NEXT:    xor a7, t0, a7
+; RV32IMZBS-NEXT:    srli t0, t0, 8
+; RV32IMZBS-NEXT:    and t0, t0, t2
+; RV32IMZBS-NEXT:    srli a7, a7, 24
+; RV32IMZBS-NEXT:    or a7, t0, a7
+; RV32IMZBS-NEXT:    or a5, a5, a4
 ; RV32IMZBS-NEXT:    lui a4, 349525
 ; RV32IMZBS-NEXT:    addi a4, a4, 1364
-; RV32IMZBS-NEXT:    or a5, a5, a7
-; RV32IMZBS-NEXT:    srli a7, a6, 4
-; RV32IMZBS-NEXT:    and a6, a6, s4
-; RV32IMZBS-NEXT:    and a7, a7, s4
-; RV32IMZBS-NEXT:    slli a6, a6, 4
-; RV32IMZBS-NEXT:    or a6, a7, a6
+; RV32IMZBS-NEXT:    or a6, a6, a7
 ; RV32IMZBS-NEXT:    srli a7, a5, 4
-; RV32IMZBS-NEXT:    and a5, a5, s4
-; RV32IMZBS-NEXT:    and a7, a7, s4
+; RV32IMZBS-NEXT:    and a5, a5, t3
+; RV32IMZBS-NEXT:    and a7, a7, t3
 ; RV32IMZBS-NEXT:    slli a5, a5, 4
 ; RV32IMZBS-NEXT:    or a5, a7, a5
-; RV32IMZBS-NEXT:    srli a7, a6, 2
-; RV32IMZBS-NEXT:    and a6, a6, s5
-; RV32IMZBS-NEXT:    and a7, a7, s5
-; RV32IMZBS-NEXT:    slli a6, a6, 2
+; RV32IMZBS-NEXT:    srli a7, a6, 4
+; RV32IMZBS-NEXT:    and a6, a6, t3
+; RV32IMZBS-NEXT:    and a7, a7, t3
+; RV32IMZBS-NEXT:    slli a6, a6, 4
 ; RV32IMZBS-NEXT:    or a6, a7, a6
 ; RV32IMZBS-NEXT:    srli a7, a5, 2
-; RV32IMZBS-NEXT:    and a5, a5, s5
-; RV32IMZBS-NEXT:    and a7, a7, s5
+; RV32IMZBS-NEXT:    and a5, a5, s8
+; RV32IMZBS-NEXT:    and a7, a7, s8
 ; RV32IMZBS-NEXT:    slli a5, a5, 2
 ; RV32IMZBS-NEXT:    or a5, a7, a5
-; RV32IMZBS-NEXT:    srli a7, a6, 1
-; RV32IMZBS-NEXT:    and a6, a6, s11
-; RV32IMZBS-NEXT:    and a7, a7, a4
-; RV32IMZBS-NEXT:    slli a6, a6, 1
+; RV32IMZBS-NEXT:    srli a7, a6, 2
+; RV32IMZBS-NEXT:    and a6, a6, s8
+; RV32IMZBS-NEXT:    and a7, a7, s8
+; RV32IMZBS-NEXT:    slli a6, a6, 2
 ; RV32IMZBS-NEXT:    or a6, a7, a6
 ; RV32IMZBS-NEXT:    srli a7, a5, 1
-; RV32IMZBS-NEXT:    and a5, a5, s11
+; RV32IMZBS-NEXT:    and a5, a5, t4
 ; RV32IMZBS-NEXT:    and a7, a7, a4
 ; RV32IMZBS-NEXT:    slli a5, a5, 1
 ; RV32IMZBS-NEXT:    or a5, a7, a5
-; RV32IMZBS-NEXT:    srli a6, a6, 1
+; RV32IMZBS-NEXT:    srli a7, a6, 1
+; RV32IMZBS-NEXT:    and a6, a6, t4
+; RV32IMZBS-NEXT:    and a7, a7, a4
+; RV32IMZBS-NEXT:    slli a6, a6, 1
+; RV32IMZBS-NEXT:    or a6, a7, a6
 ; RV32IMZBS-NEXT:    srli a5, a5, 1
+; RV32IMZBS-NEXT:    srli a6, a6, 1
 ; RV32IMZBS-NEXT:    lw a7, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 716(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a5, a5, a7
-; RV32IMZBS-NEXT:    srli a7, a6, 8
-; RV32IMZBS-NEXT:    srli t0, a6, 24
-; RV32IMZBS-NEXT:    slli t1, a6, 24
-; RV32IMZBS-NEXT:    and a6, a6, t2
+; RV32IMZBS-NEXT:    lw a7, 716(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, a7
+; RV32IMZBS-NEXT:    srli a7, a5, 8
+; RV32IMZBS-NEXT:    srli t0, a5, 24
+; RV32IMZBS-NEXT:    slli t1, a5, 24
+; RV32IMZBS-NEXT:    and a5, a5, t2
 ; RV32IMZBS-NEXT:    and a7, a7, t2
 ; RV32IMZBS-NEXT:    or a7, a7, t0
-; RV32IMZBS-NEXT:    srli t0, a5, 8
-; RV32IMZBS-NEXT:    slli a6, a6, 8
-; RV32IMZBS-NEXT:    or a6, t1, a6
-; RV32IMZBS-NEXT:    srli t1, a5, 24
+; RV32IMZBS-NEXT:    srli t0, a6, 8
+; RV32IMZBS-NEXT:    slli a5, a5, 8
+; RV32IMZBS-NEXT:    or a5, t1, a5
+; RV32IMZBS-NEXT:    srli t1, a6, 24
 ; RV32IMZBS-NEXT:    and t0, t0, t2
 ; RV32IMZBS-NEXT:    or t0, t0, t1
-; RV32IMZBS-NEXT:    and t1, a5, t2
-; RV32IMZBS-NEXT:    slli a5, a5, 24
+; RV32IMZBS-NEXT:    and t1, a6, t2
+; RV32IMZBS-NEXT:    slli a6, a6, 24
 ; RV32IMZBS-NEXT:    slli t1, t1, 8
-; RV32IMZBS-NEXT:    or a5, a5, t1
-; RV32IMZBS-NEXT:    or a6, a6, a7
-; RV32IMZBS-NEXT:    or a5, a5, t0
-; RV32IMZBS-NEXT:    srli a7, a6, 4
-; RV32IMZBS-NEXT:    and a6, a6, s4
-; RV32IMZBS-NEXT:    srli t0, a5, 4
-; RV32IMZBS-NEXT:    and a5, a5, s4
-; RV32IMZBS-NEXT:    and a7, a7, s4
-; RV32IMZBS-NEXT:    and t0, t0, s4
-; RV32IMZBS-NEXT:    slli a6, a6, 4
+; RV32IMZBS-NEXT:    or a6, a6, t1
+; RV32IMZBS-NEXT:    or a5, a5, a7
+; RV32IMZBS-NEXT:    or a6, a6, t0
+; RV32IMZBS-NEXT:    srli a7, a5, 4
+; RV32IMZBS-NEXT:    and a5, a5, t3
+; RV32IMZBS-NEXT:    srli t0, a6, 4
+; RV32IMZBS-NEXT:    and a6, a6, t3
+; RV32IMZBS-NEXT:    and a7, a7, t3
+; RV32IMZBS-NEXT:    and t0, t0, t3
 ; RV32IMZBS-NEXT:    slli a5, a5, 4
-; RV32IMZBS-NEXT:    or a6, a7, a6
-; RV32IMZBS-NEXT:    or a5, t0, a5
-; RV32IMZBS-NEXT:    srli a7, a6, 2
-; RV32IMZBS-NEXT:    and a6, a6, s5
-; RV32IMZBS-NEXT:    srli t0, a5, 2
-; RV32IMZBS-NEXT:    and a5, a5, s5
-; RV32IMZBS-NEXT:    and a7, a7, s5
-; RV32IMZBS-NEXT:    and t0, t0, s5
-; RV32IMZBS-NEXT:    slli a6, a6, 2
-; RV32IMZBS-NEXT:    or a6, a7, a6
+; RV32IMZBS-NEXT:    slli a6, a6, 4
+; RV32IMZBS-NEXT:    or a5, a7, a5
+; RV32IMZBS-NEXT:    or a6, t0, a6
+; RV32IMZBS-NEXT:    srli a7, a5, 2
+; RV32IMZBS-NEXT:    and a5, a5, s8
+; RV32IMZBS-NEXT:    srli t0, a6, 2
+; RV32IMZBS-NEXT:    and a6, a6, s8
+; RV32IMZBS-NEXT:    and a7, a7, s8
+; RV32IMZBS-NEXT:    and t0, t0, s8
 ; RV32IMZBS-NEXT:    slli a5, a5, 2
-; RV32IMZBS-NEXT:    or a5, t0, a5
-; RV32IMZBS-NEXT:    srli a7, a6, 1
-; RV32IMZBS-NEXT:    and a6, a6, s11
-; RV32IMZBS-NEXT:    and t0, a5, s11
-; RV32IMZBS-NEXT:    srli a5, a5, 1
+; RV32IMZBS-NEXT:    or a5, a7, a5
+; RV32IMZBS-NEXT:    slli a6, a6, 2
+; RV32IMZBS-NEXT:    or a6, t0, a6
+; RV32IMZBS-NEXT:    srli a7, a5, 1
+; RV32IMZBS-NEXT:    and a5, a5, t4
+; RV32IMZBS-NEXT:    and t0, a6, t4
+; RV32IMZBS-NEXT:    srli a6, a6, 1
 ; RV32IMZBS-NEXT:    and a7, a7, a4
-; RV32IMZBS-NEXT:    and a4, a5, a4
-; RV32IMZBS-NEXT:    slli a6, a6, 1
-; RV32IMZBS-NEXT:    or a5, a7, a6
+; RV32IMZBS-NEXT:    and a4, a6, a4
+; RV32IMZBS-NEXT:    slli a5, a5, 1
+; RV32IMZBS-NEXT:    or a5, a7, a5
 ; RV32IMZBS-NEXT:    slli t0, t0, 1
 ; RV32IMZBS-NEXT:    or a4, a4, t0
 ; RV32IMZBS-NEXT:    slli a1, a1, 31
@@ -11633,12 +11618,12 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    or a0, a4, a0
 ; RV32IMZBS-NEXT:    srli a2, a2, 1
 ; RV32IMZBS-NEXT:    srli a3, a3, 1
-; RV32IMZBS-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 728(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    sw a1, 0(a4)
 ; RV32IMZBS-NEXT:    sw a2, 4(a4)
 ; RV32IMZBS-NEXT:    sw a0, 8(a4)
 ; RV32IMZBS-NEXT:    sw a3, 12(a4)
-; RV32IMZBS-NEXT:    lw a4, 736(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    sw a1, 0(a4)
 ; RV32IMZBS-NEXT:    sw a2, 4(a4)
 ; RV32IMZBS-NEXT:    sw a0, 8(a4)
@@ -11677,6 +11662,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    sd s11, 984(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sd a5, 976(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sd a4, 968(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    mv t4, a1
 ; RV64IMZBS-NEXT:    mv t5, a0
 ; RV64IMZBS-NEXT:    srli a5, a2, 24
 ; RV64IMZBS-NEXT:    lui s8, 4080
@@ -11690,7 +11676,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    sd a0, 920(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    lui t6, 61681
 ; RV64IMZBS-NEXT:    lui s2, 209715
-; RV64IMZBS-NEXT:    lui t4, 349525
+; RV64IMZBS-NEXT:    lui s5, 349525
 ; RV64IMZBS-NEXT:    srli t2, t5, 24
 ; RV64IMZBS-NEXT:    srli s0, t5, 8
 ; RV64IMZBS-NEXT:    srli s1, t5, 40
@@ -11706,65 +11692,65 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    slli t3, t3, 24
 ; RV64IMZBS-NEXT:    and a7, a7, t3
 ; RV64IMZBS-NEXT:    or a5, a7, a5
-; RV64IMZBS-NEXT:    srliw a0, a3, 24
-; RV64IMZBS-NEXT:    addi s5, a6, -256
-; RV64IMZBS-NEXT:    and a4, a4, s5
+; RV64IMZBS-NEXT:    srliw a1, a3, 24
+; RV64IMZBS-NEXT:    addi a0, a6, -256
+; RV64IMZBS-NEXT:    and a4, a4, a0
 ; RV64IMZBS-NEXT:    or a6, a4, t0
 ; RV64IMZBS-NEXT:    and a4, a2, s8
 ; RV64IMZBS-NEXT:    slli t1, t1, 32
 ; RV64IMZBS-NEXT:    addi s10, t6, -241
 ; RV64IMZBS-NEXT:    addi a7, s2, 819
-; RV64IMZBS-NEXT:    addi t0, t4, 1365
+; RV64IMZBS-NEXT:    addi t0, s5, 1365
 ; RV64IMZBS-NEXT:    slli a4, a4, 24
 ; RV64IMZBS-NEXT:    or a4, a4, t1
 ; RV64IMZBS-NEXT:    slli t1, s10, 32
 ; RV64IMZBS-NEXT:    add s10, s10, t1
 ; RV64IMZBS-NEXT:    slli t1, a7, 32
-; RV64IMZBS-NEXT:    add t4, a7, t1
+; RV64IMZBS-NEXT:    add s9, a7, t1
 ; RV64IMZBS-NEXT:    slli a7, t0, 32
-; RV64IMZBS-NEXT:    add s9, t0, a7
+; RV64IMZBS-NEXT:    add s5, t0, a7
 ; RV64IMZBS-NEXT:    slli a7, a3, 56
 ; RV64IMZBS-NEXT:    and t0, t2, s8
 ; RV64IMZBS-NEXT:    and t1, s0, t3
 ; RV64IMZBS-NEXT:    or t0, t1, t0
-; RV64IMZBS-NEXT:    srli t1, a1, 24
-; RV64IMZBS-NEXT:    and t2, s1, s5
+; RV64IMZBS-NEXT:    srli t1, t4, 24
+; RV64IMZBS-NEXT:    and t2, s1, a0
 ; RV64IMZBS-NEXT:    or t2, t2, s3
 ; RV64IMZBS-NEXT:    and t6, t5, s8
 ; RV64IMZBS-NEXT:    slli s4, s4, 32
 ; RV64IMZBS-NEXT:    slli t6, t6, 24
 ; RV64IMZBS-NEXT:    or t6, t6, s4
-; RV64IMZBS-NEXT:    srli s0, a1, 8
+; RV64IMZBS-NEXT:    srli s0, t4, 8
 ; RV64IMZBS-NEXT:    and s1, s7, s8
 ; RV64IMZBS-NEXT:    mv s7, t3
 ; RV64IMZBS-NEXT:    sd t3, 960(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    and s2, ra, t3
 ; RV64IMZBS-NEXT:    or s1, s2, s1
-; RV64IMZBS-NEXT:    srli s2, a1, 40
-; RV64IMZBS-NEXT:    and s3, s6, s5
+; RV64IMZBS-NEXT:    srli s2, t4, 40
+; RV64IMZBS-NEXT:    and s3, s6, a0
 ; RV64IMZBS-NEXT:    or s3, s3, s11
 ; RV64IMZBS-NEXT:    and s4, a3, s8
-; RV64IMZBS-NEXT:    slli t3, a0, 32
+; RV64IMZBS-NEXT:    slli t3, a1, 32
 ; RV64IMZBS-NEXT:    slli s4, s4, 24
 ; RV64IMZBS-NEXT:    or t3, s4, t3
-; RV64IMZBS-NEXT:    srli s4, a1, 56
+; RV64IMZBS-NEXT:    srli s4, t4, 56
 ; RV64IMZBS-NEXT:    and t1, t1, s8
-; RV64IMZBS-NEXT:    lui a0, 4080
 ; RV64IMZBS-NEXT:    and s0, s0, s7
 ; RV64IMZBS-NEXT:    or t1, s0, t1
-; RV64IMZBS-NEXT:    srliw s0, a1, 24
-; RV64IMZBS-NEXT:    and s2, s2, s5
+; RV64IMZBS-NEXT:    srliw s0, t4, 24
+; RV64IMZBS-NEXT:    and s2, s2, a0
 ; RV64IMZBS-NEXT:    or s2, s2, s4
-; RV64IMZBS-NEXT:    and s4, a1, a0
+; RV64IMZBS-NEXT:    and s4, t4, s8
 ; RV64IMZBS-NEXT:    slli s0, s0, 32
 ; RV64IMZBS-NEXT:    slli s4, s4, 24
 ; RV64IMZBS-NEXT:    or s0, s4, s0
-; RV64IMZBS-NEXT:    slli s4, a1, 56
-; RV64IMZBS-NEXT:    sd s5, 944(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, s5
-; RV64IMZBS-NEXT:    and a0, t5, s5
-; RV64IMZBS-NEXT:    and a3, a3, s5
-; RV64IMZBS-NEXT:    and a1, a1, s5
+; RV64IMZBS-NEXT:    slli s4, t4, 56
+; RV64IMZBS-NEXT:    mv a1, a0
+; RV64IMZBS-NEXT:    sd a0, 936(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, a0
+; RV64IMZBS-NEXT:    and a0, t5, a0
+; RV64IMZBS-NEXT:    and a3, a3, a1
+; RV64IMZBS-NEXT:    and a1, t4, a1
 ; RV64IMZBS-NEXT:    slli a2, a2, 40
 ; RV64IMZBS-NEXT:    slli a0, a0, 40
 ; RV64IMZBS-NEXT:    slli a3, a3, 40
@@ -11809,47 +11795,47 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    or a3, a6, a3
 ; RV64IMZBS-NEXT:    or a1, a7, a1
 ; RV64IMZBS-NEXT:    srli a4, a2, 2
-; RV64IMZBS-NEXT:    sd t4, 936(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, t4
+; RV64IMZBS-NEXT:    sd s9, 944(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, s9
 ; RV64IMZBS-NEXT:    srli a5, a0, 2
-; RV64IMZBS-NEXT:    and a0, a0, t4
+; RV64IMZBS-NEXT:    and a0, a0, s9
 ; RV64IMZBS-NEXT:    srli a6, a3, 2
-; RV64IMZBS-NEXT:    and a3, a3, t4
+; RV64IMZBS-NEXT:    and a3, a3, s9
 ; RV64IMZBS-NEXT:    srli a7, a1, 2
-; RV64IMZBS-NEXT:    and a1, a1, t4
-; RV64IMZBS-NEXT:    and a4, a4, t4
+; RV64IMZBS-NEXT:    and a1, a1, s9
+; RV64IMZBS-NEXT:    and a4, a4, s9
 ; RV64IMZBS-NEXT:    slli a2, a2, 2
-; RV64IMZBS-NEXT:    and a5, a5, t4
+; RV64IMZBS-NEXT:    and a5, a5, s9
 ; RV64IMZBS-NEXT:    slli a0, a0, 2
-; RV64IMZBS-NEXT:    and a6, a6, t4
+; RV64IMZBS-NEXT:    and a6, a6, s9
 ; RV64IMZBS-NEXT:    slli a3, a3, 2
-; RV64IMZBS-NEXT:    and a7, a7, t4
+; RV64IMZBS-NEXT:    and a7, a7, s9
 ; RV64IMZBS-NEXT:    slli a1, a1, 2
 ; RV64IMZBS-NEXT:    or a2, a4, a2
 ; RV64IMZBS-NEXT:    or a0, a5, a0
 ; RV64IMZBS-NEXT:    or a3, a6, a3
 ; RV64IMZBS-NEXT:    or a1, a7, a1
 ; RV64IMZBS-NEXT:    srli a4, a2, 1
-; RV64IMZBS-NEXT:    sd s9, 928(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, s9
+; RV64IMZBS-NEXT:    sd s5, 928(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, s5
 ; RV64IMZBS-NEXT:    srli a5, a0, 1
-; RV64IMZBS-NEXT:    and a0, a0, s9
+; RV64IMZBS-NEXT:    and a0, a0, s5
 ; RV64IMZBS-NEXT:    srli a6, a3, 1
-; RV64IMZBS-NEXT:    and a3, a3, s9
+; RV64IMZBS-NEXT:    and a3, a3, s5
 ; RV64IMZBS-NEXT:    srli a7, a1, 1
-; RV64IMZBS-NEXT:    and a1, a1, s9
-; RV64IMZBS-NEXT:    and a4, a4, s9
+; RV64IMZBS-NEXT:    and a1, a1, s5
+; RV64IMZBS-NEXT:    and a4, a4, s5
 ; RV64IMZBS-NEXT:    slli a2, a2, 1
-; RV64IMZBS-NEXT:    and a5, a5, s9
+; RV64IMZBS-NEXT:    and a5, a5, s5
 ; RV64IMZBS-NEXT:    slli t0, a0, 1
-; RV64IMZBS-NEXT:    and a6, a6, s9
+; RV64IMZBS-NEXT:    and a6, a6, s5
 ; RV64IMZBS-NEXT:    slli a3, a3, 1
-; RV64IMZBS-NEXT:    and a7, a7, s9
+; RV64IMZBS-NEXT:    and a7, a7, s5
 ; RV64IMZBS-NEXT:    slli a0, a1, 1
 ; RV64IMZBS-NEXT:    or t4, a4, a2
 ; RV64IMZBS-NEXT:    or t5, a5, t0
 ; RV64IMZBS-NEXT:    srli a2, t0, 63
-; RV64IMZBS-NEXT:    or t0, a6, a3
+; RV64IMZBS-NEXT:    or t1, a6, a3
 ; RV64IMZBS-NEXT:    or s5, a7, a0
 ; RV64IMZBS-NEXT:    srli a0, a0, 63
 ; RV64IMZBS-NEXT:    slli a3, t4, 1
@@ -11857,7 +11843,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    slli a5, t4, 2
 ; RV64IMZBS-NEXT:    andi a6, t5, 4
 ; RV64IMZBS-NEXT:    slli a7, t4, 3
-; RV64IMZBS-NEXT:    andi t1, t5, 8
+; RV64IMZBS-NEXT:    andi t0, t5, 8
 ; RV64IMZBS-NEXT:    slli t2, t4, 4
 ; RV64IMZBS-NEXT:    andi t3, t5, 16
 ; RV64IMZBS-NEXT:    slli t6, t4, 5
@@ -11870,7 +11856,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
 ; RV64IMZBS-NEXT:    and a1, a2, s4
 ; RV64IMZBS-NEXT:    sd a1, 912(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    slli a2, t0, 63
+; RV64IMZBS-NEXT:    slli a2, t1, 63
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    and a0, a0, a2
@@ -11879,34 +11865,35 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    seqz a2, a4
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 880(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a2, t4, 8
 ; RV64IMZBS-NEXT:    seqz a3, a6
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
 ; RV64IMZBS-NEXT:    and a3, a3, a5
-; RV64IMZBS-NEXT:    sd a3, 864(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a3, 848(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a3, t5, 256
-; RV64IMZBS-NEXT:    seqz a4, t1
+; RV64IMZBS-NEXT:    seqz a4, t0
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
 ; RV64IMZBS-NEXT:    and a1, a4, a7
-; RV64IMZBS-NEXT:    sd a1, 848(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 840(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a4, t4, 9
 ; RV64IMZBS-NEXT:    seqz a5, t3
 ; RV64IMZBS-NEXT:    addi a5, a5, -1
-; RV64IMZBS-NEXT:    and t2, a5, t2
+; RV64IMZBS-NEXT:    and t3, a5, t2
 ; RV64IMZBS-NEXT:    andi a5, t5, 512
 ; RV64IMZBS-NEXT:    seqz a6, s0
 ; RV64IMZBS-NEXT:    addi a6, a6, -1
-; RV64IMZBS-NEXT:    and t3, a6, t6
+; RV64IMZBS-NEXT:    and t6, a6, t6
 ; RV64IMZBS-NEXT:    slli a6, t4, 10
 ; RV64IMZBS-NEXT:    seqz a7, s2
 ; RV64IMZBS-NEXT:    addi a7, a7, -1
 ; RV64IMZBS-NEXT:    and a1, a7, s1
-; RV64IMZBS-NEXT:    sd a1, 888(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 872(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a7, t5, 1024
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    and t6, a0, s3
+; RV64IMZBS-NEXT:    and a0, a0, s3
+; RV64IMZBS-NEXT:    sd a0, 904(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a0, t4, 11
 ; RV64IMZBS-NEXT:    seqz a3, a3
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
@@ -11915,235 +11902,234 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    seqz a3, a5
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
 ; RV64IMZBS-NEXT:    and a3, a3, a4
-; RV64IMZBS-NEXT:    sd a3, 840(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a3, 792(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a3, t4, 12
 ; RV64IMZBS-NEXT:    seqz a4, a7
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
 ; RV64IMZBS-NEXT:    and a1, a4, a6
-; RV64IMZBS-NEXT:    sd a1, 904(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 832(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a4, a2, 11
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
-; RV64IMZBS-NEXT:    and a6, a4, a0
+; RV64IMZBS-NEXT:    and a0, a4, a0
+; RV64IMZBS-NEXT:    sd a0, 880(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 12
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 776(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 13
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 13
-; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 816(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a6, a0, a3
 ; RV64IMZBS-NEXT:    bexti a0, a2, 14
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 14
-; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 856(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a7, a0, a3
 ; RV64IMZBS-NEXT:    bexti a0, a2, 15
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 15
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 16
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 16
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 736(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 824(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 17
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 17
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 728(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 856(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 18
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 18
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 768(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 888(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 19
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 19
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 800(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 712(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 20
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 20
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 832(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 704(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 21
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 21
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 872(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 22
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 22
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 680(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 768(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 23
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 23
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 664(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 800(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 24
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 24
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 712(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 672(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 25
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 25
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 752(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 656(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 26
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 26
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 792(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 696(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 27
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 27
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 808(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 728(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 28
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 28
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 824(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 760(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 29
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 29
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 608(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 776(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 30
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 30
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 600(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 808(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sraiw a0, t5, 31
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 31
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 648(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 816(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 32
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 32
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 672(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 608(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 33
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 33
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 704(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 584(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 34
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 34
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 632(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 35
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 35
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 760(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 648(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 36
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 36
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 688(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 37
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 37
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 552(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 720(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 38
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 38
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 544(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 736(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 39
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 39
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 568(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 752(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 40
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 40
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 592(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 552(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 41
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 41
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 640(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 536(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 42
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 42
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 656(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 568(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 43
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 43
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 688(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 592(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 44
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 44
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 696(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 624(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 45
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 45
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 720(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 640(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 46
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 46
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 496(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 664(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 47
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 47
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 488(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 680(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 48
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 48
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 520(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 496(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 49
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 49
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 536(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 480(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 50
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 50
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 560(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 512(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 51
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 51
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 576(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 544(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 52
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 52
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 584(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 560(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 53
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 53
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 616(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 576(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 54
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 54
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 624(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 600(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 55
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 55
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 632(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 616(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 56
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 56
@@ -12163,7 +12149,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 59
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 480(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 488(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 60
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 60
@@ -12173,7 +12159,7 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 61
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 512(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 520(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, t5, 1
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
@@ -12186,650 +12172,650 @@ define void @commutative_clmulh_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    andi a0, s5, 2
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 1
+; RV64IMZBS-NEXT:    slli a2, t1, 1
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 448(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 432(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 4
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 2
+; RV64IMZBS-NEXT:    slli a2, t1, 2
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 432(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 416(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 8
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 3
+; RV64IMZBS-NEXT:    slli a2, t1, 3
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 408(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 400(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 16
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 4
+; RV64IMZBS-NEXT:    slli a2, t1, 4
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 400(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 384(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 32
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 5
+; RV64IMZBS-NEXT:    slli a2, t1, 5
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 376(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 368(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 64
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 6
+; RV64IMZBS-NEXT:    slli a2, t1, 6
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 440(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 424(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 128
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 7
+; RV64IMZBS-NEXT:    slli a2, t1, 7
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 360(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 448(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 256
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 8
+; RV64IMZBS-NEXT:    slli a2, t1, 8
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 344(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 336(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 512
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 9
+; RV64IMZBS-NEXT:    slli a2, t1, 9
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 392(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 328(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 1024
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 10
+; RV64IMZBS-NEXT:    slli a2, t1, 10
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 424(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 360(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    not a0, s5
 ; RV64IMZBS-NEXT:    bexti a2, a0, 11
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 11
+; RV64IMZBS-NEXT:    slli a3, t1, 11
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 12
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 12
+; RV64IMZBS-NEXT:    slli a3, t1, 12
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 440(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 13
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 13
+; RV64IMZBS-NEXT:    slli a3, t1, 13
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 14
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 14
+; RV64IMZBS-NEXT:    slli a3, t1, 14
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 15
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 15
+; RV64IMZBS-NEXT:    slli a3, t1, 15
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 16
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 16
+; RV64IMZBS-NEXT:    slli a3, t1, 16
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 17
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 17
+; RV64IMZBS-NEXT:    slli a3, t1, 17
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 18
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 18
+; RV64IMZBS-NEXT:    slli a3, t1, 18
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 19
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 19
+; RV64IMZBS-NEXT:    slli a3, t1, 19
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 20
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 20
+; RV64IMZBS-NEXT:    slli a3, t1, 20
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 21
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 21
+; RV64IMZBS-NEXT:    slli a3, t1, 21
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 22
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 22
+; RV64IMZBS-NEXT:    slli a3, t1, 22
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 23
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 23
+; RV64IMZBS-NEXT:    slli a3, t1, 23
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 24
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 24
+; RV64IMZBS-NEXT:    slli a3, t1, 24
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 25
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 25
+; RV64IMZBS-NEXT:    slli a3, t1, 25
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 26
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 26
+; RV64IMZBS-NEXT:    slli a3, t1, 26
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 27
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 27
+; RV64IMZBS-NEXT:    slli a3, t1, 27
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 28
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 28
+; RV64IMZBS-NEXT:    slli a3, t1, 28
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 29
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 29
+; RV64IMZBS-NEXT:    slli a3, t1, 29
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 30
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 30
+; RV64IMZBS-NEXT:    slli a3, t1, 30
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sraiw a2, s5, 31
 ; RV64IMZBS-NEXT:    seqz a2, a2
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 31
+; RV64IMZBS-NEXT:    slli a3, t1, 31
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 344(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 32
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 32
+; RV64IMZBS-NEXT:    slli a3, t1, 32
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 33
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 33
+; RV64IMZBS-NEXT:    slli a3, t1, 33
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 34
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 34
+; RV64IMZBS-NEXT:    slli a3, t1, 34
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 35
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 35
+; RV64IMZBS-NEXT:    slli a3, t1, 35
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 36
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 36
+; RV64IMZBS-NEXT:    slli a3, t1, 36
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 37
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 37
+; RV64IMZBS-NEXT:    slli a3, t1, 37
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 38
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 38
+; RV64IMZBS-NEXT:    slli a3, t1, 38
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 39
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 39
+; RV64IMZBS-NEXT:    slli a3, t1, 39
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 40
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 40
+; RV64IMZBS-NEXT:    slli a3, t1, 40
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 41
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 41
+; RV64IMZBS-NEXT:    slli a3, t1, 41
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 42
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 42
+; RV64IMZBS-NEXT:    slli a3, t1, 42
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 43
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 43
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli s1, t1, 43
+; RV64IMZBS-NEXT:    and a2, a2, s1
+; RV64IMZBS-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 44
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 44
+; RV64IMZBS-NEXT:    slli a3, t1, 44
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 45
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 45
+; RV64IMZBS-NEXT:    slli a3, t1, 45
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 46
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 46
-; RV64IMZBS-NEXT:    and s11, a2, a3
+; RV64IMZBS-NEXT:    slli a3, t1, 46
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 47
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a4, t0, 47
-; RV64IMZBS-NEXT:    and s9, a2, a4
+; RV64IMZBS-NEXT:    slli a3, t1, 47
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 48
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 48
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a5, t1, 48
+; RV64IMZBS-NEXT:    and s10, a2, a5
 ; RV64IMZBS-NEXT:    bexti a2, a0, 49
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 49
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a4, t1, 49
+; RV64IMZBS-NEXT:    and s9, a2, a4
 ; RV64IMZBS-NEXT:    bexti a2, a0, 50
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 50
+; RV64IMZBS-NEXT:    slli a3, t1, 50
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 16(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 51
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli s0, t0, 51
-; RV64IMZBS-NEXT:    and a2, a2, s0
-; RV64IMZBS-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a3, t1, 51
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 52
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli s1, t0, 52
-; RV64IMZBS-NEXT:    and a2, a2, s1
-; RV64IMZBS-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a3, t1, 52
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 53
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 53
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli s0, t1, 53
+; RV64IMZBS-NEXT:    and a2, a2, s0
+; RV64IMZBS-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 54
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 54
+; RV64IMZBS-NEXT:    slli a3, t1, 54
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 120(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 55
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 55
+; RV64IMZBS-NEXT:    slli a3, t1, 55
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 120(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 56
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 56
+; RV64IMZBS-NEXT:    slli a3, t1, 56
 ; RV64IMZBS-NEXT:    and s6, a2, a3
 ; RV64IMZBS-NEXT:    bexti a3, a0, 57
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
-; RV64IMZBS-NEXT:    slli a4, t0, 57
+; RV64IMZBS-NEXT:    slli a4, t1, 57
 ; RV64IMZBS-NEXT:    and s4, a3, a4
 ; RV64IMZBS-NEXT:    bexti a4, a0, 58
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
-; RV64IMZBS-NEXT:    slli a5, t0, 58
+; RV64IMZBS-NEXT:    slli a5, t1, 58
 ; RV64IMZBS-NEXT:    and s7, a4, a5
 ; RV64IMZBS-NEXT:    bexti a5, a0, 59
 ; RV64IMZBS-NEXT:    addi a5, a5, -1
-; RV64IMZBS-NEXT:    slli a7, t0, 59
-; RV64IMZBS-NEXT:    and s8, a5, a7
-; RV64IMZBS-NEXT:    bexti a7, a0, 60
-; RV64IMZBS-NEXT:    addi a7, a7, -1
-; RV64IMZBS-NEXT:    slli t1, t0, 60
-; RV64IMZBS-NEXT:    and s10, a7, t1
-; RV64IMZBS-NEXT:    bexti t1, a0, 61
-; RV64IMZBS-NEXT:    addi t1, t1, -1
-; RV64IMZBS-NEXT:    slli a1, t0, 61
-; RV64IMZBS-NEXT:    and a1, t1, a1
-; RV64IMZBS-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli t0, t1, 59
+; RV64IMZBS-NEXT:    and s8, a5, t0
+; RV64IMZBS-NEXT:    bexti t0, a0, 60
+; RV64IMZBS-NEXT:    addi t0, t0, -1
+; RV64IMZBS-NEXT:    slli t2, t1, 60
+; RV64IMZBS-NEXT:    and s11, t0, t2
+; RV64IMZBS-NEXT:    bexti t2, a0, 61
+; RV64IMZBS-NEXT:    addi t2, t2, -1
+; RV64IMZBS-NEXT:    slli a1, t1, 61
+; RV64IMZBS-NEXT:    and a1, t2, a1
+; RV64IMZBS-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a1, s5, 1
 ; RV64IMZBS-NEXT:    seqz a1, a1
 ; RV64IMZBS-NEXT:    addi a1, a1, -1
-; RV64IMZBS-NEXT:    and a1, a1, t0
-; RV64IMZBS-NEXT:    slli t0, t0, 62
+; RV64IMZBS-NEXT:    and a1, a1, t1
+; RV64IMZBS-NEXT:    slli t1, t1, 62
 ; RV64IMZBS-NEXT:    bexti a0, a0, 62
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    and a0, a0, t0
+; RV64IMZBS-NEXT:    and a0, a0, t1
 ; RV64IMZBS-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    ld a0, 880(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor s3, t5, a0
 ; RV64IMZBS-NEXT:    ld a0, 864(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 848(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s3, t5, a0
+; RV64IMZBS-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 840(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s5, a0, a2
-; RV64IMZBS-NEXT:    xor t2, t2, t3
-; RV64IMZBS-NEXT:    xor t4, t6, s2
-; RV64IMZBS-NEXT:    ld a0, 776(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t5, a6, a0
-; RV64IMZBS-NEXT:    ld a0, 736(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 728(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t2, t3, t6
+; RV64IMZBS-NEXT:    ld a0, 792(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, s2, a0
+; RV64IMZBS-NEXT:    xor t5, a6, a7
+; RV64IMZBS-NEXT:    ld a0, 712(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 704(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, a0, a2
-; RV64IMZBS-NEXT:    ld a0, 680(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld s0, 664(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a0, 672(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 656(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, a0, s0
 ; RV64IMZBS-NEXT:    ld a0, 608(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s1, 584(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, a0, s1
 ; RV64IMZBS-NEXT:    ld a0, 552(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 544(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 536(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, a0, a2
 ; RV64IMZBS-NEXT:    ld a0, 496(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 488(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 480(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, a0, a2
 ; RV64IMZBS-NEXT:    ld a0, 464(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a2, 456(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, a0, a2
-; RV64IMZBS-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, a1, a0
 ; RV64IMZBS-NEXT:    ld a0, 432(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a1, 408(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a0, a0, a1
+; RV64IMZBS-NEXT:    xor t3, a1, a0
+; RV64IMZBS-NEXT:    ld a0, 416(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a1, 400(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 376(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a0, a0, a1
+; RV64IMZBS-NEXT:    ld a1, 384(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a1, a1, a2
-; RV64IMZBS-NEXT:    ld a2, 360(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a3, 344(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 336(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a3, 328(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a2, a2, a3
-; RV64IMZBS-NEXT:    ld a3, 304(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a4, 296(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a3, 280(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a4, 264(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a3, a3, a4
-; RV64IMZBS-NEXT:    ld a4, 248(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a5, 232(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a4, 224(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 208(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a4, a5
-; RV64IMZBS-NEXT:    ld a5, 192(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 176(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a6, 168(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a5, a6
-; RV64IMZBS-NEXT:    ld a6, 136(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a7, 112(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a6, 112(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a7, 104(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a6, a7
 ; RV64IMZBS-NEXT:    ld a7, 56(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld ra, 48(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, a7, ra
-; RV64IMZBS-NEXT:    xor s9, s11, s9
+; RV64IMZBS-NEXT:    xor s9, s10, s9
 ; RV64IMZBS-NEXT:    xor s4, s6, s4
 ; RV64IMZBS-NEXT:    xor s3, s3, s5
-; RV64IMZBS-NEXT:    ld s5, 888(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 872(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t2, t2, s5
-; RV64IMZBS-NEXT:    ld s5, 840(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 832(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t4, s5
-; RV64IMZBS-NEXT:    ld s5, 816(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 784(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t5, s5
-; RV64IMZBS-NEXT:    ld s5, 768(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 744(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, t6, s5
-; RV64IMZBS-NEXT:    ld s5, 712(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 696(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s0, s5
-; RV64IMZBS-NEXT:    ld s5, 648(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 632(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s1, s5
 ; RV64IMZBS-NEXT:    ld s5, 568(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, s2, s5
-; RV64IMZBS-NEXT:    ld s5, 520(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 512(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s5
 ; RV64IMZBS-NEXT:    ld s5, 472(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s5
 ; RV64IMZBS-NEXT:    xor a0, t3, a0
-; RV64IMZBS-NEXT:    ld t3, 440(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 424(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a1, a1, t3
-; RV64IMZBS-NEXT:    ld t3, 392(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 360(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a2, a2, t3
-; RV64IMZBS-NEXT:    ld t3, 328(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 304(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a3, a3, t3
-; RV64IMZBS-NEXT:    ld t3, 280(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 248(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a4, t3
-; RV64IMZBS-NEXT:    ld t3, 224(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 200(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a5, t3
-; RV64IMZBS-NEXT:    ld t3, 152(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 136(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a6, t3
 ; RV64IMZBS-NEXT:    ld t3, 72(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, a7, t3
-; RV64IMZBS-NEXT:    ld t3, 24(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 16(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t3, s9, t3
 ; RV64IMZBS-NEXT:    xor s4, s4, s7
 ; RV64IMZBS-NEXT:    xor t2, s3, t2
-; RV64IMZBS-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 880(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t4, s3
-; RV64IMZBS-NEXT:    ld s3, 856(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 824(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t5, s3
-; RV64IMZBS-NEXT:    ld s3, 800(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 768(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, t6, s3
-; RV64IMZBS-NEXT:    ld s3, 752(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 728(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s0, s3
-; RV64IMZBS-NEXT:    ld s3, 672(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 648(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s1, s3
 ; RV64IMZBS-NEXT:    ld s3, 592(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, s2, s3
-; RV64IMZBS-NEXT:    ld s3, 536(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 544(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s3
-; RV64IMZBS-NEXT:    ld s3, 480(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 488(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s3
 ; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 424(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 320(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 256(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 184(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 96(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    ld a7, 40(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a7, t3, a7
-; RV64IMZBS-NEXT:    xor t3, s4, s8
-; RV64IMZBS-NEXT:    xor t2, t2, t4
-; RV64IMZBS-NEXT:    ld t4, 896(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a1, 392(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, a1
+; RV64IMZBS-NEXT:    ld a1, 352(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, a1
+; RV64IMZBS-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a4, a4, a1
+; RV64IMZBS-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, a1
+; RV64IMZBS-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, a1
+; RV64IMZBS-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, a1
+; RV64IMZBS-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, a1
+; RV64IMZBS-NEXT:    xor s3, s4, s8
+; RV64IMZBS-NEXT:    ld a1, 904(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a1, t2, a1
+; RV64IMZBS-NEXT:    ld t2, 896(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t2, t4, t2
+; RV64IMZBS-NEXT:    ld t4, 856(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t5, t4
-; RV64IMZBS-NEXT:    ld t5, 832(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t5, 800(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t6, t5
-; RV64IMZBS-NEXT:    ld t6, 792(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t6, 760(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, s0, t6
-; RV64IMZBS-NEXT:    ld s0, 704(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 688(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s1, s0
-; RV64IMZBS-NEXT:    ld s1, 640(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s1, 624(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s2, s1
 ; RV64IMZBS-NEXT:    ld s2, 560(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s2
 ; RV64IMZBS-NEXT:    ld s2, 504(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s2
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 416(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 352(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 288(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 216(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 144(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 64(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    xor a7, t3, s10
+; RV64IMZBS-NEXT:    ld s2, 448(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a0, a0, s2
+; RV64IMZBS-NEXT:    ld s2, 440(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, s2
+; RV64IMZBS-NEXT:    ld s2, 376(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, s2
+; RV64IMZBS-NEXT:    ld s2, 320(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a4, a4, s2
+; RV64IMZBS-NEXT:    ld s2, 272(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, s2
+; RV64IMZBS-NEXT:    ld s2, 192(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, s2
+; RV64IMZBS-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, s2
+; RV64IMZBS-NEXT:    ld s2, 64(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, s2
+; RV64IMZBS-NEXT:    xor s2, s3, s11
+; RV64IMZBS-NEXT:    ld s3, 888(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, t4, s3
+; RV64IMZBS-NEXT:    ld s3, 776(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, t6, s3
+; RV64IMZBS-NEXT:    ld s3, 720(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s0, s0, s3
+; RV64IMZBS-NEXT:    ld s3, 640(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s1, s1, s3
+; RV64IMZBS-NEXT:    ld s3, 576(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t0, t0, s3
+; RV64IMZBS-NEXT:    ld s3, 520(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t1, t1, s3
+; RV64IMZBS-NEXT:    ld s3, 408(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, s3
+; RV64IMZBS-NEXT:    ld s3, 296(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, s3
+; RV64IMZBS-NEXT:    ld s3, 216(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, s3
+; RV64IMZBS-NEXT:    ld s3, 144(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, s3
+; RV64IMZBS-NEXT:    ld s3, 80(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, s3
+; RV64IMZBS-NEXT:    ld s3, 24(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s2, s2, s3
+; RV64IMZBS-NEXT:    xor t2, a1, t2
 ; RV64IMZBS-NEXT:    xor t2, t2, t4
-; RV64IMZBS-NEXT:    ld t3, 872(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, t5, t3
 ; RV64IMZBS-NEXT:    ld t4, 808(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t6, t4
-; RV64IMZBS-NEXT:    ld t5, 744(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t5, s0, t5
-; RV64IMZBS-NEXT:    ld t6, 656(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t6, s1, t6
-; RV64IMZBS-NEXT:    ld s0, 576(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t6, 736(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, s0, t6
+; RV64IMZBS-NEXT:    ld s0, 664(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s0, s1, s0
+; RV64IMZBS-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t0, t0, s1
+; RV64IMZBS-NEXT:    ld s1, 528(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t1, t1, s1
+; RV64IMZBS-NEXT:    xor a2, a0, a2
+; RV64IMZBS-NEXT:    xor a2, a2, a3
+; RV64IMZBS-NEXT:    ld a3, 312(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a5, a3
+; RV64IMZBS-NEXT:    ld a5, 232(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a6, a5
+; RV64IMZBS-NEXT:    ld a6, 160(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a7, a6
+; RV64IMZBS-NEXT:    ld a7, 96(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, t3, a7
+; RV64IMZBS-NEXT:    ld t3, 32(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, s2, t3
+; RV64IMZBS-NEXT:    xor t2, t2, t5
+; RV64IMZBS-NEXT:    ld t5, 816(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, t4, t5
+; RV64IMZBS-NEXT:    ld t5, 752(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t5, t6, t5
+; RV64IMZBS-NEXT:    ld t6, 680(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, s0, t6
+; RV64IMZBS-NEXT:    ld s0, 616(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s0
-; RV64IMZBS-NEXT:    ld s0, 512(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 912(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s0
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 384(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 312(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 240(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 160(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, a4
+; RV64IMZBS-NEXT:    ld a4, 344(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, a4
+; RV64IMZBS-NEXT:    ld a4, 256(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 80(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 184(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 16(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a6, 120(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    xor a7, t2, t3
-; RV64IMZBS-NEXT:    ld t2, 824(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t2, t4, t2
-; RV64IMZBS-NEXT:    ld t3, 760(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, t5, t3
-; RV64IMZBS-NEXT:    ld t4, 688(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t4, t6, t4
-; RV64IMZBS-NEXT:    ld t5, 584(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t0, t0, t5
-; RV64IMZBS-NEXT:    ld t5, 528(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t1, t1, t5
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 176(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 88(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 32(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    xor a6, a7, t2
-; RV64IMZBS-NEXT:    ld a7, 784(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a7, 920(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, t3, a7
-; RV64IMZBS-NEXT:    ld t2, 696(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t2, t4, t2
-; RV64IMZBS-NEXT:    ld t3, 616(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t0, t0, t3
-; RV64IMZBS-NEXT:    ld t3, 912(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t1, t1, t3
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 272(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 200(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 104(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 920(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    xor a5, a6, a7
-; RV64IMZBS-NEXT:    ld a6, 720(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, t2, a6
-; RV64IMZBS-NEXT:    ld a7, 624(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a7, t0, a7
-; RV64IMZBS-NEXT:    xor a1, a0, a1
-; RV64IMZBS-NEXT:    ld a0, 208(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a2, a0
-; RV64IMZBS-NEXT:    ld a0, 120(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a3, a0
-; RV64IMZBS-NEXT:    xor a5, a5, a6
+; RV64IMZBS-NEXT:    xor t3, t2, t4
+; RV64IMZBS-NEXT:    xor t3, t3, t5
+; RV64IMZBS-NEXT:    xor a3, a2, a3
+; RV64IMZBS-NEXT:    xor a3, a3, a4
+; RV64IMZBS-NEXT:    slli a1, a1, 56
+; RV64IMZBS-NEXT:    slli a0, a0, 56
+; RV64IMZBS-NEXT:    ld s0, 936(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    and a4, t2, s0
+; RV64IMZBS-NEXT:    and a2, a2, s0
+; RV64IMZBS-NEXT:    slli a4, a4, 40
+; RV64IMZBS-NEXT:    slli a2, a2, 40
+; RV64IMZBS-NEXT:    or a1, a1, a4
+; RV64IMZBS-NEXT:    srli a4, t3, 8
+; RV64IMZBS-NEXT:    or a2, a0, a2
+; RV64IMZBS-NEXT:    srli a0, a3, 8
+; RV64IMZBS-NEXT:    ld t2, 960(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    and a4, a4, t2
+; RV64IMZBS-NEXT:    and t2, a0, t2
 ; RV64IMZBS-NEXT:    lui a0, %hi(.LCPI6_0)
 ; RV64IMZBS-NEXT:    ld a0, %lo(.LCPI6_0)(a0)
-; RV64IMZBS-NEXT:    ld a6, 632(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    xor a1, a1, a2
-; RV64IMZBS-NEXT:    ld a2, 128(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    xor a3, a5, a6
-; RV64IMZBS-NEXT:    xor a1, a1, a2
-; RV64IMZBS-NEXT:    xor a2, a3, t1
-; RV64IMZBS-NEXT:    xor a1, a1, a4
-; RV64IMZBS-NEXT:    srli a3, a2, 40
-; RV64IMZBS-NEXT:    srli a4, a2, 56
-; RV64IMZBS-NEXT:    srli a5, a2, 24
-; RV64IMZBS-NEXT:    srli a6, a2, 8
-; RV64IMZBS-NEXT:    srliw a7, a2, 24
-; RV64IMZBS-NEXT:    lui t3, 4080
-; RV64IMZBS-NEXT:    and t0, a2, t3
-; RV64IMZBS-NEXT:    srli t1, a1, 8
-; RV64IMZBS-NEXT:    ld t2, 960(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a6, a6, t2
-; RV64IMZBS-NEXT:    and t1, t1, t2
-; RV64IMZBS-NEXT:    slli t2, a2, 56
-; RV64IMZBS-NEXT:    ld t4, 944(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a2, a2, t4
-; RV64IMZBS-NEXT:    and a3, a3, t4
-; RV64IMZBS-NEXT:    or a3, a3, a4
-; RV64IMZBS-NEXT:    srli a4, a1, 40
-; RV64IMZBS-NEXT:    and a5, a5, t3
-; RV64IMZBS-NEXT:    or a5, a6, a5
-; RV64IMZBS-NEXT:    srli a6, a1, 56
-; RV64IMZBS-NEXT:    slli a7, a7, 32
-; RV64IMZBS-NEXT:    slli t0, t0, 24
-; RV64IMZBS-NEXT:    or a7, t0, a7
-; RV64IMZBS-NEXT:    srli t0, a1, 24
-; RV64IMZBS-NEXT:    slli a2, a2, 40
-; RV64IMZBS-NEXT:    or a2, t2, a2
-; RV64IMZBS-NEXT:    srliw t2, a1, 24
-; RV64IMZBS-NEXT:    and t0, t0, t3
-; RV64IMZBS-NEXT:    and t3, a1, t3
-; RV64IMZBS-NEXT:    and a4, a4, t4
-; RV64IMZBS-NEXT:    and t4, a1, t4
-; RV64IMZBS-NEXT:    slli a1, a1, 56
-; RV64IMZBS-NEXT:    slli t2, t2, 32
+; RV64IMZBS-NEXT:    xor t4, t3, t6
+; RV64IMZBS-NEXT:    lui t5, 4080
+; RV64IMZBS-NEXT:    and t3, t3, t5
+; RV64IMZBS-NEXT:    xor a5, a3, a5
+; RV64IMZBS-NEXT:    and a3, a3, t5
 ; RV64IMZBS-NEXT:    slli t3, t3, 24
-; RV64IMZBS-NEXT:    slli t4, t4, 40
-; RV64IMZBS-NEXT:    or a4, a4, a6
-; RV64IMZBS-NEXT:    or a6, t1, t0
-; RV64IMZBS-NEXT:    or t0, t3, t2
-; RV64IMZBS-NEXT:    or a1, a1, t4
-; RV64IMZBS-NEXT:    or a3, a5, a3
-; RV64IMZBS-NEXT:    or a2, a2, a7
-; RV64IMZBS-NEXT:    or a4, a6, a4
-; RV64IMZBS-NEXT:    or a1, a1, t0
+; RV64IMZBS-NEXT:    xor t0, t4, t0
+; RV64IMZBS-NEXT:    srli t4, t4, 24
+; RV64IMZBS-NEXT:    slli a3, a3, 24
+; RV64IMZBS-NEXT:    xor a6, a5, a6
+; RV64IMZBS-NEXT:    srli a5, a5, 24
+; RV64IMZBS-NEXT:    and t4, t4, t5
+; RV64IMZBS-NEXT:    and a5, a5, t5
+; RV64IMZBS-NEXT:    srliw t5, t0, 24
+; RV64IMZBS-NEXT:    xor t1, t0, t1
+; RV64IMZBS-NEXT:    srli t0, t0, 40
+; RV64IMZBS-NEXT:    or a4, a4, t4
+; RV64IMZBS-NEXT:    srliw t4, a6, 24
+; RV64IMZBS-NEXT:    xor a7, a6, a7
+; RV64IMZBS-NEXT:    srli a6, a6, 40
+; RV64IMZBS-NEXT:    slli t5, t5, 32
+; RV64IMZBS-NEXT:    and t0, t0, s0
+; RV64IMZBS-NEXT:    srli t1, t1, 56
+; RV64IMZBS-NEXT:    slli t4, t4, 32
+; RV64IMZBS-NEXT:    or a5, t2, a5
+; RV64IMZBS-NEXT:    and a6, a6, s0
+; RV64IMZBS-NEXT:    srli a7, a7, 56
+; RV64IMZBS-NEXT:    or t2, t3, t5
+; RV64IMZBS-NEXT:    or t0, t0, t1
+; RV64IMZBS-NEXT:    or a3, a3, t4
+; RV64IMZBS-NEXT:    or a6, a6, a7
+; RV64IMZBS-NEXT:    or a1, a1, t2
+; RV64IMZBS-NEXT:    or a4, a4, t0
 ; RV64IMZBS-NEXT:    or a2, a2, a3
+; RV64IMZBS-NEXT:    or a3, a5, a6
 ; RV64IMZBS-NEXT:    or a1, a1, a4
-; RV64IMZBS-NEXT:    srli a3, a2, 4
+; RV64IMZBS-NEXT:    or a2, a2, a3
+; RV64IMZBS-NEXT:    srli a3, a1, 4
 ; RV64IMZBS-NEXT:    ld a5, 952(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a2, a2, a5
-; RV64IMZBS-NEXT:    srli a4, a1, 4
 ; RV64IMZBS-NEXT:    and a1, a1, a5
+; RV64IMZBS-NEXT:    srli a4, a2, 4
+; RV64IMZBS-NEXT:    and a2, a2, a5
 ; RV64IMZBS-NEXT:    and a3, a3, a5
-; RV64IMZBS-NEXT:    slli a2, a2, 4
-; RV64IMZBS-NEXT:    and a4, a4, a5
 ; RV64IMZBS-NEXT:    slli a1, a1, 4
-; RV64IMZBS-NEXT:    or a2, a3, a2
-; RV64IMZBS-NEXT:    or a1, a4, a1
-; RV64IMZBS-NEXT:    srli a3, a2, 2
-; RV64IMZBS-NEXT:    ld a5, 936(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a2, a2, a5
-; RV64IMZBS-NEXT:    srli a4, a1, 2
+; RV64IMZBS-NEXT:    and a4, a4, a5
+; RV64IMZBS-NEXT:    slli a2, a2, 4
+; RV64IMZBS-NEXT:    or a1, a3, a1
+; RV64IMZBS-NEXT:    or a2, a4, a2
+; RV64IMZBS-NEXT:    srli a3, a1, 2
+; RV64IMZBS-NEXT:    ld a5, 944(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    and a1, a1, a5
+; RV64IMZBS-NEXT:    srli a4, a2, 2
+; RV64IMZBS-NEXT:    and a2, a2, a5
 ; RV64IMZBS-NEXT:    and a3, a3, a5
-; RV64IMZBS-NEXT:    slli a2, a2, 2
-; RV64IMZBS-NEXT:    and a4, a4, a5
 ; RV64IMZBS-NEXT:    slli a1, a1, 2
-; RV64IMZBS-NEXT:    or a2, a3, a2
-; RV64IMZBS-NEXT:    or a1, a4, a1
-; RV64IMZBS-NEXT:    srli a3, a2, 1
+; RV64IMZBS-NEXT:    and a4, a4, a5
+; RV64IMZBS-NEXT:    slli a2, a2, 2
+; RV64IMZBS-NEXT:    or a1, a3, a1
+; RV64IMZBS-NEXT:    or a2, a4, a2
+; RV64IMZBS-NEXT:    srli a3, a1, 1
 ; RV64IMZBS-NEXT:    ld a5, 928(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a2, a2, a5
-; RV64IMZBS-NEXT:    srli a4, a1, 1
 ; RV64IMZBS-NEXT:    and a1, a1, a5
+; RV64IMZBS-NEXT:    srli a4, a2, 1
+; RV64IMZBS-NEXT:    and a2, a2, a5
 ; RV64IMZBS-NEXT:    and a3, a3, a0
-; RV64IMZBS-NEXT:    slli a2, a2, 1
-; RV64IMZBS-NEXT:    and a0, a4, a0
 ; RV64IMZBS-NEXT:    slli a1, a1, 1
-; RV64IMZBS-NEXT:    or a2, a3, a2
-; RV64IMZBS-NEXT:    or a0, a0, a1
-; RV64IMZBS-NEXT:    srli a2, a2, 1
+; RV64IMZBS-NEXT:    and a0, a4, a0
+; RV64IMZBS-NEXT:    slli a2, a2, 1
+; RV64IMZBS-NEXT:    or a1, a3, a1
+; RV64IMZBS-NEXT:    or a0, a0, a2
+; RV64IMZBS-NEXT:    srli a1, a1, 1
 ; RV64IMZBS-NEXT:    srli a0, a0, 1
-; RV64IMZBS-NEXT:    ld a1, 968(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    sd a2, 0(a1)
-; RV64IMZBS-NEXT:    sd a0, 8(a1)
-; RV64IMZBS-NEXT:    ld a1, 976(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    sd a2, 0(a1)
-; RV64IMZBS-NEXT:    sd a0, 8(a1)
+; RV64IMZBS-NEXT:    ld a2, 968(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    sd a1, 0(a2)
+; RV64IMZBS-NEXT:    sd a0, 8(a2)
+; RV64IMZBS-NEXT:    ld a2, 976(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    sd a1, 0(a2)
+; RV64IMZBS-NEXT:    sd a0, 8(a2)
 ; RV64IMZBS-NEXT:    ld ra, 1080(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld s0, 1072(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld s1, 1064(sp) # 8-byte Folded Reload
diff --git a/llvm/test/CodeGen/RISCV/clmulr.ll b/llvm/test/CodeGen/RISCV/clmulr.ll
index dca39abe43081..0bd4faa71c2ba 100644
--- a/llvm/test/CodeGen/RISCV/clmulr.ll
+++ b/llvm/test/CodeGen/RISCV/clmulr.ll
@@ -795,223 +795,223 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32I-NEXT:    sw s10, 48(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    sw s11, 44(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    srli s0, a0, 8
-; RV32I-NEXT:    lui a6, 16
+; RV32I-NEXT:    lui a2, 16
 ; RV32I-NEXT:    srli s1, a0, 24
 ; RV32I-NEXT:    slli s2, a0, 24
 ; RV32I-NEXT:    lui a3, 61681
 ; RV32I-NEXT:    lui a4, 209715
-; RV32I-NEXT:    lui a2, 349525
+; RV32I-NEXT:    lui s3, 349525
 ; RV32I-NEXT:    srli s6, a1, 8
 ; RV32I-NEXT:    srli s4, a1, 24
 ; RV32I-NEXT:    slli s5, a1, 24
-; RV32I-NEXT:    li t5, 1
-; RV32I-NEXT:    lui a7, 1
+; RV32I-NEXT:    li s7, 1
 ; RV32I-NEXT:    lui t0, 2
-; RV32I-NEXT:    lui s11, 8
-; RV32I-NEXT:    lui t3, 32
+; RV32I-NEXT:    lui ra, 4
+; RV32I-NEXT:    lui a6, 32
 ; RV32I-NEXT:    lui t4, 64
-; RV32I-NEXT:    lui t2, 128
+; RV32I-NEXT:    lui t5, 128
 ; RV32I-NEXT:    lui t6, 256
-; RV32I-NEXT:    addi t1, a6, -256
-; RV32I-NEXT:    addi s3, a3, -241
-; RV32I-NEXT:    addi a4, a4, 819
-; RV32I-NEXT:    addi a3, a2, 1365
-; RV32I-NEXT:    slli a2, t5, 11
-; RV32I-NEXT:    and t5, s0, t1
-; RV32I-NEXT:    and a0, a0, t1
-; RV32I-NEXT:    and s0, s6, t1
-; RV32I-NEXT:    and a1, a1, t1
-; RV32I-NEXT:    or t5, t5, s1
+; RV32I-NEXT:    addi a7, a2, -256
+; RV32I-NEXT:    addi t1, a3, -241
+; RV32I-NEXT:    addi t2, a4, 819
+; RV32I-NEXT:    addi t3, s3, 1365
+; RV32I-NEXT:    slli s9, s7, 11
+; RV32I-NEXT:    and a3, s0, a7
+; RV32I-NEXT:    and a0, a0, a7
+; RV32I-NEXT:    and s0, s6, a7
+; RV32I-NEXT:    and a1, a1, a7
+; RV32I-NEXT:    or a3, a3, s1
 ; RV32I-NEXT:    slli a0, a0, 8
 ; RV32I-NEXT:    or s0, s0, s4
 ; RV32I-NEXT:    slli a1, a1, 8
 ; RV32I-NEXT:    or a0, s2, a0
 ; RV32I-NEXT:    or a1, s5, a1
-; RV32I-NEXT:    or a0, a0, t5
+; RV32I-NEXT:    or a0, a0, a3
 ; RV32I-NEXT:    or a1, a1, s0
-; RV32I-NEXT:    srli t5, a0, 4
-; RV32I-NEXT:    and a0, a0, s3
+; RV32I-NEXT:    srli a3, a0, 4
+; RV32I-NEXT:    and a0, a0, t1
 ; RV32I-NEXT:    srli s0, a1, 4
-; RV32I-NEXT:    and a1, a1, s3
-; RV32I-NEXT:    and t5, t5, s3
+; RV32I-NEXT:    and a1, a1, t1
+; RV32I-NEXT:    and a3, a3, t1
 ; RV32I-NEXT:    slli a0, a0, 4
-; RV32I-NEXT:    and s0, s0, s3
+; RV32I-NEXT:    and s0, s0, t1
 ; RV32I-NEXT:    slli a1, a1, 4
-; RV32I-NEXT:    or a0, t5, a0
+; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    or a1, s0, a1
-; RV32I-NEXT:    srli t5, a0, 2
-; RV32I-NEXT:    sw a4, 40(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, a0, a4
+; RV32I-NEXT:    srli a3, a0, 2
+; RV32I-NEXT:    and a0, a0, t2
 ; RV32I-NEXT:    srli s0, a1, 2
-; RV32I-NEXT:    and a1, a1, a4
-; RV32I-NEXT:    and t5, t5, a4
+; RV32I-NEXT:    and a1, a1, t2
+; RV32I-NEXT:    and a3, a3, t2
 ; RV32I-NEXT:    slli a0, a0, 2
-; RV32I-NEXT:    and s0, s0, a4
+; RV32I-NEXT:    and s0, s0, t2
 ; RV32I-NEXT:    slli a1, a1, 2
-; RV32I-NEXT:    or a0, t5, a0
+; RV32I-NEXT:    or a0, a3, a0
 ; RV32I-NEXT:    or a1, s0, a1
-; RV32I-NEXT:    srli t5, a0, 1
-; RV32I-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, a0, a3
+; RV32I-NEXT:    srli a3, a0, 1
+; RV32I-NEXT:    and a0, a0, t3
 ; RV32I-NEXT:    srli s0, a1, 1
-; RV32I-NEXT:    and a1, a1, a3
-; RV32I-NEXT:    and s1, t5, a3
+; RV32I-NEXT:    and a1, a1, t3
+; RV32I-NEXT:    and a3, a3, t3
 ; RV32I-NEXT:    slli a0, a0, 1
-; RV32I-NEXT:    and s0, s0, a3
-; RV32I-NEXT:    slli t5, a1, 1
-; RV32I-NEXT:    or a4, s1, a0
-; RV32I-NEXT:    or a5, s0, t5
-; RV32I-NEXT:    srli t5, t5, 31
-; RV32I-NEXT:    slli s0, a4, 1
+; RV32I-NEXT:    and s1, s0, t3
+; RV32I-NEXT:    slli s0, a1, 1
+; RV32I-NEXT:    or a4, a3, a0
+; RV32I-NEXT:    or a5, s1, s0
+; RV32I-NEXT:    srli s0, s0, 31
+; RV32I-NEXT:    slli a3, a4, 1
 ; RV32I-NEXT:    andi s1, a5, 2
 ; RV32I-NEXT:    slli a0, a4, 2
 ; RV32I-NEXT:    andi s4, a5, 4
-; RV32I-NEXT:    slli s5, a4, 3
+; RV32I-NEXT:    slli s2, a4, 3
 ; RV32I-NEXT:    andi s6, a5, 8
-; RV32I-NEXT:    slli s2, a4, 4
-; RV32I-NEXT:    andi s7, a5, 16
-; RV32I-NEXT:    slli s8, a4, 5
+; RV32I-NEXT:    slli s7, a4, 4
+; RV32I-NEXT:    andi s8, a5, 16
+; RV32I-NEXT:    slli s5, a4, 5
 ; RV32I-NEXT:    andi s10, a5, 32
-; RV32I-NEXT:    slli s9, a4, 31
-; RV32I-NEXT:    seqz t5, t5
-; RV32I-NEXT:    addi t5, t5, -1
-; RV32I-NEXT:    and a1, t5, s9
-; RV32I-NEXT:    sw a1, 32(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli t5, a4, 6
+; RV32I-NEXT:    slli s11, a4, 31
+; RV32I-NEXT:    seqz s0, s0
+; RV32I-NEXT:    addi s0, s0, -1
+; RV32I-NEXT:    and a1, s0, s11
+; RV32I-NEXT:    sw a1, 40(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s0, a4, 6
 ; RV32I-NEXT:    seqz s1, s1
 ; RV32I-NEXT:    addi s1, s1, -1
-; RV32I-NEXT:    and s0, s1, s0
-; RV32I-NEXT:    sw s0, 28(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi s0, a5, 64
-; RV32I-NEXT:    seqz s4, s4
-; RV32I-NEXT:    addi s4, s4, -1
-; RV32I-NEXT:    and a0, s4, a0
-; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a3, s1, a3
+; RV32I-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a3, a5, 64
+; RV32I-NEXT:    seqz s1, s4
+; RV32I-NEXT:    addi s1, s1, -1
+; RV32I-NEXT:    and a0, s1, a0
+; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli s1, a4, 7
 ; RV32I-NEXT:    seqz s4, s6
 ; RV32I-NEXT:    addi s4, s4, -1
-; RV32I-NEXT:    and a0, s4, s5
-; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi ra, a5, 128
-; RV32I-NEXT:    seqz s5, s7
-; RV32I-NEXT:    addi s5, s5, -1
-; RV32I-NEXT:    and a0, s5, s2
-; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a0, a4, 8
-; RV32I-NEXT:    seqz s6, s10
+; RV32I-NEXT:    and a0, s4, s2
+; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi s4, a5, 128
+; RV32I-NEXT:    seqz s6, s8
 ; RV32I-NEXT:    addi s6, s6, -1
-; RV32I-NEXT:    and a1, s6, s8
-; RV32I-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi s10, a5, 256
-; RV32I-NEXT:    seqz s0, s0
-; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and a1, s0, t5
-; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli t5, a4, 9
-; RV32I-NEXT:    seqz s0, ra
+; RV32I-NEXT:    and a0, s6, s7
+; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s2, a4, 8
+; RV32I-NEXT:    seqz s7, s10
+; RV32I-NEXT:    addi s7, s7, -1
+; RV32I-NEXT:    and a0, s7, s5
+; RV32I-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, a5, 256
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and a3, a3, s0
+; RV32I-NEXT:    sw a3, 16(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, a4, 9
+; RV32I-NEXT:    seqz s0, s4
 ; RV32I-NEXT:    addi s0, s0, -1
 ; RV32I-NEXT:    and s0, s0, s1
-; RV32I-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s0, 28(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi s0, a5, 512
-; RV32I-NEXT:    seqz s10, s10
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    and s5, s10, a0
-; RV32I-NEXT:    slli a0, a4, 10
+; RV32I-NEXT:    seqz s1, a0
+; RV32I-NEXT:    addi s1, s1, -1
+; RV32I-NEXT:    and a0, s1, s2
+; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s1, a4, 10
 ; RV32I-NEXT:    seqz s0, s0
 ; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and s10, s0, t5
-; RV32I-NEXT:    andi t5, a5, 1024
-; RV32I-NEXT:    seqz t5, t5
-; RV32I-NEXT:    addi t5, t5, -1
-; RV32I-NEXT:    and a0, t5, a0
-; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli t5, a4, 11
-; RV32I-NEXT:    and s0, a5, a2
+; RV32I-NEXT:    and s7, s0, a3
+; RV32I-NEXT:    andi a3, a5, 1024
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and s10, a3, s1
+; RV32I-NEXT:    slli a3, a4, 11
+; RV32I-NEXT:    and s0, a5, s9
 ; RV32I-NEXT:    seqz s0, s0
 ; RV32I-NEXT:    addi s0, s0, -1
-; RV32I-NEXT:    and s4, s0, t5
-; RV32I-NEXT:    slli t5, a4, 12
-; RV32I-NEXT:    and a7, a5, a7
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    and ra, a7, t5
-; RV32I-NEXT:    slli a7, a4, 13
+; RV32I-NEXT:    and a3, s0, a3
+; RV32I-NEXT:    sw a3, 4(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, a4, 12
+; RV32I-NEXT:    lui s0, 1
+; RV32I-NEXT:    and s0, a5, s0
+; RV32I-NEXT:    seqz s0, s0
+; RV32I-NEXT:    addi s0, s0, -1
+; RV32I-NEXT:    and a3, s0, a3
+; RV32I-NEXT:    sw a3, 0(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, a4, 13
 ; RV32I-NEXT:    and t0, a5, t0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    and t5, t0, a7
-; RV32I-NEXT:    slli a7, a4, 14
-; RV32I-NEXT:    lui a0, 4
+; RV32I-NEXT:    and s6, t0, a3
+; RV32I-NEXT:    slli a3, a4, 14
+; RV32I-NEXT:    and t0, a5, ra
+; RV32I-NEXT:    seqz t0, t0
+; RV32I-NEXT:    addi t0, t0, -1
+; RV32I-NEXT:    and ra, t0, a3
+; RV32I-NEXT:    slli a3, a4, 15
+; RV32I-NEXT:    lui a0, 8
 ; RV32I-NEXT:    and t0, a5, a0
 ; RV32I-NEXT:    seqz t0, t0
 ; RV32I-NEXT:    addi t0, t0, -1
-; RV32I-NEXT:    and s1, t0, a7
-; RV32I-NEXT:    slli a7, a4, 15
-; RV32I-NEXT:    and a2, a5, s11
+; RV32I-NEXT:    and s0, t0, a3
+; RV32I-NEXT:    slli a3, a4, 16
+; RV32I-NEXT:    and a2, a5, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    and s0, a2, a7
-; RV32I-NEXT:    slli a2, a4, 16
-; RV32I-NEXT:    and a7, a5, a6
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    and t0, a7, a2
+; RV32I-NEXT:    and t0, a2, a3
 ; RV32I-NEXT:    slli a2, a4, 17
-; RV32I-NEXT:    and a7, a5, t3
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    and a7, a7, a2
+; RV32I-NEXT:    and a3, a5, a6
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and s1, a3, a2
 ; RV32I-NEXT:    slli a2, a4, 18
-; RV32I-NEXT:    and t3, a5, t4
-; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    addi t3, t3, -1
-; RV32I-NEXT:    and t3, t3, a2
+; RV32I-NEXT:    and a3, a5, t4
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and s4, a3, a2
 ; RV32I-NEXT:    slli a2, a4, 19
-; RV32I-NEXT:    and t2, a5, t2
-; RV32I-NEXT:    seqz t2, t2
-; RV32I-NEXT:    addi t2, t2, -1
-; RV32I-NEXT:    and t2, t2, a2
+; RV32I-NEXT:    and a3, a5, t5
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and t4, a3, a2
 ; RV32I-NEXT:    slli a2, a4, 20
-; RV32I-NEXT:    and t4, a5, t6
-; RV32I-NEXT:    seqz t4, t4
-; RV32I-NEXT:    addi t4, t4, -1
-; RV32I-NEXT:    and t4, t4, a2
+; RV32I-NEXT:    and a3, a5, t6
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    and t5, a3, a2
 ; RV32I-NEXT:    lui a2, 512
 ; RV32I-NEXT:    and a2, a5, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli t6, a4, 21
-; RV32I-NEXT:    and t6, a2, t6
+; RV32I-NEXT:    slli a3, a4, 21
+; RV32I-NEXT:    and t6, a2, a3
 ; RV32I-NEXT:    lui a2, 1024
 ; RV32I-NEXT:    and a2, a5, a2
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a0, a4, 22
-; RV32I-NEXT:    and a6, a2, a0
-; RV32I-NEXT:    lui a0, 2048
+; RV32I-NEXT:    slli a3, a4, 22
+; RV32I-NEXT:    and a6, a2, a3
+; RV32I-NEXT:    lui a2, 2048
+; RV32I-NEXT:    and a2, a5, a2
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a0, a4, 23
+; RV32I-NEXT:    and a3, a2, a0
+; RV32I-NEXT:    lui a0, 4096
 ; RV32I-NEXT:    and a0, a5, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s2, a4, 23
+; RV32I-NEXT:    slli s2, a4, 24
 ; RV32I-NEXT:    and a2, a0, s2
-; RV32I-NEXT:    lui s2, 4096
+; RV32I-NEXT:    lui s2, 8192
 ; RV32I-NEXT:    and s2, a5, s2
 ; RV32I-NEXT:    seqz s2, s2
 ; RV32I-NEXT:    addi s2, s2, -1
-; RV32I-NEXT:    slli s7, a4, 24
-; RV32I-NEXT:    and s2, s2, s7
-; RV32I-NEXT:    lui s7, 8192
-; RV32I-NEXT:    and s7, a5, s7
-; RV32I-NEXT:    seqz s7, s7
-; RV32I-NEXT:    addi s7, s7, -1
-; RV32I-NEXT:    slli s8, a4, 25
-; RV32I-NEXT:    and s7, s7, s8
-; RV32I-NEXT:    lui s8, 16384
-; RV32I-NEXT:    and s8, a5, s8
-; RV32I-NEXT:    seqz s8, s8
-; RV32I-NEXT:    addi s8, s8, -1
+; RV32I-NEXT:    slli s5, a4, 25
+; RV32I-NEXT:    and s2, s2, s5
+; RV32I-NEXT:    lui s5, 16384
+; RV32I-NEXT:    and s5, a5, s5
+; RV32I-NEXT:    seqz s5, s5
+; RV32I-NEXT:    addi s5, s5, -1
 ; RV32I-NEXT:    slli s9, a4, 26
-; RV32I-NEXT:    and s8, s8, s9
+; RV32I-NEXT:    and s5, s5, s9
 ; RV32I-NEXT:    lui s9, 32768
 ; RV32I-NEXT:    and s9, a5, s9
 ; RV32I-NEXT:    seqz s9, s9
@@ -1022,14 +1022,14 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32I-NEXT:    and s11, a5, s11
 ; RV32I-NEXT:    seqz s11, s11
 ; RV32I-NEXT:    addi s11, s11, -1
-; RV32I-NEXT:    slli a1, a4, 28
-; RV32I-NEXT:    and a1, s11, a1
+; RV32I-NEXT:    slli s3, a4, 28
+; RV32I-NEXT:    and s3, s11, s3
 ; RV32I-NEXT:    lui s11, 131072
 ; RV32I-NEXT:    and s11, a5, s11
 ; RV32I-NEXT:    seqz s11, s11
 ; RV32I-NEXT:    addi s11, s11, -1
-; RV32I-NEXT:    slli a3, a4, 29
-; RV32I-NEXT:    and a3, s11, a3
+; RV32I-NEXT:    slli a1, a4, 29
+; RV32I-NEXT:    and a1, s11, a1
 ; RV32I-NEXT:    lui s11, 262144
 ; RV32I-NEXT:    and s11, a5, s11
 ; RV32I-NEXT:    andi a5, a5, 1
@@ -1040,70 +1040,70 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32I-NEXT:    seqz s11, s11
 ; RV32I-NEXT:    addi s11, s11, -1
 ; RV32I-NEXT:    and a4, s11, a4
-; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, a0
-; RV32I-NEXT:    lw a0, 24(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s11, 20(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s11, 24(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s11, a0, s11
-; RV32I-NEXT:    lw a0, 16(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s6, 8(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s6
-; RV32I-NEXT:    lw s6, 0(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s5, s6, s5
-; RV32I-NEXT:    xor s4, s4, ra
-; RV32I-NEXT:    xor a7, t0, a7
-; RV32I-NEXT:    xor a2, a6, a2
-; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    xor a4, a5, s11
-; RV32I-NEXT:    lw a5, 12(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a5
-; RV32I-NEXT:    xor a5, s5, s10
-; RV32I-NEXT:    xor a6, s4, t5
-; RV32I-NEXT:    xor a7, a7, t3
+; RV32I-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 12(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, s8
+; RV32I-NEXT:    lw s8, 8(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, s8, s7
+; RV32I-NEXT:    xor s6, s6, ra
+; RV32I-NEXT:    xor t4, t4, t5
 ; RV32I-NEXT:    xor a2, a2, s2
-; RV32I-NEXT:    lw t0, 32(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t0
-; RV32I-NEXT:    xor a0, a4, a0
-; RV32I-NEXT:    lw a4, 4(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a5, a4
-; RV32I-NEXT:    xor a5, a6, s1
-; RV32I-NEXT:    xor a6, a7, t2
-; RV32I-NEXT:    xor a2, a2, s7
-; RV32I-NEXT:    xor a0, a0, a4
-; RV32I-NEXT:    xor a5, a5, s0
-; RV32I-NEXT:    xor a4, a6, t4
-; RV32I-NEXT:    xor a2, a2, s8
-; RV32I-NEXT:    xor a0, a0, a5
-; RV32I-NEXT:    xor a4, a4, t6
+; RV32I-NEXT:    xor a5, a5, s11
+; RV32I-NEXT:    lw t5, 16(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t5
+; RV32I-NEXT:    xor t5, s7, s10
+; RV32I-NEXT:    xor s0, s6, s0
+; RV32I-NEXT:    xor t4, t4, t6
+; RV32I-NEXT:    xor a2, a2, s5
+; RV32I-NEXT:    xor a0, a5, a0
+; RV32I-NEXT:    lw a5, 4(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, t5, a5
+; RV32I-NEXT:    xor t0, s0, t0
+; RV32I-NEXT:    xor a6, t4, a6
 ; RV32I-NEXT:    xor a2, a2, s9
-; RV32I-NEXT:    xor a0, a0, a4
+; RV32I-NEXT:    lw t4, 28(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, t4
+; RV32I-NEXT:    lw t4, 0(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t4
+; RV32I-NEXT:    xor t0, t0, s1
+; RV32I-NEXT:    xor a3, a6, a3
+; RV32I-NEXT:    xor a2, a2, s3
+; RV32I-NEXT:    xor a5, a0, a5
+; RV32I-NEXT:    slli a0, a0, 24
+; RV32I-NEXT:    xor a6, t0, s4
 ; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a0, a0, a3
-; RV32I-NEXT:    srli a1, a0, 8
-; RV32I-NEXT:    srli a2, a0, 24
-; RV32I-NEXT:    slli a3, a0, 24
-; RV32I-NEXT:    and a0, a0, t1
-; RV32I-NEXT:    and a1, a1, t1
-; RV32I-NEXT:    slli a0, a0, 8
-; RV32I-NEXT:    or a1, a1, a2
-; RV32I-NEXT:    or a0, a3, a0
+; RV32I-NEXT:    xor a2, a5, a6
+; RV32I-NEXT:    xor a1, a1, a4
+; RV32I-NEXT:    xor a2, a2, a3
+; RV32I-NEXT:    lw a3, 40(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a3
+; RV32I-NEXT:    and a3, a2, a7
+; RV32I-NEXT:    srli a4, a2, 8
+; RV32I-NEXT:    xor a1, a2, a1
+; RV32I-NEXT:    slli a3, a3, 8
+; RV32I-NEXT:    and a2, a4, a7
+; RV32I-NEXT:    srli a1, a1, 24
+; RV32I-NEXT:    or a0, a0, a3
+; RV32I-NEXT:    or a1, a2, a1
 ; RV32I-NEXT:    or a0, a0, a1
 ; RV32I-NEXT:    srli a1, a0, 4
-; RV32I-NEXT:    and a0, a0, s3
-; RV32I-NEXT:    and a1, a1, s3
+; RV32I-NEXT:    and a0, a0, t1
+; RV32I-NEXT:    and a1, a1, t1
 ; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a1, a0, 2
-; RV32I-NEXT:    lw a2, 40(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    and a0, a0, t2
+; RV32I-NEXT:    and a1, a1, t2
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    srli a1, a0, 1
-; RV32I-NEXT:    lw a2, 36(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    and a0, a0, t3
+; RV32I-NEXT:    and a1, a1, t3
 ; RV32I-NEXT:    slli a0, a0, 1
 ; RV32I-NEXT:    or a0, a1, a0
 ; RV32I-NEXT:    lw ra, 92(sp) # 4-byte Folded Reload
@@ -1401,41 +1401,39 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    srli a7, a0, 8
 ; RV32IM-NEXT:    lui a5, 16
 ; RV32IM-NEXT:    srli t0, a0, 24
-; RV32IM-NEXT:    slli a2, a0, 24
+; RV32IM-NEXT:    slli t1, a0, 24
 ; RV32IM-NEXT:    lui a3, 61681
-; RV32IM-NEXT:    lui t1, 209715
-; RV32IM-NEXT:    lui t3, 349525
+; RV32IM-NEXT:    lui a2, 209715
+; RV32IM-NEXT:    lui t4, 349525
 ; RV32IM-NEXT:    srli s0, a1, 8
-; RV32IM-NEXT:    srli t4, a1, 24
+; RV32IM-NEXT:    srli t5, a1, 24
 ; RV32IM-NEXT:    slli t6, a1, 24
-; RV32IM-NEXT:    li ra, 1
-; RV32IM-NEXT:    lui s7, 1
-; RV32IM-NEXT:    lui t5, 4
+; RV32IM-NEXT:    lui s7, 2
+; RV32IM-NEXT:    lui s8, 4
 ; RV32IM-NEXT:    lui s1, 8
 ; RV32IM-NEXT:    lui s2, 32
-; RV32IM-NEXT:    lui s8, 64
-; RV32IM-NEXT:    lui s9, 128
-; RV32IM-NEXT:    lui s3, 256
-; RV32IM-NEXT:    lui s4, 512
-; RV32IM-NEXT:    lui s5, 1024
+; RV32IM-NEXT:    lui s3, 64
+; RV32IM-NEXT:    lui s4, 128
+; RV32IM-NEXT:    lui s5, 256
+; RV32IM-NEXT:    lui s9, 512
+; RV32IM-NEXT:    lui s10, 1024
 ; RV32IM-NEXT:    lui s6, 2048
-; RV32IM-NEXT:    lui s10, 4096
-; RV32IM-NEXT:    lui s11, 8192
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    lui ra, 8192
 ; RV32IM-NEXT:    addi a6, a5, -256
-; RV32IM-NEXT:    lui a4, 16
+; RV32IM-NEXT:    lui t3, 16
 ; RV32IM-NEXT:    addi a5, a3, -241
-; RV32IM-NEXT:    addi t1, t1, 819
-; RV32IM-NEXT:    addi a3, t3, 1365
-; RV32IM-NEXT:    slli ra, ra, 11
+; RV32IM-NEXT:    addi t2, a2, 819
+; RV32IM-NEXT:    addi s11, t4, 1365
 ; RV32IM-NEXT:    and a7, a7, a6
 ; RV32IM-NEXT:    and a0, a0, a6
-; RV32IM-NEXT:    and t3, s0, a6
+; RV32IM-NEXT:    and t4, s0, a6
 ; RV32IM-NEXT:    and a1, a1, a6
 ; RV32IM-NEXT:    or a7, a7, t0
 ; RV32IM-NEXT:    slli a0, a0, 8
-; RV32IM-NEXT:    or t0, t3, t4
+; RV32IM-NEXT:    or t0, t4, t5
 ; RV32IM-NEXT:    slli a1, a1, 8
-; RV32IM-NEXT:    or a0, a2, a0
+; RV32IM-NEXT:    or a0, t1, a0
 ; RV32IM-NEXT:    or a1, t6, a1
 ; RV32IM-NEXT:    or a0, a0, a7
 ; RV32IM-NEXT:    or a1, a1, t0
@@ -1450,130 +1448,133 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    or a0, a7, a0
 ; RV32IM-NEXT:    or a1, t0, a1
 ; RV32IM-NEXT:    srli a7, a0, 2
-; RV32IM-NEXT:    and a0, a0, t1
+; RV32IM-NEXT:    and a0, a0, t2
 ; RV32IM-NEXT:    srli t0, a1, 2
-; RV32IM-NEXT:    and a1, a1, t1
-; RV32IM-NEXT:    and a7, a7, t1
+; RV32IM-NEXT:    and a1, a1, t2
+; RV32IM-NEXT:    and a7, a7, t2
 ; RV32IM-NEXT:    slli a0, a0, 2
-; RV32IM-NEXT:    and t0, t0, t1
+; RV32IM-NEXT:    and t0, t0, t2
 ; RV32IM-NEXT:    slli a1, a1, 2
 ; RV32IM-NEXT:    or a0, a7, a0
 ; RV32IM-NEXT:    or a1, t0, a1
 ; RV32IM-NEXT:    srli a7, a0, 1
-; RV32IM-NEXT:    sw a3, 24(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a0, a0, a3
+; RV32IM-NEXT:    and a0, a0, s11
 ; RV32IM-NEXT:    srli t0, a1, 1
-; RV32IM-NEXT:    and a1, a1, a3
-; RV32IM-NEXT:    and a7, a7, a3
+; RV32IM-NEXT:    and a1, a1, s11
+; RV32IM-NEXT:    and a7, a7, s11
 ; RV32IM-NEXT:    slli a0, a0, 1
-; RV32IM-NEXT:    and t0, t0, a3
+; RV32IM-NEXT:    and t0, t0, s11
 ; RV32IM-NEXT:    slli a1, a1, 1
 ; RV32IM-NEXT:    or a0, a7, a0
 ; RV32IM-NEXT:    or a2, t0, a1
-; RV32IM-NEXT:    slli t3, a0, 1
-; RV32IM-NEXT:    andi t4, a2, 2
+; RV32IM-NEXT:    slli t4, a0, 1
+; RV32IM-NEXT:    andi t5, a2, 2
 ; RV32IM-NEXT:    slli t6, a0, 2
 ; RV32IM-NEXT:    andi s0, a2, 4
 ; RV32IM-NEXT:    slli a1, a0, 3
-; RV32IM-NEXT:    andi a7, a2, 8
+; RV32IM-NEXT:    andi t1, a2, 8
 ; RV32IM-NEXT:    slli a3, a0, 4
-; RV32IM-NEXT:    and t0, a2, ra
-; RV32IM-NEXT:    and t2, a2, s7
+; RV32IM-NEXT:    and a7, a2, s7
+; RV32IM-NEXT:    and t0, a2, s8
+; RV32IM-NEXT:    mul a7, a0, a7
 ; RV32IM-NEXT:    mul t0, a0, t0
-; RV32IM-NEXT:    mul t2, a0, t2
-; RV32IM-NEXT:    xor t0, t0, t2
-; RV32IM-NEXT:    sw t0, 20(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a7, a7, t0
+; RV32IM-NEXT:    sw a7, 24(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi s7, a2, 16
-; RV32IM-NEXT:    and t0, a2, s8
-; RV32IM-NEXT:    and t2, a2, s9
+; RV32IM-NEXT:    and t0, a2, s9
+; RV32IM-NEXT:    and s8, a2, s10
 ; RV32IM-NEXT:    mul t0, a0, t0
-; RV32IM-NEXT:    mul t2, a0, t2
-; RV32IM-NEXT:    xor t0, t0, t2
-; RV32IM-NEXT:    sw t0, 16(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s8, a0, s8
+; RV32IM-NEXT:    xor a7, t0, s8
+; RV32IM-NEXT:    sw a7, 20(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli s8, a0, 5
-; RV32IM-NEXT:    and t0, a2, s10
-; RV32IM-NEXT:    and s9, a2, s11
-; RV32IM-NEXT:    mul t0, a0, t0
+; RV32IM-NEXT:    and s9, a2, a4
+; RV32IM-NEXT:    and s10, a2, ra
 ; RV32IM-NEXT:    mul s9, a0, s9
-; RV32IM-NEXT:    xor t0, t0, s9
-; RV32IM-NEXT:    sw t0, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s10, a0, s10
+; RV32IM-NEXT:    xor a4, s9, s10
+; RV32IM-NEXT:    sw a4, 16(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    andi s9, a2, 32
-; RV32IM-NEXT:    seqz t4, t4
-; RV32IM-NEXT:    addi t4, t4, -1
-; RV32IM-NEXT:    and t0, t4, t3
-; RV32IM-NEXT:    sw t0, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    seqz t5, t5
+; RV32IM-NEXT:    addi t5, t5, -1
+; RV32IM-NEXT:    and a4, t5, t4
+; RV32IM-NEXT:    sw a4, 12(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli s10, a0, 6
-; RV32IM-NEXT:    seqz t4, s0
-; RV32IM-NEXT:    addi t4, t4, -1
-; RV32IM-NEXT:    and t0, t4, t6
-; RV32IM-NEXT:    sw t0, 4(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi s11, a2, 64
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    and t6, a7, a1
+; RV32IM-NEXT:    seqz t5, s0
+; RV32IM-NEXT:    addi t5, t5, -1
+; RV32IM-NEXT:    and a4, t5, t6
+; RV32IM-NEXT:    sw a4, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi s0, a2, 64
+; RV32IM-NEXT:    seqz t1, t1
+; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    and a1, t1, a1
+; RV32IM-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a1, a0, 7
-; RV32IM-NEXT:    seqz a7, s7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    and s0, a7, a3
+; RV32IM-NEXT:    seqz t1, s7
+; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    and s7, t1, a3
 ; RV32IM-NEXT:    andi a3, a2, 128
-; RV32IM-NEXT:    seqz a7, s9
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    and s8, a7, s8
-; RV32IM-NEXT:    slli a7, a0, 8
-; RV32IM-NEXT:    seqz s7, s11
-; RV32IM-NEXT:    addi s7, s7, -1
-; RV32IM-NEXT:    and s7, s7, s10
+; RV32IM-NEXT:    seqz t1, s9
+; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    and s9, t1, s8
+; RV32IM-NEXT:    slli t1, a0, 8
+; RV32IM-NEXT:    seqz s0, s0
+; RV32IM-NEXT:    addi s0, s0, -1
+; RV32IM-NEXT:    and s8, s0, s10
 ; RV32IM-NEXT:    andi s10, a2, 256
 ; RV32IM-NEXT:    seqz a3, a3
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s9, a3, a1
+; RV32IM-NEXT:    and a1, a3, a1
+; RV32IM-NEXT:    sw a1, 0(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a1, a0, 9
 ; RV32IM-NEXT:    seqz a3, s10
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s11, a3, a7
+; RV32IM-NEXT:    and s10, a3, t1
 ; RV32IM-NEXT:    andi a3, a2, 512
 ; RV32IM-NEXT:    seqz a3, a3
 ; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and s10, a3, a1
+; RV32IM-NEXT:    and t6, a3, a1
 ; RV32IM-NEXT:    lui a1, 16384
-; RV32IM-NEXT:    lui a3, 2
+; RV32IM-NEXT:    li a3, 1
+; RV32IM-NEXT:    slli a3, a3, 11
 ; RV32IM-NEXT:    and a3, a2, a3
-; RV32IM-NEXT:    and a7, a2, t5
+; RV32IM-NEXT:    lui a4, 1
+; RV32IM-NEXT:    and t1, a2, a4
 ; RV32IM-NEXT:    and s1, a2, s1
-; RV32IM-NEXT:    and t5, a2, a4
+; RV32IM-NEXT:    and t3, a2, t3
 ; RV32IM-NEXT:    and s2, a2, s2
 ; RV32IM-NEXT:    and s3, a2, s3
 ; RV32IM-NEXT:    and s4, a2, s4
 ; RV32IM-NEXT:    and s5, a2, s5
 ; RV32IM-NEXT:    and s6, a2, s6
 ; RV32IM-NEXT:    and a4, a2, a1
-; RV32IM-NEXT:    lui ra, 32768
-; RV32IM-NEXT:    and ra, a2, ra
-; RV32IM-NEXT:    lui t2, 65536
-; RV32IM-NEXT:    and t2, a2, t2
-; RV32IM-NEXT:    lui t0, 131072
+; RV32IM-NEXT:    lui a7, 32768
+; RV32IM-NEXT:    and a7, a2, a7
+; RV32IM-NEXT:    lui t0, 65536
 ; RV32IM-NEXT:    and t0, a2, t0
-; RV32IM-NEXT:    lui t3, 262144
-; RV32IM-NEXT:    and t3, a2, t3
-; RV32IM-NEXT:    lui t4, 524288
+; RV32IM-NEXT:    lui ra, 131072
+; RV32IM-NEXT:    and ra, a2, ra
+; RV32IM-NEXT:    lui t4, 262144
 ; RV32IM-NEXT:    and t4, a2, t4
+; RV32IM-NEXT:    lui t5, 524288
+; RV32IM-NEXT:    and t5, a2, t5
 ; RV32IM-NEXT:    andi a1, a2, 1
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    mul a3, a0, a3
-; RV32IM-NEXT:    mul a7, a0, a7
+; RV32IM-NEXT:    mul t1, a0, t1
 ; RV32IM-NEXT:    mul s1, a0, s1
-; RV32IM-NEXT:    mul t5, a0, t5
+; RV32IM-NEXT:    mul t3, a0, t3
 ; RV32IM-NEXT:    mul s2, a0, s2
 ; RV32IM-NEXT:    mul s3, a0, s3
 ; RV32IM-NEXT:    mul s4, a0, s4
 ; RV32IM-NEXT:    mul s5, a0, s5
 ; RV32IM-NEXT:    mul s6, a0, s6
 ; RV32IM-NEXT:    mul a4, a0, a4
-; RV32IM-NEXT:    mul ra, a0, ra
-; RV32IM-NEXT:    mul t2, a0, t2
+; RV32IM-NEXT:    mul a7, a0, a7
 ; RV32IM-NEXT:    mul t0, a0, t0
-; RV32IM-NEXT:    mul t3, a0, t3
+; RV32IM-NEXT:    mul ra, a0, ra
 ; RV32IM-NEXT:    mul t4, a0, t4
+; RV32IM-NEXT:    mul t5, a0, t5
 ; RV32IM-NEXT:    addi a1, a1, -1
 ; RV32IM-NEXT:    and a1, a1, a0
 ; RV32IM-NEXT:    slli a0, a0, 10
@@ -1581,62 +1582,63 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32IM-NEXT:    seqz a2, a2
 ; RV32IM-NEXT:    addi a2, a2, -1
 ; RV32IM-NEXT:    and a0, a2, a0
-; RV32IM-NEXT:    lw a2, 20(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a3
-; RV32IM-NEXT:    lw a3, 16(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, s3
-; RV32IM-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, s3, a4
-; RV32IM-NEXT:    lw s3, 8(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, s3
-; RV32IM-NEXT:    lw s3, 4(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, s3, t6
-; RV32IM-NEXT:    xor s0, s0, s8
-; RV32IM-NEXT:    xor s3, s9, s11
-; RV32IM-NEXT:    xor a2, a2, a7
-; RV32IM-NEXT:    xor a3, a3, s4
-; RV32IM-NEXT:    xor a4, a4, ra
-; RV32IM-NEXT:    xor a1, a1, t6
-; RV32IM-NEXT:    xor a7, s0, s7
-; RV32IM-NEXT:    xor t6, s3, s10
+; RV32IM-NEXT:    lw a2, 24(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, s1
-; RV32IM-NEXT:    xor a3, a3, s5
-; RV32IM-NEXT:    xor a4, a4, t2
-; RV32IM-NEXT:    xor a1, a1, a7
+; RV32IM-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, s6
+; RV32IM-NEXT:    lw s6, 16(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, s6, a4
+; RV32IM-NEXT:    lw s6, 12(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, s6
+; RV32IM-NEXT:    lw s6, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 4(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, s6, s0
+; RV32IM-NEXT:    xor s7, s7, s9
+; RV32IM-NEXT:    xor t6, s10, t6
+; RV32IM-NEXT:    xor a2, a2, t3
+; RV32IM-NEXT:    xor a4, a4, a7
+; RV32IM-NEXT:    xor a1, a1, s6
+; RV32IM-NEXT:    xor a7, s7, s8
 ; RV32IM-NEXT:    xor a0, t6, a0
-; RV32IM-NEXT:    xor a2, a2, t5
-; RV32IM-NEXT:    xor a3, a3, s6
+; RV32IM-NEXT:    xor a2, a2, s2
 ; RV32IM-NEXT:    xor a4, a4, t0
+; RV32IM-NEXT:    xor a1, a1, a7
+; RV32IM-NEXT:    xor a0, a0, a3
+; RV32IM-NEXT:    xor a2, a2, s3
+; RV32IM-NEXT:    xor a3, a4, ra
+; RV32IM-NEXT:    lw a4, 0(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a4
+; RV32IM-NEXT:    xor a0, a0, t1
+; RV32IM-NEXT:    xor a2, a2, s4
+; RV32IM-NEXT:    xor a3, a3, t4
+; RV32IM-NEXT:    slli a4, a1, 24
 ; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    xor a1, a2, s2
-; RV32IM-NEXT:    xor a2, a4, t3
-; RV32IM-NEXT:    slli a4, a0, 24
+; RV32IM-NEXT:    xor a1, a2, s5
+; RV32IM-NEXT:    xor a2, a3, t5
 ; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    xor a1, a2, t4
-; RV32IM-NEXT:    xor a0, a0, a3
-; RV32IM-NEXT:    and a2, a0, a6
+; RV32IM-NEXT:    xor a0, a0, s1
+; RV32IM-NEXT:    and a1, a0, a6
 ; RV32IM-NEXT:    srli a3, a0, 8
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    slli a2, a2, 8
-; RV32IM-NEXT:    and a1, a3, a6
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    slli a1, a1, 8
+; RV32IM-NEXT:    and a2, a3, a6
 ; RV32IM-NEXT:    srli a0, a0, 24
-; RV32IM-NEXT:    or a2, a4, a2
-; RV32IM-NEXT:    or a0, a1, a0
+; RV32IM-NEXT:    or a1, a4, a1
 ; RV32IM-NEXT:    or a0, a2, a0
+; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    srli a1, a0, 4
 ; RV32IM-NEXT:    and a0, a0, a5
 ; RV32IM-NEXT:    and a1, a1, a5
 ; RV32IM-NEXT:    slli a0, a0, 4
 ; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    srli a1, a0, 2
-; RV32IM-NEXT:    and a0, a0, t1
-; RV32IM-NEXT:    and a1, a1, t1
+; RV32IM-NEXT:    and a0, a0, t2
+; RV32IM-NEXT:    and a1, a1, t2
 ; RV32IM-NEXT:    slli a0, a0, 2
 ; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    srli a1, a0, 1
-; RV32IM-NEXT:    lw a2, 24(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    and a1, a1, a2
+; RV32IM-NEXT:    and a0, a0, s11
+; RV32IM-NEXT:    and a1, a1, s11
 ; RV32IM-NEXT:    slli a0, a0, 1
 ; RV32IM-NEXT:    or a0, a1, a0
 ; RV32IM-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload
@@ -1833,93 +1835,93 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32IMZBS-NEXT:    sw s9, 52(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s10, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw s11, 44(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    srli a2, a0, 8
-; RV32IMZBS-NEXT:    lui a3, 16
+; RV32IMZBS-NEXT:    srli a6, a0, 8
+; RV32IMZBS-NEXT:    lui a2, 16
 ; RV32IMZBS-NEXT:    srli a7, a0, 24
 ; RV32IMZBS-NEXT:    slli t0, a0, 24
-; RV32IMZBS-NEXT:    lui a4, 61681
-; RV32IMZBS-NEXT:    lui a6, 209715
-; RV32IMZBS-NEXT:    lui t1, 349525
-; RV32IMZBS-NEXT:    srli t2, a1, 8
-; RV32IMZBS-NEXT:    srli t3, a1, 24
-; RV32IMZBS-NEXT:    slli t4, a1, 24
-; RV32IMZBS-NEXT:    addi t5, a3, -256
-; RV32IMZBS-NEXT:    sw t5, 40(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    addi a5, a4, -241
-; RV32IMZBS-NEXT:    sw a5, 36(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    addi a4, a6, 819
-; RV32IMZBS-NEXT:    addi a3, t1, 1365
-; RV32IMZBS-NEXT:    and a2, a2, t5
-; RV32IMZBS-NEXT:    and a0, a0, t5
-; RV32IMZBS-NEXT:    and t1, t2, t5
-; RV32IMZBS-NEXT:    and a1, a1, t5
-; RV32IMZBS-NEXT:    or a2, a2, a7
+; RV32IMZBS-NEXT:    lui a3, 61681
+; RV32IMZBS-NEXT:    lui t1, 209715
+; RV32IMZBS-NEXT:    lui t2, 349525
+; RV32IMZBS-NEXT:    srli t3, a1, 8
+; RV32IMZBS-NEXT:    srli t4, a1, 24
+; RV32IMZBS-NEXT:    slli t5, a1, 24
+; RV32IMZBS-NEXT:    addi a5, a2, -256
+; RV32IMZBS-NEXT:    sw a5, 40(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a4, a3, -241
+; RV32IMZBS-NEXT:    sw a4, 36(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a3, t1, 819
+; RV32IMZBS-NEXT:    addi a2, t2, 1365
+; RV32IMZBS-NEXT:    and a6, a6, a5
+; RV32IMZBS-NEXT:    and a0, a0, a5
+; RV32IMZBS-NEXT:    and t1, t3, a5
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    or a6, a6, a7
 ; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    or a7, t1, t3
+; RV32IMZBS-NEXT:    or a7, t1, t4
 ; RV32IMZBS-NEXT:    slli a1, a1, 8
 ; RV32IMZBS-NEXT:    or a0, t0, a0
-; RV32IMZBS-NEXT:    or a1, t4, a1
-; RV32IMZBS-NEXT:    or a0, a0, a2
+; RV32IMZBS-NEXT:    or a1, t5, a1
+; RV32IMZBS-NEXT:    or a0, a0, a6
 ; RV32IMZBS-NEXT:    or a1, a1, a7
-; RV32IMZBS-NEXT:    srli a2, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, a5
+; RV32IMZBS-NEXT:    srli a6, a0, 4
+; RV32IMZBS-NEXT:    and a0, a0, a4
 ; RV32IMZBS-NEXT:    srli a7, a1, 4
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    and a6, a6, a4
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    and a7, a7, a5
+; RV32IMZBS-NEXT:    and a7, a7, a4
 ; RV32IMZBS-NEXT:    slli a1, a1, 4
-; RV32IMZBS-NEXT:    or a0, a2, a0
+; RV32IMZBS-NEXT:    or a0, a6, a0
 ; RV32IMZBS-NEXT:    or a1, a7, a1
-; RV32IMZBS-NEXT:    srli a2, a0, 2
-; RV32IMZBS-NEXT:    sw a4, 32(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a0, a4
+; RV32IMZBS-NEXT:    srli a6, a0, 2
+; RV32IMZBS-NEXT:    sw a3, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a0, a3
 ; RV32IMZBS-NEXT:    srli a7, a1, 2
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    and a6, a6, a3
 ; RV32IMZBS-NEXT:    slli a0, a0, 2
-; RV32IMZBS-NEXT:    and a7, a7, a4
+; RV32IMZBS-NEXT:    and a7, a7, a3
 ; RV32IMZBS-NEXT:    slli a1, a1, 2
-; RV32IMZBS-NEXT:    or a0, a2, a0
+; RV32IMZBS-NEXT:    or a0, a6, a0
 ; RV32IMZBS-NEXT:    or a1, a7, a1
-; RV32IMZBS-NEXT:    srli a2, a0, 1
-; RV32IMZBS-NEXT:    sw a3, 28(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a0, a3
+; RV32IMZBS-NEXT:    srli a6, a0, 1
+; RV32IMZBS-NEXT:    sw a2, 28(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a0, a2
 ; RV32IMZBS-NEXT:    srli a7, a1, 1
-; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    and t0, a2, a3
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    and t0, a6, a2
 ; RV32IMZBS-NEXT:    slli a0, a0, 1
-; RV32IMZBS-NEXT:    and a3, a7, a3
-; RV32IMZBS-NEXT:    slli a2, a1, 1
-; RV32IMZBS-NEXT:    or s9, t0, a0
-; RV32IMZBS-NEXT:    or a1, a3, a2
-; RV32IMZBS-NEXT:    srli a2, a2, 31
-; RV32IMZBS-NEXT:    slli a0, s9, 1
+; RV32IMZBS-NEXT:    and a2, a7, a2
+; RV32IMZBS-NEXT:    slli a6, a1, 1
+; RV32IMZBS-NEXT:    or a5, t0, a0
+; RV32IMZBS-NEXT:    or a1, a2, a6
+; RV32IMZBS-NEXT:    srli a6, a6, 31
+; RV32IMZBS-NEXT:    slli a0, a5, 1
 ; RV32IMZBS-NEXT:    andi t0, a1, 2
-; RV32IMZBS-NEXT:    slli t2, s9, 2
+; RV32IMZBS-NEXT:    slli t2, a5, 2
 ; RV32IMZBS-NEXT:    andi t3, a1, 4
-; RV32IMZBS-NEXT:    slli t4, s9, 3
+; RV32IMZBS-NEXT:    slli a2, a5, 3
 ; RV32IMZBS-NEXT:    andi t5, a1, 8
-; RV32IMZBS-NEXT:    slli t6, s9, 4
+; RV32IMZBS-NEXT:    slli a4, a5, 4
 ; RV32IMZBS-NEXT:    andi s0, a1, 16
-; RV32IMZBS-NEXT:    slli a7, s9, 5
+; RV32IMZBS-NEXT:    slli s1, a5, 5
 ; RV32IMZBS-NEXT:    andi s2, a1, 32
-; RV32IMZBS-NEXT:    slli s3, s9, 6
+; RV32IMZBS-NEXT:    slli s3, a5, 6
 ; RV32IMZBS-NEXT:    andi s4, a1, 64
-; RV32IMZBS-NEXT:    slli s5, s9, 7
+; RV32IMZBS-NEXT:    slli a7, a5, 7
 ; RV32IMZBS-NEXT:    andi s6, a1, 128
-; RV32IMZBS-NEXT:    slli s1, s9, 8
-; RV32IMZBS-NEXT:    andi s7, a1, 256
-; RV32IMZBS-NEXT:    slli s8, s9, 9
+; RV32IMZBS-NEXT:    slli s7, a5, 8
+; RV32IMZBS-NEXT:    andi s8, a1, 256
+; RV32IMZBS-NEXT:    slli s9, a5, 9
 ; RV32IMZBS-NEXT:    andi s10, a1, 512
-; RV32IMZBS-NEXT:    slli s11, s9, 10
+; RV32IMZBS-NEXT:    slli s11, a5, 10
 ; RV32IMZBS-NEXT:    andi ra, a1, 1024
-; RV32IMZBS-NEXT:    slli t1, s9, 31
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, t1
-; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, s9, 11
+; RV32IMZBS-NEXT:    slli t1, a5, 31
+; RV32IMZBS-NEXT:    seqz a6, a6
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    and a3, a6, t1
+; RV32IMZBS-NEXT:    sw a3, 24(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, a5, 11
 ; RV32IMZBS-NEXT:    seqz t0, t0
 ; RV32IMZBS-NEXT:    addi t0, t0, -1
 ; RV32IMZBS-NEXT:    and a0, t0, a0
@@ -1929,163 +1931,163 @@ define i32 @clmulr_i32(i32 %a, i32 %b) nounwind {
 ; RV32IMZBS-NEXT:    addi t0, t0, -1
 ; RV32IMZBS-NEXT:    and a0, t0, t2
 ; RV32IMZBS-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s9, 12
+; RV32IMZBS-NEXT:    slli a0, a5, 12
 ; RV32IMZBS-NEXT:    seqz t2, t5
 ; RV32IMZBS-NEXT:    addi t2, t2, -1
-; RV32IMZBS-NEXT:    and a0, t2, t4
-; RV32IMZBS-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s9, 13
-; RV32IMZBS-NEXT:    seqz t3, s0
-; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    and a0, t3, t6
-; RV32IMZBS-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, s9, 14
-; RV32IMZBS-NEXT:    seqz t4, s2
-; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    and t5, t4, a7
-; RV32IMZBS-NEXT:    slli a2, s9, 15
-; RV32IMZBS-NEXT:    seqz t4, s4
-; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    and a0, t4, s3
-; RV32IMZBS-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s3, s9, 16
-; RV32IMZBS-NEXT:    seqz t6, s6
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and s0, t6, s5
-; RV32IMZBS-NEXT:    slli s4, s9, 17
-; RV32IMZBS-NEXT:    seqz t6, s7
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and s2, t6, s1
-; RV32IMZBS-NEXT:    slli a0, s9, 18
-; RV32IMZBS-NEXT:    seqz t6, s10
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and t4, t6, s8
-; RV32IMZBS-NEXT:    slli a7, s9, 19
-; RV32IMZBS-NEXT:    seqz t6, ra
-; RV32IMZBS-NEXT:    addi t6, t6, -1
-; RV32IMZBS-NEXT:    and t6, t6, s11
-; RV32IMZBS-NEXT:    bexti s5, t1, 11
-; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    and s6, s5, a6
-; RV32IMZBS-NEXT:    bexti a6, t1, 12
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    and t0, a6, a5
-; RV32IMZBS-NEXT:    bexti a5, t1, 13
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and s5, a5, a4
-; RV32IMZBS-NEXT:    bexti a4, t1, 14
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and t2, a4, a3
-; RV32IMZBS-NEXT:    bexti a3, t1, 15
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and t3, a3, a2
-; RV32IMZBS-NEXT:    bexti a2, t1, 16
+; RV32IMZBS-NEXT:    and a2, t2, a2
+; RV32IMZBS-NEXT:    sw a2, 8(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, a5, 13
+; RV32IMZBS-NEXT:    seqz t2, s0
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and a4, t2, a4
+; RV32IMZBS-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, a5, 14
+; RV32IMZBS-NEXT:    seqz t2, s2
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and t3, t2, s1
+; RV32IMZBS-NEXT:    slli s2, a5, 15
+; RV32IMZBS-NEXT:    seqz t2, s4
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and t5, t2, s3
+; RV32IMZBS-NEXT:    slli s3, a5, 16
+; RV32IMZBS-NEXT:    seqz t2, s6
+; RV32IMZBS-NEXT:    addi t2, t2, -1
+; RV32IMZBS-NEXT:    and a4, t2, a7
+; RV32IMZBS-NEXT:    sw a4, 12(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, a5, 17
+; RV32IMZBS-NEXT:    seqz s1, s8
+; RV32IMZBS-NEXT:    addi s1, s1, -1
+; RV32IMZBS-NEXT:    and s1, s1, s7
+; RV32IMZBS-NEXT:    slli s6, a5, 18
+; RV32IMZBS-NEXT:    seqz s4, s10
+; RV32IMZBS-NEXT:    addi s4, s4, -1
+; RV32IMZBS-NEXT:    and s4, s4, s9
+; RV32IMZBS-NEXT:    slli s7, a5, 19
+; RV32IMZBS-NEXT:    seqz s8, ra
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    and s11, s8, s11
+; RV32IMZBS-NEXT:    bexti s8, t1, 11
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    and t0, s8, a3
+; RV32IMZBS-NEXT:    bexti s8, t1, 12
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    and t2, s8, a0
+; RV32IMZBS-NEXT:    bexti s8, t1, 13
+; RV32IMZBS-NEXT:    addi s8, s8, -1
+; RV32IMZBS-NEXT:    and s8, s8, a2
+; RV32IMZBS-NEXT:    bexti a2, t1, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and ra, a2, s3
-; RV32IMZBS-NEXT:    bexti a2, t1, 17
+; RV32IMZBS-NEXT:    and s10, a2, s0
+; RV32IMZBS-NEXT:    bexti a2, t1, 15
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, s4
-; RV32IMZBS-NEXT:    bexti a5, t1, 18
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and s11, a5, a0
-; RV32IMZBS-NEXT:    bexti a5, t1, 19
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a3, a5, a7
-; RV32IMZBS-NEXT:    bexti a5, t1, 20
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, s9, 20
-; RV32IMZBS-NEXT:    and a4, a5, a6
-; RV32IMZBS-NEXT:    bexti a5, t1, 21
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, s9, 21
-; RV32IMZBS-NEXT:    and s10, a5, a6
-; RV32IMZBS-NEXT:    bexti a5, t1, 22
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    slli a6, s9, 22
-; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    bexti a6, t1, 23
-; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    slli s3, s9, 23
-; RV32IMZBS-NEXT:    and a6, a6, s3
-; RV32IMZBS-NEXT:    bexti s3, t1, 24
+; RV32IMZBS-NEXT:    and s9, a2, s2
+; RV32IMZBS-NEXT:    bexti a2, t1, 16
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    and a2, a2, s3
+; RV32IMZBS-NEXT:    bexti s0, t1, 17
+; RV32IMZBS-NEXT:    addi s0, s0, -1
+; RV32IMZBS-NEXT:    and a6, s0, a4
+; RV32IMZBS-NEXT:    bexti s0, t1, 18
+; RV32IMZBS-NEXT:    addi s0, s0, -1
+; RV32IMZBS-NEXT:    and s6, s0, s6
+; RV32IMZBS-NEXT:    bexti s0, t1, 19
+; RV32IMZBS-NEXT:    addi s0, s0, -1
+; RV32IMZBS-NEXT:    and s0, s0, s7
+; RV32IMZBS-NEXT:    bexti s2, t1, 20
+; RV32IMZBS-NEXT:    addi s2, s2, -1
+; RV32IMZBS-NEXT:    slli s3, a5, 20
+; RV32IMZBS-NEXT:    and s2, s2, s3
+; RV32IMZBS-NEXT:    bexti s3, t1, 21
 ; RV32IMZBS-NEXT:    addi s3, s3, -1
-; RV32IMZBS-NEXT:    slli s4, s9, 24
-; RV32IMZBS-NEXT:    and s3, s3, s4
-; RV32IMZBS-NEXT:    bexti s4, t1, 25
-; RV32IMZBS-NEXT:    addi s4, s4, -1
-; RV32IMZBS-NEXT:    slli a0, s9, 25
-; RV32IMZBS-NEXT:    and a0, s4, a0
-; RV32IMZBS-NEXT:    bexti s4, t1, 26
-; RV32IMZBS-NEXT:    addi s4, s4, -1
-; RV32IMZBS-NEXT:    slli a7, s9, 26
-; RV32IMZBS-NEXT:    and a7, s4, a7
-; RV32IMZBS-NEXT:    bexti s4, t1, 27
-; RV32IMZBS-NEXT:    addi s4, s4, -1
-; RV32IMZBS-NEXT:    slli s1, s9, 27
-; RV32IMZBS-NEXT:    and s1, s4, s1
-; RV32IMZBS-NEXT:    bexti s4, t1, 28
-; RV32IMZBS-NEXT:    addi s4, s4, -1
-; RV32IMZBS-NEXT:    slli s7, s9, 28
-; RV32IMZBS-NEXT:    and s4, s4, s7
-; RV32IMZBS-NEXT:    bexti s7, t1, 29
+; RV32IMZBS-NEXT:    slli s7, a5, 21
+; RV32IMZBS-NEXT:    and s3, s3, s7
+; RV32IMZBS-NEXT:    bexti s7, t1, 22
 ; RV32IMZBS-NEXT:    addi s7, s7, -1
-; RV32IMZBS-NEXT:    slli s8, s9, 29
-; RV32IMZBS-NEXT:    and s7, s7, s8
+; RV32IMZBS-NEXT:    slli ra, a5, 22
+; RV32IMZBS-NEXT:    and s7, s7, ra
+; RV32IMZBS-NEXT:    bexti ra, t1, 23
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli a0, a5, 23
+; RV32IMZBS-NEXT:    and a0, ra, a0
+; RV32IMZBS-NEXT:    bexti ra, t1, 24
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli a3, a5, 24
+; RV32IMZBS-NEXT:    and a3, ra, a3
+; RV32IMZBS-NEXT:    bexti ra, t1, 25
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli a4, a5, 25
+; RV32IMZBS-NEXT:    and a4, ra, a4
+; RV32IMZBS-NEXT:    bexti ra, t1, 26
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli a7, a5, 26
+; RV32IMZBS-NEXT:    and a7, ra, a7
+; RV32IMZBS-NEXT:    bexti ra, t1, 27
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli t4, a5, 27
+; RV32IMZBS-NEXT:    and t4, ra, t4
+; RV32IMZBS-NEXT:    bexti ra, t1, 28
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli t6, a5, 28
+; RV32IMZBS-NEXT:    and t6, ra, t6
+; RV32IMZBS-NEXT:    bexti ra, t1, 29
+; RV32IMZBS-NEXT:    addi ra, ra, -1
+; RV32IMZBS-NEXT:    slli s5, a5, 29
+; RV32IMZBS-NEXT:    and s5, ra, s5
 ; RV32IMZBS-NEXT:    andi a1, a1, 1
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a1, a1, s9
-; RV32IMZBS-NEXT:    slli s9, s9, 30
+; RV32IMZBS-NEXT:    and a1, a1, a5
+; RV32IMZBS-NEXT:    slli a5, a5, 30
 ; RV32IMZBS-NEXT:    bexti t1, t1, 30
 ; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    and t1, t1, s9
-; RV32IMZBS-NEXT:    lw s8, 20(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, s8
-; RV32IMZBS-NEXT:    lw s8, 16(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 12(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s8, s9
-; RV32IMZBS-NEXT:    lw s9, 8(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, s9, t5
-; RV32IMZBS-NEXT:    xor s0, s0, s2
-; RV32IMZBS-NEXT:    xor t0, s6, t0
-; RV32IMZBS-NEXT:    xor a2, ra, a2
-; RV32IMZBS-NEXT:    xor a5, a5, a6
-; RV32IMZBS-NEXT:    xor a6, s7, t1
-; RV32IMZBS-NEXT:    xor a1, a1, s8
-; RV32IMZBS-NEXT:    lw t1, 4(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t5, t1
-; RV32IMZBS-NEXT:    xor t4, s0, t4
-; RV32IMZBS-NEXT:    xor t0, t0, s5
-; RV32IMZBS-NEXT:    xor a2, a2, s11
-; RV32IMZBS-NEXT:    xor a5, a5, s3
-; RV32IMZBS-NEXT:    lw t5, 24(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, t5
+; RV32IMZBS-NEXT:    and a5, t1, a5
+; RV32IMZBS-NEXT:    lw t1, 20(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, t1
-; RV32IMZBS-NEXT:    xor t1, t4, t6
-; RV32IMZBS-NEXT:    xor t0, t0, t2
-; RV32IMZBS-NEXT:    xor a2, a2, a3
-; RV32IMZBS-NEXT:    xor a0, a5, a0
+; RV32IMZBS-NEXT:    lw t1, 16(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw ra, 8(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t1, ra
+; RV32IMZBS-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, ra, t3
+; RV32IMZBS-NEXT:    xor s1, s1, s4
+; RV32IMZBS-NEXT:    xor s4, s8, s10
+; RV32IMZBS-NEXT:    xor s0, s0, s2
+; RV32IMZBS-NEXT:    xor a3, a3, a4
 ; RV32IMZBS-NEXT:    xor a1, a1, t1
-; RV32IMZBS-NEXT:    xor a3, t0, t3
-; RV32IMZBS-NEXT:    xor a2, a2, a4
-; RV32IMZBS-NEXT:    xor a0, a0, a7
-; RV32IMZBS-NEXT:    xor a1, a1, a3
-; RV32IMZBS-NEXT:    xor a2, a2, s10
-; RV32IMZBS-NEXT:    xor a0, a0, s1
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    xor a0, a0, s4
-; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    xor a0, a0, a6
-; RV32IMZBS-NEXT:    srli a1, a0, 8
-; RV32IMZBS-NEXT:    srli a2, a0, 24
-; RV32IMZBS-NEXT:    slli a3, a0, 24
-; RV32IMZBS-NEXT:    lw a4, 40(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a0, a0, a4
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    or a1, a1, a2
-; RV32IMZBS-NEXT:    or a0, a3, a0
-; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    xor a4, t3, t5
+; RV32IMZBS-NEXT:    xor t1, s1, s11
+; RV32IMZBS-NEXT:    xor t3, s4, s9
+; RV32IMZBS-NEXT:    xor t5, s0, s3
+; RV32IMZBS-NEXT:    xor a3, a3, a7
+; RV32IMZBS-NEXT:    xor a1, a1, a4
+; RV32IMZBS-NEXT:    xor a4, t1, t0
+; RV32IMZBS-NEXT:    xor a2, t3, a2
+; RV32IMZBS-NEXT:    xor a7, t5, s7
+; RV32IMZBS-NEXT:    xor a3, a3, t4
+; RV32IMZBS-NEXT:    lw t0, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t0
+; RV32IMZBS-NEXT:    xor a4, a4, t2
+; RV32IMZBS-NEXT:    xor a2, a2, a6
+; RV32IMZBS-NEXT:    xor a0, a7, a0
+; RV32IMZBS-NEXT:    xor a3, a3, t6
+; RV32IMZBS-NEXT:    xor a2, a2, s6
+; RV32IMZBS-NEXT:    xor a4, a1, a4
+; RV32IMZBS-NEXT:    slli a1, a1, 24
+; RV32IMZBS-NEXT:    xor a3, a3, s5
+; RV32IMZBS-NEXT:    xor a2, a4, a2
+; RV32IMZBS-NEXT:    xor a3, a3, a5
+; RV32IMZBS-NEXT:    xor a0, a2, a0
+; RV32IMZBS-NEXT:    lw a2, 24(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a3, a2
+; RV32IMZBS-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a3, a0, a5
+; RV32IMZBS-NEXT:    srli a4, a0, 8
+; RV32IMZBS-NEXT:    xor a0, a0, a2
+; RV32IMZBS-NEXT:    slli a3, a3, 8
+; RV32IMZBS-NEXT:    and a2, a4, a5
+; RV32IMZBS-NEXT:    srli a0, a0, 24
+; RV32IMZBS-NEXT:    or a1, a1, a3
+; RV32IMZBS-NEXT:    or a0, a2, a0
+; RV32IMZBS-NEXT:    or a0, a1, a0
 ; RV32IMZBS-NEXT:    srli a1, a0, 4
 ; RV32IMZBS-NEXT:    lw a2, 36(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    and a0, a0, a2
@@ -2780,98 +2782,98 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw s9, 756(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    sw s10, 752(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    sw s11, 748(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw a3, 736(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw a2, 732(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a3, 732(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 728(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a2, 0(a0)
-; RV32I-NEXT:    lw a4, 4(a0)
+; RV32I-NEXT:    lw t4, 4(a0)
 ; RV32I-NEXT:    lw t0, 8(a0)
 ; RV32I-NEXT:    lw a0, 12(a0)
 ; RV32I-NEXT:    lw s7, 0(a1)
 ; RV32I-NEXT:    lw t2, 4(a1)
 ; RV32I-NEXT:    lw t1, 8(a1)
 ; RV32I-NEXT:    lw a1, 12(a1)
-; RV32I-NEXT:    lui a7, 16
+; RV32I-NEXT:    lui a6, 16
 ; RV32I-NEXT:    lui a3, 61681
-; RV32I-NEXT:    lui a5, 209715
-; RV32I-NEXT:    lui a6, 349525
-; RV32I-NEXT:    addi ra, a7, -256
+; RV32I-NEXT:    lui a4, 209715
+; RV32I-NEXT:    lui a5, 349525
+; RV32I-NEXT:    addi ra, a6, -256
 ; RV32I-NEXT:    addi s11, a3, -241
-; RV32I-NEXT:    addi s10, a5, 819
-; RV32I-NEXT:    addi s9, a6, 1365
-; RV32I-NEXT:    srli a7, t2, 8
-; RV32I-NEXT:    srli t4, t2, 24
+; RV32I-NEXT:    addi s10, a4, 819
+; RV32I-NEXT:    addi s9, a5, 1365
+; RV32I-NEXT:    srli a6, t2, 8
+; RV32I-NEXT:    srli a4, t2, 24
 ; RV32I-NEXT:    and a3, t2, ra
 ; RV32I-NEXT:    slli t2, t2, 24
-; RV32I-NEXT:    srli a5, a4, 8
-; RV32I-NEXT:    srli s3, a4, 24
-; RV32I-NEXT:    and t3, a4, ra
-; RV32I-NEXT:    slli a4, a4, 24
-; RV32I-NEXT:    srli t5, s7, 8
-; RV32I-NEXT:    srli s6, s7, 24
-; RV32I-NEXT:    and s1, s7, ra
+; RV32I-NEXT:    srli t5, t4, 8
+; RV32I-NEXT:    srli s1, t4, 24
+; RV32I-NEXT:    and t3, t4, ra
+; RV32I-NEXT:    slli t4, t4, 24
+; RV32I-NEXT:    srli a7, s7, 8
+; RV32I-NEXT:    srli s3, s7, 24
+; RV32I-NEXT:    and s5, s7, ra
 ; RV32I-NEXT:    slli s7, s7, 24
-; RV32I-NEXT:    srli s8, a2, 8
+; RV32I-NEXT:    srli s6, a2, 8
 ; RV32I-NEXT:    srli t6, a2, 24
 ; RV32I-NEXT:    and s0, a2, ra
-; RV32I-NEXT:    slli a6, a2, 24
-; RV32I-NEXT:    and a2, a7, ra
-; RV32I-NEXT:    or a2, a2, t4
+; RV32I-NEXT:    slli a5, a2, 24
+; RV32I-NEXT:    and a2, a6, ra
+; RV32I-NEXT:    or a2, a2, a4
 ; RV32I-NEXT:    srli s2, a1, 8
 ; RV32I-NEXT:    slli a3, a3, 8
 ; RV32I-NEXT:    or a3, t2, a3
 ; RV32I-NEXT:    srli s4, a1, 24
-; RV32I-NEXT:    and a5, a5, ra
-; RV32I-NEXT:    or t2, a5, s3
-; RV32I-NEXT:    and s3, a1, ra
-; RV32I-NEXT:    slli s5, a1, 24
-; RV32I-NEXT:    slli a1, t3, 8
-; RV32I-NEXT:    or a1, a4, a1
-; RV32I-NEXT:    srli a5, a0, 8
 ; RV32I-NEXT:    and a4, t5, ra
-; RV32I-NEXT:    or t3, a4, s6
-; RV32I-NEXT:    srli t5, a0, 24
-; RV32I-NEXT:    slli s1, s1, 8
-; RV32I-NEXT:    or a4, s7, s1
-; RV32I-NEXT:    and a7, a0, ra
-; RV32I-NEXT:    slli t4, a0, 24
-; RV32I-NEXT:    and a0, s8, ra
+; RV32I-NEXT:    or t2, a4, s1
+; RV32I-NEXT:    and s1, a1, ra
+; RV32I-NEXT:    slli s8, a1, 24
+; RV32I-NEXT:    slli t3, t3, 8
+; RV32I-NEXT:    or a1, t4, t3
+; RV32I-NEXT:    srli t5, a0, 8
+; RV32I-NEXT:    and a4, a7, ra
+; RV32I-NEXT:    or t3, a4, s3
+; RV32I-NEXT:    srli a7, a0, 24
+; RV32I-NEXT:    slli s5, s5, 8
+; RV32I-NEXT:    or t4, s7, s5
+; RV32I-NEXT:    and a6, a0, ra
+; RV32I-NEXT:    slli a4, a0, 24
+; RV32I-NEXT:    and a0, s6, ra
 ; RV32I-NEXT:    or a0, a0, t6
-; RV32I-NEXT:    srli s1, t1, 8
+; RV32I-NEXT:    srli s5, t1, 8
 ; RV32I-NEXT:    slli s0, s0, 8
-; RV32I-NEXT:    or t6, a6, s0
-; RV32I-NEXT:    srli a6, t1, 24
+; RV32I-NEXT:    or t6, a5, s0
+; RV32I-NEXT:    srli a5, t1, 24
 ; RV32I-NEXT:    and s0, s2, ra
 ; RV32I-NEXT:    or s0, s0, s4
 ; RV32I-NEXT:    and s7, t1, ra
-; RV32I-NEXT:    slli s6, t1, 24
-; RV32I-NEXT:    slli s3, s3, 8
-; RV32I-NEXT:    or t1, s5, s3
-; RV32I-NEXT:    srli s2, t0, 8
-; RV32I-NEXT:    and a5, a5, ra
-; RV32I-NEXT:    or a5, a5, t5
+; RV32I-NEXT:    slli s3, t1, 24
+; RV32I-NEXT:    slli s1, s1, 8
+; RV32I-NEXT:    or t1, s8, s1
+; RV32I-NEXT:    srli s1, t0, 8
+; RV32I-NEXT:    and t5, t5, ra
+; RV32I-NEXT:    or a7, t5, a7
 ; RV32I-NEXT:    srli t5, t0, 24
-; RV32I-NEXT:    slli a7, a7, 8
-; RV32I-NEXT:    or a7, t4, a7
-; RV32I-NEXT:    and t4, t0, ra
+; RV32I-NEXT:    slli a6, a6, 8
+; RV32I-NEXT:    or a4, a4, a6
+; RV32I-NEXT:    and a6, t0, ra
 ; RV32I-NEXT:    slli t0, t0, 24
-; RV32I-NEXT:    and s1, s1, ra
+; RV32I-NEXT:    and s2, s5, ra
 ; RV32I-NEXT:    slli s7, s7, 8
-; RV32I-NEXT:    and s2, s2, ra
-; RV32I-NEXT:    slli t4, t4, 8
-; RV32I-NEXT:    or a6, s1, a6
-; RV32I-NEXT:    or s1, s6, s7
-; RV32I-NEXT:    or t5, s2, t5
-; RV32I-NEXT:    or t0, t0, t4
+; RV32I-NEXT:    and s1, s1, ra
+; RV32I-NEXT:    slli a6, a6, 8
+; RV32I-NEXT:    or a5, s2, a5
+; RV32I-NEXT:    or s2, s3, s7
+; RV32I-NEXT:    or t5, s1, t5
+; RV32I-NEXT:    or a6, t0, a6
 ; RV32I-NEXT:    or a2, a3, a2
 ; RV32I-NEXT:    or a1, a1, t2
-; RV32I-NEXT:    or a3, a4, t3
+; RV32I-NEXT:    or a3, t4, t3
 ; RV32I-NEXT:    or a0, t6, a0
-; RV32I-NEXT:    or a4, t1, s0
-; RV32I-NEXT:    or a5, a7, a5
-; RV32I-NEXT:    or a6, s1, a6
-; RV32I-NEXT:    or a7, t0, t5
-; RV32I-NEXT:    srli t0, a2, 4
-; RV32I-NEXT:    sw s11, 744(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or t0, t1, s0
+; RV32I-NEXT:    or a4, a4, a7
+; RV32I-NEXT:    or a5, s2, a5
+; RV32I-NEXT:    or a6, a6, t5
+; RV32I-NEXT:    srli a7, a2, 4
+; RV32I-NEXT:    sw s11, 740(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s11
 ; RV32I-NEXT:    srli t1, a1, 4
 ; RV32I-NEXT:    and a1, a1, s11
@@ -2879,15 +2881,15 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a3, a3, s11
 ; RV32I-NEXT:    srli t3, a0, 4
 ; RV32I-NEXT:    and a0, a0, s11
-; RV32I-NEXT:    srli t4, a4, 4
+; RV32I-NEXT:    srli t4, t0, 4
+; RV32I-NEXT:    and t0, t0, s11
+; RV32I-NEXT:    srli t5, a4, 4
 ; RV32I-NEXT:    and a4, a4, s11
-; RV32I-NEXT:    srli t5, a5, 4
+; RV32I-NEXT:    srli t6, a5, 4
 ; RV32I-NEXT:    and a5, a5, s11
-; RV32I-NEXT:    srli t6, a6, 4
+; RV32I-NEXT:    srli s0, a6, 4
 ; RV32I-NEXT:    and a6, a6, s11
-; RV32I-NEXT:    srli s0, a7, 4
 ; RV32I-NEXT:    and a7, a7, s11
-; RV32I-NEXT:    and t0, t0, s11
 ; RV32I-NEXT:    slli a2, a2, 4
 ; RV32I-NEXT:    and t1, t1, s11
 ; RV32I-NEXT:    slli a1, a1, 4
@@ -2896,21 +2898,21 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and t3, t3, s11
 ; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    and t4, t4, s11
-; RV32I-NEXT:    slli a4, a4, 4
+; RV32I-NEXT:    slli t0, t0, 4
 ; RV32I-NEXT:    and t5, t5, s11
-; RV32I-NEXT:    slli a5, a5, 4
+; RV32I-NEXT:    slli a4, a4, 4
 ; RV32I-NEXT:    and t6, t6, s11
-; RV32I-NEXT:    slli a6, a6, 4
+; RV32I-NEXT:    slli a5, a5, 4
 ; RV32I-NEXT:    and s0, s0, s11
-; RV32I-NEXT:    slli a7, a7, 4
-; RV32I-NEXT:    or a2, t0, a2
+; RV32I-NEXT:    slli a6, a6, 4
+; RV32I-NEXT:    or a2, a7, a2
 ; RV32I-NEXT:    or a1, t1, a1
 ; RV32I-NEXT:    or a3, t2, a3
 ; RV32I-NEXT:    or a0, t3, a0
-; RV32I-NEXT:    or a4, t4, a4
-; RV32I-NEXT:    or a5, t5, a5
-; RV32I-NEXT:    or a6, t6, a6
-; RV32I-NEXT:    or a7, s0, a7
+; RV32I-NEXT:    or a7, t4, t0
+; RV32I-NEXT:    or a4, t5, a4
+; RV32I-NEXT:    or a5, t6, a5
+; RV32I-NEXT:    or a6, s0, a6
 ; RV32I-NEXT:    srli t0, a2, 2
 ; RV32I-NEXT:    sw s10, 724(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s10
@@ -2920,14 +2922,14 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a3, a3, s10
 ; RV32I-NEXT:    srli t3, a0, 2
 ; RV32I-NEXT:    and a0, a0, s10
-; RV32I-NEXT:    srli t4, a4, 2
+; RV32I-NEXT:    srli t4, a7, 2
+; RV32I-NEXT:    and a7, a7, s10
+; RV32I-NEXT:    srli t5, a4, 2
 ; RV32I-NEXT:    and a4, a4, s10
-; RV32I-NEXT:    srli t5, a5, 2
+; RV32I-NEXT:    srli t6, a5, 2
 ; RV32I-NEXT:    and a5, a5, s10
-; RV32I-NEXT:    srli t6, a6, 2
+; RV32I-NEXT:    srli s0, a6, 2
 ; RV32I-NEXT:    and a6, a6, s10
-; RV32I-NEXT:    srli s0, a7, 2
-; RV32I-NEXT:    and a7, a7, s10
 ; RV32I-NEXT:    and t0, t0, s10
 ; RV32I-NEXT:    slli a2, a2, 2
 ; RV32I-NEXT:    and t1, t1, s10
@@ -2937,23 +2939,23 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and t3, t3, s10
 ; RV32I-NEXT:    slli a0, a0, 2
 ; RV32I-NEXT:    and t4, t4, s10
-; RV32I-NEXT:    slli a4, a4, 2
+; RV32I-NEXT:    slli a7, a7, 2
 ; RV32I-NEXT:    and t5, t5, s10
-; RV32I-NEXT:    slli a5, a5, 2
+; RV32I-NEXT:    slli a4, a4, 2
 ; RV32I-NEXT:    and t6, t6, s10
-; RV32I-NEXT:    slli a6, a6, 2
+; RV32I-NEXT:    slli a5, a5, 2
 ; RV32I-NEXT:    and s0, s0, s10
-; RV32I-NEXT:    slli a7, a7, 2
+; RV32I-NEXT:    slli a6, a6, 2
 ; RV32I-NEXT:    or a2, t0, a2
 ; RV32I-NEXT:    or a1, t1, a1
 ; RV32I-NEXT:    or a3, t2, a3
 ; RV32I-NEXT:    or a0, t3, a0
-; RV32I-NEXT:    or a4, t4, a4
-; RV32I-NEXT:    or a5, t5, a5
-; RV32I-NEXT:    or a6, t6, a6
-; RV32I-NEXT:    or a7, s0, a7
+; RV32I-NEXT:    or a7, t4, a7
+; RV32I-NEXT:    or a4, t5, a4
+; RV32I-NEXT:    or a5, t6, a5
+; RV32I-NEXT:    or a6, s0, a6
 ; RV32I-NEXT:    srli t0, a2, 1
-; RV32I-NEXT:    sw s9, 728(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw s9, 744(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, s9
 ; RV32I-NEXT:    srli t1, a1, 1
 ; RV32I-NEXT:    and a1, a1, s9
@@ -2961,14 +2963,14 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a3, a3, s9
 ; RV32I-NEXT:    srli t3, a0, 1
 ; RV32I-NEXT:    and a0, a0, s9
-; RV32I-NEXT:    srli t4, a4, 1
+; RV32I-NEXT:    srli t4, a7, 1
+; RV32I-NEXT:    and a7, a7, s9
+; RV32I-NEXT:    srli t5, a4, 1
 ; RV32I-NEXT:    and a4, a4, s9
-; RV32I-NEXT:    srli t5, a5, 1
+; RV32I-NEXT:    srli t6, a5, 1
 ; RV32I-NEXT:    and a5, a5, s9
-; RV32I-NEXT:    srli t6, a6, 1
+; RV32I-NEXT:    srli s0, a6, 1
 ; RV32I-NEXT:    and a6, a6, s9
-; RV32I-NEXT:    srli s0, a7, 1
-; RV32I-NEXT:    and a7, a7, s9
 ; RV32I-NEXT:    and t0, t0, s9
 ; RV32I-NEXT:    slli a2, a2, 1
 ; RV32I-NEXT:    and t1, t1, s9
@@ -2978,90 +2980,90 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and t3, t3, s9
 ; RV32I-NEXT:    slli s2, a0, 1
 ; RV32I-NEXT:    and t4, t4, s9
+; RV32I-NEXT:    slli a7, a7, 1
+; RV32I-NEXT:    and s3, t5, s9
 ; RV32I-NEXT:    slli a4, a4, 1
-; RV32I-NEXT:    and t5, t5, s9
-; RV32I-NEXT:    slli s3, a5, 1
 ; RV32I-NEXT:    and s4, t6, s9
-; RV32I-NEXT:    slli a6, a6, 1
+; RV32I-NEXT:    slli a5, a5, 1
 ; RV32I-NEXT:    and s5, s0, s9
-; RV32I-NEXT:    slli s0, a7, 1
+; RV32I-NEXT:    slli s0, a6, 1
 ; RV32I-NEXT:    or a0, t0, a2
 ; RV32I-NEXT:    or a1, t1, s1
 ; RV32I-NEXT:    or a2, t2, a3
-; RV32I-NEXT:    srli t6, s1, 31
+; RV32I-NEXT:    srli t0, s1, 31
 ; RV32I-NEXT:    or a3, t3, s2
-; RV32I-NEXT:    srli a5, s2, 31
-; RV32I-NEXT:    or t0, t4, a4
-; RV32I-NEXT:    or t3, t5, s3
-; RV32I-NEXT:    or t1, s4, a6
-; RV32I-NEXT:    srli a4, s3, 31
-; RV32I-NEXT:    or s6, s5, s0
+; RV32I-NEXT:    srli t6, s2, 31
+; RV32I-NEXT:    or t1, t4, a7
+; RV32I-NEXT:    or t3, s3, a4
+; RV32I-NEXT:    or t5, s4, a5
+; RV32I-NEXT:    srli t4, a4, 31
+; RV32I-NEXT:    or s5, s5, s0
 ; RV32I-NEXT:    srli t2, s0, 31
-; RV32I-NEXT:    srli a6, a0, 8
-; RV32I-NEXT:    srli a7, a0, 24
-; RV32I-NEXT:    srli t4, a1, 8
-; RV32I-NEXT:    srli t5, a1, 24
+; RV32I-NEXT:    srli a4, a0, 8
+; RV32I-NEXT:    srli a5, a0, 24
+; RV32I-NEXT:    srli a6, a1, 8
+; RV32I-NEXT:    srli a7, a1, 24
 ; RV32I-NEXT:    slli s1, a1, 24
 ; RV32I-NEXT:    and s2, a1, ra
-; RV32I-NEXT:    slli s3, a2, 31
-; RV32I-NEXT:    seqz s4, t6
-; RV32I-NEXT:    srli t6, t0, 8
-; RV32I-NEXT:    and a6, a6, ra
-; RV32I-NEXT:    or s0, a6, a7
-; RV32I-NEXT:    srli a7, t0, 24
-; RV32I-NEXT:    and a6, t4, ra
-; RV32I-NEXT:    or a6, a6, t5
-; RV32I-NEXT:    srli t5, t3, 8
+; RV32I-NEXT:    slli s4, a2, 31
+; RV32I-NEXT:    seqz s6, t0
+; RV32I-NEXT:    srli s3, t1, 8
+; RV32I-NEXT:    and a4, a4, ra
+; RV32I-NEXT:    or t0, a4, a5
+; RV32I-NEXT:    srli a4, t1, 24
+; RV32I-NEXT:    and a5, a6, ra
+; RV32I-NEXT:    or s0, a5, a7
+; RV32I-NEXT:    srli a7, t3, 8
 ; RV32I-NEXT:    slli s2, s2, 8
-; RV32I-NEXT:    or t4, s1, s2
+; RV32I-NEXT:    or a6, s1, s2
 ; RV32I-NEXT:    srli s1, t3, 24
-; RV32I-NEXT:    and t6, t6, ra
-; RV32I-NEXT:    or a7, t6, a7
-; RV32I-NEXT:    slli t6, t3, 24
-; RV32I-NEXT:    and t5, t5, ra
-; RV32I-NEXT:    or t5, t5, s1
-; RV32I-NEXT:    and s1, t3, ra
-; RV32I-NEXT:    slli s1, s1, 8
-; RV32I-NEXT:    or s1, t6, s1
-; RV32I-NEXT:    slli t6, a0, 31
-; RV32I-NEXT:    seqz s2, a5
-; RV32I-NEXT:    addi a5, s4, -1
-; RV32I-NEXT:    addi s2, s2, -1
-; RV32I-NEXT:    and s3, a5, s3
-; RV32I-NEXT:    sw s3, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and s2, s2, t6
-; RV32I-NEXT:    sw s2, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a5, a5, t6
-; RV32I-NEXT:    sw a5, 712(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a5, t1, 31
-; RV32I-NEXT:    seqz a4, a4
-; RV32I-NEXT:    seqz t6, t2
-; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    addi t6, t6, -1
-; RV32I-NEXT:    and a5, a4, a5
-; RV32I-NEXT:    sw a5, 704(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a5, t0, 31
-; RV32I-NEXT:    and t2, t6, a5
+; RV32I-NEXT:    and a5, s3, ra
+; RV32I-NEXT:    or a5, a5, a4
+; RV32I-NEXT:    slli s2, t3, 24
+; RV32I-NEXT:    and a4, a7, ra
+; RV32I-NEXT:    or a4, a4, s1
+; RV32I-NEXT:    and a7, t3, ra
+; RV32I-NEXT:    slli a7, a7, 8
+; RV32I-NEXT:    or a7, s2, a7
+; RV32I-NEXT:    slli s3, a0, 31
+; RV32I-NEXT:    seqz s1, t6
+; RV32I-NEXT:    addi t6, s6, -1
+; RV32I-NEXT:    addi s1, s1, -1
+; RV32I-NEXT:    and s2, t6, s4
+; RV32I-NEXT:    sw s2, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s1, s1, s3
+; RV32I-NEXT:    sw s1, 716(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t6, t6, s3
+; RV32I-NEXT:    sw t6, 720(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t6, t5, 31
+; RV32I-NEXT:    seqz t4, t4
+; RV32I-NEXT:    seqz s1, t2
+; RV32I-NEXT:    addi t4, t4, -1
+; RV32I-NEXT:    addi s1, s1, -1
+; RV32I-NEXT:    and t2, t4, t6
+; RV32I-NEXT:    sw t2, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t6, t1, 31
+; RV32I-NEXT:    and t2, s1, t6
+; RV32I-NEXT:    sw t2, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t2, t4, t6
 ; RV32I-NEXT:    sw t2, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a4, a5
-; RV32I-NEXT:    sw a4, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw ra, 740(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a0, ra
-; RV32I-NEXT:    slli a4, a4, 8
+; RV32I-NEXT:    sw ra, 736(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and t4, a0, ra
+; RV32I-NEXT:    slli t4, t4, 8
 ; RV32I-NEXT:    slli t6, a0, 24
-; RV32I-NEXT:    or a4, t6, a4
-; RV32I-NEXT:    or a4, a4, s0
-; RV32I-NEXT:    sw a4, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a4, t4, a6
-; RV32I-NEXT:    sw a4, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, t0, ra
-; RV32I-NEXT:    slli a4, a4, 8
-; RV32I-NEXT:    slli s3, t0, 24
-; RV32I-NEXT:    or a4, s3, a4
-; RV32I-NEXT:    or a4, a4, a7
+; RV32I-NEXT:    or t4, t6, t4
+; RV32I-NEXT:    or t0, t4, t0
+; RV32I-NEXT:    sw t0, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a6, a6, s0
+; RV32I-NEXT:    sw a6, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a6, t1, ra
+; RV32I-NEXT:    slli a6, a6, 8
+; RV32I-NEXT:    slli t2, t1, 24
+; RV32I-NEXT:    or a6, t2, a6
+; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    sw a5, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a4, a7, a4
 ; RV32I-NEXT:    sw a4, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a4, s1, t5
-; RV32I-NEXT:    sw a4, 700(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 2
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 2
@@ -3072,7 +3074,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and s4, a4, a6
 ; RV32I-NEXT:    slli a6, a0, 1
 ; RV32I-NEXT:    and s2, a5, a6
-; RV32I-NEXT:    and t5, a4, a6
+; RV32I-NEXT:    and t4, a4, a6
 ; RV32I-NEXT:    andi a4, a1, 4
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 4
@@ -3080,12 +3082,11 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a4, a4, -1
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 2
-; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s8, a4, a6
 ; RV32I-NEXT:    slli a6, a0, 2
 ; RV32I-NEXT:    and s7, a5, a6
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 676(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 672(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 8
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 8
@@ -3094,12 +3095,11 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 3
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 632(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 3
-; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s11, a5, a6
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 660(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 16
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 16
@@ -3108,12 +3108,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 4
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 608(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 4
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 616(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 648(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 32
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 32
@@ -3122,10 +3122,10 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 5
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 5
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
 ; RV32I-NEXT:    sw a4, 636(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 64
@@ -3136,12 +3136,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 6
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 640(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 6
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 644(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 668(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 128
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 128
@@ -3150,12 +3150,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 7
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 560(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 7
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 256
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 256
@@ -3164,12 +3164,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 8
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 544(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 8
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 584(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 512
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 512
@@ -3178,12 +3178,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 9
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 592(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 9
 ; RV32I-NEXT:    and a5, a5, a6
 ; RV32I-NEXT:    sw a5, 600(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a4, a1, 1024
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 1024
@@ -3192,12 +3192,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 10
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 652(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 10
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 664(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 656(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 680(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 612(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    li a4, 1
 ; RV32I-NEXT:    slli a7, a4, 11
 ; RV32I-NEXT:    and a4, a1, a7
@@ -3208,12 +3208,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 11
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 488(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 504(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 11
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 500(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 520(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 664(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 1
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3223,12 +3223,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 12
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 476(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 484(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 12
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 484(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 676(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 2
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3238,12 +3238,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 13
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 512(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 524(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 13
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 532(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 516(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 4
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3256,9 +3256,9 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 572(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 14
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 576(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 492(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 8
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3268,12 +3268,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 15
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 624(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 15
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 628(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 16
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3283,12 +3283,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 16
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 412(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 424(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 16
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 416(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 432(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 448(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 580(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 32
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3298,12 +3298,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 17
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 396(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 404(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 17
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 404(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 420(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 420(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 604(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 64
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3313,12 +3313,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 18
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 436(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 452(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 18
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 444(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 460(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 480(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 620(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 128
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3328,12 +3328,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 19
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 496(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 500(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 19
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 416(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 256
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3343,12 +3343,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 20
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 528(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 20
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 396(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 512
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3358,12 +3358,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 21
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 552(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 21
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 436(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 1024
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3373,12 +3373,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 22
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 368(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 372(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 22
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 372(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 380(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 384(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 488(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 2048
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3391,9 +3391,9 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 360(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 23
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 364(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 368(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 376(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 4096
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3403,11 +3403,11 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 24
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 380(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 384(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a5, a5, t6
-; RV32I-NEXT:    sw a5, 388(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 392(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, t6
-; RV32I-NEXT:    sw a4, 392(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 376(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 8192
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3420,9 +3420,9 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    sw a6, 400(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 25
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 408(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 412(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 424(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 16384
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3432,12 +3432,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 26
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 428(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 444(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 26
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 432(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 460(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 388(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 32768
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3447,12 +3447,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 27
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 452(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 468(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 27
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 456(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 472(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 464(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 408(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 65536
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3462,12 +3462,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 28
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 472(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 480(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 28
 ; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 468(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a4, a4, a6
-; RV32I-NEXT:    sw a4, 492(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 131072
 ; RV32I-NEXT:    and a4, a1, a5
 ; RV32I-NEXT:    seqz a4, a4
@@ -3477,15 +3477,15 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 29
 ; RV32I-NEXT:    and a6, a4, a6
-; RV32I-NEXT:    sw a6, 348(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a6, 352(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a6, a0, 29
-; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    sw a5, 352(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and t6, a4, a6
+; RV32I-NEXT:    and t6, a5, a6
+; RV32I-NEXT:    and a4, a4, a6
+; RV32I-NEXT:    sw a4, 440(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a5, 262144
 ; RV32I-NEXT:    andi a4, a1, 1
 ; RV32I-NEXT:    and a1, a1, a5
-; RV32I-NEXT:    lui t2, 262144
+; RV32I-NEXT:    lui t0, 262144
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    andi a5, a3, 1
 ; RV32I-NEXT:    seqz a5, a5
@@ -3493,13 +3493,12 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    addi a5, a5, -1
 ; RV32I-NEXT:    slli a6, a2, 30
 ; RV32I-NEXT:    and a2, a4, a2
-; RV32I-NEXT:    sw a2, 308(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a5, a5, a0
-; RV32I-NEXT:    sw a5, 332(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a4, a4, a0
-; RV32I-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a5, 340(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a5, a4, a0
 ; RV32I-NEXT:    slli a0, a0, 30
-; RV32I-NEXT:    and a2, a3, t2
+; RV32I-NEXT:    and a2, a3, t0
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    seqz a2, a2
 ; RV32I-NEXT:    addi a1, a1, -1
@@ -3507,1634 +3506,1616 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    and a3, a1, a6
 ; RV32I-NEXT:    sw a3, 304(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a2, a2, a0
-; RV32I-NEXT:    sw a2, 320(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a3, a1, a0
+; RV32I-NEXT:    sw a2, 332(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a1, a0
+; RV32I-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 2
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 2
+; RV32I-NEXT:    andi a1, s5, 2
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 1
+; RV32I-NEXT:    slli a2, t5, 1
 ; RV32I-NEXT:    and a2, a0, a2
 ; RV32I-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 1
+; RV32I-NEXT:    slli a2, t1, 1
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 312(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 324(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 4
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 4
+; RV32I-NEXT:    andi a1, s5, 4
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 2
+; RV32I-NEXT:    slli a2, t5, 2
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 2
+; RV32I-NEXT:    sw a2, 284(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 2
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 288(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 292(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 8
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 8
+; RV32I-NEXT:    andi a1, s5, 8
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 3
+; RV32I-NEXT:    slli a2, t5, 3
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 3
+; RV32I-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 3
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 268(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 272(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 296(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 16
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 16
+; RV32I-NEXT:    andi a1, s5, 16
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 4
+; RV32I-NEXT:    slli a2, t5, 4
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 236(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 4
+; RV32I-NEXT:    sw a2, 244(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 4
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 244(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 252(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 276(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 32
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 32
+; RV32I-NEXT:    andi a1, s5, 32
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 5
+; RV32I-NEXT:    slli a2, t5, 5
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 5
+; RV32I-NEXT:    sw a2, 216(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 5
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 224(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 240(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 252(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 64
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 64
+; RV32I-NEXT:    andi a1, s5, 64
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 6
+; RV32I-NEXT:    slli a2, t5, 6
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 284(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 6
+; RV32I-NEXT:    sw a2, 280(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 6
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 292(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 288(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 128
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 128
+; RV32I-NEXT:    andi a1, s5, 128
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 7
+; RV32I-NEXT:    slli a2, t5, 7
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 192(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 7
+; RV32I-NEXT:    sw a2, 196(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 7
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 200(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 356(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 256
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 256
+; RV32I-NEXT:    andi a1, s5, 256
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 8
+; RV32I-NEXT:    slli a2, t5, 8
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 8
+; RV32I-NEXT:    sw a2, 176(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 8
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 172(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 180(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
 ; RV32I-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 512
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 512
+; RV32I-NEXT:    andi a1, s5, 512
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 9
+; RV32I-NEXT:    slli a2, t5, 9
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 216(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 9
+; RV32I-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 9
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 228(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 248(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 192(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    andi a0, t3, 1024
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    andi a1, s6, 1024
+; RV32I-NEXT:    andi a1, s5, 1024
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 10
+; RV32I-NEXT:    slli a2, t5, 10
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 10
+; RV32I-NEXT:    sw a2, 308(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 10
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 324(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 320(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 340(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    sw a7, 440(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 236(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a7, 464(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, t3, a7
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a7
+; RV32I-NEXT:    and a1, s5, a7
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 11
+; RV32I-NEXT:    slli a2, t5, 11
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 112(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 11
-; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 11
+; RV32I-NEXT:    and a7, a1, a2
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 312(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 1
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 12
+; RV32I-NEXT:    slli a2, t5, 12
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 104(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 12
+; RV32I-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 12
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 108(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 124(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 2
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 13
+; RV32I-NEXT:    slli a2, t5, 13
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 13
+; RV32I-NEXT:    sw a2, 160(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 13
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 156(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 164(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 180(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 136(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 4
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 14
+; RV32I-NEXT:    slli a2, t5, 14
 ; RV32I-NEXT:    and a2, a0, a2
 ; RV32I-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 14
+; RV32I-NEXT:    slli a2, t1, 14
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 232(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 224(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 240(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 112(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 8
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 15
+; RV32I-NEXT:    slli a2, t5, 15
 ; RV32I-NEXT:    and a2, a0, a2
 ; RV32I-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 15
+; RV32I-NEXT:    slli a2, t1, 15
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 264(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 260(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 272(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 156(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 16
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli s0, t1, 16
-; RV32I-NEXT:    and s0, a0, s0
-; RV32I-NEXT:    slli a2, t0, 16
+; RV32I-NEXT:    slli a2, t5, 16
+; RV32I-NEXT:    and a2, a0, a2
+; RV32I-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 16
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 48(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 208(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 32
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli s0, t5, 17
+; RV32I-NEXT:    and s0, a0, s0
+; RV32I-NEXT:    sw s0, 48(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a2, t1, 17
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 17
-; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 40(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and s0, a1, a2
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 56(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 232(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 64
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 18
+; RV32I-NEXT:    slli a2, t5, 18
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 76(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 18
+; RV32I-NEXT:    sw a2, 92(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 18
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 80(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 100(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 100(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 248(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 128
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 19
+; RV32I-NEXT:    slli a2, t5, 19
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 19
+; RV32I-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 19
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 140(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 152(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 256
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 20
+; RV32I-NEXT:    slli a2, t5, 20
 ; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 160(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 20
+; RV32I-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a2, t1, 20
 ; RV32I-NEXT:    and a1, a1, a2
-; RV32I-NEXT:    sw a1, 168(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a1, 172(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 40(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 512
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a2, t1, 21
+; RV32I-NEXT:    slli a2, t5, 21
 ; RV32I-NEXT:    and a2, a0, a2
 ; RV32I-NEXT:    sw a2, 184(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a2, t0, 21
+; RV32I-NEXT:    slli a2, t1, 21
 ; RV32I-NEXT:    and a1, a1, a2
 ; RV32I-NEXT:    sw a1, 188(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    and a0, a0, a2
-; RV32I-NEXT:    sw a0, 196(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 1024
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a0, a0, -1
 ; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a4, t5, 22
+; RV32I-NEXT:    and a4, a0, a4
+; RV32I-NEXT:    sw a4, 24(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    slli a2, t1, 22
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a5, t0, 22
-; RV32I-NEXT:    and a2, a1, a5
-; RV32I-NEXT:    and a0, a0, a5
-; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a4, a1, a2
+; RV32I-NEXT:    and a0, a0, a2
+; RV32I-NEXT:    sw a0, 120(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a1, 2048
 ; RV32I-NEXT:    and a0, t3, a1
 ; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    and a1, s6, a1
+; RV32I-NEXT:    and a1, s5, a1
 ; RV32I-NEXT:    seqz a1, a1
-; RV32I-NEXT:    addi a4, a0, -1
-; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a0, t1, 23
-; RV32I-NEXT:    and a0, a4, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a2, a1, -1
+; RV32I-NEXT:    slli a1, t5, 23
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli a3, t1, 23
+; RV32I-NEXT:    and a2, a2, a3
+; RV32I-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, a3
+; RV32I-NEXT:    sw a0, 144(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 4096
+; RV32I-NEXT:    and a0, t3, a1
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    and a3, s5, a1
+; RV32I-NEXT:    seqz a3, a3
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a3, a3, -1
+; RV32I-NEXT:    slli a6, t5, 24
+; RV32I-NEXT:    and a1, a0, a6
+; RV32I-NEXT:    sw a1, 32(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a3, t2
+; RV32I-NEXT:    sw a1, 36(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, t2
+; RV32I-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 8192
+; RV32I-NEXT:    and a0, t3, a1
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    and a6, s5, a1
+; RV32I-NEXT:    seqz a6, a6
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    addi a6, a6, -1
+; RV32I-NEXT:    slli s1, t5, 25
+; RV32I-NEXT:    and s1, a0, s1
+; RV32I-NEXT:    sw s1, 60(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s3, t1, 25
+; RV32I-NEXT:    and a1, a6, s3
+; RV32I-NEXT:    sw a1, 64(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a0, s3
 ; RV32I-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a6, t0, 23
-; RV32I-NEXT:    and a5, a1, a6
-; RV32I-NEXT:    and a0, a4, a6
-; RV32I-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 4096
+; RV32I-NEXT:    lui a0, 16384
 ; RV32I-NEXT:    and a6, t3, a0
 ; RV32I-NEXT:    seqz a6, a6
-; RV32I-NEXT:    and a7, s6, a0
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi t4, a6, -1
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    slli a6, t1, 24
-; RV32I-NEXT:    and a0, t4, a6
-; RV32I-NEXT:    sw a0, 24(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, a7, s3
+; RV32I-NEXT:    and s3, s5, a0
+; RV32I-NEXT:    seqz s3, s3
+; RV32I-NEXT:    addi a6, a6, -1
+; RV32I-NEXT:    addi s3, s3, -1
+; RV32I-NEXT:    slli s6, t5, 26
+; RV32I-NEXT:    and a0, a6, s6
+; RV32I-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s6, t1, 26
+; RV32I-NEXT:    and a0, s3, s6
+; RV32I-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, a6, s6
 ; RV32I-NEXT:    sw a0, 28(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t4, s3
-; RV32I-NEXT:    sw a0, 32(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 8192
-; RV32I-NEXT:    and s1, t3, a0
-; RV32I-NEXT:    seqz s1, s1
-; RV32I-NEXT:    and s3, s6, a0
+; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    and s3, t3, a0
 ; RV32I-NEXT:    seqz s3, s3
-; RV32I-NEXT:    addi s5, s1, -1
+; RV32I-NEXT:    and s6, s5, a0
+; RV32I-NEXT:    seqz s6, s6
 ; RV32I-NEXT:    addi s3, s3, -1
-; RV32I-NEXT:    slli s1, t1, 25
-; RV32I-NEXT:    and a0, s5, s1
-; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s8, t0, 25
-; RV32I-NEXT:    and a0, s3, s8
+; RV32I-NEXT:    addi s6, s6, -1
+; RV32I-NEXT:    slli s9, t5, 27
+; RV32I-NEXT:    and a0, s3, s9
+; RV32I-NEXT:    sw a0, 104(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s9, t1, 27
+; RV32I-NEXT:    and a0, s6, s9
+; RV32I-NEXT:    sw a0, 108(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, s3, s9
 ; RV32I-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s5, s8
-; RV32I-NEXT:    sw a0, 60(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 16384
-; RV32I-NEXT:    and s5, t3, a0
-; RV32I-NEXT:    seqz s5, s5
-; RV32I-NEXT:    and s8, s6, a0
-; RV32I-NEXT:    seqz s8, s8
-; RV32I-NEXT:    addi s9, s5, -1
-; RV32I-NEXT:    addi s8, s8, -1
-; RV32I-NEXT:    slli s5, t1, 26
-; RV32I-NEXT:    and a0, s9, s5
-; RV32I-NEXT:    sw a0, 68(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s10, t0, 26
-; RV32I-NEXT:    and a0, s8, s10
-; RV32I-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a0, 65536
+; RV32I-NEXT:    and s6, t3, a0
+; RV32I-NEXT:    seqz s6, s6
+; RV32I-NEXT:    and s9, s5, a0
+; RV32I-NEXT:    seqz s9, s9
+; RV32I-NEXT:    addi s6, s6, -1
+; RV32I-NEXT:    addi s9, s9, -1
+; RV32I-NEXT:    slli s10, t5, 28
+; RV32I-NEXT:    and a0, s6, s10
+; RV32I-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli s10, t1, 28
 ; RV32I-NEXT:    and a0, s9, s10
-; RV32I-NEXT:    sw a0, 84(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    sw a0, 128(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, s6, s10
+; RV32I-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a0, 131072
 ; RV32I-NEXT:    and s9, t3, a0
 ; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
+; RV32I-NEXT:    and s10, s5, a0
 ; RV32I-NEXT:    seqz s10, s10
 ; RV32I-NEXT:    addi s9, s9, -1
 ; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, t1, 27
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s11, t0, 27
-; RV32I-NEXT:    and a0, s10, s11
-; RV32I-NEXT:    sw a0, 92(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 96(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and s9, t3, a0
-; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
-; RV32I-NEXT:    seqz s10, s10
-; RV32I-NEXT:    addi s9, s9, -1
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, t1, 28
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 120(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli s11, t0, 28
-; RV32I-NEXT:    and a0, s10, s11
-; RV32I-NEXT:    sw a0, 116(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, s9, s11
-; RV32I-NEXT:    sw a0, 124(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and s9, t3, a0
-; RV32I-NEXT:    seqz s9, s9
-; RV32I-NEXT:    and s10, s6, a0
-; RV32I-NEXT:    seqz s10, s10
-; RV32I-NEXT:    addi s9, s9, -1
-; RV32I-NEXT:    addi s10, s10, -1
-; RV32I-NEXT:    slli s11, t1, 29
-; RV32I-NEXT:    and s11, s9, s11
-; RV32I-NEXT:    slli ra, t0, 29
-; RV32I-NEXT:    and a4, s10, ra
-; RV32I-NEXT:    and a0, s9, ra
-; RV32I-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi ra, t3, 1
+; RV32I-NEXT:    slli ra, t5, 29
+; RV32I-NEXT:    and ra, s9, ra
+; RV32I-NEXT:    slli t0, t1, 29
+; RV32I-NEXT:    and a3, s10, t0
+; RV32I-NEXT:    and a0, s9, t0
+; RV32I-NEXT:    sw a0, 80(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi t0, t3, 1
 ; RV32I-NEXT:    lui a0, 262144
 ; RV32I-NEXT:    and t3, t3, a0
-; RV32I-NEXT:    seqz ra, ra
-; RV32I-NEXT:    andi s8, s6, 1
-; RV32I-NEXT:    seqz s8, s8
-; RV32I-NEXT:    addi ra, ra, -1
-; RV32I-NEXT:    addi s8, s8, -1
-; RV32I-NEXT:    slli t2, t1, 30
-; RV32I-NEXT:    and t1, ra, t1
-; RV32I-NEXT:    and s8, s8, t0
-; RV32I-NEXT:    and a6, ra, t0
-; RV32I-NEXT:    slli t0, t0, 30
-; RV32I-NEXT:    and s6, s6, a0
+; RV32I-NEXT:    seqz t0, t0
+; RV32I-NEXT:    andi s9, s5, 1
+; RV32I-NEXT:    seqz s9, s9
+; RV32I-NEXT:    addi t0, t0, -1
+; RV32I-NEXT:    addi s9, s9, -1
+; RV32I-NEXT:    slli t2, t5, 30
+; RV32I-NEXT:    and t5, t0, t5
+; RV32I-NEXT:    and s9, s9, t1
+; RV32I-NEXT:    and a6, t0, t1
+; RV32I-NEXT:    slli t1, t1, 30
+; RV32I-NEXT:    and s5, s5, a0
 ; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    seqz s6, s6
+; RV32I-NEXT:    seqz s5, s5
 ; RV32I-NEXT:    addi t3, t3, -1
-; RV32I-NEXT:    addi s6, s6, -1
+; RV32I-NEXT:    addi s5, s5, -1
 ; RV32I-NEXT:    and t2, t3, t2
-; RV32I-NEXT:    and s6, s6, t0
-; RV32I-NEXT:    and a0, t3, t0
-; RV32I-NEXT:    sw a0, 0(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s4
-; RV32I-NEXT:    sw a0, 308(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 612(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 368(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 360(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 332(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, s2
-; RV32I-NEXT:    sw a0, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, s7, a0
-; RV32I-NEXT:    sw a0, 396(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 404(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 372(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 300(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, t1, a0
-; RV32I-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 280(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 260(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 236(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 212(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 364(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 164(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 112(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 104(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, s0, a0
-; RV32I-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor ra, a0, a1
-; RV32I-NEXT:    xor s11, s11, t2
-; RV32I-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, s8, a0
-; RV32I-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 288(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 268(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, a0, a1
-; RV32I-NEXT:    lw a0, 244(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 224(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s5, a0, a1
-; RV32I-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 172(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s7, a0, a1
-; RV32I-NEXT:    lw a0, 128(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s0, 108(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, a0, s0
-; RV32I-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s1, 40(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s1, a0, s1
-; RV32I-NEXT:    xor s3, a2, a5
-; RV32I-NEXT:    xor s6, a4, s6
-; RV32I-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, a0, t5
-; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a0, a1
-; RV32I-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a0, s5, t1
+; RV32I-NEXT:    and a1, t3, t1
+; RV32I-NEXT:    sw a1, 96(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, s4
+; RV32I-NEXT:    sw a1, 316(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, s8, a1
+; RV32I-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 484(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 424(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 404(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 360(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 484(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 352(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 304(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 424(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 340(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, s2
+; RV32I-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    xor a1, s7, s11
+; RV32I-NEXT:    sw a1, 404(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 596(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 372(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 496(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 360(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 432(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 432(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 368(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 420(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t6, a1
+; RV32I-NEXT:    sw a1, 380(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 300(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t5, a1
+; RV32I-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 284(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 368(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 216(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 352(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 176(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a2
+; RV32I-NEXT:    sw a1, 340(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a1, 140(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 116(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s8, a1, a2
+; RV32I-NEXT:    lw a1, 56(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 48(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s10, a1, a2
+; RV32I-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 12(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s11, a1, a2
+; RV32I-NEXT:    xor ra, ra, t2
+; RV32I-NEXT:    lw a1, 324(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, s9, a1
+; RV32I-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 272(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, a1, a2
+; RV32I-NEXT:    lw a1, 252(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 240(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, a1, s1
+; RV32I-NEXT:    lw a1, 200(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 180(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, a1, a2
+; RV32I-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, a7, a1
+; RV32I-NEXT:    lw a1, 76(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s5, a1, s0
+; RV32I-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, a4, a1
+; RV32I-NEXT:    xor s0, a3, a0
+; RV32I-NEXT:    xor t6, a5, t4
+; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a0, a1
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, a0, a1
+; RV32I-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t1, a0, a1
-; RV32I-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t2, a0, a1
-; RV32I-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t3, a0, a1
-; RV32I-NEXT:    lw a0, 448(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor t4, a0, a1
-; RV32I-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 376(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a0, a1
-; RV32I-NEXT:    xor t6, t6, a3
-; RV32I-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a6, a0
+; RV32I-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, a0
 ; RV32I-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 296(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
 ; RV32I-NEXT:    lw a1, 276(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 252(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 264(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 208(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 204(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 204(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 192(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a2, a2, a3
-; RV32I-NEXT:    lw a3, 144(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 132(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 136(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 112(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a3, a3, a4
-; RV32I-NEXT:    lw a4, 64(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 56(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 44(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a4, a5
 ; RV32I-NEXT:    lw a5, 20(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a6, 16(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a6
-; RV32I-NEXT:    lw a6, 4(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s8, 0(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, s8
-; RV32I-NEXT:    lw s8, 308(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s9
-; RV32I-NEXT:    sw s8, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 556(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 436(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 488(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 568(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 380(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 476(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 412(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 396(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s9
-; RV32I-NEXT:    sw s8, 512(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 508(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 600(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 500(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 516(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 516(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 444(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 484(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 488(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 388(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 416(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 484(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 404(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 368(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s9
-; RV32I-NEXT:    sw s8, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 284(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 364(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 668(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 216(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 360(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    sw s8, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 148(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 352(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, s9, s8
-; RV32I-NEXT:    lw s8, 76(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s10, s10, s8
-; RV32I-NEXT:    lw s8, 24(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, ra, s8
-; RV32I-NEXT:    sw s8, 652(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s11, s8
-; RV32I-NEXT:    sw s8, 704(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s8, 372(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s8, s8, s2
-; RV32I-NEXT:    lw s2, 292(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s5, s2
-; RV32I-NEXT:    sw s2, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s2, 228(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s7, s2
-; RV32I-NEXT:    sw s2, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s2, 156(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s0, s2
-; RV32I-NEXT:    sw s0, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s0, 80(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s1, s0
-; RV32I-NEXT:    sw s0, 628(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s0, 28(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s3, s0
-; RV32I-NEXT:    sw s0, 612(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw s0, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s0, s6, s0
-; RV32I-NEXT:    sw s0, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    xor t0, s4, t0
-; RV32I-NEXT:    sw t0, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t1, t0
-; RV32I-NEXT:    lw t0, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t2, t0
-; RV32I-NEXT:    sw t0, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 560(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t3, t0
-; RV32I-NEXT:    sw t0, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 480(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t4, t0
-; RV32I-NEXT:    sw t0, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 392(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t5, t0
-; RV32I-NEXT:    sw t0, 600(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw t0, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t6, t0
-; RV32I-NEXT:    sw t0, 712(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    xor a0, a7, a0
-; RV32I-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 8(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, s6
+; RV32I-NEXT:    lw s6, 316(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 4(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s6, s7
+; RV32I-NEXT:    sw s6, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 560(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 592(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 544(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 452(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 504(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 384(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 484(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 424(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 404(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s6, s7
+; RV32I-NEXT:    sw s6, 516(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 372(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 504(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 600(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 496(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 532(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 360(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 460(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 432(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 492(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 392(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 420(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 484(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 380(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 716(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 368(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s6, s7
+; RV32I-NEXT:    sw s6, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 280(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 352(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 212(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 340(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    sw s6, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 160(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s8, s8, s6
+; RV32I-NEXT:    lw s6, 92(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s10, s10, s6
+; RV32I-NEXT:    lw s6, 32(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s11, s6
+; RV32I-NEXT:    sw s6, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s6, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, ra, s6
+; RV32I-NEXT:    sw s6, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    xor s9, s9, s3
+; RV32I-NEXT:    lw s3, 288(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s1, s3
+; RV32I-NEXT:    sw s1, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s1, 228(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s2, s1
+; RV32I-NEXT:    sw s1, 636(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s4, s1
+; RV32I-NEXT:    sw s1, 632(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s1, 100(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s5, s1
+; RV32I-NEXT:    sw s1, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t5, s1
+; RV32I-NEXT:    sw t5, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw t5, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, s0, t5
+; RV32I-NEXT:    sw t5, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    xor t5, t6, a7
+; RV32I-NEXT:    lw a7, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t0, a7
+; RV32I-NEXT:    lw a7, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t1, a7
+; RV32I-NEXT:    sw a7, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a7, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t2, a7
+; RV32I-NEXT:    sw a7, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a7, 436(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t3, a7
+; RV32I-NEXT:    sw a7, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a7, 388(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, a7
+; RV32I-NEXT:    xor t1, a6, a0
 ; RV32I-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a1, a0
-; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 248(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 236(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a0
-; RV32I-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a3, a0
+; RV32I-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a4, a0
-; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a5, a0
-; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a6, a0
-; RV32I-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, a0, 4
-; RV32I-NEXT:    lw a1, 744(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a3, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a2, a3, 4
+; RV32I-NEXT:    lw a1, 740(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a3, a3, a1
+; RV32I-NEXT:    and a2, a2, a1
+; RV32I-NEXT:    slli a3, a3, 4
+; RV32I-NEXT:    or a2, a2, a3
+; RV32I-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, a0, 4
 ; RV32I-NEXT:    and a6, a0, a1
-; RV32I-NEXT:    and a5, a5, a1
+; RV32I-NEXT:    and a3, a3, a1
 ; RV32I-NEXT:    slli a6, a6, 4
-; RV32I-NEXT:    or a0, a5, a6
-; RV32I-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, a0, 4
-; RV32I-NEXT:    and a7, a0, a1
-; RV32I-NEXT:    and a6, a6, a1
-; RV32I-NEXT:    slli a7, a7, 4
-; RV32I-NEXT:    or a0, a6, a7
+; RV32I-NEXT:    or a0, a3, a6
 ; RV32I-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a2
 ; RV32I-NEXT:    sw a0, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor ra, a2, a0
 ; RV32I-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 524(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lw a0, 400(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 520(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a2
-; RV32I-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 500(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 496(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s11, a2, a0
-; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 488(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 492(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 412(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a2, 484(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a2, a0
-; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    srli t2, a0, 4
 ; RV32I-NEXT:    and t3, a0, a1
 ; RV32I-NEXT:    and t2, t2, a1
 ; RV32I-NEXT:    slli t3, t3, 4
 ; RV32I-NEXT:    or a0, t2, t3
-; RV32I-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    srli t3, a0, 4
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    and t3, t3, a1
 ; RV32I-NEXT:    slli a0, a0, 4
 ; RV32I-NEXT:    or a0, t3, a0
-; RV32I-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s5, a1, a0
 ; RV32I-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s6, s9, a0
-; RV32I-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s6, s8, a0
+; RV32I-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s2, s10, a0
-; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 644(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s3, a1, a0
-; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s8, a0
-; RV32I-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s0, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, s9, a0
+; RV32I-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, a1, a0
+; RV32I-NEXT:    lw a0, 224(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s0, 632(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s0, s0, a0
-; RV32I-NEXT:    lw a0, 232(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s1, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s1, 616(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s1, s1, a0
-; RV32I-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, a1, a0
-; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a0
+; RV32I-NEXT:    xor a4, t5, t0
+; RV32I-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a5, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, a0
+; RV32I-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a1, a0
-; RV32I-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, a0, t1
-; RV32I-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t2, a1, a0
-; RV32I-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, a1, a0
-; RV32I-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a1, a0
-; RV32I-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a1, a0
+; RV32I-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a1, a0
+; RV32I-NEXT:    xor a7, a1, a0
+; RV32I-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t4, a0
 ; RV32I-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a0, a1
-; RV32I-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, a0
-; RV32I-NEXT:    lw a0, 240(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a3, a0
-; RV32I-NEXT:    lw a0, 152(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a1, a0
-; RV32I-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a0
+; RV32I-NEXT:    xor t1, t1, a0
+; RV32I-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, a1, a0
+; RV32I-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, a1, a0
+; RV32I-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, a1, a0
+; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, a1, a0
 ; RV32I-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor ra, a0, ra
-; RV32I-NEXT:    lw a0, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a1, a0
-; RV32I-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    lw a2, 428(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s8, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 444(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 548(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a2, s8, a2
-; RV32I-NEXT:    lw s8, 660(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 652(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s11, s8, s11
-; RV32I-NEXT:    lw s8, 624(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s9, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s8, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s9, 656(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s8, s9, s8
-; RV32I-NEXT:    lw s9, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s10, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s9, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 576(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s9, s10, s9
-; RV32I-NEXT:    lw s10, 432(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw s7, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s10, 448(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 544(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s10, s7, s10
-; RV32I-NEXT:    lw s7, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 672(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s5, s7, s5
 ; RV32I-NEXT:    lw s7, 256(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s6, s6, s7
-; RV32I-NEXT:    lw s7, 160(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 168(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s2, s2, s7
-; RV32I-NEXT:    lw s7, 68(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s7, 84(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor s3, s3, s7
-; RV32I-NEXT:    xor s0, s4, s0
-; RV32I-NEXT:    lw s4, 264(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s1, s1, s4
-; RV32I-NEXT:    lw s4, 168(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, s4
-; RV32I-NEXT:    lw s4, 72(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, s4
-; RV32I-NEXT:    xor t2, t6, t2
-; RV32I-NEXT:    lw t6, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, t6
-; RV32I-NEXT:    lw t6, 552(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, t6
-; RV32I-NEXT:    lw t6, 460(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t6
+; RV32I-NEXT:    xor s4, s4, t6
+; RV32I-NEXT:    lw t6, 260(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s0, s0, t6
+; RV32I-NEXT:    lw t6, 172(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s1, t6
+; RV32I-NEXT:    lw t6, 88(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t6
+; RV32I-NEXT:    lw t6, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t6, a4, t6
+; RV32I-NEXT:    lw a4, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s7, a5, a4
+; RV32I-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, a4
+; RV32I-NEXT:    lw a4, 512(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a7, a4
+; RV32I-NEXT:    lw a4, 428(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t0, a4
+; RV32I-NEXT:    lw a4, 356(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, t1, a4
-; RV32I-NEXT:    lw t1, 272(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t1
-; RV32I-NEXT:    lw t1, 176(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a6, t1
-; RV32I-NEXT:    lw t1, 84(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t1
+; RV32I-NEXT:    lw t0, 344(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t2, t0
+; RV32I-NEXT:    lw t1, 232(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t3, t1
+; RV32I-NEXT:    lw t2, 144(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t4, t4, t2
+; RV32I-NEXT:    lw t2, 72(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, t5, t2
 ; RV32I-NEXT:    xor a0, ra, a0
-; RV32I-NEXT:    lw t1, 544(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, t1
-; RV32I-NEXT:    lw t1, 452(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, t1
-; RV32I-NEXT:    xor t1, s11, s8
-; RV32I-NEXT:    lw t6, 548(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t6, s9, t6
-; RV32I-NEXT:    lw s4, 456(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s4, s10, s4
+; RV32I-NEXT:    lw t3, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t3
+; RV32I-NEXT:    lw t3, 468(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, a2, t3
+; RV32I-NEXT:    xor t5, s11, s8
+; RV32I-NEXT:    lw a2, 556(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s8, s9, a2
+; RV32I-NEXT:    lw a2, 472(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s9, s10, a2
 ; RV32I-NEXT:    xor s5, s5, s6
-; RV32I-NEXT:    lw s6, 184(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s2, s2, s6
-; RV32I-NEXT:    lw s6, 88(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, s6
-; RV32I-NEXT:    xor s0, s0, s1
-; RV32I-NEXT:    lw s1, 188(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, t4, s1
-; RV32I-NEXT:    lw s1, 92(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, s1
-; RV32I-NEXT:    xor t2, t2, t3
-; RV32I-NEXT:    lw t3, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, t3
-; RV32I-NEXT:    lw t3, 464(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t3
-; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    lw a5, 196(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, a6, a5
-; RV32I-NEXT:    lw a5, 96(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, a5
-; RV32I-NEXT:    lw a6, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, a6, 2
-; RV32I-NEXT:    lw s6, 724(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a6, a6, s6
-; RV32I-NEXT:    and a5, a5, s6
-; RV32I-NEXT:    slli a6, a6, 2
-; RV32I-NEXT:    or s1, a5, a6
-; RV32I-NEXT:    lw a6, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a5, a6, 2
-; RV32I-NEXT:    and a6, a6, s6
-; RV32I-NEXT:    and a5, a5, s6
-; RV32I-NEXT:    slli a6, a6, 2
-; RV32I-NEXT:    or a5, a5, a6
+; RV32I-NEXT:    lw a2, 184(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s2, s2, a2
+; RV32I-NEXT:    lw a2, 104(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s3, a2
+; RV32I-NEXT:    xor s0, s4, s0
+; RV32I-NEXT:    lw a2, 188(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s1, a2
+; RV32I-NEXT:    lw a2, 108(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s4, a3, a2
+; RV32I-NEXT:    lw a2, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, a2
+; RV32I-NEXT:    lw a2, 440(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, a2
+; RV32I-NEXT:    lw a2, 248(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t1, a2
+; RV32I-NEXT:    lw a2, 80(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, t2, a2
+; RV32I-NEXT:    lw a3, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a2, a3, 2
+; RV32I-NEXT:    lw ra, 724(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    and a2, a2, ra
+; RV32I-NEXT:    slli a3, a3, 2
+; RV32I-NEXT:    or s6, a2, a3
+; RV32I-NEXT:    lw a3, 688(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a2, a3, 2
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    and a2, a2, ra
+; RV32I-NEXT:    slli a3, a3, 2
+; RV32I-NEXT:    or a2, a2, a3
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a2, a1
-; RV32I-NEXT:    xor a2, t1, t6
-; RV32I-NEXT:    lw a6, 468(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, s4, a6
-; RV32I-NEXT:    lw t6, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, t6, 2
-; RV32I-NEXT:    and t6, t6, s6
-; RV32I-NEXT:    and a6, a6, s6
-; RV32I-NEXT:    slli t6, t6, 2
-; RV32I-NEXT:    or t6, a6, t6
-; RV32I-NEXT:    lw s4, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli a6, s4, 2
-; RV32I-NEXT:    and s4, s4, s6
-; RV32I-NEXT:    and a6, a6, s6
-; RV32I-NEXT:    slli s4, s4, 2
-; RV32I-NEXT:    or a6, a6, s4
+; RV32I-NEXT:    lw a1, 480(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t3, a1
+; RV32I-NEXT:    xor t3, t5, s8
+; RV32I-NEXT:    lw a3, 476(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, s9, a3
+; RV32I-NEXT:    lw s8, 692(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, s8, 2
+; RV32I-NEXT:    and s8, s8, ra
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    slli s8, s8, 2
+; RV32I-NEXT:    or s8, a3, s8
+; RV32I-NEXT:    lw s9, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli a3, s9, 2
+; RV32I-NEXT:    and s9, s9, ra
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    slli s9, s9, 2
+; RV32I-NEXT:    or s9, a3, s9
 ; RV32I-NEXT:    xor s2, s5, s2
-; RV32I-NEXT:    lw s4, 120(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s3, s3, s4
-; RV32I-NEXT:    xor t4, s0, t4
-; RV32I-NEXT:    lw s0, 116(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, t5, s0
-; RV32I-NEXT:    xor a7, t2, a7
-; RV32I-NEXT:    lw t2, 492(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t2
-; RV32I-NEXT:    xor a4, a4, t3
-; RV32I-NEXT:    lw t2, 124(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a3, t2
+; RV32I-NEXT:    lw a3, 132(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s3, s3, a3
+; RV32I-NEXT:    xor s0, s0, s1
+; RV32I-NEXT:    lw a3, 128(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s1, s4, a3
+; RV32I-NEXT:    xor s4, t6, s7
+; RV32I-NEXT:    xor a6, s4, a6
+; RV32I-NEXT:    lw a3, 456(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, a7, a3
+; RV32I-NEXT:    xor t0, a4, t0
+; RV32I-NEXT:    xor t0, t0, t1
+; RV32I-NEXT:    lw a3, 96(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t1, t2, a3
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    xor a1, a2, t1
-; RV32I-NEXT:    xor a2, s2, s3
-; RV32I-NEXT:    xor t1, t4, t5
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    xor a3, a4, a3
-; RV32I-NEXT:    lw a4, 716(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, a0, a4
-; RV32I-NEXT:    lw a4, 720(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a1, a4
-; RV32I-NEXT:    lw a1, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a1
-; RV32I-NEXT:    lw a1, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t1, a1
-; RV32I-NEXT:    lw a1, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a7, a7, a1
-; RV32I-NEXT:    lw a1, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a3, a1
-; RV32I-NEXT:    srli a1, s1, 1
-; RV32I-NEXT:    lw s2, 728(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a3, s1, s2
-; RV32I-NEXT:    and a1, a1, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or a1, a1, a3
-; RV32I-NEXT:    xor a0, a4, a0
+; RV32I-NEXT:    xor a1, t3, t5
+; RV32I-NEXT:    xor t2, s2, s3
+; RV32I-NEXT:    xor s0, s0, s1
+; RV32I-NEXT:    xor a5, a6, a5
+; RV32I-NEXT:    lw a3, 720(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a7, a3
+; RV32I-NEXT:    xor a7, t0, t4
+; RV32I-NEXT:    lw a3, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, t1, a3
+; RV32I-NEXT:    lw a3, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a0, a3
+; RV32I-NEXT:    lw a3, 716(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, a3
+; RV32I-NEXT:    lw a3, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t2, t2, a3
+; RV32I-NEXT:    lw a3, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, s0, a3
+; RV32I-NEXT:    srli t1, s6, 1
+; RV32I-NEXT:    lw t5, 744(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and t4, s6, t5
+; RV32I-NEXT:    and t1, t1, t5
+; RV32I-NEXT:    slli t4, t4, 1
+; RV32I-NEXT:    or t4, t1, t4
+; RV32I-NEXT:    xor a0, a1, a0
 ; RV32I-NEXT:    sw a0, 720(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a0, t6, 1
-; RV32I-NEXT:    and a3, t6, s2
-; RV32I-NEXT:    and a0, a0, s2
-; RV32I-NEXT:    slli a3, a3, 1
-; RV32I-NEXT:    or t5, a0, a3
-; RV32I-NEXT:    xor a0, t0, a2
+; RV32I-NEXT:    srli a0, s8, 1
+; RV32I-NEXT:    and a1, s8, t5
+; RV32I-NEXT:    and a0, a0, t5
+; RV32I-NEXT:    slli a1, a1, 1
+; RV32I-NEXT:    or a3, a0, a1
+; RV32I-NEXT:    xor a0, t3, t2
 ; RV32I-NEXT:    sw a0, 716(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a0, a7, 8
-; RV32I-NEXT:    lw a3, 740(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a0, a0, a3
-; RV32I-NEXT:    srli a2, a7, 24
-; RV32I-NEXT:    or a2, a0, a2
-; RV32I-NEXT:    slli a0, a7, 24
-; RV32I-NEXT:    and a4, a7, a3
-; RV32I-NEXT:    slli a4, a4, 8
-; RV32I-NEXT:    or a4, a0, a4
-; RV32I-NEXT:    srli a0, t1, 8
-; RV32I-NEXT:    and a0, a0, a3
-; RV32I-NEXT:    srli a7, t1, 24
-; RV32I-NEXT:    or a7, a0, a7
-; RV32I-NEXT:    slli a0, t1, 24
-; RV32I-NEXT:    and t0, t1, a3
-; RV32I-NEXT:    slli t0, t0, 8
-; RV32I-NEXT:    or t0, a0, t0
-; RV32I-NEXT:    srli a0, a5, 1
-; RV32I-NEXT:    and a5, a5, s2
-; RV32I-NEXT:    and a0, a0, s2
-; RV32I-NEXT:    slli a5, a5, 1
-; RV32I-NEXT:    or a0, a0, a5
-; RV32I-NEXT:    srli a5, a5, 31
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli t1, a1, 31
-; RV32I-NEXT:    and a3, a5, t1
-; RV32I-NEXT:    sw a3, 708(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    srli a5, a6, 1
-; RV32I-NEXT:    and a6, a6, s2
-; RV32I-NEXT:    and a5, a5, s2
-; RV32I-NEXT:    slli a6, a6, 1
-; RV32I-NEXT:    or t3, a5, a6
-; RV32I-NEXT:    srli a5, a6, 31
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, t5, 31
-; RV32I-NEXT:    and a3, a5, a6
-; RV32I-NEXT:    sw a3, 704(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a2, a4, a2
-; RV32I-NEXT:    sw a2, 700(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    or a2, t0, a7
-; RV32I-NEXT:    sw a2, 712(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 1
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 2
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 688(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 8
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 3
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 680(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 16
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 4
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 32
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 5
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 672(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 64
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 6
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 128
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 7
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 256
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 8
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 512
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 9
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 1024
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 10
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lw a3, 440(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a2, a0, a3
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 11
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a5, 1
-; RV32I-NEXT:    and a2, a0, a5
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 12
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t6, t6, 24
+; RV32I-NEXT:    lw t1, 736(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a0, a5, t1
+; RV32I-NEXT:    slli a0, a0, 8
+; RV32I-NEXT:    or a0, t6, a0
+; RV32I-NEXT:    xor a1, a5, a6
+; RV32I-NEXT:    srli a5, a5, 8
+; RV32I-NEXT:    and a5, a5, t1
+; RV32I-NEXT:    srli a1, a1, 24
+; RV32I-NEXT:    or a1, a5, a1
+; RV32I-NEXT:    slli a4, a4, 24
+; RV32I-NEXT:    and a5, a7, t1
+; RV32I-NEXT:    slli a5, a5, 8
+; RV32I-NEXT:    or a4, a4, a5
+; RV32I-NEXT:    xor a5, a7, t0
+; RV32I-NEXT:    srli a6, a7, 8
+; RV32I-NEXT:    and a6, a6, t1
+; RV32I-NEXT:    srli a5, a5, 24
+; RV32I-NEXT:    or a5, a6, a5
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    or a4, a4, a5
+; RV32I-NEXT:    sw a4, 704(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a0, a2, 1
+; RV32I-NEXT:    and a1, a2, t5
+; RV32I-NEXT:    and a0, a0, t5
+; RV32I-NEXT:    slli a1, a1, 1
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    srli a1, a1, 31
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 31
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 712(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    srli a1, s9, 1
+; RV32I-NEXT:    and a2, s9, t5
+; RV32I-NEXT:    and a1, a1, t5
+; RV32I-NEXT:    slli a2, a2, 1
+; RV32I-NEXT:    or t5, a1, a2
+; RV32I-NEXT:    srli a2, a2, 31
+; RV32I-NEXT:    seqz a1, a2
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, a3, 31
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 708(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 2
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 1
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 688(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 2
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 684(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 8
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 3
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 676(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 16
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 4
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 32
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 5
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 660(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 64
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 6
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 692(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 128
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 7
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 696(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 256
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 8
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 648(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 512
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 9
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 1024
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 10
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lw a4, 464(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a1, a0, a4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 11
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 672(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s1, 1
+; RV32I-NEXT:    and a1, a0, s1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 12
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 680(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a6, 2
-; RV32I-NEXT:    and a2, a0, a6
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 13
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, a6
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 13
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 632(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui a7, 4
-; RV32I-NEXT:    and a2, a0, a7
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 14
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s3, 8
-; RV32I-NEXT:    and a2, a0, s3
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 15
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 668(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, a7
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 14
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t0, 8
+; RV32I-NEXT:    and a1, a0, t0
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 15
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t1, 16
-; RV32I-NEXT:    and a2, a0, t1
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 16
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, t1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 16
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t2, 32
-; RV32I-NEXT:    and a2, a0, t2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 17
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui t4, 64
-; RV32I-NEXT:    and a2, a0, t4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 18
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, t2
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 17
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 652(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui t3, 64
+; RV32I-NEXT:    and a1, a0, t3
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 18
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 664(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui t6, 128
-; RV32I-NEXT:    and a2, a0, t6
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 19
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s0, 256
-; RV32I-NEXT:    and a2, a0, s0
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 20
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s4, 512
-; RV32I-NEXT:    and a2, a0, s4
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 21
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 648(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s5, 1024
-; RV32I-NEXT:    and a2, a0, s5
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 22
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui s7, 2048
-; RV32I-NEXT:    and a2, a0, s7
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 23
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a1, a0, t6
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 19
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s2, 256
+; RV32I-NEXT:    and a1, a0, s2
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 20
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s3, 512
+; RV32I-NEXT:    and a1, a0, s3
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 21
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s4, 1024
+; RV32I-NEXT:    and a1, a0, s4
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 22
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui s5, 2048
+; RV32I-NEXT:    and a1, a0, s5
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 23
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 628(sp) # 4-byte Folded Spill
 ; RV32I-NEXT:    lui s11, 4096
-; RV32I-NEXT:    and a2, a0, s11
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 24
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 8192
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 25
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 16384
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 26
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 32768
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 27
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 65536
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 28
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 624(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    lui a2, 131072
-; RV32I-NEXT:    and a2, a0, a2
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    slli a4, a1, 29
-; RV32I-NEXT:    and a2, a2, a4
-; RV32I-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a2, a0, 1
-; RV32I-NEXT:    seqz a2, a2
-; RV32I-NEXT:    addi a2, a2, -1
-; RV32I-NEXT:    and a2, a2, a1
-; RV32I-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    slli a1, a1, 30
-; RV32I-NEXT:    lui t0, 262144
-; RV32I-NEXT:    and a0, a0, t0
-; RV32I-NEXT:    seqz a0, a0
-; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 2
+; RV32I-NEXT:    and a1, a0, s11
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 24
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 8192
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 25
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 16384
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 26
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 32768
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 27
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 65536
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 28
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    lui a1, 131072
+; RV32I-NEXT:    and a1, a0, a1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    slli a2, t4, 29
+; RV32I-NEXT:    and a1, a1, a2
+; RV32I-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a1, a0, 1
+; RV32I-NEXT:    seqz a1, a1
+; RV32I-NEXT:    addi a1, a1, -1
+; RV32I-NEXT:    and a1, a1, t4
+; RV32I-NEXT:    sw a1, 572(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    slli t4, t4, 30
+; RV32I-NEXT:    lui a5, 262144
+; RV32I-NEXT:    and a0, a0, a5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 1
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 4
+; RV32I-NEXT:    and a0, a0, t4
+; RV32I-NEXT:    sw a0, 608(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 2
+; RV32I-NEXT:    slli a1, a3, 1
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 8
+; RV32I-NEXT:    andi a0, t5, 4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 3
+; RV32I-NEXT:    slli a1, a3, 2
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 16
+; RV32I-NEXT:    andi a0, t5, 8
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 4
+; RV32I-NEXT:    slli a1, a3, 3
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 32
+; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 16
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 5
+; RV32I-NEXT:    slli a1, a3, 4
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    sw a0, 548(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 64
+; RV32I-NEXT:    andi a0, t5, 32
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 6
+; RV32I-NEXT:    slli a1, a3, 5
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 128
+; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 64
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 7
+; RV32I-NEXT:    slli a1, a3, 6
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 256
+; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 128
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, a3, 7
+; RV32I-NEXT:    and a0, a0, a1
+; RV32I-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    andi a0, t5, 256
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 8
+; RV32I-NEXT:    slli a1, a3, 8
 ; RV32I-NEXT:    and a0, a0, a1
 ; RV32I-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 512
+; RV32I-NEXT:    andi a0, t5, 512
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli s0, a3, 9
+; RV32I-NEXT:    and s10, a0, s0
+; RV32I-NEXT:    andi a0, t5, 1024
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 9
+; RV32I-NEXT:    slli a1, a3, 10
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    andi a0, t3, 1024
+; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, a4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 10
+; RV32I-NEXT:    slli a1, a3, 11
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a3
+; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, s1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 11
+; RV32I-NEXT:    slli a1, a3, 12
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a5
+; RV32I-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, a6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 12
-; RV32I-NEXT:    and s9, a0, a1
-; RV32I-NEXT:    and a0, t3, a6
+; RV32I-NEXT:    slli a1, a3, 13
+; RV32I-NEXT:    and s7, a0, a1
+; RV32I-NEXT:    and a0, t5, a7
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s1, t5, 13
-; RV32I-NEXT:    and a0, a0, s1
-; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, a7
+; RV32I-NEXT:    slli a1, a3, 14
+; RV32I-NEXT:    and s6, a0, a1
+; RV32I-NEXT:    and a0, t5, t0
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli a1, a3, 15
+; RV32I-NEXT:    and s9, a0, a1
+; RV32I-NEXT:    and a0, t5, t1
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 14
+; RV32I-NEXT:    slli a1, a3, 16
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s3
+; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t2
+; RV32I-NEXT:    seqz a0, a0
+; RV32I-NEXT:    addi a0, a0, -1
+; RV32I-NEXT:    slli s1, a3, 17
+; RV32I-NEXT:    and a0, a0, s1
+; RV32I-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 15
+; RV32I-NEXT:    slli a1, a3, 18
 ; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, t1
+; RV32I-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32I-NEXT:    and a0, t5, t6
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 16
-; RV32I-NEXT:    and s8, a0, a1
-; RV32I-NEXT:    and a0, t3, t2
+; RV32I-NEXT:    slli a4, a3, 19
+; RV32I-NEXT:    and s1, a0, a4
+; RV32I-NEXT:    and a0, t5, s2
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a2, t5, 17
-; RV32I-NEXT:    and s3, a0, a2
-; RV32I-NEXT:    and a0, t3, t4
+; RV32I-NEXT:    slli a2, a3, 20
+; RV32I-NEXT:    and t6, a0, a2
+; RV32I-NEXT:    and a0, t5, s3
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 18
-; RV32I-NEXT:    and s10, a0, a1
-; RV32I-NEXT:    and a0, t3, t6
+; RV32I-NEXT:    slli a1, a3, 21
+; RV32I-NEXT:    and s3, a0, a1
+; RV32I-NEXT:    and a0, t5, s4
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 19
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s0
+; RV32I-NEXT:    slli a1, a3, 22
+; RV32I-NEXT:    and s4, a0, a1
+; RV32I-NEXT:    and a0, t5, s5
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 20
-; RV32I-NEXT:    and a0, a0, a1
-; RV32I-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s4
+; RV32I-NEXT:    slli a1, a3, 23
+; RV32I-NEXT:    and s8, a0, a1
+; RV32I-NEXT:    and a0, t5, s11
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli s0, t5, 21
-; RV32I-NEXT:    and a0, a0, s0
-; RV32I-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32I-NEXT:    and a0, t3, s5
+; RV32I-NEXT:    slli a1, a3, 24
+; RV32I-NEXT:    and s11, a0, a1
+; RV32I-NEXT:    lui a0, 8192
+; RV32I-NEXT:    and a0, t5, a0
 ; RV32I-NEXT:    seqz a0, a0
 ; RV32I-NEXT:    addi a0, a0, -1
-; RV32I-NEXT:    slli a1, t5, 22
-; RV32I-NEXT:    and s0, a0, a1
-; RV32I-NEXT:    and a1, t3, s7
+; RV32I-NEXT:    slli a1, a3, 25
+; RV32I-NEXT:    and t2, a0, a1
+; RV32I-NEXT:    lui a0, 16384
+; RV32I-NEXT:    and a1, t5, a0
 ; RV32I-NEXT:    seqz a1, a1
 ; RV32I-NEXT:    addi a1, a1, -1
-; RV32I-NEXT:    slli a4, t5, 23
-; RV32I-NEXT:    and t6, a1, a4
-; RV32I-NEXT:    and a4, t3, s11
+; RV32I-NEXT:    slli a2, a3, 26
+; RV32I-NEXT:    and t3, a1, a2
+; RV32I-NEXT:    lui a0, 32768
+; RV32I-NEXT:    and a2, t5, a0
+; RV32I-NEXT:    seqz a2, a2
+; RV32I-NEXT:    addi a2, a2, -1
+; RV32I-NEXT:    slli a4, a3, 27
+; RV32I-NEXT:    and t4, a2, a4
+; RV32I-NEXT:    lui a0, 65536
+; RV32I-NEXT:    and a4, t5, a0
 ; RV32I-NEXT:    seqz a4, a4
 ; RV32I-NEXT:    addi a4, a4, -1
-; RV32I-NEXT:    slli a5, t5, 24
-; RV32I-NEXT:    and s1, a4, a5
-; RV32I-NEXT:    lui a0, 8192
-; RV32I-NEXT:    and a5, t3, a0
-; RV32I-NEXT:    seqz a5, a5
-; RV32I-NEXT:    addi a5, a5, -1
-; RV32I-NEXT:    slli a6, t5, 25
-; RV32I-NEXT:    and s4, a5, a6
-; RV32I-NEXT:    lui a0, 16384
-; RV32I-NEXT:    and a6, t3, a0
+; RV32I-NEXT:    slli a6, a3, 28
+; RV32I-NEXT:    and s0, a4, a6
+; RV32I-NEXT:    lui a0, 131072
+; RV32I-NEXT:    and a6, t5, a0
 ; RV32I-NEXT:    seqz a6, a6
 ; RV32I-NEXT:    addi a6, a6, -1
-; RV32I-NEXT:    slli a7, t5, 26
-; RV32I-NEXT:    and s5, a6, a7
-; RV32I-NEXT:    lui a0, 32768
-; RV32I-NEXT:    and a7, t3, a0
-; RV32I-NEXT:    seqz a7, a7
-; RV32I-NEXT:    addi a7, a7, -1
-; RV32I-NEXT:    slli t2, t5, 27
-; RV32I-NEXT:    and s7, a7, t2
-; RV32I-NEXT:    lui a0, 65536
-; RV32I-NEXT:    and t2, t3, a0
-; RV32I-NEXT:    seqz t2, t2
-; RV32I-NEXT:    addi t2, t2, -1
-; RV32I-NEXT:    slli a3, t5, 28
-; RV32I-NEXT:    and s11, t2, a3
-; RV32I-NEXT:    lui a0, 131072
-; RV32I-NEXT:    and a3, t3, a0
-; RV32I-NEXT:    seqz a3, a3
-; RV32I-NEXT:    addi a3, a3, -1
-; RV32I-NEXT:    slli t4, t5, 29
-; RV32I-NEXT:    and t2, a3, t4
-; RV32I-NEXT:    and t4, t3, t0
-; RV32I-NEXT:    andi t3, t3, 1
-; RV32I-NEXT:    seqz t3, t3
-; RV32I-NEXT:    addi t3, t3, -1
-; RV32I-NEXT:    and t3, t3, t5
-; RV32I-NEXT:    slli t5, t5, 30
-; RV32I-NEXT:    seqz t4, t4
-; RV32I-NEXT:    addi t4, t4, -1
-; RV32I-NEXT:    and t4, t4, t5
-; RV32I-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t5, a1, a0
+; RV32I-NEXT:    slli t1, a3, 29
+; RV32I-NEXT:    and s2, a6, t1
+; RV32I-NEXT:    and t1, t5, a5
+; RV32I-NEXT:    andi t5, t5, 1
+; RV32I-NEXT:    seqz t5, t5
+; RV32I-NEXT:    addi t5, t5, -1
+; RV32I-NEXT:    and t5, t5, a3
+; RV32I-NEXT:    slli a3, a3, 30
+; RV32I-NEXT:    seqz t1, t1
+; RV32I-NEXT:    addi t1, t1, -1
+; RV32I-NEXT:    and t1, t1, a3
 ; RV32I-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, a1, a0
+; RV32I-NEXT:    lw a0, 684(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a0, a1
+; RV32I-NEXT:    lw a0, 668(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a7, a0, a1
-; RV32I-NEXT:    lw a0, 676(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, a0, a1
-; RV32I-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, a0, a1
-; RV32I-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a3, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a2, 640(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a0, a2
+; RV32I-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a3, 624(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a3, a0, a3
-; RV32I-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 592(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a4, a0, a4
-; RV32I-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a5, 588(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 584(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, a0, a1
-; RV32I-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t3, a0
+; RV32I-NEXT:    lw a5, 580(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a0, a5
 ; RV32I-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t5, t5, a0
+; RV32I-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a0, a0, a1
-; RV32I-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    lw ra, 528(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, ra
-; RV32I-NEXT:    lw ra, 516(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor s9, ra, s9
-; RV32I-NEXT:    xor s3, s8, s3
-; RV32I-NEXT:    xor t6, s0, t6
-; RV32I-NEXT:    xor t2, t2, t4
-; RV32I-NEXT:    xor a7, t5, a7
-; RV32I-NEXT:    lw t4, 684(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t0, t4
-; RV32I-NEXT:    lw t4, 664(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t1, t4
-; RV32I-NEXT:    lw t4, 644(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t4, a3, t4
-; RV32I-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, a3
-; RV32I-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, a3
-; RV32I-NEXT:    lw a3, 708(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a3, a6, a3
-; RV32I-NEXT:    xor a6, t3, a0
-; RV32I-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a1, a1, a0
-; RV32I-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a0
-; RV32I-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, s9, a0
-; RV32I-NEXT:    xor t5, s3, s10
-; RV32I-NEXT:    xor t6, t6, s1
-; RV32I-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a0, t2, a0
-; RV32I-NEXT:    lw s0, 700(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli t2, s0, 4
-; RV32I-NEXT:    lw s3, 744(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and s0, s0, s3
-; RV32I-NEXT:    and t2, t2, s3
-; RV32I-NEXT:    slli s0, s0, 4
-; RV32I-NEXT:    or t2, t2, s0
-; RV32I-NEXT:    lw s1, 712(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    srli s0, s1, 4
-; RV32I-NEXT:    and s1, s1, s3
-; RV32I-NEXT:    and s0, s0, s3
-; RV32I-NEXT:    slli s1, s1, 4
-; RV32I-NEXT:    or s0, s0, s1
-; RV32I-NEXT:    xor a7, a7, t0
+; RV32I-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw s5, 540(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, s5
+; RV32I-NEXT:    lw s5, 528(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor s10, s5, s10
+; RV32I-NEXT:    xor s6, s7, s6
+; RV32I-NEXT:    xor t6, s1, t6
+; RV32I-NEXT:    xor t2, s11, t2
+; RV32I-NEXT:    lw s7, 700(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s1, s7, 4
+; RV32I-NEXT:    lw s5, 740(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and s7, s7, s5
+; RV32I-NEXT:    and s1, s1, s5
+; RV32I-NEXT:    slli s7, s7, 4
+; RV32I-NEXT:    or s1, s1, s7
+; RV32I-NEXT:    lw s11, 704(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    srli s7, s11, 4
+; RV32I-NEXT:    and s11, s11, s5
+; RV32I-NEXT:    and s7, s7, s5
+; RV32I-NEXT:    slli s11, s11, 4
+; RV32I-NEXT:    or s7, s7, s11
+; RV32I-NEXT:    xor a6, t0, a6
 ; RV32I-NEXT:    lw t0, 692(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t1, t0
-; RV32I-NEXT:    lw t1, 660(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t1, t4, t1
-; RV32I-NEXT:    lw t4, 632(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t4
-; RV32I-NEXT:    lw t4, 600(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t4
-; RV32I-NEXT:    xor a1, a6, a1
-; RV32I-NEXT:    lw a6, 564(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a2, a6
-; RV32I-NEXT:    lw a6, 536(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, t3, a6
-; RV32I-NEXT:    lw t3, 508(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t3, t5, t3
-; RV32I-NEXT:    xor t4, t6, s4
-; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 668(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor t0, t1, t0
-; RV32I-NEXT:    lw t1, 640(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t1
-; RV32I-NEXT:    lw t1, 608(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a5, a5, t1
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a6, a2
-; RV32I-NEXT:    lw a6, 512(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a6, t3, a6
-; RV32I-NEXT:    xor t1, t4, s5
 ; RV32I-NEXT:    xor a7, a7, t0
-; RV32I-NEXT:    lw t0, 648(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a4, a4, t0
+; RV32I-NEXT:    lw t0, 656(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t0
+; RV32I-NEXT:    lw t0, 636(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t0
 ; RV32I-NEXT:    lw t0, 616(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t0
+; RV32I-NEXT:    lw t0, 588(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, t0
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    lw a2, 520(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    xor a2, a6, a2
-; RV32I-NEXT:    xor a6, t1, s7
-; RV32I-NEXT:    srli t0, t2, 2
-; RV32I-NEXT:    and t1, t2, s6
-; RV32I-NEXT:    and t0, t0, s6
-; RV32I-NEXT:    slli t1, t1, 2
-; RV32I-NEXT:    or t0, t0, t1
-; RV32I-NEXT:    srli t1, s0, 2
-; RV32I-NEXT:    and t2, s0, s6
-; RV32I-NEXT:    and t1, t1, s6
-; RV32I-NEXT:    slli t2, t2, 2
-; RV32I-NEXT:    or t1, t1, t2
-; RV32I-NEXT:    xor a4, a7, a4
-; RV32I-NEXT:    lw a7, 624(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, t5, a0
+; RV32I-NEXT:    lw t0, 564(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t0
+; RV32I-NEXT:    lw t0, 536(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t0, s10, t0
+; RV32I-NEXT:    xor t5, s6, s9
+; RV32I-NEXT:    xor t6, t6, s3
+; RV32I-NEXT:    xor t2, t2, t3
+; RV32I-NEXT:    xor a6, a6, a7
+; RV32I-NEXT:    lw a7, 672(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, a7
+; RV32I-NEXT:    lw a7, 644(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a7
+; RV32I-NEXT:    lw a7, 620(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, a7
+; RV32I-NEXT:    lw a7, 596(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    xor a5, a5, a7
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    xor a2, a6, s11
-; RV32I-NEXT:    xor a4, a4, a5
-; RV32I-NEXT:    xor a1, a1, a2
-; RV32I-NEXT:    srli a2, t0, 1
-; RV32I-NEXT:    and a5, t0, s2
-; RV32I-NEXT:    xor a3, a4, a3
-; RV32I-NEXT:    srli a4, t1, 1
-; RV32I-NEXT:    and a6, t1, s2
-; RV32I-NEXT:    and a2, a2, s2
-; RV32I-NEXT:    slli a5, a5, 1
-; RV32I-NEXT:    and a4, a4, s2
-; RV32I-NEXT:    slli a6, a6, 1
-; RV32I-NEXT:    xor a7, a1, a0
-; RV32I-NEXT:    or a1, a2, a5
-; RV32I-NEXT:    or a0, a4, a6
-; RV32I-NEXT:    srli a2, a3, 8
-; RV32I-NEXT:    srli a4, a3, 24
-; RV32I-NEXT:    slli a5, a3, 24
-; RV32I-NEXT:    lw t0, 740(sp) # 4-byte Folded Reload
-; RV32I-NEXT:    and a3, a3, t0
-; RV32I-NEXT:    and a2, a2, t0
-; RV32I-NEXT:    or a2, a2, a4
-; RV32I-NEXT:    srli a4, a7, 8
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, t0, a1
+; RV32I-NEXT:    lw a7, 520(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a7, t5, a7
+; RV32I-NEXT:    xor t0, t6, s4
+; RV32I-NEXT:    xor t2, t2, t4
+; RV32I-NEXT:    lw t3, 696(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a6, a6, t3
+; RV32I-NEXT:    lw t3, 680(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a2, a2, t3
+; RV32I-NEXT:    lw t3, 652(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t3
+; RV32I-NEXT:    lw t3, 628(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a4, a4, t3
+; RV32I-NEXT:    lw t3, 604(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t3
+; RV32I-NEXT:    lw t3, 576(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor t3, a0, t3
+; RV32I-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a0, a1, a0
+; RV32I-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a7, a1
+; RV32I-NEXT:    xor a7, t0, s8
+; RV32I-NEXT:    xor t0, t2, s0
+; RV32I-NEXT:    srli t2, s1, 2
+; RV32I-NEXT:    and t4, s1, ra
+; RV32I-NEXT:    and t2, t2, ra
+; RV32I-NEXT:    slli t4, t4, 2
+; RV32I-NEXT:    or t2, t2, t4
+; RV32I-NEXT:    srli t4, s7, 2
+; RV32I-NEXT:    and t5, s7, ra
+; RV32I-NEXT:    and t4, t4, ra
+; RV32I-NEXT:    slli t5, t5, 2
+; RV32I-NEXT:    or t4, t4, t5
+; RV32I-NEXT:    lw t5, 664(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, t5
+; RV32I-NEXT:    lw t5, 612(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a5, t5
+; RV32I-NEXT:    lw t5, 532(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a1, a1, t5
+; RV32I-NEXT:    xor t0, t0, s2
+; RV32I-NEXT:    xor a2, a6, a2
+; RV32I-NEXT:    xor a2, a2, a3
+; RV32I-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a5, a3
+; RV32I-NEXT:    xor a0, t3, a0
+; RV32I-NEXT:    xor a0, a0, a1
+; RV32I-NEXT:    xor a1, t0, t1
+; RV32I-NEXT:    xor a2, a2, a4
+; RV32I-NEXT:    lw a4, 712(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a3, a3, a4
+; RV32I-NEXT:    xor a4, a0, a7
+; RV32I-NEXT:    slli a6, a6, 24
+; RV32I-NEXT:    lw a5, 708(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    xor a5, a1, a5
+; RV32I-NEXT:    srli a0, t2, 1
+; RV32I-NEXT:    lw t0, 744(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a1, t2, t0
+; RV32I-NEXT:    and a0, a0, t0
+; RV32I-NEXT:    slli a1, a1, 1
+; RV32I-NEXT:    or a0, a0, a1
+; RV32I-NEXT:    srli a1, t4, 1
+; RV32I-NEXT:    and a7, t4, t0
+; RV32I-NEXT:    and a1, a1, t0
+; RV32I-NEXT:    slli a7, a7, 1
+; RV32I-NEXT:    or a1, a1, a7
+; RV32I-NEXT:    lw t1, 736(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    and a7, a2, t1
+; RV32I-NEXT:    slli a7, a7, 8
+; RV32I-NEXT:    or a6, a6, a7
+; RV32I-NEXT:    slli t3, t3, 24
+; RV32I-NEXT:    xor a3, a2, a3
+; RV32I-NEXT:    srli a2, a2, 8
+; RV32I-NEXT:    and a2, a2, t1
+; RV32I-NEXT:    srli a3, a3, 24
+; RV32I-NEXT:    or a2, a2, a3
+; RV32I-NEXT:    and a3, a4, t1
 ; RV32I-NEXT:    slli a3, a3, 8
-; RV32I-NEXT:    or a3, a5, a3
-; RV32I-NEXT:    srli a5, a7, 24
-; RV32I-NEXT:    and a4, a4, t0
+; RV32I-NEXT:    or a3, t3, a3
+; RV32I-NEXT:    xor a5, a4, a5
+; RV32I-NEXT:    srli a4, a4, 8
+; RV32I-NEXT:    and a4, a4, t1
+; RV32I-NEXT:    srli a5, a5, 24
 ; RV32I-NEXT:    or a4, a4, a5
-; RV32I-NEXT:    slli a5, a7, 24
-; RV32I-NEXT:    and a6, a7, t0
-; RV32I-NEXT:    slli a6, a6, 8
-; RV32I-NEXT:    or a5, a5, a6
-; RV32I-NEXT:    lui a6, 349525
-; RV32I-NEXT:    addi a6, a6, 1364
-; RV32I-NEXT:    or a2, a3, a2
-; RV32I-NEXT:    or a4, a5, a4
-; RV32I-NEXT:    srli a3, a2, 4
-; RV32I-NEXT:    and a2, a2, s3
-; RV32I-NEXT:    srli a5, a4, 4
-; RV32I-NEXT:    and a4, a4, s3
-; RV32I-NEXT:    and a3, a3, s3
+; RV32I-NEXT:    lui a5, 349525
+; RV32I-NEXT:    addi a5, a5, 1364
+; RV32I-NEXT:    or a2, a6, a2
+; RV32I-NEXT:    or a3, a3, a4
+; RV32I-NEXT:    srli a4, a2, 4
+; RV32I-NEXT:    and a2, a2, s5
+; RV32I-NEXT:    srli a6, a3, 4
+; RV32I-NEXT:    and a3, a3, s5
+; RV32I-NEXT:    and a4, a4, s5
 ; RV32I-NEXT:    slli a2, a2, 4
-; RV32I-NEXT:    and a5, a5, s3
-; RV32I-NEXT:    slli a4, a4, 4
-; RV32I-NEXT:    or a2, a3, a2
-; RV32I-NEXT:    or a4, a5, a4
-; RV32I-NEXT:    srli a3, a2, 2
-; RV32I-NEXT:    and a2, a2, s6
-; RV32I-NEXT:    srli a5, a4, 2
-; RV32I-NEXT:    and a4, a4, s6
-; RV32I-NEXT:    and a3, a3, s6
+; RV32I-NEXT:    and a6, a6, s5
+; RV32I-NEXT:    slli a3, a3, 4
+; RV32I-NEXT:    or a2, a4, a2
+; RV32I-NEXT:    or a3, a6, a3
+; RV32I-NEXT:    srli a4, a2, 2
+; RV32I-NEXT:    and a2, a2, ra
+; RV32I-NEXT:    srli a6, a3, 2
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    and a4, a4, ra
 ; RV32I-NEXT:    slli a2, a2, 2
-; RV32I-NEXT:    and a5, a5, s6
-; RV32I-NEXT:    slli a4, a4, 2
-; RV32I-NEXT:    or a2, a3, a2
-; RV32I-NEXT:    or a4, a5, a4
-; RV32I-NEXT:    srli a3, a2, 1
-; RV32I-NEXT:    srli a5, a4, 1
-; RV32I-NEXT:    and a3, a3, a6
-; RV32I-NEXT:    and a5, a5, a6
-; RV32I-NEXT:    and a2, a2, s2
+; RV32I-NEXT:    and a6, a6, ra
+; RV32I-NEXT:    slli a3, a3, 2
+; RV32I-NEXT:    or a2, a4, a2
+; RV32I-NEXT:    or a3, a6, a3
+; RV32I-NEXT:    srli a4, a2, 1
+; RV32I-NEXT:    srli a6, a3, 1
+; RV32I-NEXT:    and a4, a4, a5
+; RV32I-NEXT:    and a5, a6, a5
+; RV32I-NEXT:    and a2, a2, t0
 ; RV32I-NEXT:    slli a2, a2, 1
-; RV32I-NEXT:    or a2, a3, a2
-; RV32I-NEXT:    and a3, a4, s2
+; RV32I-NEXT:    or a2, a4, a2
+; RV32I-NEXT:    and a3, a3, t0
 ; RV32I-NEXT:    slli a3, a3, 1
 ; RV32I-NEXT:    or a3, a5, a3
 ; RV32I-NEXT:    srli a2, a2, 1
@@ -5146,61 +5127,61 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32I-NEXT:    srli a4, a2, 8
 ; RV32I-NEXT:    srli a5, a2, 24
 ; RV32I-NEXT:    slli a6, a2, 24
-; RV32I-NEXT:    and a2, a2, t0
-; RV32I-NEXT:    and a4, a4, t0
+; RV32I-NEXT:    and a2, a2, t1
+; RV32I-NEXT:    and a4, a4, t1
 ; RV32I-NEXT:    or a4, a4, a5
 ; RV32I-NEXT:    srli a5, a3, 8
 ; RV32I-NEXT:    slli a2, a2, 8
 ; RV32I-NEXT:    or a2, a6, a2
 ; RV32I-NEXT:    srli a6, a3, 24
-; RV32I-NEXT:    and a5, a5, t0
+; RV32I-NEXT:    and a5, a5, t1
 ; RV32I-NEXT:    or a5, a5, a6
-; RV32I-NEXT:    and a6, a3, t0
+; RV32I-NEXT:    and a6, a3, t1
 ; RV32I-NEXT:    slli a3, a3, 24
 ; RV32I-NEXT:    slli a6, a6, 8
 ; RV32I-NEXT:    or a3, a3, a6
 ; RV32I-NEXT:    or a2, a2, a4
 ; RV32I-NEXT:    or a3, a3, a5
 ; RV32I-NEXT:    srli a4, a2, 4
-; RV32I-NEXT:    and a2, a2, s3
+; RV32I-NEXT:    and a2, a2, s5
 ; RV32I-NEXT:    srli a5, a3, 4
-; RV32I-NEXT:    and a3, a3, s3
-; RV32I-NEXT:    and a4, a4, s3
-; RV32I-NEXT:    and a5, a5, s3
+; RV32I-NEXT:    and a3, a3, s5
+; RV32I-NEXT:    and a4, a4, s5
+; RV32I-NEXT:    and a5, a5, s5
 ; RV32I-NEXT:    slli a2, a2, 4
 ; RV32I-NEXT:    slli a3, a3, 4
 ; RV32I-NEXT:    or a2, a4, a2
 ; RV32I-NEXT:    or a3, a5, a3
 ; RV32I-NEXT:    srli a4, a2, 2
-; RV32I-NEXT:    and a2, a2, s6
+; RV32I-NEXT:    and a2, a2, ra
 ; RV32I-NEXT:    srli a5, a3, 2
-; RV32I-NEXT:    and a3, a3, s6
-; RV32I-NEXT:    and a4, a4, s6
-; RV32I-NEXT:    and a5, a5, s6
+; RV32I-NEXT:    and a3, a3, ra
+; RV32I-NEXT:    and a4, a4, ra
+; RV32I-NEXT:    and a5, a5, ra
 ; RV32I-NEXT:    slli a2, a2, 2
 ; RV32I-NEXT:    slli a3, a3, 2
 ; RV32I-NEXT:    or a2, a4, a2
 ; RV32I-NEXT:    or a3, a5, a3
 ; RV32I-NEXT:    srli a4, a2, 1
-; RV32I-NEXT:    and a2, a2, s2
+; RV32I-NEXT:    and a2, a2, t0
 ; RV32I-NEXT:    srli a5, a3, 1
-; RV32I-NEXT:    and a3, a3, s2
-; RV32I-NEXT:    and a4, a4, s2
-; RV32I-NEXT:    and a5, a5, s2
+; RV32I-NEXT:    and a3, a3, t0
+; RV32I-NEXT:    and a4, a4, t0
+; RV32I-NEXT:    and a5, a5, t0
 ; RV32I-NEXT:    slli a2, a2, 1
 ; RV32I-NEXT:    or a2, a4, a2
 ; RV32I-NEXT:    slli a3, a3, 1
 ; RV32I-NEXT:    or a3, a5, a3
-; RV32I-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    lw a4, 728(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    sw a2, 0(a4)
-; RV32I-NEXT:    sw a1, 4(a4)
+; RV32I-NEXT:    sw a0, 4(a4)
 ; RV32I-NEXT:    sw a3, 8(a4)
-; RV32I-NEXT:    sw a0, 12(a4)
-; RV32I-NEXT:    lw a4, 736(sp) # 4-byte Folded Reload
+; RV32I-NEXT:    sw a1, 12(a4)
+; RV32I-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    sw a2, 0(a4)
-; RV32I-NEXT:    sw a1, 4(a4)
+; RV32I-NEXT:    sw a0, 4(a4)
 ; RV32I-NEXT:    sw a3, 8(a4)
-; RV32I-NEXT:    sw a0, 12(a4)
+; RV32I-NEXT:    sw a1, 12(a4)
 ; RV32I-NEXT:    lw ra, 796(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw s0, 792(sp) # 4-byte Folded Reload
 ; RV32I-NEXT:    lw s1, 788(sp) # 4-byte Folded Reload
@@ -5235,175 +5216,173 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    sd s11, 1016(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sd a5, 1008(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sd a4, 1000(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    mv s5, a0
-; RV64I-NEXT:    srli a5, a2, 24
-; RV64I-NEXT:    lui s4, 4080
-; RV64I-NEXT:    srli a6, a2, 8
+; RV64I-NEXT:    mv a5, a0
+; RV64I-NEXT:    srli a7, a2, 24
+; RV64I-NEXT:    lui s5, 4080
+; RV64I-NEXT:    srli t0, a2, 8
 ; RV64I-NEXT:    li t4, 255
-; RV64I-NEXT:    srli a7, a2, 40
-; RV64I-NEXT:    lui s0, 16
-; RV64I-NEXT:    srli t0, a2, 56
-; RV64I-NEXT:    srliw t1, a2, 24
+; RV64I-NEXT:    srli t1, a2, 40
+; RV64I-NEXT:    lui a0, 16
+; RV64I-NEXT:    srli a6, a2, 56
+; RV64I-NEXT:    srliw t2, a2, 24
 ; RV64I-NEXT:    slli a4, a2, 56
-; RV64I-NEXT:    lui t2, 61681
-; RV64I-NEXT:    lui ra, 209715
-; RV64I-NEXT:    lui s3, 349525
-; RV64I-NEXT:    srli s6, a0, 24
-; RV64I-NEXT:    srli t3, a0, 8
-; RV64I-NEXT:    srli t5, a0, 40
-; RV64I-NEXT:    srli t6, a0, 56
-; RV64I-NEXT:    srliw s1, a0, 24
-; RV64I-NEXT:    slli a0, a0, 56
-; RV64I-NEXT:    sd a0, 952(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    srli s8, a3, 24
-; RV64I-NEXT:    srli s11, a3, 8
-; RV64I-NEXT:    srli s7, a3, 40
-; RV64I-NEXT:    srli s10, a3, 56
-; RV64I-NEXT:    and a5, a5, s4
-; RV64I-NEXT:    slli s2, t4, 24
-; RV64I-NEXT:    and a6, a6, s2
-; RV64I-NEXT:    or a6, a6, a5
-; RV64I-NEXT:    addi a0, s0, -256
-; RV64I-NEXT:    and a5, a7, a0
-; RV64I-NEXT:    or a7, a5, t0
-; RV64I-NEXT:    and a5, a2, s4
-; RV64I-NEXT:    slli t1, t1, 32
-; RV64I-NEXT:    addi s9, t2, -241
-; RV64I-NEXT:    addi ra, ra, 819
-; RV64I-NEXT:    addi t0, s3, 1365
-; RV64I-NEXT:    slli a5, a5, 24
-; RV64I-NEXT:    or a5, a5, t1
-; RV64I-NEXT:    slli t1, s9, 32
-; RV64I-NEXT:    add s9, s9, t1
-; RV64I-NEXT:    slli t1, ra, 32
-; RV64I-NEXT:    add ra, ra, t1
-; RV64I-NEXT:    slli t1, t0, 32
-; RV64I-NEXT:    add s0, t0, t1
-; RV64I-NEXT:    srliw t1, a3, 24
-; RV64I-NEXT:    and t0, s6, s4
-; RV64I-NEXT:    and t2, t3, s2
-; RV64I-NEXT:    or t0, t2, t0
-; RV64I-NEXT:    srli t2, a1, 24
-; RV64I-NEXT:    and t3, t5, a0
-; RV64I-NEXT:    or t3, t3, t6
-; RV64I-NEXT:    and t4, s5, s4
+; RV64I-NEXT:    lui s4, 61681
+; RV64I-NEXT:    lui t3, 209715
+; RV64I-NEXT:    lui ra, 349525
+; RV64I-NEXT:    srli s6, a5, 24
+; RV64I-NEXT:    srli s7, a5, 8
+; RV64I-NEXT:    srli t5, a5, 40
+; RV64I-NEXT:    srli s0, a5, 56
+; RV64I-NEXT:    srliw s1, a5, 24
+; RV64I-NEXT:    slli s11, a5, 56
+; RV64I-NEXT:    srli s2, a3, 24
+; RV64I-NEXT:    srli s9, a3, 8
+; RV64I-NEXT:    srli t6, a3, 40
+; RV64I-NEXT:    srli s8, a3, 56
+; RV64I-NEXT:    and a7, a7, s5
+; RV64I-NEXT:    slli s3, t4, 24
+; RV64I-NEXT:    and t0, t0, s3
+; RV64I-NEXT:    or a7, t0, a7
+; RV64I-NEXT:    addi a0, a0, -256
+; RV64I-NEXT:    and t0, t1, a0
+; RV64I-NEXT:    or t0, t0, a6
+; RV64I-NEXT:    and a6, a2, s5
+; RV64I-NEXT:    slli t2, t2, 32
+; RV64I-NEXT:    addi s10, s4, -241
+; RV64I-NEXT:    addi t1, t3, 819
+; RV64I-NEXT:    addi t3, ra, 1365
+; RV64I-NEXT:    slli a6, a6, 24
+; RV64I-NEXT:    or a6, a6, t2
+; RV64I-NEXT:    slli t2, s10, 32
+; RV64I-NEXT:    add ra, s10, t2
+; RV64I-NEXT:    slli t2, t1, 32
+; RV64I-NEXT:    add s10, t1, t2
+; RV64I-NEXT:    slli t1, t3, 32
+; RV64I-NEXT:    add s4, t3, t1
+; RV64I-NEXT:    srliw t2, a3, 24
+; RV64I-NEXT:    and t1, s6, s5
+; RV64I-NEXT:    and t3, s7, s3
+; RV64I-NEXT:    or t1, t3, t1
+; RV64I-NEXT:    srli t3, a1, 24
+; RV64I-NEXT:    and t4, t5, a0
+; RV64I-NEXT:    or t4, t4, s0
+; RV64I-NEXT:    and t5, a5, s5
 ; RV64I-NEXT:    slli s1, s1, 32
-; RV64I-NEXT:    slli t4, t4, 24
-; RV64I-NEXT:    or t4, t4, s1
+; RV64I-NEXT:    slli t5, t5, 24
+; RV64I-NEXT:    or s0, t5, s1
 ; RV64I-NEXT:    srli t5, a1, 8
-; RV64I-NEXT:    and t6, s8, s4
-; RV64I-NEXT:    mv s6, s2
-; RV64I-NEXT:    sd s2, 992(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and s1, s11, s2
-; RV64I-NEXT:    or t6, s1, t6
-; RV64I-NEXT:    srli s1, a1, 40
-; RV64I-NEXT:    and s2, s7, a0
-; RV64I-NEXT:    or s2, s2, s10
-; RV64I-NEXT:    and s3, a3, s4
-; RV64I-NEXT:    slli t1, t1, 32
+; RV64I-NEXT:    and s1, s2, s5
+; RV64I-NEXT:    mv s6, s3
+; RV64I-NEXT:    sd s3, 992(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and s2, s9, s3
+; RV64I-NEXT:    or s1, s2, s1
+; RV64I-NEXT:    srli s2, a1, 40
+; RV64I-NEXT:    and t6, t6, a0
+; RV64I-NEXT:    or t6, t6, s8
+; RV64I-NEXT:    and s3, a3, s5
+; RV64I-NEXT:    slli t2, t2, 32
 ; RV64I-NEXT:    slli s3, s3, 24
-; RV64I-NEXT:    or t1, s3, t1
+; RV64I-NEXT:    or t2, s3, t2
 ; RV64I-NEXT:    srli s3, a1, 56
-; RV64I-NEXT:    and t2, t2, s4
+; RV64I-NEXT:    and t3, t3, s5
 ; RV64I-NEXT:    and t5, t5, s6
-; RV64I-NEXT:    or t2, t5, t2
+; RV64I-NEXT:    or t3, t5, t3
 ; RV64I-NEXT:    srliw t5, a1, 24
-; RV64I-NEXT:    and s1, s1, a0
-; RV64I-NEXT:    or s1, s1, s3
-; RV64I-NEXT:    and s3, a1, s4
+; RV64I-NEXT:    mv s6, a0
+; RV64I-NEXT:    sd a0, 968(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and s2, s2, a0
+; RV64I-NEXT:    or s2, s2, s3
+; RV64I-NEXT:    and s3, a1, s5
 ; RV64I-NEXT:    slli t5, t5, 32
 ; RV64I-NEXT:    slli s3, s3, 24
 ; RV64I-NEXT:    or s3, s3, t5
 ; RV64I-NEXT:    li t5, 1
-; RV64I-NEXT:    or a6, a6, a7
-; RV64I-NEXT:    slli a7, a3, 56
-; RV64I-NEXT:    mv s4, a0
-; RV64I-NEXT:    sd a0, 976(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    or a7, a7, t0
+; RV64I-NEXT:    slli t0, a3, 56
 ; RV64I-NEXT:    and a2, a2, a0
 ; RV64I-NEXT:    slli a2, a2, 40
 ; RV64I-NEXT:    or a2, a4, a2
 ; RV64I-NEXT:    slli a4, a1, 56
-; RV64I-NEXT:    or t0, t0, t3
-; RV64I-NEXT:    slli s6, t5, 11
-; RV64I-NEXT:    sd s6, 440(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a0, s5, a0
-; RV64I-NEXT:    and a3, a3, s4
-; RV64I-NEXT:    and a1, a1, s4
+; RV64I-NEXT:    or t1, t1, t4
+; RV64I-NEXT:    slli s5, t5, 11
+; RV64I-NEXT:    sd s5, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a0, a5, a0
+; RV64I-NEXT:    and a3, a3, s6
+; RV64I-NEXT:    and a1, a1, s6
 ; RV64I-NEXT:    slli a0, a0, 40
 ; RV64I-NEXT:    slli a3, a3, 40
 ; RV64I-NEXT:    slli a1, a1, 40
-; RV64I-NEXT:    ld t3, 952(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    or a0, t3, a0
-; RV64I-NEXT:    or t3, t6, s2
-; RV64I-NEXT:    or a3, a7, a3
-; RV64I-NEXT:    or a7, t2, s1
+; RV64I-NEXT:    or a0, s11, a0
+; RV64I-NEXT:    or a5, s1, t6
+; RV64I-NEXT:    or a3, t0, a3
+; RV64I-NEXT:    or t0, t3, s2
 ; RV64I-NEXT:    or a1, a4, a1
-; RV64I-NEXT:    or a2, a2, a5
-; RV64I-NEXT:    or a0, a0, t4
-; RV64I-NEXT:    or a3, a3, t1
-; RV64I-NEXT:    or a1, a1, s3
 ; RV64I-NEXT:    or a2, a2, a6
-; RV64I-NEXT:    or a0, a0, t0
-; RV64I-NEXT:    or a3, a3, t3
-; RV64I-NEXT:    or a1, a1, a7
+; RV64I-NEXT:    or a0, a0, s0
+; RV64I-NEXT:    or a3, a3, t2
+; RV64I-NEXT:    or a1, a1, s3
+; RV64I-NEXT:    or a2, a2, a7
+; RV64I-NEXT:    or a0, a0, t1
+; RV64I-NEXT:    or a3, a3, a5
+; RV64I-NEXT:    or a1, a1, t0
 ; RV64I-NEXT:    srli a4, a2, 4
-; RV64I-NEXT:    sd s9, 984(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, a2, s9
+; RV64I-NEXT:    sd ra, 984(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, a2, ra
 ; RV64I-NEXT:    srli a5, a0, 4
-; RV64I-NEXT:    and a0, a0, s9
+; RV64I-NEXT:    and a0, a0, ra
 ; RV64I-NEXT:    srli a6, a3, 4
-; RV64I-NEXT:    and a3, a3, s9
+; RV64I-NEXT:    and a3, a3, ra
 ; RV64I-NEXT:    srli a7, a1, 4
-; RV64I-NEXT:    and a1, a1, s9
-; RV64I-NEXT:    and a4, a4, s9
+; RV64I-NEXT:    and a1, a1, ra
+; RV64I-NEXT:    and a4, a4, ra
 ; RV64I-NEXT:    slli a2, a2, 4
-; RV64I-NEXT:    and a5, a5, s9
+; RV64I-NEXT:    and a5, a5, ra
 ; RV64I-NEXT:    slli a0, a0, 4
-; RV64I-NEXT:    and a6, a6, s9
+; RV64I-NEXT:    and a6, a6, ra
 ; RV64I-NEXT:    slli a3, a3, 4
-; RV64I-NEXT:    and a7, a7, s9
+; RV64I-NEXT:    and a7, a7, ra
 ; RV64I-NEXT:    slli a1, a1, 4
 ; RV64I-NEXT:    or a2, a4, a2
 ; RV64I-NEXT:    or a0, a5, a0
 ; RV64I-NEXT:    or a3, a6, a3
 ; RV64I-NEXT:    or a1, a7, a1
 ; RV64I-NEXT:    srli a4, a2, 2
-; RV64I-NEXT:    sd ra, 968(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, a2, ra
+; RV64I-NEXT:    sd s10, 976(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, a2, s10
 ; RV64I-NEXT:    srli a5, a0, 2
-; RV64I-NEXT:    and a0, a0, ra
+; RV64I-NEXT:    and a0, a0, s10
 ; RV64I-NEXT:    srli a6, a3, 2
-; RV64I-NEXT:    and a3, a3, ra
+; RV64I-NEXT:    and a3, a3, s10
 ; RV64I-NEXT:    srli a7, a1, 2
-; RV64I-NEXT:    and a1, a1, ra
-; RV64I-NEXT:    and a4, a4, ra
+; RV64I-NEXT:    and a1, a1, s10
+; RV64I-NEXT:    and a4, a4, s10
 ; RV64I-NEXT:    slli a2, a2, 2
-; RV64I-NEXT:    and a5, a5, ra
+; RV64I-NEXT:    and a5, a5, s10
 ; RV64I-NEXT:    slli a0, a0, 2
-; RV64I-NEXT:    and a6, a6, ra
+; RV64I-NEXT:    and a6, a6, s10
 ; RV64I-NEXT:    slli a3, a3, 2
-; RV64I-NEXT:    and a7, a7, ra
+; RV64I-NEXT:    and a7, a7, s10
 ; RV64I-NEXT:    slli a1, a1, 2
 ; RV64I-NEXT:    or a2, a4, a2
 ; RV64I-NEXT:    or a0, a5, a0
 ; RV64I-NEXT:    or a3, a6, a3
 ; RV64I-NEXT:    or a1, a7, a1
 ; RV64I-NEXT:    srli a4, a2, 1
-; RV64I-NEXT:    sd s0, 960(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, a2, s0
+; RV64I-NEXT:    sd s4, 960(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, a2, s4
 ; RV64I-NEXT:    srli a5, a0, 1
-; RV64I-NEXT:    and a0, a0, s0
+; RV64I-NEXT:    and a0, a0, s4
 ; RV64I-NEXT:    srli a6, a3, 1
-; RV64I-NEXT:    and a3, a3, s0
+; RV64I-NEXT:    and a3, a3, s4
 ; RV64I-NEXT:    srli a7, a1, 1
-; RV64I-NEXT:    and a1, a1, s0
-; RV64I-NEXT:    and a4, a4, s0
+; RV64I-NEXT:    and a1, a1, s4
+; RV64I-NEXT:    and a4, a4, s4
 ; RV64I-NEXT:    slli a2, a2, 1
-; RV64I-NEXT:    and a5, a5, s0
+; RV64I-NEXT:    and a5, a5, s4
 ; RV64I-NEXT:    slli a0, a0, 1
-; RV64I-NEXT:    and a6, a6, s0
+; RV64I-NEXT:    and a6, a6, s4
 ; RV64I-NEXT:    slli t0, a3, 1
-; RV64I-NEXT:    and a7, a7, s0
+; RV64I-NEXT:    and a7, a7, s4
 ; RV64I-NEXT:    slli a3, a1, 1
 ; RV64I-NEXT:    or s0, a4, a2
 ; RV64I-NEXT:    or s1, a5, a0
@@ -5435,269 +5414,269 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a3, a5
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 456(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a3, 448(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a3, s1, 64
 ; RV64I-NEXT:    seqz a4, a7
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    and a4, a4, a6
-; RV64I-NEXT:    sd a4, 448(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a4, 440(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a4, s0, 7
 ; RV64I-NEXT:    seqz a5, t1
 ; RV64I-NEXT:    addi a5, a5, -1
 ; RV64I-NEXT:    and a0, a5, a0
-; RV64I-NEXT:    sd a0, 912(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a5, s1, 128
 ; RV64I-NEXT:    seqz a6, t3
 ; RV64I-NEXT:    addi a6, a6, -1
 ; RV64I-NEXT:    and a0, a6, t2
-; RV64I-NEXT:    sd a0, 480(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 472(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a6, s0, 8
 ; RV64I-NEXT:    seqz a7, t6
 ; RV64I-NEXT:    addi a7, a7, -1
 ; RV64I-NEXT:    and a0, a7, t4
-; RV64I-NEXT:    sd a0, 472(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 464(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a7, s1, 256
 ; RV64I-NEXT:    seqz a3, a3
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a2, a3, a2
-; RV64I-NEXT:    sd a2, 928(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 920(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, s0, 9
 ; RV64I-NEXT:    seqz a3, a5
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 464(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a3, 936(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a3, s1, 512
 ; RV64I-NEXT:    seqz a4, a7
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    and a0, a4, a6
-; RV64I-NEXT:    sd a0, 880(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a0, 456(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a4, s0, 10
 ; RV64I-NEXT:    seqz a3, a3
 ; RV64I-NEXT:    addi a3, a3, -1
 ; RV64I-NEXT:    and a2, a3, a2
-; RV64I-NEXT:    sd a2, 904(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    andi a2, s1, 1024
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    and a2, a2, a4
-; RV64I-NEXT:    sd a2, 936(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, s1, s6
+; RV64I-NEXT:    sd a2, 888(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s5
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 11
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 856(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 912(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 1
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 12
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 848(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 928(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 2
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 13
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 872(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 848(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 4
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 14
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 896(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 8
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 15
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 920(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 856(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 16
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 16
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 808(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 872(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 32
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 17
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 792(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 880(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 64
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 18
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 904(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 128
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 19
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 776(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 256
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 20
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 768(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 512
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 21
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 888(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 792(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 1024
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 22
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 744(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 816(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 2048
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 23
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 736(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 4096
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 24
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 768(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 728(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 8192
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 25
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 784(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 712(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 16384
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 26
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 800(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 744(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 32768
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 27
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 816(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 760(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 65536
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 28
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 784(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 131072
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 29
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 800(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    lui a2, 262144
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 30
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 808(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    sraiw a2, s1, 31
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 31
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 704(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 32
-; RV64I-NEXT:    sd a2, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 32
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 33
-; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 33
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 728(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 34
-; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 34
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 752(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 35
-; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 35
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 760(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 36
-; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 36
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 776(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 704(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 37
-; RV64I-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 37
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 608(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 38
-; RV64I-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 38
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 592(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 736(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 39
-; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 360(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 39
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 752(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 40
-; RV64I-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 344(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 40
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 600(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a2, t5, 41
 ; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, s1, a2
@@ -5705,522 +5684,521 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 41
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 584(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli ra, t5, 42
 ; RV64I-NEXT:    and a2, s1, ra
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, s0, 42
 ; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 616(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s11, t5, 43
+; RV64I-NEXT:    and a2, s1, s11
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 43
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s10, t5, 44
+; RV64I-NEXT:    and a2, s1, s10
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 44
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s9, t5, 45
+; RV64I-NEXT:    and a2, s1, s9
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 45
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a4, t5, 46
+; RV64I-NEXT:    and a2, s1, a4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 46
+; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a3, t5, 43
-; RV64I-NEXT:    and a2, s1, a3
+; RV64I-NEXT:    slli a0, t5, 47
+; RV64I-NEXT:    and a2, s1, a0
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a4, s0, 43
-; RV64I-NEXT:    and a2, a2, a4
+; RV64I-NEXT:    slli a3, s0, 47
+; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a2, t5, 44
-; RV64I-NEXT:    and a4, s1, a2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 44
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 696(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s10, t5, 45
-; RV64I-NEXT:    and a4, s1, s10
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 45
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 712(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s9, t5, 46
-; RV64I-NEXT:    and a4, s1, s9
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 46
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 552(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s8, t5, 47
-; RV64I-NEXT:    and a4, s1, s8
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 47
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 544(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s7, t5, 48
-; RV64I-NEXT:    and a4, s1, s7
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 48
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 560(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s6, t5, 49
-; RV64I-NEXT:    and a4, s1, s6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 49
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 568(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s8, t5, 48
+; RV64I-NEXT:    and a2, s1, s8
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 48
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 552(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s7, t5, 49
+; RV64I-NEXT:    and a2, s1, s7
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 49
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 528(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli s5, t5, 50
-; RV64I-NEXT:    and a4, s1, s5
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 50
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 576(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s5
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 50
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 560(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli s4, t5, 51
-; RV64I-NEXT:    and a4, s1, s4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 51
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 584(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 51
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 568(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli s3, t5, 52
-; RV64I-NEXT:    and a4, s1, s3
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 52
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 600(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s3
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 52
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 576(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a7, t5, 53
-; RV64I-NEXT:    and a4, s1, a7
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 53
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 616(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, a7
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 53
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 592(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli a6, t5, 54
-; RV64I-NEXT:    and a4, s1, a6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 54
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 632(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli a0, t5, 55
-; RV64I-NEXT:    and a4, s1, a0
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 55
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 624(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, a6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 54
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 608(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a5, t5, 55
+; RV64I-NEXT:    and a2, s1, a5
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 55
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 624(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli s2, t5, 56
-; RV64I-NEXT:    and a4, s1, s2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 56
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 496(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, s2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 56
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 496(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t6, t5, 57
-; RV64I-NEXT:    and a4, s1, t6
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 57
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 488(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 57
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 488(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t4, t5, 58
-; RV64I-NEXT:    and a4, s1, t4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 58
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 504(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 58
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 504(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t3, t5, 59
-; RV64I-NEXT:    and a4, s1, t3
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 59
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 512(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t3
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 59
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 512(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t2, t5, 60
-; RV64I-NEXT:    and a4, s1, t2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 60
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 520(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    slli s11, t5, 61
-; RV64I-NEXT:    and a4, s1, s11
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, s0, 61
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 528(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 60
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 520(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli s6, t5, 61
+; RV64I-NEXT:    and a2, s1, s6
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, s0, 61
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 536(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    slli t1, t5, 62
-; RV64I-NEXT:    andi a4, s1, 1
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    and t5, a4, s0
+; RV64I-NEXT:    andi a2, s1, 1
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    and t5, a2, s0
 ; RV64I-NEXT:    slli s0, s0, 62
-; RV64I-NEXT:    and a4, s1, t1
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    and a4, a4, s0
-; RV64I-NEXT:    sd a4, 536(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 2
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 1
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 392(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 2
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 344(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 8
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 3
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 320(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 16
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 4
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 312(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 32
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 5
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 296(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 64
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 6
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 360(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 128
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 7
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 280(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 256
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 8
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 264(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 512
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 9
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 304(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    andi a4, t0, 1024
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 10
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 336(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 440(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 11
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 240(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 1
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 12
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 216(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 2
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 13
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 256(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 4
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 14
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 288(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 8
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 15
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 440(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 16
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 16
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 184(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 32
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 17
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 176(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 64
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 18
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 200(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 128
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 19
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 232(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 256
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 20
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 248(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 512
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 21
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 272(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 1024
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 22
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 152(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 2048
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 23
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 136(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 4096
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 24
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 160(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 8192
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 25
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 168(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 16384
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 26
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 192(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 32768
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 27
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 208(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 65536
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 28
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 224(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 131072
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 29
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 112(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    lui a4, 262144
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli s1, a1, 30
-; RV64I-NEXT:    and a4, a4, s1
-; RV64I-NEXT:    sd a4, 104(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    sraiw a4, t0, 31
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 31
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 120(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 432(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 32
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 128(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 424(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 33
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 144(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 416(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 34
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 416(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 408(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 35
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 424(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 400(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 36
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 432(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 384(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 37
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 64(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 376(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 38
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 48(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 368(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 39
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 80(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 352(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli s0, a1, 40
-; RV64I-NEXT:    and a4, a4, s0
-; RV64I-NEXT:    sd a4, 352(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a4, 328(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a4, t0, a4
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 41
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 368(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a4, t0, ra
-; RV64I-NEXT:    seqz a4, a4
-; RV64I-NEXT:    addi a4, a4, -1
-; RV64I-NEXT:    slli a5, a1, 42
-; RV64I-NEXT:    and a4, a4, a5
-; RV64I-NEXT:    sd a4, 376(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a3, t0, a3
-; RV64I-NEXT:    seqz a3, a3
-; RV64I-NEXT:    addi a3, a3, -1
-; RV64I-NEXT:    slli a4, a1, 43
-; RV64I-NEXT:    and a3, a3, a4
-; RV64I-NEXT:    sd a3, 384(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, s1, t1
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    and a2, a2, s0
+; RV64I-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 1
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 2
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 8
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 3
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 16
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 4
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 32
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 5
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 64
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 6
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 128
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 7
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 480(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 256
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 8
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 512
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 9
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    andi a2, t0, 1024
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 10
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 432(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 11
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 1
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 12
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 432(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 2
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 13
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 4
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 14
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 8
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 15
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 16
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 16
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 32
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 17
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 64
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 18
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 128
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 19
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 256
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 20
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 512
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 21
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 1024
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 22
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 2048
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 23
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 4096
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 24
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 8192
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 25
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 120(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 16384
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 26
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 32768
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 27
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 65536
 ; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 44
+; RV64I-NEXT:    slli a3, a1, 28
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 131072
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 29
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    lui a2, 262144
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 30
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sraiw a2, t0, 31
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 31
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 424(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli s1, a1, 32
+; RV64I-NEXT:    and a2, a2, s1
+; RV64I-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 416(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 33
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 408(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 34
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 400(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 35
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 392(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 36
 ; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 400(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s10
+; RV64I-NEXT:    ld a2, 376(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 45
+; RV64I-NEXT:    slli a3, a1, 37
 ; RV64I-NEXT:    and a2, a2, a3
 ; RV64I-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 38
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 360(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 39
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 424(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 344(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 40
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a2, 328(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a2, t0, a2
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 41
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, ra
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 42
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s11
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 43
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 344(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s10
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli s0, a1, 44
+; RV64I-NEXT:    and a2, a2, s0
+; RV64I-NEXT:    sd a2, 360(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, s9
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
+; RV64I-NEXT:    slli a3, a1, 45
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a4
+; RV64I-NEXT:    seqz a2, a2
+; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 46
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 16(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s8
+; RV64I-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a0
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a5, a1, 47
-; RV64I-NEXT:    and s10, a2, a5
-; RV64I-NEXT:    and a2, t0, s7
+; RV64I-NEXT:    slli a3, a1, 47
+; RV64I-NEXT:    and a2, a2, a3
+; RV64I-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, s8
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 48
-; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, s6
+; RV64I-NEXT:    and ra, a2, a3
+; RV64I-NEXT:    and a2, t0, s7
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
-; RV64I-NEXT:    slli a3, a1, 49
-; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 32(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    slli a4, a1, 49
+; RV64I-NEXT:    and s10, a2, a4
 ; RV64I-NEXT:    and a2, t0, s5
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 50
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, s4
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 51
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 32(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, s3
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 52
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, a7
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 53
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, a6
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 54
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    and a2, t0, a0
+; RV64I-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    and a2, t0, a5
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 55
 ; RV64I-NEXT:    and a2, a2, a3
-; RV64I-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a2, t0, s2
 ; RV64I-NEXT:    seqz a2, a2
 ; RV64I-NEXT:    addi a2, a2, -1
 ; RV64I-NEXT:    slli a3, a1, 56
-; RV64I-NEXT:    and s6, a2, a3
+; RV64I-NEXT:    and s7, a2, a3
 ; RV64I-NEXT:    and a3, t0, t6
 ; RV64I-NEXT:    seqz a3, a3
 ; RV64I-NEXT:    addi a3, a3, -1
@@ -6230,22 +6208,23 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a4, a4
 ; RV64I-NEXT:    addi a4, a4, -1
 ; RV64I-NEXT:    slli a5, a1, 58
-; RV64I-NEXT:    and s7, a4, a5
+; RV64I-NEXT:    and s8, a4, a5
 ; RV64I-NEXT:    and a5, t0, t3
 ; RV64I-NEXT:    seqz a5, a5
 ; RV64I-NEXT:    addi a5, a5, -1
-; RV64I-NEXT:    slli a6, a1, 59
-; RV64I-NEXT:    and s8, a5, a6
-; RV64I-NEXT:    and a6, t0, t2
-; RV64I-NEXT:    seqz a6, a6
-; RV64I-NEXT:    addi a6, a6, -1
+; RV64I-NEXT:    slli a7, a1, 59
+; RV64I-NEXT:    and s9, a5, a7
+; RV64I-NEXT:    and a7, t0, t2
+; RV64I-NEXT:    seqz a7, a7
+; RV64I-NEXT:    addi a7, a7, -1
 ; RV64I-NEXT:    slli a0, a1, 60
-; RV64I-NEXT:    and s9, a6, a0
-; RV64I-NEXT:    and a0, t0, s11
+; RV64I-NEXT:    and s11, a7, a0
+; RV64I-NEXT:    and a0, t0, s6
 ; RV64I-NEXT:    seqz a0, a0
 ; RV64I-NEXT:    addi a0, a0, -1
-; RV64I-NEXT:    slli s11, a1, 61
-; RV64I-NEXT:    and s11, a0, s11
+; RV64I-NEXT:    slli s6, a1, 61
+; RV64I-NEXT:    and a0, a0, s6
+; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
 ; RV64I-NEXT:    and a0, t0, t1
 ; RV64I-NEXT:    andi t0, t0, 1
 ; RV64I-NEXT:    seqz t0, t0
@@ -6255,297 +6234,297 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    seqz a0, a0
 ; RV64I-NEXT:    addi a0, a0, -1
 ; RV64I-NEXT:    and a0, a0, a1
-; RV64I-NEXT:    sd a0, 8(sp) # 8-byte Folded Spill
-; RV64I-NEXT:    ld a0, 456(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    sd a0, 16(sp) # 8-byte Folded Spill
+; RV64I-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s4, t5, a0
-; RV64I-NEXT:    ld a0, 912(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 448(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 896(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 440(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t3, a1, a0
-; RV64I-NEXT:    ld a0, 480(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 472(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, a0, a1
-; RV64I-NEXT:    ld a0, 880(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 472(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 464(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, a0, a1
+; RV64I-NEXT:    ld a0, 864(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 456(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, a1, a0
-; RV64I-NEXT:    ld a0, 856(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 848(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 824(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, a0, a1
-; RV64I-NEXT:    ld a0, 808(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld s0, 792(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 776(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 768(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, a0, s0
-; RV64I-NEXT:    ld a0, 744(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld s1, 736(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 728(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 712(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, a0, s1
-; RV64I-NEXT:    ld a0, 680(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 664(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 664(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 648(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, a0, a1
-; RV64I-NEXT:    ld a0, 608(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 592(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 600(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 584(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s3, a0, a1
 ; RV64I-NEXT:    ld a0, 552(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a1, 544(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 528(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, a0, a1
 ; RV64I-NEXT:    ld a0, 496(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 488(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, a0, a1
-; RV64I-NEXT:    ld a0, 392(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 384(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t0, t0, a0
-; RV64I-NEXT:    ld a0, 344(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a0, 336(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a2, 296(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 296(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a2, 288(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a1, a1, a2
-; RV64I-NEXT:    ld a2, 280(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a3, 264(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a3, 248(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a2, a2, a3
-; RV64I-NEXT:    ld a3, 240(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a4, 216(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a3, 216(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 200(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a3, a3, a4
-; RV64I-NEXT:    ld a4, 184(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a5, 176(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 160(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 144(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a4, a5
-; RV64I-NEXT:    ld a5, 152(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a6, 136(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 128(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 120(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a5, a6
-; RV64I-NEXT:    ld a6, 112(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld a7, 104(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 96(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a7, 88(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a6, a7
-; RV64I-NEXT:    ld a7, 64(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    ld ra, 48(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, a7, ra
-; RV64I-NEXT:    ld ra, 16(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a7, 56(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s6, 40(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s6
 ; RV64I-NEXT:    xor s10, ra, s10
-; RV64I-NEXT:    xor s5, s6, s5
+; RV64I-NEXT:    xor s5, s7, s5
 ; RV64I-NEXT:    xor t3, s4, t3
-; RV64I-NEXT:    ld s4, 928(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 920(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t4, s4
-; RV64I-NEXT:    ld s4, 904(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 888(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t5, s4
-; RV64I-NEXT:    ld s4, 872(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 856(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, t6, s4
-; RV64I-NEXT:    ld s4, 824(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 792(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s0, s4
-; RV64I-NEXT:    ld s4, 768(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 744(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s1, s4
-; RV64I-NEXT:    ld s4, 704(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 680(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, s2, s4
-; RV64I-NEXT:    ld s4, 640(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s4, 616(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s3, s3, s4
 ; RV64I-NEXT:    ld s4, 560(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s4
 ; RV64I-NEXT:    ld s4, 504(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s4
 ; RV64I-NEXT:    xor a0, t0, a0
-; RV64I-NEXT:    ld t0, 360(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 352(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a1, a1, t0
-; RV64I-NEXT:    ld t0, 304(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 272(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a2, a2, t0
-; RV64I-NEXT:    ld t0, 256(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 240(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a3, a3, t0
-; RV64I-NEXT:    ld t0, 200(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 168(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a4, t0
-; RV64I-NEXT:    ld t0, 160(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 136(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a5, t0
-; RV64I-NEXT:    ld t0, 120(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 104(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a6, t0
-; RV64I-NEXT:    ld t0, 80(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t0, 72(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a7, a7, t0
 ; RV64I-NEXT:    ld t0, 24(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t0, s10, t0
-; RV64I-NEXT:    xor s4, s5, s7
+; RV64I-NEXT:    xor s4, s5, s8
 ; RV64I-NEXT:    xor t3, t3, t4
-; RV64I-NEXT:    ld t4, 936(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t4, 912(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t5, t4
-; RV64I-NEXT:    ld t5, 896(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t5, 872(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t6, t5
-; RV64I-NEXT:    ld t6, 840(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t6, 816(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, s0, t6
-; RV64I-NEXT:    ld s0, 784(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 760(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s1, s0
-; RV64I-NEXT:    ld s1, 720(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 696(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s2, s1
-; RV64I-NEXT:    ld s2, 648(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s2, 632(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s2, s3, s2
 ; RV64I-NEXT:    ld s3, 568(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s3
 ; RV64I-NEXT:    ld s3, 512(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s3
 ; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 288(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 232(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 168(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 128(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    ld a6, 352(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a6, a7, a6
-; RV64I-NEXT:    ld a7, 32(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t0, a7
-; RV64I-NEXT:    xor t0, s4, s8
-; RV64I-NEXT:    xor t3, t3, t4
-; RV64I-NEXT:    ld t4, 920(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, a1
+; RV64I-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, a1
+; RV64I-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a4, a4, a1
+; RV64I-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, a1
+; RV64I-NEXT:    ld a1, 112(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, a1
+; RV64I-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, a1
+; RV64I-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, a1
+; RV64I-NEXT:    xor s3, s4, s9
+; RV64I-NEXT:    ld a1, 936(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a1, t3, a1
+; RV64I-NEXT:    ld t3, 928(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t3, t4, t3
+; RV64I-NEXT:    ld t4, 880(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t4, t5, t4
-; RV64I-NEXT:    ld t5, 864(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t5, 840(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t5, t6, t5
-; RV64I-NEXT:    ld t6, 800(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld t6, 784(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t6, s0, t6
-; RV64I-NEXT:    ld s0, 728(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 704(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s0, s1, s0
-; RV64I-NEXT:    ld s1, 656(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s1, 640(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor s1, s2, s1
 ; RV64I-NEXT:    ld s2, 576(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s2
 ; RV64I-NEXT:    ld s2, 520(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s2
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 440(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 248(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 192(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 144(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s2, 480(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a0, a0, s2
+; RV64I-NEXT:    ld s2, 432(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, s2
+; RV64I-NEXT:    ld s2, 280(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, s2
+; RV64I-NEXT:    ld s2, 232(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a4, a4, s2
+; RV64I-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, s2
+; RV64I-NEXT:    ld s2, 400(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, s2
+; RV64I-NEXT:    ld s2, 360(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s2
+; RV64I-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, s2
+; RV64I-NEXT:    xor s2, s3, s11
+; RV64I-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t4, s3
+; RV64I-NEXT:    ld s3, 800(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, t6, s3
+; RV64I-NEXT:    ld s3, 720(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s0, s0, s3
+; RV64I-NEXT:    ld s3, 656(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s1, s1, s3
+; RV64I-NEXT:    ld s3, 592(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t1, t1, s3
+; RV64I-NEXT:    ld s3, 536(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t2, t2, s3
+; RV64I-NEXT:    ld s3, 304(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, s3
+; RV64I-NEXT:    ld s3, 184(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a5, a5, s3
+; RV64I-NEXT:    ld s3, 408(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a6, s3
+; RV64I-NEXT:    ld s3, 368(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, a7, s3
+; RV64I-NEXT:    ld s3, 64(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, t0, s3
+; RV64I-NEXT:    ld s3, 8(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s2, s2, s3
+; RV64I-NEXT:    xor t3, a1, t3
+; RV64I-NEXT:    xor t3, t3, t4
+; RV64I-NEXT:    ld t4, 808(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t6, t4
+; RV64I-NEXT:    ld t6, 736(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, s0, t6
+; RV64I-NEXT:    ld s0, 672(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor s0, s1, s0
+; RV64I-NEXT:    ld s1, 608(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t1, t1, s1
+; RV64I-NEXT:    ld s1, 544(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t2, t2, s1
+; RV64I-NEXT:    xor a2, a0, a2
+; RV64I-NEXT:    xor a2, a2, a3
+; RV64I-NEXT:    ld a3, 208(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a5, a3
+; RV64I-NEXT:    ld a5, 416(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    ld a6, 40(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a6, 376(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a6, a7, a6
-; RV64I-NEXT:    xor a7, t0, s9
-; RV64I-NEXT:    xor t0, t3, t4
-; RV64I-NEXT:    ld t3, 888(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t3, t5, t3
-; RV64I-NEXT:    ld t4, 816(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, t6, t4
+; RV64I-NEXT:    ld a7, 80(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, t0, a7
+; RV64I-NEXT:    ld t0, 16(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t0, s2, t0
+; RV64I-NEXT:    xor t3, t3, t5
+; RV64I-NEXT:    ld t5, 832(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t4, t4, t5
 ; RV64I-NEXT:    ld t5, 752(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t5, s0, t5
-; RV64I-NEXT:    ld t6, 672(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t6, s1, t6
-; RV64I-NEXT:    ld s0, 584(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t5, t6, t5
+; RV64I-NEXT:    ld t6, 688(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor t6, s0, t6
+; RV64I-NEXT:    ld s0, 624(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t1, t1, s0
-; RV64I-NEXT:    ld s0, 528(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld s0, 944(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor t2, t2, s0
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 272(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 208(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 416(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 376(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 56(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    xor a6, a7, s11
-; RV64I-NEXT:    xor a7, t0, t3
-; RV64I-NEXT:    ld t0, 832(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t0, t4, t0
-; RV64I-NEXT:    ld t3, 760(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t3, t5, t3
-; RV64I-NEXT:    ld t4, 688(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t4, t6, t4
-; RV64I-NEXT:    ld t5, 600(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t1, t1, t5
-; RV64I-NEXT:    ld t5, 536(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t2, t2, t5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 224(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 424(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 384(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 72(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a2, a2, a4
+; RV64I-NEXT:    ld a4, 224(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a3, a3, a4
+; RV64I-NEXT:    ld a4, 424(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    ld a5, 8(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a5, 392(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    xor a5, a6, a5
-; RV64I-NEXT:    xor a6, a7, t0
-; RV64I-NEXT:    ld a7, 776(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t3, a7
-; RV64I-NEXT:    ld t0, 696(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t0, t4, t0
-; RV64I-NEXT:    ld t3, 616(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t1, t1, t3
-; RV64I-NEXT:    ld t3, 944(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor t2, t2, t3
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 432(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 400(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    ld a3, 88(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a3, a4, a3
-; RV64I-NEXT:    ld a4, 952(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a4, a5, a4
-; RV64I-NEXT:    xor a5, a6, a7
-; RV64I-NEXT:    ld a6, 712(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a6, t0, a6
-; RV64I-NEXT:    ld a7, 632(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a7, t1, a7
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 408(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    ld a2, 328(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a2, a3, a2
-; RV64I-NEXT:    xor a3, a5, a6
-; RV64I-NEXT:    ld a5, 624(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a5, a7, a5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    xor a1, a2, a1
-; RV64I-NEXT:    xor a3, a3, a5
-; RV64I-NEXT:    xor a0, a0, a1
-; RV64I-NEXT:    xor a1, a3, t2
-; RV64I-NEXT:    xor a0, a0, a4
-; RV64I-NEXT:    srli a2, a1, 40
-; RV64I-NEXT:    srli a3, a1, 56
-; RV64I-NEXT:    srli a4, a1, 24
-; RV64I-NEXT:    srli a5, a1, 8
-; RV64I-NEXT:    srli a6, a0, 8
-; RV64I-NEXT:    ld a7, 992(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a5, a5, a7
-; RV64I-NEXT:    and a6, a6, a7
-; RV64I-NEXT:    srliw a7, a1, 24
-; RV64I-NEXT:    ld t1, 976(sp) # 8-byte Folded Reload
-; RV64I-NEXT:    and a2, a2, t1
-; RV64I-NEXT:    or a2, a2, a3
-; RV64I-NEXT:    lui t0, 4080
-; RV64I-NEXT:    and a3, a1, t0
-; RV64I-NEXT:    and a4, a4, t0
-; RV64I-NEXT:    or a4, a5, a4
-; RV64I-NEXT:    slli a5, a1, 56
-; RV64I-NEXT:    and a1, a1, t1
-; RV64I-NEXT:    slli a7, a7, 32
-; RV64I-NEXT:    slli a3, a3, 24
-; RV64I-NEXT:    or a3, a3, a7
-; RV64I-NEXT:    srli a7, a0, 40
-; RV64I-NEXT:    slli a1, a1, 40
-; RV64I-NEXT:    or a1, a5, a1
-; RV64I-NEXT:    srli a5, a0, 56
-; RV64I-NEXT:    and a7, a7, t1
-; RV64I-NEXT:    or a5, a7, a5
-; RV64I-NEXT:    srli a7, a0, 24
-; RV64I-NEXT:    and a7, a7, t0
-; RV64I-NEXT:    or a6, a6, a7
-; RV64I-NEXT:    srliw a7, a0, 24
-; RV64I-NEXT:    and t0, a0, t0
-; RV64I-NEXT:    slli a7, a7, 32
-; RV64I-NEXT:    slli t0, t0, 24
-; RV64I-NEXT:    or a7, t0, a7
-; RV64I-NEXT:    and t0, a0, t1
+; RV64I-NEXT:    ld a6, 328(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a6, a7, a6
+; RV64I-NEXT:    ld a7, 952(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    xor a7, t0, a7
+; RV64I-NEXT:    xor t0, t3, t4
+; RV64I-NEXT:    xor t0, t0, t5
+; RV64I-NEXT:    xor a3, a2, a3
+; RV64I-NEXT:    xor a3, a3, a4
+; RV64I-NEXT:    slli a1, a1, 56
 ; RV64I-NEXT:    slli a0, a0, 56
-; RV64I-NEXT:    slli t0, t0, 40
-; RV64I-NEXT:    or a0, a0, t0
-; RV64I-NEXT:    or a2, a4, a2
-; RV64I-NEXT:    or a1, a1, a3
-; RV64I-NEXT:    or a3, a6, a5
-; RV64I-NEXT:    or a0, a0, a7
-; RV64I-NEXT:    or a1, a1, a2
+; RV64I-NEXT:    ld t5, 968(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a4, t3, t5
+; RV64I-NEXT:    and a2, a2, t5
+; RV64I-NEXT:    slli a4, a4, 40
+; RV64I-NEXT:    slli a2, a2, 40
+; RV64I-NEXT:    or a1, a1, a4
+; RV64I-NEXT:    srli a4, t0, 8
+; RV64I-NEXT:    or a0, a0, a2
+; RV64I-NEXT:    srli a2, a3, 8
+; RV64I-NEXT:    ld t3, 992(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    and a4, a4, t3
+; RV64I-NEXT:    and a2, a2, t3
+; RV64I-NEXT:    xor t3, t0, t6
+; RV64I-NEXT:    lui t4, 4080
+; RV64I-NEXT:    and t0, t0, t4
+; RV64I-NEXT:    xor a5, a3, a5
+; RV64I-NEXT:    and a3, a3, t4
+; RV64I-NEXT:    xor t1, t3, t1
+; RV64I-NEXT:    srli t3, t3, 24
+; RV64I-NEXT:    xor a6, a5, a6
+; RV64I-NEXT:    srli a5, a5, 24
+; RV64I-NEXT:    and t3, t3, t4
+; RV64I-NEXT:    and a5, a5, t4
+; RV64I-NEXT:    or a4, a4, t3
+; RV64I-NEXT:    srli t3, t1, 40
+; RV64I-NEXT:    or a2, a2, a5
+; RV64I-NEXT:    srli a5, a6, 40
+; RV64I-NEXT:    and t3, t3, t5
+; RV64I-NEXT:    and a5, a5, t5
+; RV64I-NEXT:    slli t0, t0, 24
+; RV64I-NEXT:    xor t2, t1, t2
+; RV64I-NEXT:    srliw t1, t1, 24
+; RV64I-NEXT:    slli t1, t1, 32
+; RV64I-NEXT:    or t0, t0, t1
+; RV64I-NEXT:    srli t1, t2, 56
+; RV64I-NEXT:    or t1, t3, t1
+; RV64I-NEXT:    slli a3, a3, 24
+; RV64I-NEXT:    xor a7, a6, a7
+; RV64I-NEXT:    srliw a6, a6, 24
+; RV64I-NEXT:    slli a6, a6, 32
+; RV64I-NEXT:    or a3, a3, a6
+; RV64I-NEXT:    srli a6, a7, 56
+; RV64I-NEXT:    or a5, a5, a6
+; RV64I-NEXT:    or a1, a1, t0
+; RV64I-NEXT:    or a4, a4, t1
 ; RV64I-NEXT:    or a0, a0, a3
+; RV64I-NEXT:    or a2, a2, a5
+; RV64I-NEXT:    or a1, a1, a4
+; RV64I-NEXT:    or a0, a0, a2
 ; RV64I-NEXT:    srli a2, a1, 4
 ; RV64I-NEXT:    ld a4, 984(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    and a1, a1, a4
@@ -6558,7 +6537,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64I-NEXT:    or a1, a2, a1
 ; RV64I-NEXT:    or a0, a3, a0
 ; RV64I-NEXT:    srli a2, a1, 2
-; RV64I-NEXT:    ld a4, 968(sp) # 8-byte Folded Reload
+; RV64I-NEXT:    ld a4, 976(sp) # 8-byte Folded Reload
 ; RV64I-NEXT:    and a1, a1, a4
 ; RV64I-NEXT:    srli a3, a0, 2
 ; RV64I-NEXT:    and a0, a0, a4
@@ -6603,123 +6582,123 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ;
 ; RV32IM-LABEL: commutative_clmulr_v2i64:
 ; RV32IM:       # %bb.0:
-; RV32IM-NEXT:    addi sp, sp, -704
-; RV32IM-NEXT:    sw ra, 700(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s0, 696(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s1, 692(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s2, 688(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s3, 684(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s4, 680(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s5, 676(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s6, 672(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s7, 668(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s8, 664(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s9, 660(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s10, 656(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw s11, 652(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a3, 0(a0)
+; RV32IM-NEXT:    addi sp, sp, -688
+; RV32IM-NEXT:    sw ra, 684(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s0, 680(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s1, 676(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s2, 672(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s3, 668(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s4, 664(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s5, 660(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s6, 656(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s7, 652(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s8, 648(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s9, 644(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s10, 640(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw s11, 636(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 0(a0)
 ; RV32IM-NEXT:    lw s2, 4(a0)
 ; RV32IM-NEXT:    lw t2, 8(a0)
-; RV32IM-NEXT:    lw t1, 12(a0)
+; RV32IM-NEXT:    lw a0, 12(a0)
 ; RV32IM-NEXT:    lw t4, 0(a1)
 ; RV32IM-NEXT:    lw s4, 4(a1)
 ; RV32IM-NEXT:    lw a5, 8(a1)
-; RV32IM-NEXT:    lw a0, 12(a1)
-; RV32IM-NEXT:    lui a4, 16
-; RV32IM-NEXT:    lui a1, 61681
-; RV32IM-NEXT:    lui a2, 209715
-; RV32IM-NEXT:    lui s6, 349525
-; RV32IM-NEXT:    li a7, 1
-; RV32IM-NEXT:    addi s11, a4, -256
-; RV32IM-NEXT:    addi s10, a1, -241
-; RV32IM-NEXT:    addi s8, a2, 819
-; RV32IM-NEXT:    srli s0, s4, 8
+; RV32IM-NEXT:    lw a1, 12(a1)
+; RV32IM-NEXT:    lui a7, 16
+; RV32IM-NEXT:    lui a2, 61681
+; RV32IM-NEXT:    lui a3, 209715
+; RV32IM-NEXT:    lui s7, 349525
+; RV32IM-NEXT:    li a6, 1
+; RV32IM-NEXT:    addi ra, a7, -256
+; RV32IM-NEXT:    addi s10, a2, -241
+; RV32IM-NEXT:    addi s8, a3, 819
+; RV32IM-NEXT:    srli t5, s4, 8
 ; RV32IM-NEXT:    srli s5, s4, 24
-; RV32IM-NEXT:    and a1, s4, s11
+; RV32IM-NEXT:    and a2, s4, ra
 ; RV32IM-NEXT:    slli s4, s4, 24
-; RV32IM-NEXT:    srli a2, s2, 8
+; RV32IM-NEXT:    srli a3, s2, 8
 ; RV32IM-NEXT:    srli s3, s2, 24
-; RV32IM-NEXT:    and t3, s2, s11
+; RV32IM-NEXT:    and t3, s2, ra
 ; RV32IM-NEXT:    slli s2, s2, 24
-; RV32IM-NEXT:    srli a6, t4, 8
-; RV32IM-NEXT:    srli t0, t4, 24
-; RV32IM-NEXT:    and a4, t4, s11
+; RV32IM-NEXT:    srli t0, t4, 8
+; RV32IM-NEXT:    srli a7, t4, 24
+; RV32IM-NEXT:    and t1, t4, ra
 ; RV32IM-NEXT:    slli t4, t4, 24
-; RV32IM-NEXT:    and t5, s0, s11
-; RV32IM-NEXT:    or s0, t5, s5
-; RV32IM-NEXT:    srli s5, a3, 8
-; RV32IM-NEXT:    slli a1, a1, 8
-; RV32IM-NEXT:    or a1, s4, a1
-; RV32IM-NEXT:    srli t5, a3, 24
-; RV32IM-NEXT:    and a2, a2, s11
-; RV32IM-NEXT:    or a2, a2, s3
-; RV32IM-NEXT:    and s3, a3, s11
-; RV32IM-NEXT:    slli s4, a3, 24
+; RV32IM-NEXT:    and t5, t5, ra
+; RV32IM-NEXT:    or t5, t5, s5
+; RV32IM-NEXT:    srli s5, a4, 8
+; RV32IM-NEXT:    slli a2, a2, 8
+; RV32IM-NEXT:    or a2, s4, a2
+; RV32IM-NEXT:    srli s6, a4, 24
+; RV32IM-NEXT:    and a3, a3, ra
+; RV32IM-NEXT:    or a3, a3, s3
+; RV32IM-NEXT:    and s3, a4, ra
+; RV32IM-NEXT:    slli s4, a4, 24
 ; RV32IM-NEXT:    slli t3, t3, 8
-; RV32IM-NEXT:    or a3, s2, t3
-; RV32IM-NEXT:    srli t6, a0, 8
-; RV32IM-NEXT:    and a6, a6, s11
-; RV32IM-NEXT:    or a6, a6, t0
-; RV32IM-NEXT:    srli s1, a0, 24
-; RV32IM-NEXT:    slli a4, a4, 8
-; RV32IM-NEXT:    or a4, t4, a4
-; RV32IM-NEXT:    and t4, a0, s11
-; RV32IM-NEXT:    slli s7, a0, 24
-; RV32IM-NEXT:    and a0, s5, s11
-; RV32IM-NEXT:    or a0, a0, t5
-; RV32IM-NEXT:    srli t3, t1, 8
+; RV32IM-NEXT:    or a4, s2, t3
+; RV32IM-NEXT:    srli t6, a1, 8
+; RV32IM-NEXT:    and t0, t0, ra
+; RV32IM-NEXT:    or t0, t0, a7
+; RV32IM-NEXT:    srli s1, a1, 24
+; RV32IM-NEXT:    slli t1, t1, 8
+; RV32IM-NEXT:    or t1, t4, t1
+; RV32IM-NEXT:    and s0, a1, ra
+; RV32IM-NEXT:    slli s9, a1, 24
+; RV32IM-NEXT:    and a1, s5, ra
+; RV32IM-NEXT:    or a1, a1, s6
+; RV32IM-NEXT:    srli t3, a0, 8
 ; RV32IM-NEXT:    slli s3, s3, 8
-; RV32IM-NEXT:    or t0, s4, s3
-; RV32IM-NEXT:    srli s3, t1, 24
-; RV32IM-NEXT:    and t5, t6, s11
-; RV32IM-NEXT:    or s2, t5, s1
-; RV32IM-NEXT:    and s4, t1, s11
-; RV32IM-NEXT:    slli t1, t1, 24
-; RV32IM-NEXT:    slli t4, t4, 8
-; RV32IM-NEXT:    or t4, s7, t4
-; RV32IM-NEXT:    srli t5, a5, 8
-; RV32IM-NEXT:    and t3, t3, s11
-; RV32IM-NEXT:    or t3, t3, s3
-; RV32IM-NEXT:    srli t6, a5, 24
-; RV32IM-NEXT:    slli s4, s4, 8
-; RV32IM-NEXT:    or t1, t1, s4
-; RV32IM-NEXT:    and s3, a5, s11
+; RV32IM-NEXT:    or a7, s4, s3
+; RV32IM-NEXT:    srli s2, a0, 24
+; RV32IM-NEXT:    and t4, t6, ra
+; RV32IM-NEXT:    or t4, t4, s1
+; RV32IM-NEXT:    and s3, a0, ra
+; RV32IM-NEXT:    slli s4, a0, 24
+; RV32IM-NEXT:    slli s0, s0, 8
+; RV32IM-NEXT:    or a0, s9, s0
+; RV32IM-NEXT:    srli t6, a5, 8
+; RV32IM-NEXT:    and t3, t3, ra
+; RV32IM-NEXT:    or t3, t3, s2
+; RV32IM-NEXT:    srli s0, a5, 24
+; RV32IM-NEXT:    slli s3, s3, 8
+; RV32IM-NEXT:    or s2, s4, s3
+; RV32IM-NEXT:    and s3, a5, ra
 ; RV32IM-NEXT:    slli s4, a5, 24
-; RV32IM-NEXT:    and a5, t5, s11
-; RV32IM-NEXT:    or a5, a5, t6
-; RV32IM-NEXT:    srli t5, t2, 8
+; RV32IM-NEXT:    and a5, t6, ra
+; RV32IM-NEXT:    or a5, a5, s0
+; RV32IM-NEXT:    srli t6, t2, 8
 ; RV32IM-NEXT:    slli s3, s3, 8
-; RV32IM-NEXT:    or t6, s4, s3
+; RV32IM-NEXT:    or s0, s4, s3
 ; RV32IM-NEXT:    srli s1, t2, 24
-; RV32IM-NEXT:    and t5, t5, s11
-; RV32IM-NEXT:    or t5, t5, s1
-; RV32IM-NEXT:    and s1, t2, s11
+; RV32IM-NEXT:    and t6, t6, ra
+; RV32IM-NEXT:    or t6, t6, s1
+; RV32IM-NEXT:    and s1, t2, ra
 ; RV32IM-NEXT:    slli t2, t2, 24
 ; RV32IM-NEXT:    slli s1, s1, 8
 ; RV32IM-NEXT:    or s1, t2, s1
-; RV32IM-NEXT:    addi t2, s6, 1365
-; RV32IM-NEXT:    slli ra, a7, 11
-; RV32IM-NEXT:    or a1, a1, s0
-; RV32IM-NEXT:    or a2, a3, a2
-; RV32IM-NEXT:    or a3, a4, a6
-; RV32IM-NEXT:    or a0, t0, a0
-; RV32IM-NEXT:    or a4, t4, s2
-; RV32IM-NEXT:    or a6, t1, t3
-; RV32IM-NEXT:    or a5, t6, a5
-; RV32IM-NEXT:    or a7, s1, t5
-; RV32IM-NEXT:    srli t0, a1, 4
-; RV32IM-NEXT:    sw s10, 648(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a1, a1, s10
-; RV32IM-NEXT:    srli t1, a2, 4
+; RV32IM-NEXT:    addi t2, s7, 1365
+; RV32IM-NEXT:    slli s6, a6, 11
+; RV32IM-NEXT:    or a2, a2, t5
+; RV32IM-NEXT:    or a3, a4, a3
+; RV32IM-NEXT:    or a4, t1, t0
+; RV32IM-NEXT:    or a1, a7, a1
+; RV32IM-NEXT:    or a0, a0, t4
+; RV32IM-NEXT:    or a6, s2, t3
+; RV32IM-NEXT:    or a5, s0, a5
+; RV32IM-NEXT:    or a7, s1, t6
+; RV32IM-NEXT:    srli t0, a2, 4
+; RV32IM-NEXT:    sw s10, 632(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, a2, s10
-; RV32IM-NEXT:    srli t3, a3, 4
+; RV32IM-NEXT:    srli t1, a3, 4
 ; RV32IM-NEXT:    and a3, a3, s10
-; RV32IM-NEXT:    srli t4, a0, 4
-; RV32IM-NEXT:    and a0, a0, s10
-; RV32IM-NEXT:    srli t5, a4, 4
+; RV32IM-NEXT:    srli t3, a4, 4
 ; RV32IM-NEXT:    and a4, a4, s10
+; RV32IM-NEXT:    srli t4, a1, 4
+; RV32IM-NEXT:    and a1, a1, s10
+; RV32IM-NEXT:    srli t5, a0, 4
+; RV32IM-NEXT:    and a0, a0, s10
 ; RV32IM-NEXT:    srli t6, a6, 4
 ; RV32IM-NEXT:    and a6, a6, s10
 ; RV32IM-NEXT:    srli s0, a5, 4
@@ -6727,40 +6706,40 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    srli s1, a7, 4
 ; RV32IM-NEXT:    and a7, a7, s10
 ; RV32IM-NEXT:    and t0, t0, s10
-; RV32IM-NEXT:    slli a1, a1, 4
-; RV32IM-NEXT:    and t1, t1, s10
 ; RV32IM-NEXT:    slli a2, a2, 4
-; RV32IM-NEXT:    and t3, t3, s10
+; RV32IM-NEXT:    and t1, t1, s10
 ; RV32IM-NEXT:    slli a3, a3, 4
+; RV32IM-NEXT:    and t3, t3, s10
+; RV32IM-NEXT:    slli a4, a4, 4
 ; RV32IM-NEXT:    and t4, t4, s10
-; RV32IM-NEXT:    slli a0, a0, 4
+; RV32IM-NEXT:    slli a1, a1, 4
 ; RV32IM-NEXT:    and t5, t5, s10
-; RV32IM-NEXT:    slli a4, a4, 4
+; RV32IM-NEXT:    slli a0, a0, 4
 ; RV32IM-NEXT:    and t6, t6, s10
 ; RV32IM-NEXT:    slli a6, a6, 4
 ; RV32IM-NEXT:    and s0, s0, s10
 ; RV32IM-NEXT:    slli a5, a5, 4
 ; RV32IM-NEXT:    and s1, s1, s10
 ; RV32IM-NEXT:    slli a7, a7, 4
-; RV32IM-NEXT:    or a1, t0, a1
-; RV32IM-NEXT:    or a2, t1, a2
-; RV32IM-NEXT:    or a3, t3, a3
-; RV32IM-NEXT:    or a0, t4, a0
-; RV32IM-NEXT:    or a4, t5, a4
+; RV32IM-NEXT:    or a2, t0, a2
+; RV32IM-NEXT:    or a3, t1, a3
+; RV32IM-NEXT:    or a4, t3, a4
+; RV32IM-NEXT:    or a1, t4, a1
+; RV32IM-NEXT:    or a0, t5, a0
 ; RV32IM-NEXT:    or a6, t6, a6
 ; RV32IM-NEXT:    or a5, s0, a5
 ; RV32IM-NEXT:    or a7, s1, a7
-; RV32IM-NEXT:    srli t0, a1, 2
-; RV32IM-NEXT:    sw s8, 632(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a1, a1, s8
-; RV32IM-NEXT:    srli t1, a2, 2
+; RV32IM-NEXT:    srli t0, a2, 2
+; RV32IM-NEXT:    sw s8, 616(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, a2, s8
-; RV32IM-NEXT:    srli t3, a3, 2
+; RV32IM-NEXT:    srli t1, a3, 2
 ; RV32IM-NEXT:    and a3, a3, s8
-; RV32IM-NEXT:    srli t4, a0, 2
-; RV32IM-NEXT:    and a0, a0, s8
-; RV32IM-NEXT:    srli t5, a4, 2
+; RV32IM-NEXT:    srli t3, a4, 2
 ; RV32IM-NEXT:    and a4, a4, s8
+; RV32IM-NEXT:    srli t4, a1, 2
+; RV32IM-NEXT:    and a1, a1, s8
+; RV32IM-NEXT:    srli t5, a0, 2
+; RV32IM-NEXT:    and a0, a0, s8
 ; RV32IM-NEXT:    srli t6, a6, 2
 ; RV32IM-NEXT:    and a6, a6, s8
 ; RV32IM-NEXT:    srli s0, a5, 2
@@ -6768,40 +6747,40 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    srli s1, a7, 2
 ; RV32IM-NEXT:    and a7, a7, s8
 ; RV32IM-NEXT:    and t0, t0, s8
-; RV32IM-NEXT:    slli a1, a1, 2
-; RV32IM-NEXT:    and t1, t1, s8
 ; RV32IM-NEXT:    slli a2, a2, 2
-; RV32IM-NEXT:    and t3, t3, s8
+; RV32IM-NEXT:    and t1, t1, s8
 ; RV32IM-NEXT:    slli a3, a3, 2
+; RV32IM-NEXT:    and t3, t3, s8
+; RV32IM-NEXT:    slli a4, a4, 2
 ; RV32IM-NEXT:    and t4, t4, s8
-; RV32IM-NEXT:    slli a0, a0, 2
+; RV32IM-NEXT:    slli a1, a1, 2
 ; RV32IM-NEXT:    and t5, t5, s8
-; RV32IM-NEXT:    slli a4, a4, 2
+; RV32IM-NEXT:    slli a0, a0, 2
 ; RV32IM-NEXT:    and t6, t6, s8
 ; RV32IM-NEXT:    slli a6, a6, 2
 ; RV32IM-NEXT:    and s0, s0, s8
 ; RV32IM-NEXT:    slli a5, a5, 2
 ; RV32IM-NEXT:    and s1, s1, s8
 ; RV32IM-NEXT:    slli a7, a7, 2
-; RV32IM-NEXT:    or a1, t0, a1
-; RV32IM-NEXT:    or a2, t1, a2
-; RV32IM-NEXT:    or a3, t3, a3
-; RV32IM-NEXT:    or a0, t4, a0
-; RV32IM-NEXT:    or a4, t5, a4
+; RV32IM-NEXT:    or a2, t0, a2
+; RV32IM-NEXT:    or a3, t1, a3
+; RV32IM-NEXT:    or a4, t3, a4
+; RV32IM-NEXT:    or a1, t4, a1
+; RV32IM-NEXT:    or a0, t5, a0
 ; RV32IM-NEXT:    or a6, t6, a6
 ; RV32IM-NEXT:    or a5, s0, a5
 ; RV32IM-NEXT:    or a7, s1, a7
-; RV32IM-NEXT:    srli t0, a1, 1
-; RV32IM-NEXT:    sw t2, 628(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a1, a1, t2
-; RV32IM-NEXT:    srli t1, a2, 1
+; RV32IM-NEXT:    srli t0, a2, 1
+; RV32IM-NEXT:    sw t2, 612(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, a2, t2
-; RV32IM-NEXT:    srli t3, a3, 1
+; RV32IM-NEXT:    srli t1, a3, 1
 ; RV32IM-NEXT:    and a3, a3, t2
-; RV32IM-NEXT:    srli t4, a0, 1
-; RV32IM-NEXT:    and a0, a0, t2
-; RV32IM-NEXT:    srli t5, a4, 1
+; RV32IM-NEXT:    srli t3, a4, 1
 ; RV32IM-NEXT:    and a4, a4, t2
+; RV32IM-NEXT:    srli t4, a1, 1
+; RV32IM-NEXT:    and a1, a1, t2
+; RV32IM-NEXT:    srli t5, a0, 1
+; RV32IM-NEXT:    and a0, a0, t2
 ; RV32IM-NEXT:    srli t6, a6, 1
 ; RV32IM-NEXT:    and a6, a6, t2
 ; RV32IM-NEXT:    srli s0, a5, 1
@@ -6809,1785 +6788,1778 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    srli s1, a7, 1
 ; RV32IM-NEXT:    and a7, a7, t2
 ; RV32IM-NEXT:    and t0, t0, t2
-; RV32IM-NEXT:    slli a1, a1, 1
-; RV32IM-NEXT:    and t1, t1, t2
 ; RV32IM-NEXT:    slli a2, a2, 1
-; RV32IM-NEXT:    and t3, t3, t2
+; RV32IM-NEXT:    and t1, t1, t2
 ; RV32IM-NEXT:    slli a3, a3, 1
+; RV32IM-NEXT:    and t3, t3, t2
+; RV32IM-NEXT:    slli a4, a4, 1
 ; RV32IM-NEXT:    and t4, t4, t2
-; RV32IM-NEXT:    slli s2, a0, 1
+; RV32IM-NEXT:    slli s2, a1, 1
 ; RV32IM-NEXT:    and t5, t5, t2
-; RV32IM-NEXT:    slli a4, a4, 1
+; RV32IM-NEXT:    slli s3, a0, 1
 ; RV32IM-NEXT:    and t6, t6, t2
 ; RV32IM-NEXT:    slli a6, a6, 1
 ; RV32IM-NEXT:    and s0, s0, t2
 ; RV32IM-NEXT:    slli a5, a5, 1
 ; RV32IM-NEXT:    and s1, s1, t2
 ; RV32IM-NEXT:    slli a7, a7, 1
-; RV32IM-NEXT:    or a0, t0, a1
-; RV32IM-NEXT:    or a1, t1, a2
-; RV32IM-NEXT:    or a2, t3, a3
+; RV32IM-NEXT:    or a0, t0, a2
+; RV32IM-NEXT:    or a1, t1, a3
+; RV32IM-NEXT:    or a2, t3, a4
 ; RV32IM-NEXT:    or a3, t4, s2
-; RV32IM-NEXT:    or s2, t5, a4
-; RV32IM-NEXT:    or s7, t6, a6
-; RV32IM-NEXT:    or s4, s0, a5
-; RV32IM-NEXT:    or s3, s1, a7
+; RV32IM-NEXT:    or s3, t5, s3
+; RV32IM-NEXT:    or s10, t6, a6
+; RV32IM-NEXT:    or s5, s0, a5
+; RV32IM-NEXT:    or s4, s1, a7
 ; RV32IM-NEXT:    srli a4, a0, 8
 ; RV32IM-NEXT:    srli a5, a0, 24
 ; RV32IM-NEXT:    slli a6, a0, 24
-; RV32IM-NEXT:    and a7, a0, s11
+; RV32IM-NEXT:    and a7, a0, ra
 ; RV32IM-NEXT:    srli t0, a1, 8
 ; RV32IM-NEXT:    srli t1, a1, 24
 ; RV32IM-NEXT:    slli t3, a1, 24
-; RV32IM-NEXT:    and t4, a1, s11
-; RV32IM-NEXT:    and a4, a4, s11
-; RV32IM-NEXT:    or s9, a4, a5
-; RV32IM-NEXT:    and a4, a1, ra
+; RV32IM-NEXT:    and t4, a1, ra
+; RV32IM-NEXT:    and a4, a4, ra
+; RV32IM-NEXT:    or s8, a4, a5
+; RV32IM-NEXT:    and a5, a1, s6
+; RV32IM-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a7, a7, 8
-; RV32IM-NEXT:    or a5, a6, a7
-; RV32IM-NEXT:    sw a5, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t2, 1
-; RV32IM-NEXT:    and a6, a1, t2
-; RV32IM-NEXT:    and a5, t0, s11
+; RV32IM-NEXT:    or a4, a6, a7
+; RV32IM-NEXT:    sw a4, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a6, 1
+; RV32IM-NEXT:    and a7, a1, a6
+; RV32IM-NEXT:    sw a7, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, t0, ra
 ; RV32IM-NEXT:    slli t4, t4, 8
-; RV32IM-NEXT:    or a5, a5, t1
-; RV32IM-NEXT:    sw a5, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, a2, a4
-; RV32IM-NEXT:    or a7, t3, t4
-; RV32IM-NEXT:    sw a7, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a7, a2, a6
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t1, 64
-; RV32IM-NEXT:    and t0, a1, t1
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    and t6, a1, t3
-; RV32IM-NEXT:    mul a5, a2, t0
-; RV32IM-NEXT:    mul a7, a2, t6
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 16384
-; RV32IM-NEXT:    lui a7, 32768
+; RV32IM-NEXT:    or a4, a4, t1
+; RV32IM-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, a5
+; RV32IM-NEXT:    or a5, t3, t4
+; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a2, a7
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a7, 64
+; RV32IM-NEXT:    and a4, a1, a7
+; RV32IM-NEXT:    sw a4, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t0, 128
+; RV32IM-NEXT:    and a5, a1, t0
+; RV32IM-NEXT:    sw a5, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, a4
+; RV32IM-NEXT:    mul a5, a2, a5
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 16384
+; RV32IM-NEXT:    lui a5, 32768
+; RV32IM-NEXT:    and a4, a1, a4
+; RV32IM-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 16384
 ; RV32IM-NEXT:    and a5, a1, a5
-; RV32IM-NEXT:    sw a5, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t4, 16384
-; RV32IM-NEXT:    and a7, a1, a7
-; RV32IM-NEXT:    sw a7, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 32768
+; RV32IM-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t2, 32768
+; RV32IM-NEXT:    mul a4, a2, a4
 ; RV32IM-NEXT:    mul a5, a2, a5
-; RV32IM-NEXT:    mul a7, a2, a7
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, ra
-; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    and a7, a3, t2
-; RV32IM-NEXT:    lui s6, 1
-; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, t1
-; RV32IM-NEXT:    lui s1, 64
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a3, s6
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    and a5, a3, a6
 ; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    and a7, a3, t3
-; RV32IM-NEXT:    lui s8, 128
-; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a3, t4
-; RV32IM-NEXT:    lui t2, 16384
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a3, a7
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    and a5, a3, t0
 ; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    and a7, a3, t5
-; RV32IM-NEXT:    lui t4, 32768
-; RV32IM-NEXT:    mul a7, a0, a7
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    sw a5, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli a5, s2, 8
-; RV32IM-NEXT:    sw s11, 644(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, a5, s11
-; RV32IM-NEXT:    srli a7, s2, 24
-; RV32IM-NEXT:    or a5, a5, a7
-; RV32IM-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, s2, s11
-; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    slli a7, s2, 24
-; RV32IM-NEXT:    or a5, a7, a5
-; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli a5, s7, 8
-; RV32IM-NEXT:    and a5, a5, s11
-; RV32IM-NEXT:    srli a7, s7, 24
-; RV32IM-NEXT:    or a5, a5, a7
-; RV32IM-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, s7, s11
-; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    slli a7, s7, 24
-; RV32IM-NEXT:    or a5, a7, a5
-; RV32IM-NEXT:    sw a5, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s10, s7, ra
-; RV32IM-NEXT:    sw ra, 624(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and s11, s7, s6
-; RV32IM-NEXT:    mul a5, s4, s10
-; RV32IM-NEXT:    mul a7, s4, s11
-; RV32IM-NEXT:    xor s5, a5, a7
-; RV32IM-NEXT:    and a5, s7, s1
-; RV32IM-NEXT:    and a7, s7, s8
-; RV32IM-NEXT:    mul t1, s4, a5
-; RV32IM-NEXT:    mul t3, s4, a7
-; RV32IM-NEXT:    xor s0, t1, t3
-; RV32IM-NEXT:    and t1, s7, t2
-; RV32IM-NEXT:    sw t1, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t4, s7, t4
-; RV32IM-NEXT:    sw t4, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t1, s4, t1
-; RV32IM-NEXT:    mul t3, s4, t4
-; RV32IM-NEXT:    xor t1, t1, t3
-; RV32IM-NEXT:    sw t1, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, s3, ra
-; RV32IM-NEXT:    mul t1, s2, t1
-; RV32IM-NEXT:    and t3, s3, s6
-; RV32IM-NEXT:    mul t3, s2, t3
-; RV32IM-NEXT:    xor t3, t1, t3
-; RV32IM-NEXT:    and t1, s3, s1
-; RV32IM-NEXT:    mul t1, s2, t1
-; RV32IM-NEXT:    and t4, s3, s8
-; RV32IM-NEXT:    mul t4, s2, t4
-; RV32IM-NEXT:    xor t1, t1, t4
-; RV32IM-NEXT:    and t4, s3, t2
-; RV32IM-NEXT:    mul t4, s2, t4
-; RV32IM-NEXT:    and t5, s3, t5
-; RV32IM-NEXT:    mul t5, s2, t5
-; RV32IM-NEXT:    xor t4, t4, t5
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a3, t1
 ; RV32IM-NEXT:    mul a4, a0, a4
-; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    xor a4, a4, a6
-; RV32IM-NEXT:    sw a4, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, a0, t0
-; RV32IM-NEXT:    mul a6, a0, t6
-; RV32IM-NEXT:    xor a4, a4, a6
-; RV32IM-NEXT:    sw a4, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a4, 4096
-; RV32IM-NEXT:    lui a6, 8192
-; RV32IM-NEXT:    and t0, a1, a4
-; RV32IM-NEXT:    lui t2, 4096
-; RV32IM-NEXT:    and t5, a1, a6
-; RV32IM-NEXT:    sw t5, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, a0, t0
-; RV32IM-NEXT:    mul t5, a0, t5
-; RV32IM-NEXT:    xor a4, a4, t5
-; RV32IM-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, s2, s10
-; RV32IM-NEXT:    mul t5, s2, s11
-; RV32IM-NEXT:    xor a4, a4, t5
+; RV32IM-NEXT:    and a5, a3, t2
+; RV32IM-NEXT:    mul a5, a0, a5
+; RV32IM-NEXT:    xor a4, a4, a5
+; RV32IM-NEXT:    sw a4, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli a4, s3, 8
+; RV32IM-NEXT:    sw ra, 628(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a4, ra
+; RV32IM-NEXT:    srli a5, s3, 24
+; RV32IM-NEXT:    or a4, a4, a5
+; RV32IM-NEXT:    sw a4, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s3, ra
+; RV32IM-NEXT:    slli a4, a4, 8
+; RV32IM-NEXT:    slli a5, s3, 24
+; RV32IM-NEXT:    or a4, a5, a4
+; RV32IM-NEXT:    sw a4, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli a4, s10, 8
+; RV32IM-NEXT:    and a4, a4, ra
+; RV32IM-NEXT:    srli a5, s10, 24
+; RV32IM-NEXT:    or a4, a4, a5
+; RV32IM-NEXT:    sw a4, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s10, ra
+; RV32IM-NEXT:    slli a4, a4, 8
+; RV32IM-NEXT:    slli a5, s10, 24
+; RV32IM-NEXT:    or ra, a5, a4
+; RV32IM-NEXT:    and a4, s10, s6
 ; RV32IM-NEXT:    sw a4, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, s2, a5
-; RV32IM-NEXT:    mul a5, s2, a7
+; RV32IM-NEXT:    sw s6, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a5, s10, a6
+; RV32IM-NEXT:    sw a5, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t5, 1
+; RV32IM-NEXT:    mul a4, s5, a4
+; RV32IM-NEXT:    mul a5, s5, a5
+; RV32IM-NEXT:    xor a6, a4, a5
+; RV32IM-NEXT:    and a4, s10, a7
+; RV32IM-NEXT:    sw a4, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t3, 64
+; RV32IM-NEXT:    and a5, s10, t0
+; RV32IM-NEXT:    sw a5, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s5, a4
+; RV32IM-NEXT:    mul a5, s5, a5
+; RV32IM-NEXT:    xor t4, a4, a5
+; RV32IM-NEXT:    and a4, s10, t1
+; RV32IM-NEXT:    sw a4, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a7, s10, t2
+; RV32IM-NEXT:    sw a7, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s5, a4
+; RV32IM-NEXT:    mul a5, s5, a7
 ; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, s7, t2
-; RV32IM-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a5, s7, a6
-; RV32IM-NEXT:    sw a5, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, s2, a4
-; RV32IM-NEXT:    mul a5, s2, a5
+; RV32IM-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s4, s6
+; RV32IM-NEXT:    mul a4, s3, a4
+; RV32IM-NEXT:    and a5, s4, t5
+; RV32IM-NEXT:    mul a5, s3, a5
+; RV32IM-NEXT:    xor a7, a4, a5
+; RV32IM-NEXT:    and a4, s4, t3
+; RV32IM-NEXT:    mul a4, s3, a4
+; RV32IM-NEXT:    and a5, s4, t0
+; RV32IM-NEXT:    mul a5, s3, a5
+; RV32IM-NEXT:    xor t5, a4, a5
+; RV32IM-NEXT:    and a4, s4, t1
+; RV32IM-NEXT:    mul a4, s3, a4
+; RV32IM-NEXT:    and a5, s4, t2
+; RV32IM-NEXT:    mul a5, s3, a5
+; RV32IM-NEXT:    xor t3, a4, a5
+; RV32IM-NEXT:    lui a4, 2
+; RV32IM-NEXT:    lui a5, 4
+; RV32IM-NEXT:    and s9, a1, a4
+; RV32IM-NEXT:    lui t2, 2
+; RV32IM-NEXT:    and a5, a1, a5
+; RV32IM-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t1, 4
+; RV32IM-NEXT:    mul a4, a0, s9
+; RV32IM-NEXT:    mul a5, a0, a5
 ; RV32IM-NEXT:    xor a4, a4, a5
-; RV32IM-NEXT:    sw a4, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a4, a4, s9
-; RV32IM-NEXT:    sw a4, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    sw a4, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 2
+; RV32IM-NEXT:    sw a4, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s0, 512
+; RV32IM-NEXT:    lui a5, 1024
+; RV32IM-NEXT:    and a4, a1, s0
+; RV32IM-NEXT:    sw a4, 464(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a5, a1, a5
-; RV32IM-NEXT:    sw a5, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t6, 2
-; RV32IM-NEXT:    mul a4, a2, a5
-; RV32IM-NEXT:    lw a5, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a4, 256
-; RV32IM-NEXT:    and a4, a1, a4
-; RV32IM-NEXT:    sw a4, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t2, 256
-; RV32IM-NEXT:    mul a4, a2, a4
-; RV32IM-NEXT:    lw a5, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    sw a4, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a4, 65536
+; RV32IM-NEXT:    sw a5, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t6, 1024
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    mul t0, a0, a5
+; RV32IM-NEXT:    xor a4, a4, t0
+; RV32IM-NEXT:    sw a4, 344(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    lui t0, 8192
 ; RV32IM-NEXT:    and a5, a1, a4
-; RV32IM-NEXT:    sw a5, 376(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t5, a2, a5
-; RV32IM-NEXT:    lw a5, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t5
-; RV32IM-NEXT:    sw a5, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, t6
-; RV32IM-NEXT:    mul t5, a0, t5
-; RV32IM-NEXT:    lw a5, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t5
-; RV32IM-NEXT:    sw a5, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, t2
-; RV32IM-NEXT:    mul t5, a0, t5
-; RV32IM-NEXT:    lw a5, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t5
-; RV32IM-NEXT:    sw a5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, a4
-; RV32IM-NEXT:    mul t5, a0, t5
+; RV32IM-NEXT:    lui s7, 4096
+; RV32IM-NEXT:    and t0, a1, t0
+; RV32IM-NEXT:    lui s2, 8192
+; RV32IM-NEXT:    mul a4, a0, a5
+; RV32IM-NEXT:    mul s1, a0, t0
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 316(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s6, s10, t2
+; RV32IM-NEXT:    and t1, s10, t1
+; RV32IM-NEXT:    sw t1, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s3, s6
+; RV32IM-NEXT:    mul s1, s3, t1
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s10, s0
+; RV32IM-NEXT:    sw a4, 404(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t1, s10, t6
+; RV32IM-NEXT:    sw t1, 400(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s3, a4
+; RV32IM-NEXT:    mul s1, s3, t1
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, s10, s7
+; RV32IM-NEXT:    sw a4, 372(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t1, s10, s2
+; RV32IM-NEXT:    sw t1, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, s3, a4
+; RV32IM-NEXT:    mul s1, s3, t1
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a4, a4, s8
+; RV32IM-NEXT:    sw a4, 548(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a4, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, t5
+; RV32IM-NEXT:    lw t1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a4, t1, a4
 ; RV32IM-NEXT:    sw a4, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    sw a4, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a4, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    sw a4, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t2, 2
-; RV32IM-NEXT:    and a4, s7, t2
-; RV32IM-NEXT:    sw a4, 420(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t6, s4, a4
-; RV32IM-NEXT:    xor a4, s5, t6
-; RV32IM-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, s9
+; RV32IM-NEXT:    lw t1, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, t1, a4
+; RV32IM-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui a4, 256
-; RV32IM-NEXT:    and a5, s7, a4
-; RV32IM-NEXT:    sw a5, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t6, s4, a5
-; RV32IM-NEXT:    xor a5, s0, t6
-; RV32IM-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t5, 65536
-; RV32IM-NEXT:    and a5, s7, t5
-; RV32IM-NEXT:    sw a5, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t6, s4, a5
-; RV32IM-NEXT:    lw a5, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, t6
-; RV32IM-NEXT:    sw a5, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, s3, t2
-; RV32IM-NEXT:    mul t6, s2, t6
-; RV32IM-NEXT:    xor a5, t3, t6
-; RV32IM-NEXT:    sw a5, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t3, s3, a4
-; RV32IM-NEXT:    mul t3, s2, t3
-; RV32IM-NEXT:    xor a4, t1, t3
-; RV32IM-NEXT:    sw a4, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t1, s3, t5
-; RV32IM-NEXT:    mul t1, s2, t1
-; RV32IM-NEXT:    xor a4, t4, t1
-; RV32IM-NEXT:    sw a4, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 2
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 2
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 1
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 1
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 4
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 4
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 2
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 2
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    and s2, a1, a4
+; RV32IM-NEXT:    lui s8, 256
+; RV32IM-NEXT:    mul s1, a2, s2
+; RV32IM-NEXT:    lw a4, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s7, 65536
+; RV32IM-NEXT:    and s9, a1, s7
+; RV32IM-NEXT:    mul s1, a2, s9
+; RV32IM-NEXT:    lw a4, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s1, a3, t2
+; RV32IM-NEXT:    mul s1, a0, s1
+; RV32IM-NEXT:    lw a4, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, s1
 ; RV32IM-NEXT:    sw a4, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 8
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 8
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 3
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 3
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    and s1, a3, s8
+; RV32IM-NEXT:    mul s1, a0, s1
+; RV32IM-NEXT:    lw a4, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and s1, a3, s7
+; RV32IM-NEXT:    mul s1, a0, s1
+; RV32IM-NEXT:    lw a4, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, s1
+; RV32IM-NEXT:    sw a4, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t1, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a4, t1, a4
+; RV32IM-NEXT:    sw a4, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or a4, ra, a4
+; RV32IM-NEXT:    sw a4, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s1, s5, s6
+; RV32IM-NEXT:    xor a4, a6, s1
+; RV32IM-NEXT:    sw a4, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s1, 256
+; RV32IM-NEXT:    and a4, s10, s1
+; RV32IM-NEXT:    sw a4, 392(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, s5, a4
+; RV32IM-NEXT:    xor a4, t4, a6
 ; RV32IM-NEXT:    sw a4, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 16
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 16
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 4
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 4
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    and a4, s10, s7
+; RV32IM-NEXT:    sw a4, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, s5, a4
+; RV32IM-NEXT:    lw a4, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, a6
+; RV32IM-NEXT:    sw a4, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s4, t2
+; RV32IM-NEXT:    mul a6, s3, a6
+; RV32IM-NEXT:    xor a4, a7, a6
+; RV32IM-NEXT:    sw a4, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s4, s1
+; RV32IM-NEXT:    mul a6, s3, a6
+; RV32IM-NEXT:    xor a4, t5, a6
+; RV32IM-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a6, s4, s7
+; RV32IM-NEXT:    mul a6, s3, a6
+; RV32IM-NEXT:    xor a4, t3, a6
 ; RV32IM-NEXT:    sw a4, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 32
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 32
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 5
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 5
-; RV32IM-NEXT:    and a4, t3, t4
+; RV32IM-NEXT:    andi a6, a1, 2
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 2
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 1
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 1
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 452(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 4
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 4
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 2
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 2
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 428(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 8
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 8
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 3
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 3
+; RV32IM-NEXT:    and a4, a7, t3
 ; RV32IM-NEXT:    sw a4, 388(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 444(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 16
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 16
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 4
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 4
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 424(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 32
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 32
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 5
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 328(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 5
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 336(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 64
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 64
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 6
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 396(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 6
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 416(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 128
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 128
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 7
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 292(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 7
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 300(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 256
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 256
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 8
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 268(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 8
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 280(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 308(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a6, a1, 512
+; RV32IM-NEXT:    seqz a6, a6
+; RV32IM-NEXT:    andi a7, a3, 512
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    addi a6, a6, -1
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    slli t3, a2, 9
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 312(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli t3, a0, 9
+; RV32IM-NEXT:    and a4, a7, t3
+; RV32IM-NEXT:    sw a4, 324(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a4, a6, t3
+; RV32IM-NEXT:    sw a4, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 8
+; RV32IM-NEXT:    lui a6, 32
+; RV32IM-NEXT:    lui s1, 2048
+; RV32IM-NEXT:    lui s6, 131072
+; RV32IM-NEXT:    lui s7, 262144
+; RV32IM-NEXT:    lui s8, 524288
+; RV32IM-NEXT:    andi a7, a1, 1
+; RV32IM-NEXT:    andi t6, a1, 1024
+; RV32IM-NEXT:    and t3, a1, a4
+; RV32IM-NEXT:    lui t2, 16
+; RV32IM-NEXT:    and t4, a1, t2
+; RV32IM-NEXT:    and t5, a1, a6
+; RV32IM-NEXT:    and s1, a1, s1
+; RV32IM-NEXT:    lui t1, 2048
+; RV32IM-NEXT:    and s6, a1, s6
+; RV32IM-NEXT:    lui s0, 131072
+; RV32IM-NEXT:    and ra, a1, s7
+; RV32IM-NEXT:    and a1, a1, s8
+; RV32IM-NEXT:    seqz a7, a7
+; RV32IM-NEXT:    lw s11, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s11, a2, s11
+; RV32IM-NEXT:    sw s11, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s11, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s11, a2, s11
+; RV32IM-NEXT:    sw s11, 232(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s11, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s11, a2, s11
+; RV32IM-NEXT:    sw s11, 284(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a2, a5
+; RV32IM-NEXT:    sw a5, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, a2, t0
+; RV32IM-NEXT:    sw a5, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a5, a3, 1
+; RV32IM-NEXT:    seqz a5, a5
+; RV32IM-NEXT:    lui t0, 4
+; RV32IM-NEXT:    and t0, a3, t0
+; RV32IM-NEXT:    lui s11, 4
+; RV32IM-NEXT:    mul t0, a0, t0
+; RV32IM-NEXT:    sw t0, 228(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, a4
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 276(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, t2
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, a6
+; RV32IM-NEXT:    mul a4, a0, t0
 ; RV32IM-NEXT:    sw a4, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 64
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 64
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 6
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 6
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 128
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 128
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 7
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    lui a4, 512
+; RV32IM-NEXT:    and t0, a3, a4
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 216(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a4, 1024
+; RV32IM-NEXT:    and t0, a3, a4
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 264(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, t1
+; RV32IM-NEXT:    mul a4, a0, t0
 ; RV32IM-NEXT:    sw a4, 340(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 7
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 348(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 384(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 256
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 256
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 8
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 320(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 8
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 332(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 360(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t1, a1, 512
-; RV32IM-NEXT:    seqz t1, t1
-; RV32IM-NEXT:    andi t3, a3, 512
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    addi t1, t1, -1
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    slli t4, a2, 9
-; RV32IM-NEXT:    and a4, t1, t4
-; RV32IM-NEXT:    sw a4, 368(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli t4, a0, 9
-; RV32IM-NEXT:    and a4, t3, t4
-; RV32IM-NEXT:    sw a4, 380(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a4, t1, t4
+; RV32IM-NEXT:    lui a4, 4096
+; RV32IM-NEXT:    and t0, a3, a4
+; RV32IM-NEXT:    mul a4, a0, t0
 ; RV32IM-NEXT:    sw a4, 432(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a6, 4
-; RV32IM-NEXT:    lui a7, 8
-; RV32IM-NEXT:    lui t1, 32
-; RV32IM-NEXT:    lui s6, 512
-; RV32IM-NEXT:    lui s8, 1024
-; RV32IM-NEXT:    lui s9, 2048
-; RV32IM-NEXT:    lui a4, 131072
-; RV32IM-NEXT:    lui t2, 262144
-; RV32IM-NEXT:    lui t5, 524288
-; RV32IM-NEXT:    andi t3, a1, 1
-; RV32IM-NEXT:    andi a5, a1, 1024
-; RV32IM-NEXT:    sw a5, 344(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t4, a1, a6
-; RV32IM-NEXT:    and t6, a1, a7
-; RV32IM-NEXT:    lui a5, 16
-; RV32IM-NEXT:    and s0, a1, a5
-; RV32IM-NEXT:    and s1, a1, t1
-; RV32IM-NEXT:    and s5, a1, s6
-; RV32IM-NEXT:    and s10, a1, s8
-; RV32IM-NEXT:    and s11, a1, s9
-; RV32IM-NEXT:    and ra, a1, a4
-; RV32IM-NEXT:    and a4, a1, t2
-; RV32IM-NEXT:    and a1, a1, t5
-; RV32IM-NEXT:    seqz t3, t3
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    sw t0, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t0, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    sw t0, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi t0, a3, 1
-; RV32IM-NEXT:    seqz t0, t0
-; RV32IM-NEXT:    and t5, a3, a6
-; RV32IM-NEXT:    mul a6, a0, t5
-; RV32IM-NEXT:    sw a6, 280(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, a7
-; RV32IM-NEXT:    mul a6, a0, t5
-; RV32IM-NEXT:    sw a6, 328(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, a5
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 412(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, t1
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, s6
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 272(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, s8
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 316(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, s9
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 396(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 4096
-; RV32IM-NEXT:    and t5, a3, a5
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 8192
-; RV32IM-NEXT:    and t5, a3, a5
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 131072
-; RV32IM-NEXT:    and t5, a3, a5
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 260(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t5, a3, t2
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 300(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a5, 524288
-; RV32IM-NEXT:    and t5, a3, a5
-; RV32IM-NEXT:    mul a5, a0, t5
-; RV32IM-NEXT:    sw a5, 364(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a5, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a5, a0, a5
-; RV32IM-NEXT:    mul a6, a2, t4
-; RV32IM-NEXT:    sw a6, 252(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, t4
-; RV32IM-NEXT:    sw a6, 276(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, t6
-; RV32IM-NEXT:    sw a6, 288(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, t6
-; RV32IM-NEXT:    sw a6, 312(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, s0
-; RV32IM-NEXT:    sw a6, 352(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, s0
-; RV32IM-NEXT:    sw a6, 408(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, s1
-; RV32IM-NEXT:    sw a6, 440(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, s1
-; RV32IM-NEXT:    sw a6, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a6, 392(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a7, a0, a6
-; RV32IM-NEXT:    mul a6, a2, s5
-; RV32IM-NEXT:    sw a6, 244(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, s5
-; RV32IM-NEXT:    sw a6, 264(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, s10
-; RV32IM-NEXT:    sw a6, 284(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, s10
-; RV32IM-NEXT:    sw a6, 308(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, s11
-; RV32IM-NEXT:    sw a6, 336(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a0, s11
-; RV32IM-NEXT:    sw a6, 392(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a6, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul t4, a0, a6
-; RV32IM-NEXT:    lw a6, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    sw a6, 256(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a6, 376(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lui a4, 8192
+; RV32IM-NEXT:    and t0, a3, a4
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, s0
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 204(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, s7
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 252(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, a3, s8
+; RV32IM-NEXT:    mul a4, a0, t0
+; RV32IM-NEXT:    sw a4, 320(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    sw a4, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, t3
+; RV32IM-NEXT:    sw a4, 240(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t0, a0, t3
+; RV32IM-NEXT:    mul a4, a2, t4
+; RV32IM-NEXT:    sw a4, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a0, t4
+; RV32IM-NEXT:    sw a4, 212(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, t5
+; RV32IM-NEXT:    sw a4, 376(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a0, t5
+; RV32IM-NEXT:    sw a4, 260(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    sw a4, 348(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a4, a0, a4
+; RV32IM-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a0, s2
+; RV32IM-NEXT:    sw a4, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a2, s1
+; RV32IM-NEXT:    sw a4, 288(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a4, a0, s1
+; RV32IM-NEXT:    lw a6, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul t1, a0, a6
+; RV32IM-NEXT:    lw a6, 564(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    mul a6, a0, a6
-; RV32IM-NEXT:    sw a6, 296(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a6, 208(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, a0, s9
+; RV32IM-NEXT:    sw a6, 248(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s7, a2, s6
+; RV32IM-NEXT:    mul a6, a0, s6
+; RV32IM-NEXT:    sw a6, 332(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a6, a2, ra
-; RV32IM-NEXT:    sw a6, 236(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a6, 220(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a6, a0, ra
-; RV32IM-NEXT:    sw a6, 376(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a6, a2, a4
-; RV32IM-NEXT:    sw a6, 268(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, a0, a4
-; RV32IM-NEXT:    sw a4, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a4, a2, a1
-; RV32IM-NEXT:    sw a4, 324(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a6, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a6, a2, a1
+; RV32IM-NEXT:    sw a6, 272(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    mul a1, a0, a1
-; RV32IM-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi t3, t3, -1
-; RV32IM-NEXT:    addi t0, t0, -1
+; RV32IM-NEXT:    sw a1, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a7, a7, -1
+; RV32IM-NEXT:    addi a5, a5, -1
 ; RV32IM-NEXT:    slli a1, a2, 10
-; RV32IM-NEXT:    and a2, t3, a2
-; RV32IM-NEXT:    sw a2, 224(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t0, a0
-; RV32IM-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a2, t3, a0
-; RV32IM-NEXT:    sw a2, 248(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and ra, a7, a2
+; RV32IM-NEXT:    and s9, a5, a0
+; RV32IM-NEXT:    and a2, a7, a0
+; RV32IM-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    slli a0, a0, 10
 ; RV32IM-NEXT:    andi a2, a3, 1024
-; RV32IM-NEXT:    lw a3, 344(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    seqz a3, a3
+; RV32IM-NEXT:    seqz a3, t6
 ; RV32IM-NEXT:    seqz a2, a2
 ; RV32IM-NEXT:    addi a3, a3, -1
 ; RV32IM-NEXT:    addi a2, a2, -1
 ; RV32IM-NEXT:    and a1, a3, a1
-; RV32IM-NEXT:    sw a1, 292(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 244(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a2, a2, a0
-; RV32IM-NEXT:    sw a2, 304(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a2, 256(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a3, a0
+; RV32IM-NEXT:    sw a0, 224(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, t0
+; RV32IM-NEXT:    sw a0, 196(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a4
+; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, t1
 ; RV32IM-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a5
-; RV32IM-NEXT:    sw a0, 240(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 404(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a7
-; RV32IM-NEXT:    sw a0, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 356(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, t4
-; RV32IM-NEXT:    sw a0, 356(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 2
+; RV32IM-NEXT:    andi a0, s10, 2
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 2
+; RV32IM-NEXT:    andi a1, s4, 2
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 1
+; RV32IM-NEXT:    slli a2, s5, 1
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 200(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 1
+; RV32IM-NEXT:    sw a2, 184(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 1
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 212(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 188(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 232(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 4
+; RV32IM-NEXT:    sw a0, 316(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 4
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 4
+; RV32IM-NEXT:    andi a1, s4, 4
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 2
+; RV32IM-NEXT:    slli a2, s5, 2
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 2
+; RV32IM-NEXT:    sw a2, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 2
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 192(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 172(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 216(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 8
+; RV32IM-NEXT:    sw a0, 192(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 8
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 8
+; RV32IM-NEXT:    andi a1, s4, 8
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 3
+; RV32IM-NEXT:    slli a2, s5, 3
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 3
+; RV32IM-NEXT:    sw a2, 144(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 3
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 168(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 152(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 196(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 16
+; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 16
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 16
+; RV32IM-NEXT:    andi a1, s4, 16
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 4
+; RV32IM-NEXT:    slli a2, s5, 4
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 4
+; RV32IM-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 4
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 148(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 132(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 176(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 32
+; RV32IM-NEXT:    sw a0, 160(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 32
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 32
+; RV32IM-NEXT:    andi a1, s4, 32
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 5
+; RV32IM-NEXT:    slli a2, s5, 5
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 5
+; RV32IM-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 5
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 128(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 152(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 64
+; RV32IM-NEXT:    sw a0, 136(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 64
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 64
+; RV32IM-NEXT:    andi a1, s4, 64
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 6
+; RV32IM-NEXT:    slli a2, s5, 6
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 6
+; RV32IM-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 6
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 184(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 164(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 128
+; RV32IM-NEXT:    sw a0, 180(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 128
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 128
+; RV32IM-NEXT:    andi a1, s4, 128
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 7
+; RV32IM-NEXT:    slli a2, s5, 7
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 88(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 7
+; RV32IM-NEXT:    sw a2, 76(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 7
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 96(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 84(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 112(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 256
+; RV32IM-NEXT:    sw a0, 408(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 256
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 256
+; RV32IM-NEXT:    andi a1, s4, 256
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 8
+; RV32IM-NEXT:    slli a2, s5, 8
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 8
+; RV32IM-NEXT:    sw a2, 52(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 8
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 76(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 100(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, s7, 512
+; RV32IM-NEXT:    sw a0, 88(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, s10, 512
 ; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    andi a1, s3, 512
+; RV32IM-NEXT:    andi a1, s4, 512
 ; RV32IM-NEXT:    seqz a1, a1
 ; RV32IM-NEXT:    addi a0, a0, -1
 ; RV32IM-NEXT:    addi a1, a1, -1
-; RV32IM-NEXT:    slli a2, s4, 9
+; RV32IM-NEXT:    slli a2, s5, 9
 ; RV32IM-NEXT:    and a2, a0, a2
-; RV32IM-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a2, s2, 9
+; RV32IM-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a2, s3, 9
 ; RV32IM-NEXT:    and a1, a1, a2
-; RV32IM-NEXT:    sw a1, 116(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw a1, 104(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    and a0, a0, a2
-; RV32IM-NEXT:    sw a0, 132(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s7, 1
-; RV32IM-NEXT:    andi t6, s7, 1024
-; RV32IM-NEXT:    lui t0, 4
-; RV32IM-NEXT:    and a5, s7, t0
-; RV32IM-NEXT:    lui s9, 8
-; RV32IM-NEXT:    and a6, s7, s9
-; RV32IM-NEXT:    lui a7, 16
-; RV32IM-NEXT:    and t1, s7, a7
-; RV32IM-NEXT:    lui s8, 32
-; RV32IM-NEXT:    and t5, s7, s8
-; RV32IM-NEXT:    lui t4, 512
-; RV32IM-NEXT:    and s1, s7, t4
-; RV32IM-NEXT:    lui s0, 1024
-; RV32IM-NEXT:    and s5, s7, s0
+; RV32IM-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, s10, 1
+; RV32IM-NEXT:    andi t3, s10, 1024
+; RV32IM-NEXT:    lui t5, 8
+; RV32IM-NEXT:    and a3, s10, t5
+; RV32IM-NEXT:    lui a5, 16
+; RV32IM-NEXT:    and a6, s10, a5
+; RV32IM-NEXT:    lui t4, 32
+; RV32IM-NEXT:    and a7, s10, t4
 ; RV32IM-NEXT:    lui s6, 2048
-; RV32IM-NEXT:    and a0, s7, s6
-; RV32IM-NEXT:    lui s10, 131072
-; RV32IM-NEXT:    and a1, s7, s10
-; RV32IM-NEXT:    lui s11, 262144
-; RV32IM-NEXT:    and a3, s7, s11
-; RV32IM-NEXT:    lui ra, 524288
-; RV32IM-NEXT:    and a4, s7, ra
-; RV32IM-NEXT:    seqz t3, a2
-; RV32IM-NEXT:    lw a2, 428(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a2, s4, a2
-; RV32IM-NEXT:    sw a2, 428(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 424(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a2, s4, a2
-; RV32IM-NEXT:    sw a2, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a2, s3, 1
+; RV32IM-NEXT:    and t6, s10, s6
+; RV32IM-NEXT:    and a0, s10, s0
+; RV32IM-NEXT:    lui s1, 262144
+; RV32IM-NEXT:    and a1, s10, s1
+; RV32IM-NEXT:    lui s2, 524288
+; RV32IM-NEXT:    and a4, s10, s2
 ; RV32IM-NEXT:    seqz t2, a2
-; RV32IM-NEXT:    and t0, s3, t0
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, s9
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 84(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, a7
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 180(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, s8
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, t4
-; RV32IM-NEXT:    mul t4, s2, t0
-; RV32IM-NEXT:    and t0, s3, s0
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, s6
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 160(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a2, 4096
-; RV32IM-NEXT:    and t0, s3, a2
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 208(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui a2, 8192
-; RV32IM-NEXT:    and t0, s3, a2
-; RV32IM-NEXT:    mul a2, s2, t0
-; RV32IM-NEXT:    sw a2, 424(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, s10
-; RV32IM-NEXT:    mul a2, s2, t0
+; RV32IM-NEXT:    lw a2, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul s10, s5, a2
+; RV32IM-NEXT:    lw a2, 404(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s5, a2
 ; RV32IM-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, s11
-; RV32IM-NEXT:    mul a2, s2, t0
+; RV32IM-NEXT:    lw a2, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s5, a2
+; RV32IM-NEXT:    sw a2, 80(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 372(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s5, a2
+; RV32IM-NEXT:    sw a2, 404(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 368(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s5, a2
+; RV32IM-NEXT:    sw a2, 440(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi t0, s4, 1
+; RV32IM-NEXT:    seqz t1, t0
+; RV32IM-NEXT:    and t0, s4, s11
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 20(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, s4, t5
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, s4, a5
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 148(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, s4, t4
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 372(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a2, 512
+; RV32IM-NEXT:    and t0, s4, a2
+; RV32IM-NEXT:    mul t4, s3, t0
+; RV32IM-NEXT:    lui a2, 1024
+; RV32IM-NEXT:    and t0, s4, a2
+; RV32IM-NEXT:    mul a2, s3, t0
 ; RV32IM-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t0, s3, ra
-; RV32IM-NEXT:    mul a2, s2, t0
+; RV32IM-NEXT:    and t0, s4, s6
+; RV32IM-NEXT:    mul a2, s3, t0
 ; RV32IM-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a7, s2, a2
-; RV32IM-NEXT:    mul s10, s4, a5
-; RV32IM-NEXT:    mul ra, s2, a5
-; RV32IM-NEXT:    mul a2, s4, a6
+; RV32IM-NEXT:    lui a2, 4096
+; RV32IM-NEXT:    and t0, s4, a2
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 368(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a2, 8192
+; RV32IM-NEXT:    and t0, s4, a2
+; RV32IM-NEXT:    mul a2, s3, t0
+; RV32IM-NEXT:    sw a2, 400(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and t0, s4, s0
+; RV32IM-NEXT:    mul t0, s3, t0
+; RV32IM-NEXT:    and s1, s4, s1
+; RV32IM-NEXT:    mul a2, s3, s1
 ; RV32IM-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s2, a6
-; RV32IM-NEXT:    sw a2, 60(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s4, t1
+; RV32IM-NEXT:    and s1, s4, s2
+; RV32IM-NEXT:    mul a2, s3, s1
 ; RV32IM-NEXT:    sw a2, 120(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s2, t1
-; RV32IM-NEXT:    sw a2, 144(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s4, t5
-; RV32IM-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a2, s2, t5
-; RV32IM-NEXT:    sw a2, 420(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a2, s2, a2
-; RV32IM-NEXT:    mul s9, s4, s1
-; RV32IM-NEXT:    mul a5, s2, s1
-; RV32IM-NEXT:    sw a5, 20(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s4, s5
-; RV32IM-NEXT:    sw a5, 32(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s2, s5
-; RV32IM-NEXT:    sw a5, 48(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a5, s4, a0
-; RV32IM-NEXT:    sw a5, 104(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a0, s2, a0
-; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a0, s2, a0
-; RV32IM-NEXT:    lw a5, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a5, s2, a5
-; RV32IM-NEXT:    sw a5, 16(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a5, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    mul a5, s2, a5
-; RV32IM-NEXT:    sw a5, 44(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul s7, s4, a1
-; RV32IM-NEXT:    mul a1, s2, a1
-; RV32IM-NEXT:    sw a1, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s4, a3
-; RV32IM-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s2, a3
-; RV32IM-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s4, a4
-; RV32IM-NEXT:    sw a1, 92(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, s2, a4
-; RV32IM-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s3, a2
+; RV32IM-NEXT:    sw a2, 128(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s3, a2
+; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s5, a3
+; RV32IM-NEXT:    sw a2, 28(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a5, s3, a3
+; RV32IM-NEXT:    mul a2, s5, a6
+; RV32IM-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s3, a6
+; RV32IM-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s5, a7
+; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s3, a7
+; RV32IM-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s3, a2
+; RV32IM-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s3, a2
+; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a2, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a2, s3, a2
+; RV32IM-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s5, t6
+; RV32IM-NEXT:    sw a2, 92(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a2, s3, t6
+; RV32IM-NEXT:    lw a3, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a3, s3, a3
+; RV32IM-NEXT:    lw a6, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a6, s3, a6
+; RV32IM-NEXT:    sw a6, 4(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a6, 412(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    mul a6, s3, a6
+; RV32IM-NEXT:    sw a6, 32(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul s8, s5, a0
+; RV32IM-NEXT:    mul a0, s3, a0
+; RV32IM-NEXT:    sw a0, 392(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s5, a1
+; RV32IM-NEXT:    sw a0, 16(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s3, a1
+; RV32IM-NEXT:    sw a0, 412(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s5, a4
+; RV32IM-NEXT:    sw a0, 72(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul a0, s3, a4
+; RV32IM-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi t2, t2, -1
+; RV32IM-NEXT:    addi t1, t1, -1
+; RV32IM-NEXT:    slli a0, s5, 10
+; RV32IM-NEXT:    and a1, t2, s5
+; RV32IM-NEXT:    and a4, t1, s3
+; RV32IM-NEXT:    and a6, t2, s3
+; RV32IM-NEXT:    sw a6, 0(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli s3, s3, 10
+; RV32IM-NEXT:    andi t2, s4, 1024
+; RV32IM-NEXT:    seqz t3, t3
+; RV32IM-NEXT:    seqz t2, t2
 ; RV32IM-NEXT:    addi t3, t3, -1
 ; RV32IM-NEXT:    addi t2, t2, -1
-; RV32IM-NEXT:    slli a3, s4, 10
-; RV32IM-NEXT:    and a4, t3, s4
-; RV32IM-NEXT:    and t2, t2, s2
-; RV32IM-NEXT:    and a5, t3, s2
-; RV32IM-NEXT:    slli s2, s2, 10
-; RV32IM-NEXT:    andi s3, s3, 1024
-; RV32IM-NEXT:    seqz t6, t6
-; RV32IM-NEXT:    seqz s3, s3
-; RV32IM-NEXT:    addi t6, t6, -1
-; RV32IM-NEXT:    addi s3, s3, -1
-; RV32IM-NEXT:    and a1, t6, a3
-; RV32IM-NEXT:    sw a1, 52(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a1, s3, s2
-; RV32IM-NEXT:    sw a1, 64(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a1, t6, s2
-; RV32IM-NEXT:    sw a1, 80(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a7
-; RV32IM-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 224(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 340(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    and a0, t3, a0
+; RV32IM-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, t2, s3
+; RV32IM-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a0, t3, s3
+; RV32IM-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a5
+; RV32IM-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a3
+; RV32IM-NEXT:    sw a0, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, ra, a0
+; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 252(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 236(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 328(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 292(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 236(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 232(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, s7
+; RV32IM-NEXT:    sw a0, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, s9, a0
+; RV32IM-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 388(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 336(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 300(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 280(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 228(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, a0, a2
+; RV32IM-NEXT:    lw a0, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
+; RV32IM-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 228(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a1, a0
-; RV32IM-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    lw a2, 204(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a2
 ; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 388(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 388(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 372(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 260(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 200(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a4, a0
-; RV32IM-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 184(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 144(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, a0, a1
+; RV32IM-NEXT:    lw a0, 124(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 108(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s4, a0, a1
+; RV32IM-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a0, a1
+; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s6, a0, s10
+; RV32IM-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, a0, a1
+; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a0, s8
 ; RV32IM-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 156(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, a0, a1
-; RV32IM-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 124(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, a0, a1
-; RV32IM-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 68(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s10, a0, s10
-; RV32IM-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, a0, s9
-; RV32IM-NEXT:    lw a0, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, a0, s7
-; RV32IM-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, t2, a0
-; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 168(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, a4, a0
+; RV32IM-NEXT:    lw a0, 172(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 152(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, a0, a1
-; RV32IM-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 128(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 112(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s0, a0, s0
-; RV32IM-NEXT:    lw a0, 96(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 76(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 60(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s1, a0, s1
-; RV32IM-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 36(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor s2, a0, a1
-; RV32IM-NEXT:    lw a0, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, a0, t4
-; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, a0, a1
-; RV32IM-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a0, t4
+; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, a0, t0
+; RV32IM-NEXT:    lw a0, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 200(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t5, a1, a0
-; RV32IM-NEXT:    lw a0, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 444(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a0, a1
+; RV32IM-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a7, a0, a1
-; RV32IM-NEXT:    lw a0, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 308(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 296(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t0, a0, a1
-; RV32IM-NEXT:    lw a0, 384(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 360(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, a0, a1
-; RV32IM-NEXT:    lw a0, 276(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 240(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a1, a0
-; RV32IM-NEXT:    lw a0, 264(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 404(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a1, a0
-; RV32IM-NEXT:    lw a0, 256(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t4, a1, a0
-; RV32IM-NEXT:    lw a0, 232(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a5, a0
-; RV32IM-NEXT:    lw a0, 216(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a0, 212(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    xor t1, a1, a0
+; RV32IM-NEXT:    lw a0, 208(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a1, a0
+; RV32IM-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 0(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a0
+; RV32IM-NEXT:    lw a0, 192(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a1, 176(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 152(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a1
+; RV32IM-NEXT:    lw a1, 160(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 136(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a1, a2
-; RV32IM-NEXT:    lw a2, 112(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 100(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 88(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 64(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a3
 ; RV32IM-NEXT:    lw a3, 12(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, ra
-; RV32IM-NEXT:    lw a4, 20(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a5, a4
-; RV32IM-NEXT:    lw a5, 16(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, ra, a5
-; RV32IM-NEXT:    lw ra, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, ra, s5
-; RV32IM-NEXT:    sw ra, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 368(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 460(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 288(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 284(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 268(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 436(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, ra, s5
-; RV32IM-NEXT:    sw ra, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 416(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 380(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 388(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 416(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 328(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 372(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 404(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 316(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    sw ra, 400(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw ra, 300(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor ra, s5, ra
-; RV32IM-NEXT:    lw s5, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, s5, s6
-; RV32IM-NEXT:    sw s6, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s6, 172(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, s11, s6
-; RV32IM-NEXT:    sw s6, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s6, 108(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 348(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, s5, s6
-; RV32IM-NEXT:    sw s5, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s5, 40(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, s10, s5
-; RV32IM-NEXT:    sw s5, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s5, 32(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, s9, s5
-; RV32IM-NEXT:    sw s5, 564(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw s5, 28(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, s7, s5
-; RV32IM-NEXT:    sw s5, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor t6, s8, t6
-; RV32IM-NEXT:    sw t6, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 184(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a4, a3
+; RV32IM-NEXT:    lw a4, 4(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, s10, a4
+; RV32IM-NEXT:    lw s10, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s10, s11
+; RV32IM-NEXT:    sw s10, 436(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 424(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 312(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 420(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 240(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 352(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 396(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 284(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 388(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 220(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 384(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s10, s11
+; RV32IM-NEXT:    sw s10, 428(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 416(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 416(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 324(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 336(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 352(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 276(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor ra, ra, s10
+; RV32IM-NEXT:    lw s10, 264(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 380(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 252(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, s11, s10
+; RV32IM-NEXT:    sw s10, 360(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s10, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s10, s3
+; RV32IM-NEXT:    sw s3, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s3, 156(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s4, s3
+; RV32IM-NEXT:    sw s3, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s3, 96(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s5, s3
+; RV32IM-NEXT:    sw s3, 520(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s6, s3
+; RV32IM-NEXT:    sw s3, 516(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s3, 80(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s9, s3
+; RV32IM-NEXT:    sw s3, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw s3, 16(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s3, s8, s3
+; RV32IM-NEXT:    sw s3, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor t6, s7, t6
+; RV32IM-NEXT:    sw t6, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 164(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s0, t6
-; RV32IM-NEXT:    sw t6, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 116(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 104(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s1, t6
-; RV32IM-NEXT:    sw t6, 548(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 84(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    sw t6, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t6, 68(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t6, s2, t6
-; RV32IM-NEXT:    sw t6, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t6, 72(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, s3, t6
-; RV32IM-NEXT:    sw t6, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    sw t6, 492(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lw t6, 56(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t6, s4, t6
-; RV32IM-NEXT:    sw t6, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a7, t5, a7
-; RV32IM-NEXT:    sw a7, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, t0, a7
-; RV32IM-NEXT:    lw a7, 432(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t1, a7
-; RV32IM-NEXT:    sw a7, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 312(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t2, a7
-; RV32IM-NEXT:    sw a7, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 308(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t3, a7
-; RV32IM-NEXT:    sw a7, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a7, 296(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t4, a7
-; RV32IM-NEXT:    sw a7, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a6, a0
-; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 204(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a1, a0
-; RV32IM-NEXT:    lw a0, 132(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, a2, a0
-; RV32IM-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, t3, t6
+; RV32IM-NEXT:    sw t3, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw t3, 40(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, t4, t3
+; RV32IM-NEXT:    sw t3, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a6, t5, a6
+; RV32IM-NEXT:    sw a6, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a6, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a7, a6
+; RV32IM-NEXT:    lw a6, 224(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, t0, a6
+; RV32IM-NEXT:    lw a6, 260(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, t1, a6
+; RV32IM-NEXT:    sw a6, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a6, 248(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, t2, a6
+; RV32IM-NEXT:    sw a6, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a5, a0
+; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, a2, a0
+; RV32IM-NEXT:    lw a0, 36(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a0, a3, a0
-; RV32IM-NEXT:    lw a1, 48(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a4, a1
-; RV32IM-NEXT:    sw a1, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 44(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a5, a1
-; RV32IM-NEXT:    sw a1, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a2, a3, 4
-; RV32IM-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a3, a3, a1
-; RV32IM-NEXT:    and a2, a2, a1
-; RV32IM-NEXT:    slli a3, a3, 4
-; RV32IM-NEXT:    or s10, a2, a3
-; RV32IM-NEXT:    lw a2, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a3, a2, 4
-; RV32IM-NEXT:    and t1, a2, a1
-; RV32IM-NEXT:    and a3, a3, a1
-; RV32IM-NEXT:    slli t1, t1, 4
-; RV32IM-NEXT:    or a2, a3, t1
-; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s7, a2, a3
-; RV32IM-NEXT:    lw a2, 292(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s5, a3, a2
+; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 32(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a4, a0
+; RV32IM-NEXT:    sw a0, 444(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a4, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a3, a4, 4
+; RV32IM-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a4, a4, a0
+; RV32IM-NEXT:    and a3, a3, a0
+; RV32IM-NEXT:    slli a4, a4, 4
+; RV32IM-NEXT:    or a3, a3, a4
+; RV32IM-NEXT:    sw a3, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli a4, a1, 4
+; RV32IM-NEXT:    and t0, a1, a0
+; RV32IM-NEXT:    and a4, a4, a0
+; RV32IM-NEXT:    slli t0, t0, 4
+; RV32IM-NEXT:    or s6, a4, t0
+; RV32IM-NEXT:    lw a1, 436(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 424(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a1, a2
+; RV32IM-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 420(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, a2, a1
+; RV32IM-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 396(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s0, s0, a1
+; RV32IM-NEXT:    lw a1, 288(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 388(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, a1
+; RV32IM-NEXT:    lw a1, 272(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 384(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    sw a1, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 416(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, a1, a2
+; RV32IM-NEXT:    lw a1, 256(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    lw a2, 352(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, a3, a2
-; RV32IM-NEXT:    lw a2, 336(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 448(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, a3, a2
-; RV32IM-NEXT:    lw a2, 324(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 436(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a3, a2
-; RV32IM-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, a2, a3
-; RV32IM-NEXT:    lw a2, 304(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 416(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s2, a3, a2
-; RV32IM-NEXT:    lw a2, 412(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 404(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s0, s0, a2
-; RV32IM-NEXT:    lw a2, 396(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 400(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, a2
-; RV32IM-NEXT:    lw a2, 364(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, ra, a2
-; RV32IM-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a2, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t1, a2, 4
-; RV32IM-NEXT:    and t3, a2, a1
-; RV32IM-NEXT:    and t1, t1, a1
+; RV32IM-NEXT:    xor s11, a2, a1
+; RV32IM-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, ra, a1
+; RV32IM-NEXT:    lw a1, 340(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 380(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a2, a1
+; RV32IM-NEXT:    lw a1, 320(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 360(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a2, a1
+; RV32IM-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t0, a1, 4
+; RV32IM-NEXT:    and t3, a1, a0
+; RV32IM-NEXT:    and t0, t0, a0
 ; RV32IM-NEXT:    slli t3, t3, 4
-; RV32IM-NEXT:    or t6, t1, t3
-; RV32IM-NEXT:    lw a2, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t3, a2, 4
-; RV32IM-NEXT:    and ra, a2, a1
-; RV32IM-NEXT:    and t3, t3, a1
+; RV32IM-NEXT:    or s4, t0, t3
+; RV32IM-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t3, a1, 4
+; RV32IM-NEXT:    and ra, a1, a0
+; RV32IM-NEXT:    and t3, t3, a0
 ; RV32IM-NEXT:    slli ra, ra, 4
-; RV32IM-NEXT:    or t5, t3, ra
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t4, a1, a2
-; RV32IM-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t1, a2, a1
-; RV32IM-NEXT:    lw a1, 120(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a2, a1
-; RV32IM-NEXT:    lw a1, 104(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a2, a1
-; RV32IM-NEXT:    lw a1, 92(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, a1, a2
-; RV32IM-NEXT:    lw a1, 64(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a2, a1
-; RV32IM-NEXT:    lw a1, 180(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a2, a1
-; RV32IM-NEXT:    lw a1, 160(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a1
-; RV32IM-NEXT:    lw a1, 140(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s11, a1, s11
-; RV32IM-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a1
-; RV32IM-NEXT:    lw a1, 408(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a1
-; RV32IM-NEXT:    lw a1, 392(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    or s3, t3, ra
+; RV32IM-NEXT:    lw a0, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, a0, a1
+; RV32IM-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t1, a1, a0
+; RV32IM-NEXT:    lw a0, 100(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a1, a0
+; RV32IM-NEXT:    lw a0, 92(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a1, a0
+; RV32IM-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t0, a0, a1
+; RV32IM-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a1, a0
+; RV32IM-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 492(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a1, a0
+; RV32IM-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a5, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, a0
+; RV32IM-NEXT:    lw a0, 120(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a0, s8
+; RV32IM-NEXT:    lw a0, 364(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s9, s9, a0
+; RV32IM-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a1, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a1, a0
+; RV32IM-NEXT:    lw a1, 332(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a1, a2, a1
-; RV32IM-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a1, 376(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a1
-; RV32IM-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a1, s8
-; RV32IM-NEXT:    lw a1, 80(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s9, s9, a1
-; RV32IM-NEXT:    lw a1, 144(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a0, a1
-; RV32IM-NEXT:    lw a0, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, ra, a0
-; RV32IM-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw a0, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, ra, a0
-; RV32IM-NEXT:    xor s5, s7, s5
-; RV32IM-NEXT:    lw s7, 440(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s6, s6, s7
-; RV32IM-NEXT:    lw s7, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s4, s4, s7
-; RV32IM-NEXT:    xor s2, s3, s2
-; RV32IM-NEXT:    lw s3, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s0, s0, s3
-; RV32IM-NEXT:    lw s3, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, s3
+; RV32IM-NEXT:    lw a2, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a3
+; RV32IM-NEXT:    lw a3, 128(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, s7, a3
+; RV32IM-NEXT:    lw a3, 116(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a4, a3
+; RV32IM-NEXT:    lw a4, 392(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw ra, 444(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, ra, a4
+; RV32IM-NEXT:    xor s2, s5, s2
+; RV32IM-NEXT:    lw s5, 376(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s0, s0, s5
+; RV32IM-NEXT:    lw s5, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, s5
+; RV32IM-NEXT:    xor s5, s10, s11
+; RV32IM-NEXT:    lw s10, 448(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, t6, s10
+; RV32IM-NEXT:    lw s10, 432(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, t5, s10
 ; RV32IM-NEXT:    xor t1, t4, t1
-; RV32IM-NEXT:    lw t4, 164(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t4, 584(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t2, t2, t4
-; RV32IM-NEXT:    lw t4, 428(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t4, 404(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t3, t3, t4
-; RV32IM-NEXT:    xor t0, t0, a6
-; RV32IM-NEXT:    lw a6, 220(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, a6
-; RV32IM-NEXT:    lw a6, 208(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    xor a6, s11, a4
-; RV32IM-NEXT:    lw a4, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    lw a4, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a4
-; RV32IM-NEXT:    xor a4, s8, s9
-; RV32IM-NEXT:    lw t4, 420(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, t4
-; RV32IM-NEXT:    lw t4, 616(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, t4
-; RV32IM-NEXT:    xor t4, s5, s6
-; RV32IM-NEXT:    lw s3, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s3, s4, s3
+; RV32IM-NEXT:    xor a6, t0, a6
+; RV32IM-NEXT:    lw t0, 372(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a7, t0
+; RV32IM-NEXT:    lw t0, 368(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t0, a5, t0
+; RV32IM-NEXT:    lw a5, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, s8, a5
+; RV32IM-NEXT:    lw t4, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, s9, t4
+; RV32IM-NEXT:    lw s8, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, s8
+; RV32IM-NEXT:    lw s8, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, s8
+; RV32IM-NEXT:    lw s8, 408(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, s8
+; RV32IM-NEXT:    lw s8, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s7, s7, s8
+; RV32IM-NEXT:    lw s8, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, s8
+; RV32IM-NEXT:    lw s8, 412(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a4, s8
 ; RV32IM-NEXT:    xor s0, s2, s0
-; RV32IM-NEXT:    lw s2, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s1, s1, s2
+; RV32IM-NEXT:    lw a4, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s1, s1, a4
+; RV32IM-NEXT:    xor t6, s5, t6
+; RV32IM-NEXT:    lw a4, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, t5, a4
 ; RV32IM-NEXT:    xor t1, t1, t2
-; RV32IM-NEXT:    lw t2, 452(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, t3, t2
-; RV32IM-NEXT:    xor t0, t0, a7
-; RV32IM-NEXT:    lw a7, 424(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a5, a7
-; RV32IM-NEXT:    lw a5, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a2, a5
-; RV32IM-NEXT:    lw a5, 620(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a0, a5
-; RV32IM-NEXT:    srli a0, s10, 2
-; RV32IM-NEXT:    lw s4, 632(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a2, s10, s4
-; RV32IM-NEXT:    and a0, a0, s4
-; RV32IM-NEXT:    slli a2, a2, 2
-; RV32IM-NEXT:    or a0, a0, a2
-; RV32IM-NEXT:    lw s2, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli a2, s2, 2
-; RV32IM-NEXT:    and s2, s2, s4
-; RV32IM-NEXT:    and a2, a2, s4
+; RV32IM-NEXT:    lw a4, 440(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, t3, a4
+; RV32IM-NEXT:    xor a6, a6, a7
+; RV32IM-NEXT:    lw a4, 400(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, t0, a4
+; RV32IM-NEXT:    lw a4, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a0, a0, a4
+; RV32IM-NEXT:    lw a4, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a1, a4
+; RV32IM-NEXT:    lw a1, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, a1
+; RV32IM-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, s8, a1
+; RV32IM-NEXT:    lw t3, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t0, t3, 2
+; RV32IM-NEXT:    lw s5, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and t3, t3, s5
+; RV32IM-NEXT:    and t0, t0, s5
+; RV32IM-NEXT:    slli t3, t3, 2
+; RV32IM-NEXT:    or t0, t0, t3
+; RV32IM-NEXT:    srli t3, s6, 2
+; RV32IM-NEXT:    and s2, s6, s5
+; RV32IM-NEXT:    and t3, t3, s5
 ; RV32IM-NEXT:    slli s2, s2, 2
-; RV32IM-NEXT:    or a2, a2, s2
-; RV32IM-NEXT:    xor t4, t4, s3
+; RV32IM-NEXT:    or t3, t3, s2
 ; RV32IM-NEXT:    xor s0, s0, s1
-; RV32IM-NEXT:    srli s1, t6, 2
-; RV32IM-NEXT:    and t6, t6, s4
-; RV32IM-NEXT:    and s1, s1, s4
-; RV32IM-NEXT:    slli t6, t6, 2
-; RV32IM-NEXT:    or t6, s1, t6
-; RV32IM-NEXT:    srli s1, t5, 2
-; RV32IM-NEXT:    and t5, t5, s4
-; RV32IM-NEXT:    and s1, s1, s4
-; RV32IM-NEXT:    mv s3, s4
-; RV32IM-NEXT:    slli t5, t5, 2
-; RV32IM-NEXT:    or t5, s1, t5
+; RV32IM-NEXT:    xor t5, t6, t5
+; RV32IM-NEXT:    srli t6, s4, 2
+; RV32IM-NEXT:    and s1, s4, s5
+; RV32IM-NEXT:    and t6, t6, s5
+; RV32IM-NEXT:    slli s1, s1, 2
+; RV32IM-NEXT:    or t6, t6, s1
+; RV32IM-NEXT:    srli s1, s3, 2
+; RV32IM-NEXT:    and s2, s3, s5
+; RV32IM-NEXT:    and s1, s1, s5
+; RV32IM-NEXT:    mv s3, s5
+; RV32IM-NEXT:    slli s2, s2, 2
+; RV32IM-NEXT:    or s1, s1, s2
 ; RV32IM-NEXT:    xor t1, t1, t2
-; RV32IM-NEXT:    xor t0, t0, t3
-; RV32IM-NEXT:    xor a3, a6, a3
-; RV32IM-NEXT:    lw t2, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a3, t2
-; RV32IM-NEXT:    xor a1, a4, a1
-; RV32IM-NEXT:    lw a3, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a1, a3
-; RV32IM-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, t4, a1
-; RV32IM-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, s0, a3
-; RV32IM-NEXT:    lw t4, 600(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, a7
+; RV32IM-NEXT:    xor a7, a5, t4
+; RV32IM-NEXT:    xor a0, a7, a0
+; RV32IM-NEXT:    xor a7, a2, s7
+; RV32IM-NEXT:    xor a3, a7, a3
+; RV32IM-NEXT:    lw a7, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, s0, a7
+; RV32IM-NEXT:    lw t2, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, t5, t2
+; RV32IM-NEXT:    lw t4, 552(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor t1, t1, t4
-; RV32IM-NEXT:    lw t4, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, t4
-; RV32IM-NEXT:    xor a1, a3, a1
-; RV32IM-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a1, t0, t1
-; RV32IM-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    srli a1, a0, 1
-; RV32IM-NEXT:    lw s4, 628(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw t4, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a6, a6, t4
+; RV32IM-NEXT:    lw t4, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t4, a0, t4
+; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a3, a0
+; RV32IM-NEXT:    xor a0, t2, a7
+; RV32IM-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a6, t1
+; RV32IM-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    srli a0, t0, 1
+; RV32IM-NEXT:    lw s4, 612(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a3, t0, s4
 ; RV32IM-NEXT:    and a0, a0, s4
-; RV32IM-NEXT:    and a1, a1, s4
-; RV32IM-NEXT:    slli a0, a0, 1
-; RV32IM-NEXT:    or a1, a1, a0
-; RV32IM-NEXT:    srli a0, a2, 1
-; RV32IM-NEXT:    and a2, a2, s4
+; RV32IM-NEXT:    slli a3, a3, 1
+; RV32IM-NEXT:    or s9, a0, a3
+; RV32IM-NEXT:    srli a0, t3, 1
+; RV32IM-NEXT:    and a3, t3, s4
 ; RV32IM-NEXT:    and a0, a0, s4
-; RV32IM-NEXT:    slli a2, a2, 1
-; RV32IM-NEXT:    or a0, a0, a2
-; RV32IM-NEXT:    srli a2, t6, 1
-; RV32IM-NEXT:    and a3, t6, s4
-; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a3, a3, 1
-; RV32IM-NEXT:    or a2, a2, a3
-; RV32IM-NEXT:    srli a3, t5, 1
-; RV32IM-NEXT:    and t0, t5, s4
+; RV32IM-NEXT:    or a0, a0, a3
+; RV32IM-NEXT:    srli a3, t6, 1
+; RV32IM-NEXT:    and a6, t6, s4
 ; RV32IM-NEXT:    and a3, a3, s4
-; RV32IM-NEXT:    slli t0, t0, 1
-; RV32IM-NEXT:    or a3, a3, t0
-; RV32IM-NEXT:    slli a6, a6, 24
-; RV32IM-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and t0, t2, t1
-; RV32IM-NEXT:    slli t0, t0, 8
-; RV32IM-NEXT:    or a6, a6, t0
-; RV32IM-NEXT:    xor a7, t2, a7
-; RV32IM-NEXT:    srli t0, t2, 8
-; RV32IM-NEXT:    and t0, t0, t1
-; RV32IM-NEXT:    srli a7, a7, 24
-; RV32IM-NEXT:    or a7, t0, a7
-; RV32IM-NEXT:    slli a4, a4, 24
-; RV32IM-NEXT:    and t0, t3, t1
-; RV32IM-NEXT:    slli t0, t0, 8
-; RV32IM-NEXT:    or a4, a4, t0
-; RV32IM-NEXT:    xor a5, t3, a5
-; RV32IM-NEXT:    srli t0, t3, 8
-; RV32IM-NEXT:    and t0, t0, t1
-; RV32IM-NEXT:    srli a5, a5, 24
-; RV32IM-NEXT:    or a5, t0, a5
-; RV32IM-NEXT:    or a6, a6, a7
-; RV32IM-NEXT:    sw a6, 608(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    or a4, a4, a5
-; RV32IM-NEXT:    sw a4, 612(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lw t0, 624(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and a4, a0, t0
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    lui t2, 1
-; RV32IM-NEXT:    and a5, a0, t2
-; RV32IM-NEXT:    mul a5, a1, a5
-; RV32IM-NEXT:    xor s0, a4, a5
-; RV32IM-NEXT:    lui t1, 64
-; RV32IM-NEXT:    and a4, a0, t1
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    lui t3, 128
-; RV32IM-NEXT:    and a5, a0, t3
-; RV32IM-NEXT:    mul a5, a1, a5
-; RV32IM-NEXT:    xor a5, a4, a5
-; RV32IM-NEXT:    lui t4, 4096
-; RV32IM-NEXT:    and a4, a0, t4
-; RV32IM-NEXT:    mul a4, a1, a4
-; RV32IM-NEXT:    lui t5, 8192
-; RV32IM-NEXT:    and a7, a0, t5
-; RV32IM-NEXT:    mul a7, a1, a7
-; RV32IM-NEXT:    xor a4, a4, a7
-; RV32IM-NEXT:    and a7, a3, t0
-; RV32IM-NEXT:    and t0, a3, t2
-; RV32IM-NEXT:    mul a7, a2, a7
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    xor a6, a7, t0
-; RV32IM-NEXT:    sw a6, 624(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, a3, t1
-; RV32IM-NEXT:    and t0, a3, t3
-; RV32IM-NEXT:    mul a7, a2, a7
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    xor a6, a7, t0
-; RV32IM-NEXT:    sw a6, 600(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and a7, a3, t4
-; RV32IM-NEXT:    and t0, a3, t5
-; RV32IM-NEXT:    mul a7, a2, a7
-; RV32IM-NEXT:    mul t0, a2, t0
-; RV32IM-NEXT:    xor a6, a7, t0
-; RV32IM-NEXT:    sw a6, 588(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 2
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 1
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 604(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 4
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 2
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 596(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 8
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 3
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 584(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 16
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 4
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 576(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 32
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 5
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 572(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 64
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 6
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 580(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 128
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 7
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 552(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 256
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 8
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 540(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 512
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    slli t0, a1, 9
-; RV32IM-NEXT:    and a6, a7, t0
-; RV32IM-NEXT:    sw a6, 556(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a7, a0, 1
-; RV32IM-NEXT:    seqz a7, a7
-; RV32IM-NEXT:    lui t6, 2
-; RV32IM-NEXT:    and t0, a0, t6
-; RV32IM-NEXT:    mul t0, a1, t0
-; RV32IM-NEXT:    lui t1, 4
-; RV32IM-NEXT:    and t1, a0, t1
-; RV32IM-NEXT:    mul a6, a1, t1
-; RV32IM-NEXT:    sw a6, 528(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t1, 8
-; RV32IM-NEXT:    and t1, a0, t1
-; RV32IM-NEXT:    mul a6, a1, t1
-; RV32IM-NEXT:    sw a6, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a6, a6, 1
+; RV32IM-NEXT:    or a3, a3, a6
+; RV32IM-NEXT:    srli a6, s1, 1
+; RV32IM-NEXT:    and a7, s1, s4
+; RV32IM-NEXT:    and a6, a6, s4
+; RV32IM-NEXT:    slli a7, a7, 1
+; RV32IM-NEXT:    or t0, a6, a7
+; RV32IM-NEXT:    slli a5, a5, 24
+; RV32IM-NEXT:    lw a7, 628(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a6, t4, a7
+; RV32IM-NEXT:    slli a6, a6, 8
+; RV32IM-NEXT:    or a5, a5, a6
+; RV32IM-NEXT:    xor a4, t4, a4
+; RV32IM-NEXT:    srli a6, t4, 8
+; RV32IM-NEXT:    and a6, a6, a7
+; RV32IM-NEXT:    srli a4, a4, 24
+; RV32IM-NEXT:    or a4, a6, a4
+; RV32IM-NEXT:    slli a2, a2, 24
+; RV32IM-NEXT:    and a6, t5, a7
+; RV32IM-NEXT:    slli a6, a6, 8
+; RV32IM-NEXT:    or a2, a2, a6
+; RV32IM-NEXT:    xor a1, t5, a1
+; RV32IM-NEXT:    srli a6, t5, 8
+; RV32IM-NEXT:    and a6, a6, a7
+; RV32IM-NEXT:    srli a1, a1, 24
+; RV32IM-NEXT:    or a1, a6, a1
+; RV32IM-NEXT:    or a4, a5, a4
+; RV32IM-NEXT:    sw a4, 592(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    or a1, a2, a1
+; RV32IM-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 2
+; RV32IM-NEXT:    and a1, a0, a5
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    lui a6, 4
+; RV32IM-NEXT:    and a2, a0, a6
+; RV32IM-NEXT:    mul a2, s9, a2
+; RV32IM-NEXT:    xor t1, a1, a2
+; RV32IM-NEXT:    lui a7, 512
+; RV32IM-NEXT:    and a1, a0, a7
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    lui t2, 1024
+; RV32IM-NEXT:    and a2, a0, t2
+; RV32IM-NEXT:    mul a4, s9, a2
+; RV32IM-NEXT:    xor a4, a1, a4
+; RV32IM-NEXT:    lui t3, 4096
+; RV32IM-NEXT:    and a1, a0, t3
+; RV32IM-NEXT:    mul a1, s9, a1
+; RV32IM-NEXT:    lui t4, 8192
+; RV32IM-NEXT:    and a2, a0, t4
+; RV32IM-NEXT:    mul a2, s9, a2
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    and a2, t0, a5
+; RV32IM-NEXT:    and a5, t0, a6
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t0, a7
+; RV32IM-NEXT:    and a5, t0, t2
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 580(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    and a2, t0, t3
+; RV32IM-NEXT:    and a5, t0, t4
+; RV32IM-NEXT:    mul a2, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    xor a2, a2, a5
+; RV32IM-NEXT:    sw a2, 576(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 2
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 1
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 568(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 4
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 2
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 560(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 8
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 3
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 552(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 16
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 4
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 540(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 32
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 5
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 528(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 64
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 6
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 128
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 7
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 584(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 256
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 8
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 512(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 512
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    slli a5, s9, 9
+; RV32IM-NEXT:    and a2, a2, a5
+; RV32IM-NEXT:    sw a2, 504(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a2, a0, 1
+; RV32IM-NEXT:    seqz a2, a2
+; RV32IM-NEXT:    lw t4, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a5, a0, t4
+; RV32IM-NEXT:    mul a5, s9, a5
+; RV32IM-NEXT:    sw a5, 548(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 1
+; RV32IM-NEXT:    and a5, a0, a5
+; RV32IM-NEXT:    mul a5, s9, a5
+; RV32IM-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a5, 8
+; RV32IM-NEXT:    and a5, a0, a5
+; RV32IM-NEXT:    mul a5, s9, a5
 ; RV32IM-NEXT:    lui a6, 16
-; RV32IM-NEXT:    and t1, a0, a6
-; RV32IM-NEXT:    mul a6, a1, t1
-; RV32IM-NEXT:    sw a6, 560(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s11, 32
-; RV32IM-NEXT:    and t1, a0, s11
-; RV32IM-NEXT:    mul a6, a1, t1
-; RV32IM-NEXT:    sw a6, 592(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s6, 256
-; RV32IM-NEXT:    and t1, a0, s6
-; RV32IM-NEXT:    mul t1, a1, t1
-; RV32IM-NEXT:    lui s9, 512
-; RV32IM-NEXT:    and t2, a0, s9
-; RV32IM-NEXT:    mul a6, a1, t2
+; RV32IM-NEXT:    and a6, a0, a6
+; RV32IM-NEXT:    mul a6, s9, a6
+; RV32IM-NEXT:    sw a6, 496(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui a6, 32
+; RV32IM-NEXT:    and a6, a0, a6
+; RV32IM-NEXT:    mul a6, s9, a6
 ; RV32IM-NEXT:    sw a6, 520(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui ra, 1024
+; RV32IM-NEXT:    lui s7, 64
+; RV32IM-NEXT:    and a6, a0, s7
+; RV32IM-NEXT:    mul a6, s9, a6
+; RV32IM-NEXT:    sw a6, 524(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s8, 128
+; RV32IM-NEXT:    and a6, a0, s8
+; RV32IM-NEXT:    mul a6, s9, a6
+; RV32IM-NEXT:    sw a6, 536(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s11, 256
+; RV32IM-NEXT:    and a6, a0, s11
+; RV32IM-NEXT:    mul a6, s9, a6
+; RV32IM-NEXT:    sw a6, 572(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t6, 2048
+; RV32IM-NEXT:    and a6, a0, t6
+; RV32IM-NEXT:    mul a6, s9, a6
+; RV32IM-NEXT:    lui a7, 16384
+; RV32IM-NEXT:    and a7, a0, a7
+; RV32IM-NEXT:    mul a7, s9, a7
+; RV32IM-NEXT:    lui t2, 32768
+; RV32IM-NEXT:    and t2, a0, t2
+; RV32IM-NEXT:    mul t2, s9, t2
+; RV32IM-NEXT:    sw t2, 488(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui ra, 65536
 ; RV32IM-NEXT:    and t2, a0, ra
-; RV32IM-NEXT:    mul a6, a1, t2
-; RV32IM-NEXT:    sw a6, 532(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s8, 2048
-; RV32IM-NEXT:    and t2, a0, s8
-; RV32IM-NEXT:    mul a6, a1, t2
-; RV32IM-NEXT:    sw a6, 544(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s7, 16384
-; RV32IM-NEXT:    and t2, a0, s7
-; RV32IM-NEXT:    mul t2, a1, t2
-; RV32IM-NEXT:    lui a6, 32768
-; RV32IM-NEXT:    and t3, a0, a6
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 512(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s5, 65536
-; RV32IM-NEXT:    and t3, a0, s5
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 524(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui s2, 131072
-; RV32IM-NEXT:    and t3, a0, s2
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 536(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    lui t4, 262144
-; RV32IM-NEXT:    and t3, a0, t4
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 564(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t2, s9, t2
+; RV32IM-NEXT:    sw t2, 500(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui s6, 131072
+; RV32IM-NEXT:    and t2, a0, s6
+; RV32IM-NEXT:    mul t2, s9, t2
+; RV32IM-NEXT:    sw t2, 508(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    lui t3, 262144
+; RV32IM-NEXT:    and t2, a0, t3
+; RV32IM-NEXT:    mul t2, s9, t2
+; RV32IM-NEXT:    sw t2, 516(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    lui t5, 524288
-; RV32IM-NEXT:    and t3, a0, t5
-; RV32IM-NEXT:    mul t3, a1, t3
-; RV32IM-NEXT:    sw t3, 568(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    addi a7, a7, -1
-; RV32IM-NEXT:    and a7, a7, a1
-; RV32IM-NEXT:    sw a7, 508(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    slli a1, a1, 10
+; RV32IM-NEXT:    and t2, a0, t5
+; RV32IM-NEXT:    mul t2, s9, t2
+; RV32IM-NEXT:    sw t2, 544(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    addi a2, a2, -1
+; RV32IM-NEXT:    and a2, a2, s9
+; RV32IM-NEXT:    sw a2, 480(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli s9, s9, 10
 ; RV32IM-NEXT:    andi a0, a0, 1024
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 516(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, s0, t0
-; RV32IM-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a5, t1
-; RV32IM-NEXT:    sw a0, 500(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    xor a0, a4, t2
-; RV32IM-NEXT:    sw a0, 496(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 2
+; RV32IM-NEXT:    and a0, a0, s9
+; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, t1, a5
+; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a4, a6
+; RV32IM-NEXT:    sw a0, 532(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    xor a0, a1, a7
+; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 2
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 1
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 492(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 4
+; RV32IM-NEXT:    slli s1, a3, 1
+; RV32IM-NEXT:    and a0, a0, s1
+; RV32IM-NEXT:    sw a0, 468(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 4
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 2
+; RV32IM-NEXT:    slli a1, a3, 2
 ; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 8
+; RV32IM-NEXT:    sw a0, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 8
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli s1, a2, 3
-; RV32IM-NEXT:    and a0, a0, s1
-; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 16
+; RV32IM-NEXT:    slli a1, a3, 3
+; RV32IM-NEXT:    and s10, a0, a1
+; RV32IM-NEXT:    andi a0, t0, 16
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 4
+; RV32IM-NEXT:    slli a1, a3, 4
 ; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 476(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 32
+; RV32IM-NEXT:    sw a0, 456(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 32
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 5
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 472(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 64
+; RV32IM-NEXT:    slli a1, a3, 5
+; RV32IM-NEXT:    and s5, a0, a1
+; RV32IM-NEXT:    andi a0, t0, 64
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli s0, a2, 6
+; RV32IM-NEXT:    slli s0, a3, 6
 ; RV32IM-NEXT:    and a0, a0, s0
-; RV32IM-NEXT:    sw a0, 480(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 128
-; RV32IM-NEXT:    seqz a0, a0
-; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 7
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 452(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 256
+; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 128
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 8
+; RV32IM-NEXT:    slli a1, a3, 7
 ; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 448(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    andi a0, a3, 512
+; RV32IM-NEXT:    sw a0, 484(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    andi a0, t0, 256
 ; RV32IM-NEXT:    seqz a0, a0
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    slli a1, a2, 9
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    sw a0, 464(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    and t6, a3, t6
-; RV32IM-NEXT:    lui a1, 4
-; RV32IM-NEXT:    and a1, a3, a1
-; RV32IM-NEXT:    lui a4, 8
-; RV32IM-NEXT:    and a4, a3, a4
-; RV32IM-NEXT:    lui a5, 16
-; RV32IM-NEXT:    and a5, a3, a5
-; RV32IM-NEXT:    and t0, a3, s11
-; RV32IM-NEXT:    and t1, a3, s6
-; RV32IM-NEXT:    and t2, a3, s9
-; RV32IM-NEXT:    and s6, a3, ra
-; RV32IM-NEXT:    and s8, a3, s8
-; RV32IM-NEXT:    and s9, a3, s7
-; RV32IM-NEXT:    and a6, a3, a6
-; RV32IM-NEXT:    and a7, a3, s5
-; RV32IM-NEXT:    and t3, a3, s2
-; RV32IM-NEXT:    and t4, a3, t4
-; RV32IM-NEXT:    and t5, a3, t5
-; RV32IM-NEXT:    andi s2, a3, 1
-; RV32IM-NEXT:    seqz a0, s2
-; RV32IM-NEXT:    mul t6, a2, t6
-; RV32IM-NEXT:    mul s1, a2, a1
-; RV32IM-NEXT:    mul s5, a2, a4
-; RV32IM-NEXT:    mul a1, a2, a5
-; RV32IM-NEXT:    sw a1, 444(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, a2, t0
-; RV32IM-NEXT:    sw a1, 468(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul t1, a2, t1
-; RV32IM-NEXT:    mul s0, a2, t2
-; RV32IM-NEXT:    mul s6, a2, s6
-; RV32IM-NEXT:    mul s11, a2, s8
-; RV32IM-NEXT:    mul s8, a2, s9
-; RV32IM-NEXT:    mul s9, a2, a6
-; RV32IM-NEXT:    mul s2, a2, a7
-; RV32IM-NEXT:    mul s7, a2, t3
-; RV32IM-NEXT:    mul a1, a2, t4
-; RV32IM-NEXT:    sw a1, 456(sp) # 4-byte Folded Spill
-; RV32IM-NEXT:    mul a1, a2, t5
-; RV32IM-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    slli a1, a3, 8
+; RV32IM-NEXT:    and s2, a0, a1
+; RV32IM-NEXT:    andi a1, t0, 512
+; RV32IM-NEXT:    seqz a1, a1
+; RV32IM-NEXT:    addi a1, a1, -1
+; RV32IM-NEXT:    slli a2, a3, 9
+; RV32IM-NEXT:    and s0, a1, a2
+; RV32IM-NEXT:    and a1, t0, t4
+; RV32IM-NEXT:    lui a0, 1
+; RV32IM-NEXT:    and a2, t0, a0
+; RV32IM-NEXT:    lui a0, 8
+; RV32IM-NEXT:    and a5, t0, a0
+; RV32IM-NEXT:    lui a0, 16
+; RV32IM-NEXT:    and t1, t0, a0
+; RV32IM-NEXT:    lui a0, 32
+; RV32IM-NEXT:    and t4, t0, a0
+; RV32IM-NEXT:    and s7, t0, s7
+; RV32IM-NEXT:    and s8, t0, s8
+; RV32IM-NEXT:    and s11, t0, s11
+; RV32IM-NEXT:    and t6, t0, t6
+; RV32IM-NEXT:    lui a0, 16384
+; RV32IM-NEXT:    and a4, t0, a0
+; RV32IM-NEXT:    lui a0, 32768
+; RV32IM-NEXT:    and a6, t0, a0
+; RV32IM-NEXT:    and a7, t0, ra
+; RV32IM-NEXT:    and t2, t0, s6
+; RV32IM-NEXT:    and t3, t0, t3
+; RV32IM-NEXT:    and t5, t0, t5
+; RV32IM-NEXT:    andi s1, t0, 1
+; RV32IM-NEXT:    seqz a0, s1
+; RV32IM-NEXT:    mul s9, a3, a1
+; RV32IM-NEXT:    mul ra, a3, a2
+; RV32IM-NEXT:    mul a5, a3, a5
+; RV32IM-NEXT:    mul t1, a3, t1
+; RV32IM-NEXT:    mul t4, a3, t4
+; RV32IM-NEXT:    mul s1, a3, s7
+; RV32IM-NEXT:    mul s7, a3, s8
+; RV32IM-NEXT:    mul a1, a3, s11
+; RV32IM-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IM-NEXT:    mul t6, a3, t6
+; RV32IM-NEXT:    mul s11, a3, a4
+; RV32IM-NEXT:    mul a6, a3, a6
+; RV32IM-NEXT:    mul a7, a3, a7
+; RV32IM-NEXT:    mul t2, a3, t2
+; RV32IM-NEXT:    mul s6, a3, t3
+; RV32IM-NEXT:    mul a1, a3, t5
+; RV32IM-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
 ; RV32IM-NEXT:    addi a0, a0, -1
-; RV32IM-NEXT:    and t0, a0, a2
-; RV32IM-NEXT:    slli a2, a2, 10
-; RV32IM-NEXT:    andi a3, a3, 1024
-; RV32IM-NEXT:    seqz a3, a3
-; RV32IM-NEXT:    addi a3, a3, -1
-; RV32IM-NEXT:    and t4, a3, a2
-; RV32IM-NEXT:    lw a0, 624(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t2, a0, t6
-; RV32IM-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t3, a0, t1
-; RV32IM-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t5, a0, s8
-; RV32IM-NEXT:    lw a0, 608(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli t6, a0, 4
-; RV32IM-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and s8, a0, a1
-; RV32IM-NEXT:    and t6, t6, a1
-; RV32IM-NEXT:    slli s8, s8, 4
-; RV32IM-NEXT:    or t6, t6, s8
-; RV32IM-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    srli s8, a0, 4
-; RV32IM-NEXT:    and a0, a0, a1
-; RV32IM-NEXT:    and s8, s8, a1
-; RV32IM-NEXT:    slli a0, a0, 4
-; RV32IM-NEXT:    or t1, s8, a0
-; RV32IM-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s8, a1, a0
-; RV32IM-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 572(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a0, a1
-; RV32IM-NEXT:    lw a0, 552(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a0, a2
-; RV32IM-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a3, 504(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a0
-; RV32IM-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a4, 500(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a0
-; RV32IM-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a5, 496(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a0
+; RV32IM-NEXT:    and a0, a0, a3
+; RV32IM-NEXT:    slli a3, a3, 10
+; RV32IM-NEXT:    andi t0, t0, 1024
+; RV32IM-NEXT:    seqz t0, t0
+; RV32IM-NEXT:    addi t0, t0, -1
+; RV32IM-NEXT:    and t0, t0, a3
+; RV32IM-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a1, a5
+; RV32IM-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s8, a1, t6
+; RV32IM-NEXT:    lw a1, 576(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t3, a1, s11
+; RV32IM-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 480(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t5, a2, a1
+; RV32IM-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, a1, a2
+; RV32IM-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s11, a1, a2
+; RV32IM-NEXT:    lw a1, 512(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    lw a2, 496(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a3, 476(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a3, a2
+; RV32IM-NEXT:    lw a3, 488(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 472(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a4, a3
+; RV32IM-NEXT:    lw a4, 468(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a0, a4
+; RV32IM-NEXT:    lw a0, 460(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s10, a0, s10
+; RV32IM-NEXT:    lw a0, 456(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s5, a0, s5
+; RV32IM-NEXT:    xor s0, s2, s0
+; RV32IM-NEXT:    xor a5, a5, t1
+; RV32IM-NEXT:    xor a6, t3, a6
+; RV32IM-NEXT:    lw t3, 592(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t1, t3, 4
+; RV32IM-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and t3, t3, a0
+; RV32IM-NEXT:    and t1, t1, a0
+; RV32IM-NEXT:    slli t3, t3, 4
+; RV32IM-NEXT:    or t1, t1, t3
+; RV32IM-NEXT:    lw s2, 596(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    srli t3, s2, 4
+; RV32IM-NEXT:    and s2, s2, a0
+; RV32IM-NEXT:    and t3, t3, a0
+; RV32IM-NEXT:    slli s2, s2, 4
+; RV32IM-NEXT:    or t3, t3, s2
+; RV32IM-NEXT:    xor t5, t5, t6
+; RV32IM-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t6, s11, a0
 ; RV32IM-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, t0, a0
-; RV32IM-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw a1, 484(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    lw a1, 476(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 472(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, s10
-; RV32IM-NEXT:    lw s10, 452(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw ra, 448(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor s10, s10, ra
-; RV32IM-NEXT:    xor t2, t2, s1
-; RV32IM-NEXT:    xor t3, t3, s0
-; RV32IM-NEXT:    xor t5, t5, s9
-; RV32IM-NEXT:    xor a6, s8, a6
-; RV32IM-NEXT:    lw s0, 580(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a7, s0
-; RV32IM-NEXT:    lw s0, 556(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, s0
-; RV32IM-NEXT:    lw s0, 548(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, s0
-; RV32IM-NEXT:    lw s0, 532(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, s0
-; RV32IM-NEXT:    lw s0, 524(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, s0
-; RV32IM-NEXT:    xor a0, t0, a0
-; RV32IM-NEXT:    lw t0, 480(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, a1, t0
-; RV32IM-NEXT:    lw t0, 464(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor t0, s10, t0
-; RV32IM-NEXT:    xor t2, t2, s5
-; RV32IM-NEXT:    xor t3, t3, s6
-; RV32IM-NEXT:    xor t5, t5, s2
+; RV32IM-NEXT:    xor a1, a1, a0
+; RV32IM-NEXT:    lw a0, 520(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a0
+; RV32IM-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, a0
+; RV32IM-NEXT:    xor a0, a4, s10
+; RV32IM-NEXT:    lw a4, 464(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor s2, s5, a4
+; RV32IM-NEXT:    xor t0, s0, t0
+; RV32IM-NEXT:    xor a5, a5, t4
 ; RV32IM-NEXT:    xor a6, a6, a7
-; RV32IM-NEXT:    lw a7, 516(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a2, a2, a7
-; RV32IM-NEXT:    lw a7, 560(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a7
-; RV32IM-NEXT:    lw a7, 544(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a4, a4, a7
-; RV32IM-NEXT:    lw a7, 536(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    xor a0, a0, a1
-; RV32IM-NEXT:    xor a1, t0, t4
-; RV32IM-NEXT:    lw a7, 444(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, t2, a7
-; RV32IM-NEXT:    xor t0, t3, s11
-; RV32IM-NEXT:    xor t2, t5, s7
-; RV32IM-NEXT:    srli t3, t6, 2
-; RV32IM-NEXT:    and t4, t6, s3
-; RV32IM-NEXT:    and t3, t3, s3
-; RV32IM-NEXT:    slli t4, t4, 2
-; RV32IM-NEXT:    or t3, t3, t4
-; RV32IM-NEXT:    srli t4, t1, 2
-; RV32IM-NEXT:    and t1, t1, s3
-; RV32IM-NEXT:    and t4, t4, s3
-; RV32IM-NEXT:    slli t1, t1, 2
-; RV32IM-NEXT:    or t1, t4, t1
-; RV32IM-NEXT:    xor a2, a6, a2
-; RV32IM-NEXT:    lw a6, 592(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a3, a3, a6
-; RV32IM-NEXT:    lw a6, 564(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a6
-; RV32IM-NEXT:    xor a6, a0, a1
-; RV32IM-NEXT:    lw a0, 468(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a0, a7, a0
-; RV32IM-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a1, t2, a1
-; RV32IM-NEXT:    lw a7, 568(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a5, a5, a7
-; RV32IM-NEXT:    lw a7, 460(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    xor a7, a1, a7
-; RV32IM-NEXT:    xor a3, a2, a3
+; RV32IM-NEXT:    xor a7, t5, t6
+; RV32IM-NEXT:    lw a4, 548(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a4
+; RV32IM-NEXT:    lw a4, 524(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a4
+; RV32IM-NEXT:    lw a4, 508(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a4
-; RV32IM-NEXT:    xor a0, a6, a0
-; RV32IM-NEXT:    xor a4, a0, t0
-; RV32IM-NEXT:    srli a0, t3, 1
-; RV32IM-NEXT:    and a1, t3, s4
+; RV32IM-NEXT:    xor a0, a0, s2
+; RV32IM-NEXT:    xor t0, t0, s9
+; RV32IM-NEXT:    xor a5, a5, s1
+; RV32IM-NEXT:    xor a6, a6, t2
+; RV32IM-NEXT:    lw a4, 584(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a7, a7, a4
+; RV32IM-NEXT:    lw a4, 556(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a1, a1, a4
+; RV32IM-NEXT:    lw a4, 536(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, a4
+; RV32IM-NEXT:    lw a4, 516(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, a4
+; RV32IM-NEXT:    lw a4, 484(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor t2, a0, a4
+; RV32IM-NEXT:    xor a0, t0, ra
+; RV32IM-NEXT:    xor a5, a5, s7
+; RV32IM-NEXT:    xor a4, a6, s6
+; RV32IM-NEXT:    srli a6, t1, 2
+; RV32IM-NEXT:    and t0, t1, s3
+; RV32IM-NEXT:    and a6, a6, s3
+; RV32IM-NEXT:    slli t0, t0, 2
+; RV32IM-NEXT:    or a6, a6, t0
+; RV32IM-NEXT:    srli t0, t3, 2
+; RV32IM-NEXT:    and t1, t3, s3
+; RV32IM-NEXT:    and t0, t0, s3
+; RV32IM-NEXT:    slli t1, t1, 2
+; RV32IM-NEXT:    or t0, t0, t1
+; RV32IM-NEXT:    lw t1, 572(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a2, t1
+; RV32IM-NEXT:    lw t1, 544(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a3, a3, t1
+; RV32IM-NEXT:    lw t1, 608(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a5, a5, t1
+; RV32IM-NEXT:    lw t1, 452(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a4, a4, t1
+; RV32IM-NEXT:    xor a1, a7, a1
+; RV32IM-NEXT:    xor a1, a1, a2
+; RV32IM-NEXT:    xor a0, t2, a0
+; RV32IM-NEXT:    xor a0, a0, a5
+; RV32IM-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    xor a2, a1, a2
+; RV32IM-NEXT:    slli a7, a7, 24
+; RV32IM-NEXT:    xor a5, a0, s8
+; RV32IM-NEXT:    srli a0, a6, 1
+; RV32IM-NEXT:    and a1, a6, s4
 ; RV32IM-NEXT:    and a0, a0, s4
 ; RV32IM-NEXT:    slli a1, a1, 1
 ; RV32IM-NEXT:    or a0, a0, a1
-; RV32IM-NEXT:    srli a1, t1, 1
-; RV32IM-NEXT:    and t0, t1, s4
-; RV32IM-NEXT:    slli a2, a2, 24
+; RV32IM-NEXT:    srli a1, t0, 1
+; RV32IM-NEXT:    and a6, t0, s4
 ; RV32IM-NEXT:    and a1, a1, s4
-; RV32IM-NEXT:    slli t0, t0, 1
-; RV32IM-NEXT:    or a1, a1, t0
-; RV32IM-NEXT:    lw t1, 644(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    and t0, a3, t1
-; RV32IM-NEXT:    slli t0, t0, 8
-; RV32IM-NEXT:    or a2, a2, t0
-; RV32IM-NEXT:    slli a6, a6, 24
-; RV32IM-NEXT:    xor a5, a3, a5
-; RV32IM-NEXT:    srli a3, a3, 8
-; RV32IM-NEXT:    and a3, a3, t1
-; RV32IM-NEXT:    srli a5, a5, 24
-; RV32IM-NEXT:    or a3, a3, a5
-; RV32IM-NEXT:    and a5, a4, t1
-; RV32IM-NEXT:    slli a5, a5, 8
-; RV32IM-NEXT:    or a5, a6, a5
-; RV32IM-NEXT:    xor a6, a4, a7
-; RV32IM-NEXT:    srli a4, a4, 8
-; RV32IM-NEXT:    and a4, a4, t1
-; RV32IM-NEXT:    srli a6, a6, 24
-; RV32IM-NEXT:    or a4, a4, a6
-; RV32IM-NEXT:    lui a6, 349525
-; RV32IM-NEXT:    addi a6, a6, 1364
+; RV32IM-NEXT:    slli a6, a6, 1
+; RV32IM-NEXT:    or a1, a1, a6
+; RV32IM-NEXT:    lw t0, 628(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    and a6, a2, t0
+; RV32IM-NEXT:    slli a6, a6, 8
+; RV32IM-NEXT:    or a6, a7, a6
+; RV32IM-NEXT:    slli t2, t2, 24
+; RV32IM-NEXT:    xor a3, a2, a3
+; RV32IM-NEXT:    srli a2, a2, 8
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    srli a3, a3, 24
 ; RV32IM-NEXT:    or a2, a2, a3
+; RV32IM-NEXT:    and a3, a5, t0
+; RV32IM-NEXT:    slli a3, a3, 8
+; RV32IM-NEXT:    or a3, t2, a3
+; RV32IM-NEXT:    xor a4, a5, a4
+; RV32IM-NEXT:    srli a5, a5, 8
+; RV32IM-NEXT:    and a5, a5, t0
+; RV32IM-NEXT:    srli a4, a4, 24
 ; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    srli a3, a2, 4
-; RV32IM-NEXT:    lw a7, 648(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lui a5, 349525
+; RV32IM-NEXT:    addi a5, a5, 1364
+; RV32IM-NEXT:    or a2, a6, a2
+; RV32IM-NEXT:    or a3, a3, a4
+; RV32IM-NEXT:    srli a4, a2, 4
+; RV32IM-NEXT:    lw a7, 632(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    and a2, a2, a7
-; RV32IM-NEXT:    srli a5, a4, 4
-; RV32IM-NEXT:    and a4, a4, a7
+; RV32IM-NEXT:    srli a6, a3, 4
 ; RV32IM-NEXT:    and a3, a3, a7
+; RV32IM-NEXT:    and a4, a4, a7
 ; RV32IM-NEXT:    slli a2, a2, 4
-; RV32IM-NEXT:    and a5, a5, a7
-; RV32IM-NEXT:    slli a4, a4, 4
-; RV32IM-NEXT:    or a2, a3, a2
-; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    srli a3, a2, 2
+; RV32IM-NEXT:    and a6, a6, a7
+; RV32IM-NEXT:    slli a3, a3, 4
+; RV32IM-NEXT:    or a2, a4, a2
+; RV32IM-NEXT:    or a3, a6, a3
+; RV32IM-NEXT:    srli a4, a2, 2
 ; RV32IM-NEXT:    and a2, a2, s3
-; RV32IM-NEXT:    srli a5, a4, 2
-; RV32IM-NEXT:    and a4, a4, s3
+; RV32IM-NEXT:    srli a6, a3, 2
 ; RV32IM-NEXT:    and a3, a3, s3
+; RV32IM-NEXT:    and a4, a4, s3
 ; RV32IM-NEXT:    slli a2, a2, 2
-; RV32IM-NEXT:    and a5, a5, s3
-; RV32IM-NEXT:    slli a4, a4, 2
-; RV32IM-NEXT:    or a2, a3, a2
-; RV32IM-NEXT:    or a4, a5, a4
-; RV32IM-NEXT:    srli a3, a2, 1
-; RV32IM-NEXT:    srli a5, a4, 1
-; RV32IM-NEXT:    and a3, a3, a6
-; RV32IM-NEXT:    and a5, a5, a6
+; RV32IM-NEXT:    and a6, a6, s3
+; RV32IM-NEXT:    slli a3, a3, 2
+; RV32IM-NEXT:    or a2, a4, a2
+; RV32IM-NEXT:    or a3, a6, a3
+; RV32IM-NEXT:    srli a4, a2, 1
+; RV32IM-NEXT:    srli a6, a3, 1
+; RV32IM-NEXT:    and a4, a4, a5
+; RV32IM-NEXT:    and a5, a6, a5
 ; RV32IM-NEXT:    and a2, a2, s4
 ; RV32IM-NEXT:    slli a2, a2, 1
-; RV32IM-NEXT:    or a2, a3, a2
-; RV32IM-NEXT:    and a3, a4, s4
+; RV32IM-NEXT:    or a2, a4, a2
+; RV32IM-NEXT:    and a3, a3, s4
 ; RV32IM-NEXT:    slli a3, a3, 1
 ; RV32IM-NEXT:    or a3, a5, a3
 ; RV32IM-NEXT:    srli a2, a2, 1
 ; RV32IM-NEXT:    srli a3, a3, 1
-; RV32IM-NEXT:    lw a4, 620(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 604(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a2, a2, a4
-; RV32IM-NEXT:    lw a4, 616(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 600(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    xor a3, a3, a4
 ; RV32IM-NEXT:    srli a4, a2, 8
 ; RV32IM-NEXT:    srli a5, a2, 24
 ; RV32IM-NEXT:    slli a6, a2, 24
-; RV32IM-NEXT:    and a2, a2, t1
-; RV32IM-NEXT:    and a4, a4, t1
+; RV32IM-NEXT:    and a2, a2, t0
+; RV32IM-NEXT:    and a4, a4, t0
 ; RV32IM-NEXT:    or a4, a4, a5
 ; RV32IM-NEXT:    srli a5, a3, 8
 ; RV32IM-NEXT:    slli a2, a2, 8
 ; RV32IM-NEXT:    or a2, a6, a2
 ; RV32IM-NEXT:    srli a6, a3, 24
-; RV32IM-NEXT:    and a5, a5, t1
+; RV32IM-NEXT:    and a5, a5, t0
 ; RV32IM-NEXT:    or a5, a5, a6
-; RV32IM-NEXT:    and a6, a3, t1
+; RV32IM-NEXT:    and a6, a3, t0
 ; RV32IM-NEXT:    slli a3, a3, 24
 ; RV32IM-NEXT:    slli a6, a6, 8
 ; RV32IM-NEXT:    or a3, a3, a6
@@ -8623,51 +8595,50 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IM-NEXT:    or a2, a4, a2
 ; RV32IM-NEXT:    slli a3, a3, 1
 ; RV32IM-NEXT:    or a3, a5, a3
-; RV32IM-NEXT:    lw a4, 636(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 620(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    sw a2, 0(a4)
 ; RV32IM-NEXT:    sw a0, 4(a4)
 ; RV32IM-NEXT:    sw a3, 8(a4)
 ; RV32IM-NEXT:    sw a1, 12(a4)
-; RV32IM-NEXT:    lw a4, 640(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw a4, 624(sp) # 4-byte Folded Reload
 ; RV32IM-NEXT:    sw a2, 0(a4)
 ; RV32IM-NEXT:    sw a0, 4(a4)
 ; RV32IM-NEXT:    sw a3, 8(a4)
 ; RV32IM-NEXT:    sw a1, 12(a4)
-; RV32IM-NEXT:    lw ra, 700(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s0, 696(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s1, 692(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s2, 688(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s3, 684(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s4, 680(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s5, 676(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s6, 672(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s7, 668(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s8, 664(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s9, 660(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s10, 656(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    lw s11, 652(sp) # 4-byte Folded Reload
-; RV32IM-NEXT:    addi sp, sp, 704
+; RV32IM-NEXT:    lw ra, 684(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s0, 680(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s1, 676(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s2, 672(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s3, 668(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s4, 664(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s5, 660(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s6, 656(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s7, 652(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s8, 648(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s9, 644(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s10, 640(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    lw s11, 636(sp) # 4-byte Folded Reload
+; RV32IM-NEXT:    addi sp, sp, 688
 ; RV32IM-NEXT:    ret
 ;
 ; RV64IM-LABEL: commutative_clmulr_v2i64:
 ; RV64IM:       # %bb.0:
-; RV64IM-NEXT:    addi sp, sp, -960
-; RV64IM-NEXT:    sd ra, 952(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s0, 944(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s1, 936(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s2, 928(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s3, 920(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s4, 912(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s5, 904(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s6, 896(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s7, 888(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s8, 880(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s9, 872(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s10, 864(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd s11, 856(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd a5, 824(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    sd a4, 816(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mv t6, a0
+; RV64IM-NEXT:    addi sp, sp, -944
+; RV64IM-NEXT:    sd ra, 936(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s0, 928(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s1, 920(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s2, 912(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s3, 904(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s4, 896(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s5, 888(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s6, 880(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s7, 872(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s8, 864(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s9, 856(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s10, 848(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s11, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a5, 800(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a4, 792(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    srli t0, a2, 24
 ; RV64IM-NEXT:    lui t5, 4080
 ; RV64IM-NEXT:    srli t1, a2, 8
@@ -8676,1004 +8647,1009 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    lui t3, 16
 ; RV64IM-NEXT:    srli s0, a2, 56
 ; RV64IM-NEXT:    srliw a6, a2, 24
-; RV64IM-NEXT:    slli a0, a2, 56
-; RV64IM-NEXT:    sd a0, 848(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui s1, 61681
-; RV64IM-NEXT:    lui s5, 209715
+; RV64IM-NEXT:    slli a4, a2, 56
+; RV64IM-NEXT:    sd a4, 832(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui s10, 61681
+; RV64IM-NEXT:    lui s11, 209715
 ; RV64IM-NEXT:    lui s2, 349525
-; RV64IM-NEXT:    srli s3, t6, 24
-; RV64IM-NEXT:    srli s4, t6, 8
-; RV64IM-NEXT:    srli a4, t6, 40
-; RV64IM-NEXT:    srli a5, t6, 56
-; RV64IM-NEXT:    srliw a7, t6, 24
-; RV64IM-NEXT:    slli a0, t6, 56
-; RV64IM-NEXT:    sd a0, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    srli s5, a0, 24
+; RV64IM-NEXT:    srli s4, a0, 8
+; RV64IM-NEXT:    srli a4, a0, 40
+; RV64IM-NEXT:    srli a5, a0, 56
+; RV64IM-NEXT:    srliw a7, a0, 24
+; RV64IM-NEXT:    slli t6, a0, 56
 ; RV64IM-NEXT:    srli s7, a3, 24
 ; RV64IM-NEXT:    srli s9, a3, 8
 ; RV64IM-NEXT:    srli s6, a3, 40
 ; RV64IM-NEXT:    srli s8, a3, 56
 ; RV64IM-NEXT:    and t0, t0, t5
-; RV64IM-NEXT:    slli t4, t4, 24
-; RV64IM-NEXT:    and t1, t1, t4
+; RV64IM-NEXT:    slli s1, t4, 24
+; RV64IM-NEXT:    and t1, t1, s1
 ; RV64IM-NEXT:    or t0, t1, t0
-; RV64IM-NEXT:    addi a0, t3, -256
-; RV64IM-NEXT:    and t1, t2, a0
-; RV64IM-NEXT:    or t1, t1, s0
-; RV64IM-NEXT:    and t2, a2, t5
+; RV64IM-NEXT:    addi s3, t3, -256
+; RV64IM-NEXT:    and t1, t2, s3
+; RV64IM-NEXT:    or t2, t1, s0
+; RV64IM-NEXT:    and t1, a2, t5
 ; RV64IM-NEXT:    slli a6, a6, 32
-; RV64IM-NEXT:    addi t3, s1, -241
-; RV64IM-NEXT:    addi s0, s5, 819
-; RV64IM-NEXT:    addi s1, s2, 1365
-; RV64IM-NEXT:    slli t2, t2, 24
-; RV64IM-NEXT:    or s5, t2, a6
+; RV64IM-NEXT:    addi t3, s10, -241
+; RV64IM-NEXT:    addi t4, s11, 819
+; RV64IM-NEXT:    addi s0, s2, 1365
+; RV64IM-NEXT:    slli t1, t1, 24
+; RV64IM-NEXT:    or t1, t1, a6
 ; RV64IM-NEXT:    slli a6, t3, 32
 ; RV64IM-NEXT:    add s10, t3, a6
+; RV64IM-NEXT:    slli a6, t4, 32
+; RV64IM-NEXT:    add ra, t4, a6
 ; RV64IM-NEXT:    slli a6, s0, 32
 ; RV64IM-NEXT:    add s11, s0, a6
-; RV64IM-NEXT:    slli a6, s1, 32
-; RV64IM-NEXT:    add ra, s1, a6
-; RV64IM-NEXT:    srliw t2, a3, 24
-; RV64IM-NEXT:    and a6, s3, t5
-; RV64IM-NEXT:    and t3, s4, t4
-; RV64IM-NEXT:    or a6, t3, a6
-; RV64IM-NEXT:    srli t3, a1, 24
-; RV64IM-NEXT:    and a4, a4, a0
+; RV64IM-NEXT:    srliw t3, a3, 24
+; RV64IM-NEXT:    and a6, s5, t5
+; RV64IM-NEXT:    and t4, s4, s1
+; RV64IM-NEXT:    or a6, t4, a6
+; RV64IM-NEXT:    srli t4, a1, 24
+; RV64IM-NEXT:    sd s3, 760(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a4, a4, s3
 ; RV64IM-NEXT:    or a5, a4, a5
-; RV64IM-NEXT:    and a4, t6, t5
+; RV64IM-NEXT:    and a4, a0, t5
 ; RV64IM-NEXT:    slli a7, a7, 32
 ; RV64IM-NEXT:    slli a4, a4, 24
 ; RV64IM-NEXT:    or a4, a4, a7
 ; RV64IM-NEXT:    srli a7, a1, 8
 ; RV64IM-NEXT:    and s0, s7, t5
-; RV64IM-NEXT:    sd t4, 808(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s1, s9, t4
-; RV64IM-NEXT:    or s1, s1, s0
+; RV64IM-NEXT:    mv s4, s1
+; RV64IM-NEXT:    sd s1, 784(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s1, s9, s1
+; RV64IM-NEXT:    or s2, s1, s0
 ; RV64IM-NEXT:    srli s0, a1, 40
-; RV64IM-NEXT:    and s2, s6, a0
-; RV64IM-NEXT:    or s3, s2, s8
-; RV64IM-NEXT:    and s2, a3, t5
-; RV64IM-NEXT:    slli t2, t2, 32
-; RV64IM-NEXT:    slli s2, s2, 24
-; RV64IM-NEXT:    or t2, s2, t2
-; RV64IM-NEXT:    srli s2, a1, 56
-; RV64IM-NEXT:    and t3, t3, t5
-; RV64IM-NEXT:    and a7, a7, t4
-; RV64IM-NEXT:    or a7, a7, t3
-; RV64IM-NEXT:    srliw t3, a1, 24
-; RV64IM-NEXT:    mv t4, a0
-; RV64IM-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, s0, a0
-; RV64IM-NEXT:    or s4, s0, s2
-; RV64IM-NEXT:    and s0, a1, t5
+; RV64IM-NEXT:    and s1, s6, s3
+; RV64IM-NEXT:    or s8, s1, s8
+; RV64IM-NEXT:    and s1, a3, t5
 ; RV64IM-NEXT:    slli t3, t3, 32
+; RV64IM-NEXT:    slli s1, s1, 24
+; RV64IM-NEXT:    or t3, s1, t3
+; RV64IM-NEXT:    srli s1, a1, 56
+; RV64IM-NEXT:    and t4, t4, t5
+; RV64IM-NEXT:    and a7, a7, s4
+; RV64IM-NEXT:    or a7, a7, t4
+; RV64IM-NEXT:    srliw t4, a1, 24
+; RV64IM-NEXT:    and s0, s0, s3
+; RV64IM-NEXT:    or s4, s0, s1
+; RV64IM-NEXT:    and s0, a1, t5
+; RV64IM-NEXT:    slli t4, t4, 32
 ; RV64IM-NEXT:    slli s0, s0, 24
-; RV64IM-NEXT:    or t3, s0, t3
+; RV64IM-NEXT:    or s5, s0, t4
 ; RV64IM-NEXT:    li s0, 1
-; RV64IM-NEXT:    or s6, t0, t1
-; RV64IM-NEXT:    lui s2, 1
-; RV64IM-NEXT:    and a2, a2, a0
+; RV64IM-NEXT:    or s6, t0, t2
+; RV64IM-NEXT:    lui t4, 2
+; RV64IM-NEXT:    and a2, a2, s3
 ; RV64IM-NEXT:    slli a2, a2, 40
-; RV64IM-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    or a2, a0, a2
-; RV64IM-NEXT:    lui t0, 64
+; RV64IM-NEXT:    ld t0, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    or a2, t0, a2
+; RV64IM-NEXT:    lui s7, 4
 ; RV64IM-NEXT:    or t5, a6, a5
-; RV64IM-NEXT:    lui t1, 128
-; RV64IM-NEXT:    and a0, t6, t4
+; RV64IM-NEXT:    lui a6, 512
+; RV64IM-NEXT:    and a0, a0, s3
 ; RV64IM-NEXT:    slli a0, a0, 40
-; RV64IM-NEXT:    ld a5, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    or a0, a5, a0
-; RV64IM-NEXT:    lui s7, 4096
-; RV64IM-NEXT:    or t6, s1, s3
-; RV64IM-NEXT:    slli a6, a3, 56
-; RV64IM-NEXT:    and a3, a3, t4
+; RV64IM-NEXT:    or a0, t6, a0
+; RV64IM-NEXT:    lui t0, 1024
+; RV64IM-NEXT:    or t6, s2, s8
+; RV64IM-NEXT:    slli a5, a3, 56
+; RV64IM-NEXT:    and a3, a3, s3
 ; RV64IM-NEXT:    slli a3, a3, 40
-; RV64IM-NEXT:    or s1, a6, a3
-; RV64IM-NEXT:    lui a6, 8192
+; RV64IM-NEXT:    or s2, a5, a3
+; RV64IM-NEXT:    lui a5, 4096
 ; RV64IM-NEXT:    or a7, a7, s4
 ; RV64IM-NEXT:    slli a3, a1, 56
-; RV64IM-NEXT:    and a1, a1, t4
+; RV64IM-NEXT:    and a1, a1, s3
 ; RV64IM-NEXT:    slli a1, a1, 40
 ; RV64IM-NEXT:    or a1, a3, a1
-; RV64IM-NEXT:    slli s8, s0, 11
-; RV64IM-NEXT:    or t4, a2, s5
-; RV64IM-NEXT:    slli a3, s0, 33
+; RV64IM-NEXT:    lui t2, 8192
+; RV64IM-NEXT:    or t1, a2, t1
+; RV64IM-NEXT:    slli a3, s0, 34
 ; RV64IM-NEXT:    or a0, a0, a4
-; RV64IM-NEXT:    slli a4, s0, 34
-; RV64IM-NEXT:    or t2, s1, t2
+; RV64IM-NEXT:    slli a4, s0, 35
+; RV64IM-NEXT:    or t3, s2, t3
 ; RV64IM-NEXT:    slli a2, s0, 40
-; RV64IM-NEXT:    or a1, a1, t3
-; RV64IM-NEXT:    or t3, t4, s6
+; RV64IM-NEXT:    or a1, a1, s5
+; RV64IM-NEXT:    or t1, t1, s6
 ; RV64IM-NEXT:    or a0, a0, t5
-; RV64IM-NEXT:    or t2, t2, t6
+; RV64IM-NEXT:    or t3, t3, t6
 ; RV64IM-NEXT:    or a1, a1, a7
-; RV64IM-NEXT:    srli a7, t3, 4
-; RV64IM-NEXT:    sd s10, 800(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t3, s10
-; RV64IM-NEXT:    srli t4, a0, 4
+; RV64IM-NEXT:    srli a7, t1, 4
+; RV64IM-NEXT:    sd s10, 776(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, t1, s10
+; RV64IM-NEXT:    srli t5, a0, 4
 ; RV64IM-NEXT:    and a0, a0, s10
-; RV64IM-NEXT:    srli t5, t2, 4
-; RV64IM-NEXT:    and t2, t2, s10
-; RV64IM-NEXT:    srli t6, a1, 4
+; RV64IM-NEXT:    srli t6, t3, 4
+; RV64IM-NEXT:    and t3, t3, s10
+; RV64IM-NEXT:    srli s2, a1, 4
 ; RV64IM-NEXT:    and a1, a1, s10
 ; RV64IM-NEXT:    and a7, a7, s10
-; RV64IM-NEXT:    slli t3, t3, 4
-; RV64IM-NEXT:    and t4, t4, s10
-; RV64IM-NEXT:    slli a0, a0, 4
+; RV64IM-NEXT:    slli t1, t1, 4
 ; RV64IM-NEXT:    and t5, t5, s10
-; RV64IM-NEXT:    slli t2, t2, 4
+; RV64IM-NEXT:    slli a0, a0, 4
 ; RV64IM-NEXT:    and t6, t6, s10
+; RV64IM-NEXT:    slli t3, t3, 4
+; RV64IM-NEXT:    and s2, s2, s10
 ; RV64IM-NEXT:    slli a1, a1, 4
-; RV64IM-NEXT:    or a7, a7, t3
-; RV64IM-NEXT:    or a0, t4, a0
-; RV64IM-NEXT:    or t2, t5, t2
-; RV64IM-NEXT:    or a1, t6, a1
+; RV64IM-NEXT:    or a7, a7, t1
+; RV64IM-NEXT:    or a0, t5, a0
+; RV64IM-NEXT:    or t1, t6, t3
+; RV64IM-NEXT:    or a1, s2, a1
 ; RV64IM-NEXT:    srli t3, a7, 2
-; RV64IM-NEXT:    sd s11, 792(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, a7, s11
-; RV64IM-NEXT:    srli t4, a0, 2
-; RV64IM-NEXT:    and a0, a0, s11
-; RV64IM-NEXT:    srli t5, t2, 2
-; RV64IM-NEXT:    and t2, t2, s11
-; RV64IM-NEXT:    srli t6, a1, 2
-; RV64IM-NEXT:    and a1, a1, s11
-; RV64IM-NEXT:    and t3, t3, s11
+; RV64IM-NEXT:    sd ra, 768(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, a7, ra
+; RV64IM-NEXT:    srli t5, a0, 2
+; RV64IM-NEXT:    and a0, a0, ra
+; RV64IM-NEXT:    srli t6, t1, 2
+; RV64IM-NEXT:    and t1, t1, ra
+; RV64IM-NEXT:    srli s2, a1, 2
+; RV64IM-NEXT:    and a1, a1, ra
+; RV64IM-NEXT:    and t3, t3, ra
 ; RV64IM-NEXT:    slli a7, a7, 2
-; RV64IM-NEXT:    and t4, t4, s11
+; RV64IM-NEXT:    and t5, t5, ra
 ; RV64IM-NEXT:    slli a0, a0, 2
-; RV64IM-NEXT:    and t5, t5, s11
-; RV64IM-NEXT:    slli t2, t2, 2
-; RV64IM-NEXT:    and t6, t6, s11
+; RV64IM-NEXT:    and t6, t6, ra
+; RV64IM-NEXT:    slli t1, t1, 2
+; RV64IM-NEXT:    and s2, s2, ra
 ; RV64IM-NEXT:    slli a1, a1, 2
 ; RV64IM-NEXT:    or a7, t3, a7
-; RV64IM-NEXT:    or a0, t4, a0
-; RV64IM-NEXT:    or t2, t5, t2
-; RV64IM-NEXT:    or a1, t6, a1
+; RV64IM-NEXT:    or a0, t5, a0
+; RV64IM-NEXT:    or t1, t6, t1
+; RV64IM-NEXT:    or a1, s2, a1
 ; RV64IM-NEXT:    srli t3, a7, 1
-; RV64IM-NEXT:    sd ra, 776(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, a7, ra
-; RV64IM-NEXT:    srli t4, a0, 1
-; RV64IM-NEXT:    and a0, a0, ra
-; RV64IM-NEXT:    srli t5, t2, 1
-; RV64IM-NEXT:    and t2, t2, ra
-; RV64IM-NEXT:    srli t6, a1, 1
-; RV64IM-NEXT:    and a1, a1, ra
-; RV64IM-NEXT:    and t3, t3, ra
+; RV64IM-NEXT:    sd s11, 752(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, a7, s11
+; RV64IM-NEXT:    srli t5, a0, 1
+; RV64IM-NEXT:    and a0, a0, s11
+; RV64IM-NEXT:    srli t6, t1, 1
+; RV64IM-NEXT:    and t1, t1, s11
+; RV64IM-NEXT:    srli s2, a1, 1
+; RV64IM-NEXT:    and a1, a1, s11
+; RV64IM-NEXT:    and t3, t3, s11
 ; RV64IM-NEXT:    slli a7, a7, 1
-; RV64IM-NEXT:    and t4, t4, ra
+; RV64IM-NEXT:    and s3, t5, s11
 ; RV64IM-NEXT:    slli a0, a0, 1
-; RV64IM-NEXT:    and s1, t5, ra
-; RV64IM-NEXT:    slli t2, t2, 1
-; RV64IM-NEXT:    and s3, t6, ra
+; RV64IM-NEXT:    and s4, t6, s11
+; RV64IM-NEXT:    slli t1, t1, 1
+; RV64IM-NEXT:    and s2, s2, s11
 ; RV64IM-NEXT:    slli a1, a1, 1
 ; RV64IM-NEXT:    or t5, t3, a7
-; RV64IM-NEXT:    or t6, t4, a0
-; RV64IM-NEXT:    or a0, s1, t2
-; RV64IM-NEXT:    or a5, s3, a1
-; RV64IM-NEXT:    and a7, t6, s8
-; RV64IM-NEXT:    and t2, t6, s2
-; RV64IM-NEXT:    and t3, t6, t0
-; RV64IM-NEXT:    and t4, t6, t1
-; RV64IM-NEXT:    and s1, t6, s7
+; RV64IM-NEXT:    or t6, s3, a0
+; RV64IM-NEXT:    or a0, s4, t1
+; RV64IM-NEXT:    or s1, s2, a1
+; RV64IM-NEXT:    and a7, t6, t4
+; RV64IM-NEXT:    and t1, t6, s7
+; RV64IM-NEXT:    and t3, t6, a6
+; RV64IM-NEXT:    and s2, t6, t0
+; RV64IM-NEXT:    and s3, t6, a5
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    mul t2, t5, t2
-; RV64IM-NEXT:    xor a1, a7, t2
-; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, a6
-; RV64IM-NEXT:    mul t2, t5, t3
-; RV64IM-NEXT:    mul t3, t5, t4
-; RV64IM-NEXT:    xor a1, t2, t3
-; RV64IM-NEXT:    sd a1, 352(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, a3
-; RV64IM-NEXT:    mul t3, t5, s1
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    xor a1, a7, t1
+; RV64IM-NEXT:    sd a1, 464(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t2
+; RV64IM-NEXT:    mul t1, t5, t3
+; RV64IM-NEXT:    mul t3, t5, s2
+; RV64IM-NEXT:    xor a1, t1, t3
+; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, t6, a3
+; RV64IM-NEXT:    mul t3, t5, s3
 ; RV64IM-NEXT:    mul a7, t5, a7
 ; RV64IM-NEXT:    xor a1, t3, a7
-; RV64IM-NEXT:    sd a1, 376(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and a7, t6, a4
-; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    mul t1, t5, t1
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    xor a1, t2, a7
-; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    xor a1, t1, a7
+; RV64IM-NEXT:    sd a1, 320(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and a7, t6, a2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    slli s3, s0, 41
-; RV64IM-NEXT:    and t2, t6, s3
-; RV64IM-NEXT:    mul t2, t5, t2
-; RV64IM-NEXT:    xor a1, a7, t2
-; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s1, s0, 48
-; RV64IM-NEXT:    and a7, t6, s1
+; RV64IM-NEXT:    slli s4, s0, 41
+; RV64IM-NEXT:    and t1, t6, s4
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    xor a1, a7, t1
+; RV64IM-NEXT:    sd a1, 720(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s3, s0, 48
+; RV64IM-NEXT:    and a7, t6, s3
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    slli s4, s0, 49
-; RV64IM-NEXT:    and t2, t6, s4
-; RV64IM-NEXT:    mul t2, t5, t2
-; RV64IM-NEXT:    xor a1, a7, t2
-; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s2, s0, 49
+; RV64IM-NEXT:    and t1, t6, s2
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    xor a1, a7, t1
+; RV64IM-NEXT:    sd a1, 712(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    slli a7, s0, 56
-; RV64IM-NEXT:    and t2, t6, a7
-; RV64IM-NEXT:    mul t2, t5, t2
-; RV64IM-NEXT:    slli t4, s0, 57
-; RV64IM-NEXT:    and t3, t6, t4
-; RV64IM-NEXT:    mul t3, t5, t3
-; RV64IM-NEXT:    xor a1, t2, t3
-; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, a5, s8
-; RV64IM-NEXT:    and t3, a5, s2
-; RV64IM-NEXT:    mul t2, a0, t2
+; RV64IM-NEXT:    and t1, t6, a7
+; RV64IM-NEXT:    mul t3, t5, t1
+; RV64IM-NEXT:    slli t1, s0, 57
+; RV64IM-NEXT:    and s5, t6, t1
+; RV64IM-NEXT:    mul s5, t5, s5
+; RV64IM-NEXT:    xor a1, t3, s5
+; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, s1, t4
+; RV64IM-NEXT:    and a1, s1, s7
 ; RV64IM-NEXT:    mul t3, a0, t3
-; RV64IM-NEXT:    xor a1, t2, t3
-; RV64IM-NEXT:    sd a1, 768(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t0, a5, t0
-; RV64IM-NEXT:    and t1, a5, t1
+; RV64IM-NEXT:    mul t4, a0, a1
+; RV64IM-NEXT:    xor a1, t3, t4
+; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a6, s1, a6
+; RV64IM-NEXT:    and t0, s1, t0
+; RV64IM-NEXT:    mul a6, a0, a6
 ; RV64IM-NEXT:    mul t0, a0, t0
-; RV64IM-NEXT:    mul t1, a0, t1
-; RV64IM-NEXT:    xor a1, t0, t1
-; RV64IM-NEXT:    sd a1, 760(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, s7
-; RV64IM-NEXT:    and a6, a5, a6
-; RV64IM-NEXT:    mul a1, a0, a1
+; RV64IM-NEXT:    xor a1, a6, t0
+; RV64IM-NEXT:    sd a1, 736(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a5, s1, a5
+; RV64IM-NEXT:    and a6, s1, t2
+; RV64IM-NEXT:    mul a5, a0, a5
 ; RV64IM-NEXT:    mul a6, a0, a6
-; RV64IM-NEXT:    xor a1, a1, a6
-; RV64IM-NEXT:    sd a1, 752(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a3, a5, a3
-; RV64IM-NEXT:    and a4, a5, a4
+; RV64IM-NEXT:    xor a1, a5, a6
+; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a3, s1, a3
+; RV64IM-NEXT:    and a4, s1, a4
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    mul a4, a0, a4
 ; RV64IM-NEXT:    xor a3, a3, a4
-; RV64IM-NEXT:    sd a3, 736(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a2, a5, a2
-; RV64IM-NEXT:    and a3, a5, s3
+; RV64IM-NEXT:    sd a3, 704(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, a2
+; RV64IM-NEXT:    and a3, s1, s4
 ; RV64IM-NEXT:    mul a2, a0, a2
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    xor a2, a2, a3
-; RV64IM-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s1, a5, s1
-; RV64IM-NEXT:    and a2, a5, s4
-; RV64IM-NEXT:    mul a3, a0, s1
+; RV64IM-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, s3
+; RV64IM-NEXT:    and a3, s1, s2
 ; RV64IM-NEXT:    mul a2, a0, a2
-; RV64IM-NEXT:    xor a2, a3, a2
-; RV64IM-NEXT:    sd a2, 712(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a2, a5, a7
-; RV64IM-NEXT:    and a3, a5, t4
+; RV64IM-NEXT:    mul a3, a0, a3
+; RV64IM-NEXT:    xor a2, a2, a3
+; RV64IM-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, s1, a7
+; RV64IM-NEXT:    and a3, s1, t1
 ; RV64IM-NEXT:    mul a2, a0, a2
 ; RV64IM-NEXT:    mul a3, a0, a3
 ; RV64IM-NEXT:    xor a2, a2, a3
-; RV64IM-NEXT:    sd a2, 704(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 2
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 1
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 696(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 4
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 2
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 8
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 3
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 672(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 16
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 4
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 664(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 32
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 5
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 624(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 64
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 6
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 688(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 648(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 128
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 7
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 632(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 680(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 256
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 8
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 616(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 592(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 512
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, t5, 9
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 656(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t3, s0, 31
-; RV64IM-NEXT:    sd t3, 240(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s10, s0, 32
-; RV64IM-NEXT:    sd s10, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a7, s0, 35
-; RV64IM-NEXT:    sd a7, 224(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s3, s0, 36
-; RV64IM-NEXT:    slli s4, s0, 37
-; RV64IM-NEXT:    slli s5, s0, 38
-; RV64IM-NEXT:    slli s6, s0, 39
-; RV64IM-NEXT:    slli s7, s0, 42
-; RV64IM-NEXT:    slli s8, s0, 43
-; RV64IM-NEXT:    slli a1, s0, 44
-; RV64IM-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a3, s0, 45
-; RV64IM-NEXT:    slli a4, s0, 46
+; RV64IM-NEXT:    sd a2, 560(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a7, s0, 11
+; RV64IM-NEXT:    sd a7, 256(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a3, s0, 31
+; RV64IM-NEXT:    sd a3, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a4, s0, 32
 ; RV64IM-NEXT:    sd a4, 208(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t0, s0, 47
-; RV64IM-NEXT:    sd t0, 200(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t1, s0, 50
-; RV64IM-NEXT:    sd t1, 192(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t4, s0, 51
-; RV64IM-NEXT:    sd t4, 184(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 52
-; RV64IM-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 53
-; RV64IM-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s1, s0, 54
-; RV64IM-NEXT:    sd s1, 168(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s2, s0, 55
-; RV64IM-NEXT:    sd s2, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli a2, s0, 58
-; RV64IM-NEXT:    sd a2, 832(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s9, s0, 59
-; RV64IM-NEXT:    sd s9, 160(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli s11, s0, 60
-; RV64IM-NEXT:    sd s11, 176(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli ra, s0, 61
+; RV64IM-NEXT:    slli s3, s0, 33
+; RV64IM-NEXT:    sd s3, 200(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t0, s0, 36
+; RV64IM-NEXT:    sd t0, 192(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t1, s0, 37
+; RV64IM-NEXT:    slli s5, s0, 38
+; RV64IM-NEXT:    sd s5, 176(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a5, s0, 39
+; RV64IM-NEXT:    slli s8, s0, 42
+; RV64IM-NEXT:    sd s8, 168(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a6, s0, 43
+; RV64IM-NEXT:    sd a6, 160(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t2, s0, 44
+; RV64IM-NEXT:    slli t4, s0, 45
+; RV64IM-NEXT:    sd t4, 152(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s2, s0, 46
+; RV64IM-NEXT:    sd s2, 144(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s4, s0, 47
+; RV64IM-NEXT:    sd s4, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s6, s0, 50
+; RV64IM-NEXT:    sd s6, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 51
+; RV64IM-NEXT:    sd a1, 808(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 52
+; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s7, s0, 53
+; RV64IM-NEXT:    sd s7, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s9, s0, 54
+; RV64IM-NEXT:    sd s9, 104(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s10, s0, 55
+; RV64IM-NEXT:    sd s10, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 58
+; RV64IM-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli s11, s0, 59
+; RV64IM-NEXT:    sd s11, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli ra, s0, 60
+; RV64IM-NEXT:    sd ra, 112(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli a1, s0, 61
+; RV64IM-NEXT:    sd a1, 816(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    slli s0, s0, 62
-; RV64IM-NEXT:    sd s0, 848(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd s0, 832(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    li a2, -1
 ; RV64IM-NEXT:    slli a2, a2, 63
-; RV64IM-NEXT:    sd a2, 840(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 824(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    andi a2, t6, 1
-; RV64IM-NEXT:    seqz a2, a2
-; RV64IM-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 2
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    seqz a1, a2
+; RV64IM-NEXT:    sd a1, 304(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a2, t6, a7
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 584(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 1
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 616(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 8
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 288(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 16
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 4
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    sd a2, 504(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 32
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 528(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 8
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 64
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a2, t5, a2
+; RV64IM-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 128
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 576(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 16
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 256
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
 ; RV64IM-NEXT:    sd a2, 608(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 32
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 640(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 256
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 512
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 480(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 1024
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 544(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 2048
-; RV64IM-NEXT:    and a2, t6, a2
-; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    sd a2, 584(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a2, 16384
-; RV64IM-NEXT:    and a2, t6, a2
+; RV64IM-NEXT:    lui a1, 2048
+; RV64IM-NEXT:    and a2, t6, a1
+; RV64IM-NEXT:    mul a1, t5, a2
+; RV64IM-NEXT:    sd a1, 280(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 16384
+; RV64IM-NEXT:    and a2, t6, a1
 ; RV64IM-NEXT:    mul a2, t5, a2
-; RV64IM-NEXT:    lui a6, 32768
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 448(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 65536
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 504(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 131072
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 568(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a6, 262144
-; RV64IM-NEXT:    and t2, t6, a6
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 592(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, t3
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 600(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, s10
-; RV64IM-NEXT:    mul a6, t5, t2
-; RV64IM-NEXT:    sd a6, 624(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t2, t6, a7
-; RV64IM-NEXT:    mul t2, t5, t2
+; RV64IM-NEXT:    lui a1, 32768
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 432(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 65536
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 480(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 131072
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 520(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 262144
+; RV64IM-NEXT:    and t3, t6, a1
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 536(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, a3
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 552(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, a4
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 568(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and t3, t6, s3
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 416(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s4
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 464(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s5
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 512(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s6
-; RV64IM-NEXT:    mul a6, t5, t3
-; RV64IM-NEXT:    sd a6, 560(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and t3, t6, s7
+; RV64IM-NEXT:    mul a7, t5, t3
+; RV64IM-NEXT:    sd a7, 600(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t3, t6, t0
 ; RV64IM-NEXT:    mul t3, t5, t3
-; RV64IM-NEXT:    and s0, t6, s8
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 400(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, a1
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 432(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, a3
-; RV64IM-NEXT:    mv s10, a3
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 472(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, a4
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 536(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s0, t6, t0
-; RV64IM-NEXT:    mul a6, t5, s0
-; RV64IM-NEXT:    sd a6, 552(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    and s0, t6, t1
+; RV64IM-NEXT:    mv s3, t1
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 384(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, s5
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 424(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, a5
+; RV64IM-NEXT:    mv s5, a5
+; RV64IM-NEXT:    mul a7, t5, s0
+; RV64IM-NEXT:    sd a7, 472(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s0, t6, s8
 ; RV64IM-NEXT:    mul s0, t5, s0
-; RV64IM-NEXT:    and a6, t6, t4
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 368(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld t1, 136(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, t1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 408(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld t0, 144(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, t0
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 440(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a6, t6, s1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 496(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a6, t6, s2
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    sd a6, 520(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, t6, a1
-; RV64IM-NEXT:    mul a6, t5, a6
-; RV64IM-NEXT:    and a7, t6, s9
-; RV64IM-NEXT:    mul a1, t5, a7
-; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, s11
+; RV64IM-NEXT:    and a7, t6, a6
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 392(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a7, t6, ra
-; RV64IM-NEXT:    mv s9, ra
+; RV64IM-NEXT:    sd a7, 368(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t2
+; RV64IM-NEXT:    mv s8, t2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 424(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a7, t6, a1
+; RV64IM-NEXT:    sd a7, 400(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, t4
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 456(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a7, t6, a1
+; RV64IM-NEXT:    sd a7, 440(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s2
 ; RV64IM-NEXT:    mul a7, t5, a7
-; RV64IM-NEXT:    sd a7, 488(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a4, 384(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and a1, a4, t5
-; RV64IM-NEXT:    sd a1, 320(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    slli t5, t5, 10
-; RV64IM-NEXT:    andi a4, t6, 1024
-; RV64IM-NEXT:    seqz a4, a4
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and a4, a4, t5
-; RV64IM-NEXT:    sd a4, 384(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a4, 360(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 312(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a4, a1
-; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 352(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a3, 304(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a3
+; RV64IM-NEXT:    sd a7, 496(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s4
+; RV64IM-NEXT:    mul a7, t5, a7
+; RV64IM-NEXT:    sd a7, 512(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a7, t6, s6
+; RV64IM-NEXT:    mul a7, t5, a7
+; RV64IM-NEXT:    ld a1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, a1
+; RV64IM-NEXT:    mul a1, t5, t0
 ; RV64IM-NEXT:    sd a1, 352(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 376(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a2
-; RV64IM-NEXT:    sd a1, 376(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, t2
+; RV64IM-NEXT:    ld t2, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, t2
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 376(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s7
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 408(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s9
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 456(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t0, t6, s10
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    sd t0, 488(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a6, 80(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, t6, a6
+; RV64IM-NEXT:    mul t0, t5, t0
+; RV64IM-NEXT:    and t1, t6, s11
+; RV64IM-NEXT:    mul a1, t5, t1
+; RV64IM-NEXT:    sd a1, 312(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, t6, ra
+; RV64IM-NEXT:    mul a1, t5, t1
+; RV64IM-NEXT:    sd a1, 360(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a1
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 392(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a3
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 416(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t1, t6, a3
+; RV64IM-NEXT:    mul t1, t5, t1
+; RV64IM-NEXT:    sd t1, 448(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a5, 304(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    addi a5, a5, -1
+; RV64IM-NEXT:    and a1, a5, t5
+; RV64IM-NEXT:    sd a1, 296(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    slli t5, t5, 10
+; RV64IM-NEXT:    andi a5, t6, 1024
+; RV64IM-NEXT:    seqz a5, a5
+; RV64IM-NEXT:    addi a5, a5, -1
+; RV64IM-NEXT:    and a1, a5, t5
+; RV64IM-NEXT:    sd a1, 304(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a5, 464(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a5, a1
+; RV64IM-NEXT:    sd a1, 288(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a4, 336(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a3, 280(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a4, a3
+; RV64IM-NEXT:    sd a3, 464(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a3, 328(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a3, a2
+; RV64IM-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 320(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, t3
+; RV64IM-NEXT:    sd a1, 328(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 720(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s0
+; RV64IM-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 712(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, a7
+; RV64IM-NEXT:    sd a1, 712(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a2, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a2, t0
 ; RV64IM-NEXT:    sd a1, 344(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, t3
-; RV64IM-NEXT:    sd a1, 336(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 744(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, s0
-; RV64IM-NEXT:    sd a1, 744(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 728(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, a6
-; RV64IM-NEXT:    sd a1, 728(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 2
+; RV64IM-NEXT:    andi a2, s1, 2
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 1
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 4
+; RV64IM-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 4
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 2
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 8
+; RV64IM-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 8
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 3
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 16
+; RV64IM-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 16
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 4
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 32
+; RV64IM-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 32
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 5
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 64
+; RV64IM-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 64
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 6
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 128
+; RV64IM-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 128
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 7
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 256
+; RV64IM-NEXT:    sd a2, 720(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 256
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 8
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    andi a2, a5, 512
+; RV64IM-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    andi a2, s1, 512
 ; RV64IM-NEXT:    seqz a2, a2
 ; RV64IM-NEXT:    addi a2, a2, -1
 ; RV64IM-NEXT:    slli a3, a0, 9
 ; RV64IM-NEXT:    and a2, a2, a3
-; RV64IM-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a1, 2
-; RV64IM-NEXT:    and a7, a5, a1
-; RV64IM-NEXT:    lui a1, 4
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a4, s1, a1
+; RV64IM-NEXT:    lui a1, 1
+; RV64IM-NEXT:    and a5, s1, a1
 ; RV64IM-NEXT:    lui a1, 8
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t1, s1, a1
 ; RV64IM-NEXT:    lui a1, 16
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 112(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 256(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 32
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 104(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a3, 256
-; RV64IM-NEXT:    and a3, a5, a3
-; RV64IM-NEXT:    lui s1, 512
-; RV64IM-NEXT:    and s1, a5, s1
-; RV64IM-NEXT:    lui a1, 1024
-; RV64IM-NEXT:    and t6, a5, a1
-; RV64IM-NEXT:    lui a2, 2048
-; RV64IM-NEXT:    and a2, a5, a2
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 64
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a1, 128
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    lui a2, 256
+; RV64IM-NEXT:    and a2, s1, a2
+; RV64IM-NEXT:    lui s0, 2048
+; RV64IM-NEXT:    and s0, s1, s0
 ; RV64IM-NEXT:    lui a1, 16384
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 32768
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    lui a1, 65536
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    lui a1, 131072
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 56(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and t4, s1, a1
+; RV64IM-NEXT:    lui a3, 131072
+; RV64IM-NEXT:    and a3, s1, a3
 ; RV64IM-NEXT:    lui a1, 262144
-; RV64IM-NEXT:    and t4, a5, a1
-; RV64IM-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and ra, a5, a1
-; RV64IM-NEXT:    ld s0, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s0, a5, s0
-; RV64IM-NEXT:    ld a1, 224(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s2, a5, a1
-; RV64IM-NEXT:    and s3, a5, s3
-; RV64IM-NEXT:    and s4, a5, s4
-; RV64IM-NEXT:    and s5, a5, s5
-; RV64IM-NEXT:    and s6, a5, s6
-; RV64IM-NEXT:    and s7, a5, s7
-; RV64IM-NEXT:    and s8, a5, s8
+; RV64IM-NEXT:    and t6, s1, a1
 ; RV64IM-NEXT:    ld a1, 216(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and s10, a5, s10
+; RV64IM-NEXT:    and s11, s1, a1
 ; RV64IM-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and s11, a5, a1
+; RV64IM-NEXT:    and ra, s1, a1
 ; RV64IM-NEXT:    ld a1, 200(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 184(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, t1
-; RV64IM-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    and a1, a5, t0
-; RV64IM-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s2, s1, a1
+; RV64IM-NEXT:    and s3, s1, s3
+; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s4, s1, a1
+; RV64IM-NEXT:    and s5, s1, s5
 ; RV64IM-NEXT:    ld a1, 168(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
-; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and s6, s1, a1
+; RV64IM-NEXT:    ld a1, 160(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s7, s1, a1
+; RV64IM-NEXT:    and s8, s1, s8
 ; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
+; RV64IM-NEXT:    and s9, s1, a1
+; RV64IM-NEXT:    ld a1, 144(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and s10, s1, a1
+; RV64IM-NEXT:    ld a1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 176(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 128(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
 ; RV64IM-NEXT:    sd a1, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a1, a5, a1
+; RV64IM-NEXT:    ld a1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, t2
+; RV64IM-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 104(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
 ; RV64IM-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 160(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t3, a5, a1
-; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t0, a5, a1
-; RV64IM-NEXT:    and t5, a5, s9
-; RV64IM-NEXT:    ld a1, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and t2, a5, a1
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a6, a5, a1
-; RV64IM-NEXT:    andi a1, a5, 1
-; RV64IM-NEXT:    seqz a4, a1
-; RV64IM-NEXT:    mul t1, a0, a7
-; RV64IM-NEXT:    ld a1, 128(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
+; RV64IM-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a1, s1, a1
+; RV64IM-NEXT:    sd a1, 0(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    and a1, s1, a6
 ; RV64IM-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 144(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t5, s1, a1
 ; RV64IM-NEXT:    ld a1, 112(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t3, s1, a1
+; RV64IM-NEXT:    ld a1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t2, s1, a1
+; RV64IM-NEXT:    ld a1, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and t0, s1, a1
+; RV64IM-NEXT:    ld a1, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a7, s1, a1
+; RV64IM-NEXT:    andi a1, s1, 1
+; RV64IM-NEXT:    seqz a6, a1
+; RV64IM-NEXT:    mul a1, a0, a4
+; RV64IM-NEXT:    sd a1, 192(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a5
+; RV64IM-NEXT:    sd a1, 808(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul t1, a0, t1
+; RV64IM-NEXT:    ld a1, 256(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 224(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 104(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 56(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 64(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 840(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a7, a0, a3
-; RV64IM-NEXT:    mul a1, a0, s1
-; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, t6
-; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, a2
-; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 96(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a3, a0, a1
-; RV64IM-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 112(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 48(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 112(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 56(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a2
+; RV64IM-NEXT:    sd a1, 816(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a5, a0, s0
+; RV64IM-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a4, a0, a1
+; RV64IM-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 184(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 48(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, t4
-; RV64IM-NEXT:    sd a1, 240(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, a3
+; RV64IM-NEXT:    sd a1, 144(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, t6
+; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s11
+; RV64IM-NEXT:    sd a1, 256(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, ra
+; RV64IM-NEXT:    sd a1, 824(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 200(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul a1, a0, a1
 ; RV64IM-NEXT:    sd a1, 832(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s0
-; RV64IM-NEXT:    sd a1, 848(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul t4, a0, s2
-; RV64IM-NEXT:    mul ra, a0, s3
+; RV64IM-NEXT:    mul ra, a0, s2
+; RV64IM-NEXT:    mul s11, a0, s3
 ; RV64IM-NEXT:    mul a1, a0, s4
-; RV64IM-NEXT:    sd a1, 96(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, s5
-; RV64IM-NEXT:    sd a1, 160(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s6
-; RV64IM-NEXT:    sd a1, 216(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    sd a1, 128(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a3, a0, s6
 ; RV64IM-NEXT:    mul s7, a0, s7
-; RV64IM-NEXT:    mul s9, a0, s8
-; RV64IM-NEXT:    ld a1, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s8
+; RV64IM-NEXT:    sd a1, 64(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a1, a0, s9
+; RV64IM-NEXT:    sd a1, 104(sp) # 8-byte Folded Spill
 ; RV64IM-NEXT:    mul a1, a0, s10
-; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a1, a0, s11
-; RV64IM-NEXT:    sd a1, 192(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 160(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 176(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 232(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 200(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a2, a0, a1
-; RV64IM-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul s8, a0, a1
-; RV64IM-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 72(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul s6, a0, a1
 ; RV64IM-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    mul s9, a0, a1
+; RV64IM-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 168(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 136(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 0(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    sd a1, 176(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a1, 80(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    mul a1, a0, a1
-; RV64IM-NEXT:    mul s6, a0, t3
-; RV64IM-NEXT:    mul s10, a0, t0
-; RV64IM-NEXT:    mul t0, a0, t5
-; RV64IM-NEXT:    sd t0, 104(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul t0, a0, t2
-; RV64IM-NEXT:    sd t0, 152(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    mul a6, a0, a6
-; RV64IM-NEXT:    sd a6, 176(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    addi a4, a4, -1
-; RV64IM-NEXT:    and s2, a4, a0
+; RV64IM-NEXT:    mul s4, a0, t5
+; RV64IM-NEXT:    mul s8, a0, t3
+; RV64IM-NEXT:    mul t2, a0, t2
+; RV64IM-NEXT:    sd t2, 80(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul t0, a0, t0
+; RV64IM-NEXT:    sd t0, 120(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    mul a7, a0, a7
+; RV64IM-NEXT:    sd a7, 152(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    addi a6, a6, -1
+; RV64IM-NEXT:    and s0, a6, a0
 ; RV64IM-NEXT:    slli a0, a0, 10
-; RV64IM-NEXT:    andi a5, a5, 1024
-; RV64IM-NEXT:    seqz a5, a5
-; RV64IM-NEXT:    addi a5, a5, -1
-; RV64IM-NEXT:    and a0, a5, a0
-; RV64IM-NEXT:    sd a0, 56(sp) # 8-byte Folded Spill
-; RV64IM-NEXT:    ld a0, 768(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, a0, t1
-; RV64IM-NEXT:    ld a0, 760(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, a0, a7
-; RV64IM-NEXT:    ld s0, 752(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, a3
+; RV64IM-NEXT:    andi s1, s1, 1024
+; RV64IM-NEXT:    seqz s1, s1
+; RV64IM-NEXT:    addi s1, s1, -1
+; RV64IM-NEXT:    and s5, s1, a0
+; RV64IM-NEXT:    ld a0, 744(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s3, a0, t1
 ; RV64IM-NEXT:    ld a0, 736(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, a0, t4
-; RV64IM-NEXT:    ld a0, 720(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s5, a0, s7
-; RV64IM-NEXT:    ld a0, 712(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, a0, a2
+; RV64IM-NEXT:    xor a0, a0, a5
+; RV64IM-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
+; RV64IM-NEXT:    ld a0, 728(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, a0, a4
 ; RV64IM-NEXT:    ld a0, 704(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s3, a0, a1
+; RV64IM-NEXT:    xor s1, a0, ra
 ; RV64IM-NEXT:    ld a0, 696(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s7, a1, a0
-; RV64IM-NEXT:    ld a0, 680(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 672(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t2, a0, a1
+; RV64IM-NEXT:    xor t5, a0, a3
+; RV64IM-NEXT:    ld a0, 688(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, a0, a2
+; RV64IM-NEXT:    ld a0, 672(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s2, a0, a1
 ; RV64IM-NEXT:    ld a0, 664(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 648(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, a0, a1
+; RV64IM-NEXT:    ld a1, 296(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor ra, a1, a0
+; RV64IM-NEXT:    ld a0, 656(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 640(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t1, a0, a1
 ; RV64IM-NEXT:    ld a0, 632(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 616(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, a0, a1
-; RV64IM-NEXT:    ld a0, 528(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a3, 360(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 624(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, a0, a1
+; RV64IM-NEXT:    ld a0, 592(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 560(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, a0, a1
+; RV64IM-NEXT:    ld a0, 504(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a3, 288(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a3, a3, a0
-; RV64IM-NEXT:    ld a0, 480(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a4, 352(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 432(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 336(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a4, a4, a0
-; RV64IM-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a5, 376(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 384(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a5, 328(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a5, a5, a0
-; RV64IM-NEXT:    ld a0, 416(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 368(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 320(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a6, a1, a0
-; RV64IM-NEXT:    ld a0, 400(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a0, 352(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 712(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a1, a0
-; RV64IM-NEXT:    ld a0, 368(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 744(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, a1, a0
-; RV64IM-NEXT:    ld a0, 328(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 728(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, a1, a0
 ; RV64IM-NEXT:    ld a0, 312(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s2, a0
-; RV64IM-NEXT:    ld a0, 296(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 344(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, a1, a0
+; RV64IM-NEXT:    ld a0, 280(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s0, a0
+; RV64IM-NEXT:    ld a0, 272(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 248(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 280(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 232(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a1, a1, a2
-; RV64IM-NEXT:    ld a2, 256(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s11, 248(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, s11
-; RV64IM-NEXT:    ld s11, 80(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, s4, s11
-; RV64IM-NEXT:    ld s11, 64(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s11
-; RV64IM-NEXT:    ld s11, 48(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, s11
-; RV64IM-NEXT:    xor s1, s1, ra
-; RV64IM-NEXT:    xor s5, s5, s9
-; RV64IM-NEXT:    xor t5, t5, s8
-; RV64IM-NEXT:    xor s3, s3, s6
-; RV64IM-NEXT:    xor t2, s7, t2
-; RV64IM-NEXT:    ld s6, 688(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, t3, s6
-; RV64IM-NEXT:    ld s6, 656(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, t4, s6
-; RV64IM-NEXT:    ld s6, 576(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a3, a3, s6
-; RV64IM-NEXT:    ld s6, 544(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a4, s6
-; RV64IM-NEXT:    ld s6, 504(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, s6
-; RV64IM-NEXT:    ld s6, 464(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a6, a6, s6
-; RV64IM-NEXT:    ld s6, 432(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a7, a7, s6
-; RV64IM-NEXT:    ld s6, 408(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, t0, s6
-; RV64IM-NEXT:    ld s6, 392(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, s6
-; RV64IM-NEXT:    xor a0, s2, a0
-; RV64IM-NEXT:    ld s2, 304(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a1, s2
-; RV64IM-NEXT:    ld s2, 272(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, s2
-; RV64IM-NEXT:    ld s2, 144(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s4, s2
-; RV64IM-NEXT:    ld s4, 128(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s4
-; RV64IM-NEXT:    ld s4, 112(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s0, s4
-; RV64IM-NEXT:    ld s4, 96(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, s1, s4
-; RV64IM-NEXT:    ld s4, 88(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s4, s5, s4
-; RV64IM-NEXT:    ld s5, 72(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, t5, s5
-; RV64IM-NEXT:    xor s3, s3, s10
-; RV64IM-NEXT:    xor t2, t2, t3
-; RV64IM-NEXT:    ld t3, 384(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, t4, t3
-; RV64IM-NEXT:    ld t4, 608(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a3, a3, t4
-; RV64IM-NEXT:    ld t4, 584(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a4, t4
-; RV64IM-NEXT:    ld t4, 568(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, t4
-; RV64IM-NEXT:    ld t4, 512(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a6, a6, t4
-; RV64IM-NEXT:    ld t4, 472(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a7, a7, t4
-; RV64IM-NEXT:    ld t4, 440(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t0, t0, t4
-; RV64IM-NEXT:    ld t4, 424(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, t4
-; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 56(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a1, a2, a1
 ; RV64IM-NEXT:    ld a2, 224(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, s2, a2
-; RV64IM-NEXT:    ld t4, 200(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t4, t6, t4
-; RV64IM-NEXT:    ld t6, 184(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, s0, t6
-; RV64IM-NEXT:    ld s0, 160(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s0, s1, s0
-; RV64IM-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s1, s4, s1
-; RV64IM-NEXT:    ld s2, 120(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t5, t5, s2
-; RV64IM-NEXT:    ld s2, 104(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor s2, s3, s2
-; RV64IM-NEXT:    xor t2, t2, t3
-; RV64IM-NEXT:    ld t3, 640(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s10, 184(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s10
+; RV64IM-NEXT:    ld s10, 56(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s3, s3, s10
+; RV64IM-NEXT:    ld s10, 48(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, t6, s10
+; RV64IM-NEXT:    xor s1, s1, s11
+; RV64IM-NEXT:    xor t5, t5, s7
+; RV64IM-NEXT:    xor t4, t4, s6
+; RV64IM-NEXT:    xor s2, s2, s4
+; RV64IM-NEXT:    xor t1, ra, t1
+; RV64IM-NEXT:    ld s4, 648(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t2, s4
+; RV64IM-NEXT:    ld s4, 304(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s4
+; RV64IM-NEXT:    ld s4, 528(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s4
+; RV64IM-NEXT:    ld s4, 480(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s4
+; RV64IM-NEXT:    ld s4, 424(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a5, a5, s4
+; RV64IM-NEXT:    ld s4, 400(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s4
+; RV64IM-NEXT:    ld s4, 376(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a7, a7, s4
+; RV64IM-NEXT:    ld s4, 360(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, t0, s4
+; RV64IM-NEXT:    xor a0, s0, a0
+; RV64IM-NEXT:    ld s0, 264(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, s0
+; RV64IM-NEXT:    xor a2, a2, s5
+; RV64IM-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s3, s0
+; RV64IM-NEXT:    ld s3, 96(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t6, t6, s3
+; RV64IM-NEXT:    ld s3, 72(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s1, s1, s3
+; RV64IM-NEXT:    ld s3, 64(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t5, t5, s3
+; RV64IM-NEXT:    xor t4, t4, s9
+; RV64IM-NEXT:    xor s2, s2, s8
+; RV64IM-NEXT:    xor t1, t1, t2
+; RV64IM-NEXT:    ld t2, 584(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t3, t2
+; RV64IM-NEXT:    ld t3, 544(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a3, a3, t3
-; RV64IM-NEXT:    ld t3, 592(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 520(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t3
+; RV64IM-NEXT:    ld t3, 472(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a5, a5, t3
-; RV64IM-NEXT:    ld t3, 560(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 440(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a6, a6, t3
-; RV64IM-NEXT:    ld t3, 536(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 408(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a7, t3
-; RV64IM-NEXT:    ld t3, 496(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld t3, 392(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t0, t0, t3
-; RV64IM-NEXT:    ld t3, 456(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, t3
 ; RV64IM-NEXT:    xor a0, a0, a1
-; RV64IM-NEXT:    ld a1, 840(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a1, 192(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a1, a2, a1
-; RV64IM-NEXT:    ld a2, 240(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, t6, a2
-; RV64IM-NEXT:    ld t3, 216(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t3, s0, t3
-; RV64IM-NEXT:    ld t6, 192(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, s0, a2
+; RV64IM-NEXT:    ld t3, 144(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t6, t3
+; RV64IM-NEXT:    ld t6, 128(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t6, s1, t6
-; RV64IM-NEXT:    ld s0, 168(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 104(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t5, t5, s0
-; RV64IM-NEXT:    ld s0, 152(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 88(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s0
+; RV64IM-NEXT:    ld s0, 80(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor s0, s2, s0
-; RV64IM-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a5, a5, s1
-; RV64IM-NEXT:    ld s1, 552(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 680(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t1, t1, s1
+; RV64IM-NEXT:    ld s1, 616(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t2, t2, s1
+; RV64IM-NEXT:    ld s1, 576(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s1
+; RV64IM-NEXT:    ld s1, 536(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s1
+; RV64IM-NEXT:    ld s1, 496(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s1
+; RV64IM-NEXT:    ld s1, 456(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a7, a7, s1
-; RV64IM-NEXT:    ld s1, 520(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 416(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t0, t0, s1
-; RV64IM-NEXT:    ld s1, 488(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t1, t1, s1
-; RV64IM-NEXT:    ld s1, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 720(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a0, a0, s1
+; RV64IM-NEXT:    ld s1, 808(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, s1
+; RV64IM-NEXT:    ld s1, 216(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor a2, a2, s1
-; RV64IM-NEXT:    ld s1, 232(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor t6, t6, s1
 ; RV64IM-NEXT:    ld s1, 208(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s1
+; RV64IM-NEXT:    ld s1, 160(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t5, t5, s1
+; RV64IM-NEXT:    ld s1, 136(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s1
+; RV64IM-NEXT:    ld s1, 120(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor s0, s0, s1
+; RV64IM-NEXT:    ld s1, 608(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, s1
+; RV64IM-NEXT:    ld s1, 552(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, s1
+; RV64IM-NEXT:    ld s1, 512(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a6, a6, s1
+; RV64IM-NEXT:    ld s1, 488(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a7, a7, s1
+; RV64IM-NEXT:    ld s1, 448(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t0, t0, s1
+; RV64IM-NEXT:    ld s1, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, s1
+; RV64IM-NEXT:    ld s1, 256(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t3, t3, s1
+; RV64IM-NEXT:    ld s1, 200(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor t5, t5, s1
 ; RV64IM-NEXT:    ld s1, 176(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor t4, t4, s1
+; RV64IM-NEXT:    ld s1, 152(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    xor s0, s0, s1
+; RV64IM-NEXT:    xor t2, t1, t2
 ; RV64IM-NEXT:    xor a3, t2, a3
-; RV64IM-NEXT:    xor a3, a3, a4
-; RV64IM-NEXT:    ld a4, 624(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a4, a5, a4
+; RV64IM-NEXT:    ld t2, 568(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t2
 ; RV64IM-NEXT:    xor a1, a0, a1
-; RV64IM-NEXT:    xor a1, a1, t4
-; RV64IM-NEXT:    ld a5, 848(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    xor a2, a2, a5
+; RV64IM-NEXT:    xor a1, a1, a2
+; RV64IM-NEXT:    ld a2, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, t3, a2
+; RV64IM-NEXT:    ld t2, 464(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a3, a3, t2
+; RV64IM-NEXT:    ld t2, 600(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a4, a4, t2
+; RV64IM-NEXT:    ld t2, 744(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a1, a1, t2
+; RV64IM-NEXT:    ld t2, 832(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    xor a2, a2, t2
 ; RV64IM-NEXT:    xor a4, a3, a4
-; RV64IM-NEXT:    xor a4, a4, a6
+; RV64IM-NEXT:    xor a4, a4, a5
 ; RV64IM-NEXT:    xor a2, a1, a2
-; RV64IM-NEXT:    xor a2, a2, t3
-; RV64IM-NEXT:    slli t2, t2, 56
+; RV64IM-NEXT:    xor a2, a2, t6
+; RV64IM-NEXT:    slli t1, t1, 56
 ; RV64IM-NEXT:    slli a0, a0, 56
-; RV64IM-NEXT:    ld t4, 784(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a3, a3, t4
-; RV64IM-NEXT:    and a1, a1, t4
+; RV64IM-NEXT:    ld t6, 760(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a3, a3, t6
+; RV64IM-NEXT:    and a1, a1, t6
 ; RV64IM-NEXT:    slli a3, a3, 40
 ; RV64IM-NEXT:    slli a1, a1, 40
-; RV64IM-NEXT:    or a3, t2, a3
+; RV64IM-NEXT:    or a3, t1, a3
 ; RV64IM-NEXT:    srli a5, a4, 8
 ; RV64IM-NEXT:    or a0, a0, a1
 ; RV64IM-NEXT:    srli a1, a2, 8
-; RV64IM-NEXT:    ld a6, 808(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    and a5, a5, a6
-; RV64IM-NEXT:    and a1, a1, a6
-; RV64IM-NEXT:    xor a6, a4, a7
+; RV64IM-NEXT:    ld t1, 784(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    and a5, a5, t1
+; RV64IM-NEXT:    and a1, a1, t1
+; RV64IM-NEXT:    xor a6, a4, a6
 ; RV64IM-NEXT:    lui t3, 4080
 ; RV64IM-NEXT:    and a4, a4, t3
-; RV64IM-NEXT:    xor a7, a2, t6
+; RV64IM-NEXT:    xor t1, a2, t5
 ; RV64IM-NEXT:    and a2, a2, t3
-; RV64IM-NEXT:    xor t0, a6, t0
+; RV64IM-NEXT:    xor a7, a6, a7
 ; RV64IM-NEXT:    srli a6, a6, 24
-; RV64IM-NEXT:    xor t2, a7, t5
-; RV64IM-NEXT:    srli a7, a7, 24
+; RV64IM-NEXT:    xor t2, t1, t4
+; RV64IM-NEXT:    srli t1, t1, 24
 ; RV64IM-NEXT:    and a6, a6, t3
-; RV64IM-NEXT:    and a7, a7, t3
+; RV64IM-NEXT:    and t1, t1, t3
 ; RV64IM-NEXT:    or a5, a5, a6
-; RV64IM-NEXT:    srli a6, t0, 40
-; RV64IM-NEXT:    or a1, a1, a7
-; RV64IM-NEXT:    srli a7, t2, 40
-; RV64IM-NEXT:    and a6, a6, t4
-; RV64IM-NEXT:    and a7, a7, t4
+; RV64IM-NEXT:    srli a6, a7, 40
+; RV64IM-NEXT:    or a1, a1, t1
+; RV64IM-NEXT:    srli t1, t2, 40
+; RV64IM-NEXT:    and a6, a6, t6
+; RV64IM-NEXT:    and t1, t1, t6
 ; RV64IM-NEXT:    slli a4, a4, 24
-; RV64IM-NEXT:    xor t1, t0, t1
-; RV64IM-NEXT:    srliw t0, t0, 24
-; RV64IM-NEXT:    slli t0, t0, 32
-; RV64IM-NEXT:    or a4, a4, t0
-; RV64IM-NEXT:    srli t0, t1, 56
-; RV64IM-NEXT:    or a6, a6, t0
+; RV64IM-NEXT:    xor t0, a7, t0
+; RV64IM-NEXT:    srliw a7, a7, 24
+; RV64IM-NEXT:    slli a7, a7, 32
+; RV64IM-NEXT:    or a4, a4, a7
+; RV64IM-NEXT:    srli a7, t0, 56
+; RV64IM-NEXT:    or a6, a6, a7
 ; RV64IM-NEXT:    slli a2, a2, 24
-; RV64IM-NEXT:    xor t0, t2, s0
-; RV64IM-NEXT:    srliw t1, t2, 24
-; RV64IM-NEXT:    slli t1, t1, 32
-; RV64IM-NEXT:    or a2, a2, t1
-; RV64IM-NEXT:    srli t0, t0, 56
-; RV64IM-NEXT:    or a7, a7, t0
+; RV64IM-NEXT:    xor a7, t2, s0
+; RV64IM-NEXT:    srliw t0, t2, 24
+; RV64IM-NEXT:    slli t0, t0, 32
+; RV64IM-NEXT:    or a2, a2, t0
+; RV64IM-NEXT:    srli a7, a7, 56
+; RV64IM-NEXT:    or a7, t1, a7
 ; RV64IM-NEXT:    or a3, a3, a4
 ; RV64IM-NEXT:    or a4, a5, a6
 ; RV64IM-NEXT:    or a0, a0, a2
@@ -9681,7 +9657,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a3, a3, a4
 ; RV64IM-NEXT:    or a0, a0, a1
 ; RV64IM-NEXT:    srli a1, a3, 4
-; RV64IM-NEXT:    ld a4, 800(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 776(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a2, a3, a4
 ; RV64IM-NEXT:    srli a3, a0, 4
 ; RV64IM-NEXT:    and a0, a0, a4
@@ -9692,7 +9668,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a1, a1, a2
 ; RV64IM-NEXT:    or a0, a3, a0
 ; RV64IM-NEXT:    srli a2, a1, 2
-; RV64IM-NEXT:    ld a4, 792(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 768(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a1, a1, a4
 ; RV64IM-NEXT:    srli a3, a0, 2
 ; RV64IM-NEXT:    and a0, a0, a4
@@ -9703,7 +9679,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a1, a2, a1
 ; RV64IM-NEXT:    or a0, a3, a0
 ; RV64IM-NEXT:    srli a2, a1, 1
-; RV64IM-NEXT:    ld a4, 776(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a4, 752(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    and a1, a1, a4
 ; RV64IM-NEXT:    srli a3, a0, 1
 ; RV64IM-NEXT:    and a0, a0, a4
@@ -9713,26 +9689,26 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IM-NEXT:    or a1, a2, a1
 ; RV64IM-NEXT:    slli a0, a0, 1
 ; RV64IM-NEXT:    or a0, a3, a0
-; RV64IM-NEXT:    ld a2, 816(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 792(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    sd a1, 0(a2)
 ; RV64IM-NEXT:    sd a0, 8(a2)
-; RV64IM-NEXT:    ld a2, 824(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld a2, 800(sp) # 8-byte Folded Reload
 ; RV64IM-NEXT:    sd a1, 0(a2)
 ; RV64IM-NEXT:    sd a0, 8(a2)
-; RV64IM-NEXT:    ld ra, 952(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s0, 944(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s1, 936(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s2, 928(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s3, 920(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s4, 912(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s5, 904(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s6, 896(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s7, 888(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s8, 880(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s9, 872(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s10, 864(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    ld s11, 856(sp) # 8-byte Folded Reload
-; RV64IM-NEXT:    addi sp, sp, 960
+; RV64IM-NEXT:    ld ra, 936(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s0, 928(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s1, 920(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s2, 912(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s4, 896(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s5, 888(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s6, 880(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s7, 872(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s8, 864(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s9, 856(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s10, 848(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    ld s11, 840(sp) # 8-byte Folded Reload
+; RV64IM-NEXT:    addi sp, sp, 944
 ; RV64IM-NEXT:    ret
 ;
 ; RV32IMZBS-LABEL: commutative_clmulr_v2i64:
@@ -9753,103 +9729,103 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    sw s11, 748(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw a3, 736(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw a2, 732(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 0(a0)
-; RV32IMZBS-NEXT:    lw a3, 4(a0)
+; RV32IMZBS-NEXT:    lw t5, 0(a0)
+; RV32IMZBS-NEXT:    lw a6, 4(a0)
 ; RV32IMZBS-NEXT:    lw a7, 8(a0)
 ; RV32IMZBS-NEXT:    lw t1, 12(a0)
 ; RV32IMZBS-NEXT:    lw s7, 0(a1)
-; RV32IMZBS-NEXT:    lw a5, 4(a1)
+; RV32IMZBS-NEXT:    lw a4, 4(a1)
 ; RV32IMZBS-NEXT:    lw t0, 8(a1)
 ; RV32IMZBS-NEXT:    lw t2, 12(a1)
 ; RV32IMZBS-NEXT:    lui a0, 16
 ; RV32IMZBS-NEXT:    lui a1, 61681
 ; RV32IMZBS-NEXT:    lui a2, 209715
-; RV32IMZBS-NEXT:    lui a4, 349525
+; RV32IMZBS-NEXT:    lui a3, 349525
 ; RV32IMZBS-NEXT:    addi ra, a0, -256
 ; RV32IMZBS-NEXT:    addi s11, a1, -241
 ; RV32IMZBS-NEXT:    addi s10, a2, 819
-; RV32IMZBS-NEXT:    addi s5, a4, 1365
-; RV32IMZBS-NEXT:    srli s0, a5, 8
-; RV32IMZBS-NEXT:    srli a2, a5, 24
-; RV32IMZBS-NEXT:    and a4, a5, ra
-; RV32IMZBS-NEXT:    slli a5, a5, 24
-; RV32IMZBS-NEXT:    srli t3, a3, 8
-; RV32IMZBS-NEXT:    srli t4, a3, 24
-; RV32IMZBS-NEXT:    and a0, a3, ra
-; RV32IMZBS-NEXT:    slli a1, a3, 24
+; RV32IMZBS-NEXT:    addi s5, a3, 1365
+; RV32IMZBS-NEXT:    srli s0, a4, 8
+; RV32IMZBS-NEXT:    srli a2, a4, 24
+; RV32IMZBS-NEXT:    and a3, a4, ra
+; RV32IMZBS-NEXT:    slli a4, a4, 24
+; RV32IMZBS-NEXT:    srli s2, a6, 8
+; RV32IMZBS-NEXT:    srli a5, a6, 24
+; RV32IMZBS-NEXT:    and t3, a6, ra
+; RV32IMZBS-NEXT:    slli a1, a6, 24
 ; RV32IMZBS-NEXT:    srli s8, s7, 8
 ; RV32IMZBS-NEXT:    srli s9, s7, 24
 ; RV32IMZBS-NEXT:    and s6, s7, ra
 ; RV32IMZBS-NEXT:    slli s7, s7, 24
-; RV32IMZBS-NEXT:    srli a3, s1, 8
-; RV32IMZBS-NEXT:    srli t5, s1, 24
-; RV32IMZBS-NEXT:    and a6, s1, ra
-; RV32IMZBS-NEXT:    slli s1, s1, 24
-; RV32IMZBS-NEXT:    srli s3, t2, 8
-; RV32IMZBS-NEXT:    and t6, s0, ra
-; RV32IMZBS-NEXT:    or a2, t6, a2
-; RV32IMZBS-NEXT:    srli s4, t2, 24
-; RV32IMZBS-NEXT:    slli a4, a4, 8
-; RV32IMZBS-NEXT:    or a4, a5, a4
-; RV32IMZBS-NEXT:    and a5, t2, ra
+; RV32IMZBS-NEXT:    srli a0, t5, 8
+; RV32IMZBS-NEXT:    srli s4, t5, 24
+; RV32IMZBS-NEXT:    and a6, t5, ra
+; RV32IMZBS-NEXT:    slli t5, t5, 24
+; RV32IMZBS-NEXT:    srli s1, t2, 8
+; RV32IMZBS-NEXT:    and t4, s0, ra
+; RV32IMZBS-NEXT:    or a2, t4, a2
+; RV32IMZBS-NEXT:    srli s3, t2, 24
+; RV32IMZBS-NEXT:    slli a3, a3, 8
+; RV32IMZBS-NEXT:    or a3, a4, a3
+; RV32IMZBS-NEXT:    and a4, t2, ra
 ; RV32IMZBS-NEXT:    slli s0, t2, 24
-; RV32IMZBS-NEXT:    and t2, t3, ra
-; RV32IMZBS-NEXT:    or t2, t2, t4
-; RV32IMZBS-NEXT:    srli t3, t1, 8
-; RV32IMZBS-NEXT:    slli a0, a0, 8
-; RV32IMZBS-NEXT:    or a0, a1, a0
-; RV32IMZBS-NEXT:    srli s2, t1, 24
+; RV32IMZBS-NEXT:    and t2, s2, ra
+; RV32IMZBS-NEXT:    or t2, t2, a5
+; RV32IMZBS-NEXT:    srli s2, t1, 8
+; RV32IMZBS-NEXT:    slli t3, t3, 8
+; RV32IMZBS-NEXT:    or t3, a1, t3
+; RV32IMZBS-NEXT:    srli t6, t1, 24
 ; RV32IMZBS-NEXT:    and a1, s8, ra
 ; RV32IMZBS-NEXT:    or a1, a1, s9
 ; RV32IMZBS-NEXT:    and t4, t1, ra
-; RV32IMZBS-NEXT:    slli t6, t1, 24
+; RV32IMZBS-NEXT:    slli a5, t1, 24
 ; RV32IMZBS-NEXT:    slli s6, s6, 8
 ; RV32IMZBS-NEXT:    or t1, s7, s6
 ; RV32IMZBS-NEXT:    srli s6, t0, 8
-; RV32IMZBS-NEXT:    and a3, a3, ra
-; RV32IMZBS-NEXT:    or a3, a3, t5
-; RV32IMZBS-NEXT:    srli t5, t0, 24
+; RV32IMZBS-NEXT:    and a0, a0, ra
+; RV32IMZBS-NEXT:    or a0, a0, s4
+; RV32IMZBS-NEXT:    srli s4, t0, 24
 ; RV32IMZBS-NEXT:    slli a6, a6, 8
-; RV32IMZBS-NEXT:    or a6, s1, a6
+; RV32IMZBS-NEXT:    or a6, t5, a6
 ; RV32IMZBS-NEXT:    and s7, t0, ra
-; RV32IMZBS-NEXT:    slli s1, t0, 24
-; RV32IMZBS-NEXT:    and t0, s3, ra
-; RV32IMZBS-NEXT:    or t0, t0, s4
-; RV32IMZBS-NEXT:    srli s3, a7, 8
-; RV32IMZBS-NEXT:    slli a5, a5, 8
-; RV32IMZBS-NEXT:    or a5, s0, a5
+; RV32IMZBS-NEXT:    slli t5, t0, 24
+; RV32IMZBS-NEXT:    and t0, s1, ra
+; RV32IMZBS-NEXT:    or t0, t0, s3
+; RV32IMZBS-NEXT:    srli s1, a7, 8
+; RV32IMZBS-NEXT:    slli a4, a4, 8
+; RV32IMZBS-NEXT:    or a4, s0, a4
 ; RV32IMZBS-NEXT:    srli s0, a7, 24
-; RV32IMZBS-NEXT:    and t3, t3, ra
-; RV32IMZBS-NEXT:    or t3, t3, s2
+; RV32IMZBS-NEXT:    and s2, s2, ra
+; RV32IMZBS-NEXT:    or t6, s2, t6
 ; RV32IMZBS-NEXT:    and s2, a7, ra
 ; RV32IMZBS-NEXT:    slli a7, a7, 24
 ; RV32IMZBS-NEXT:    slli t4, t4, 8
-; RV32IMZBS-NEXT:    and s4, s6, ra
+; RV32IMZBS-NEXT:    and s3, s6, ra
 ; RV32IMZBS-NEXT:    slli s7, s7, 8
-; RV32IMZBS-NEXT:    and s3, s3, ra
+; RV32IMZBS-NEXT:    and s1, s1, ra
 ; RV32IMZBS-NEXT:    slli s2, s2, 8
-; RV32IMZBS-NEXT:    or t4, t6, t4
-; RV32IMZBS-NEXT:    or t5, s4, t5
-; RV32IMZBS-NEXT:    or t6, s1, s7
-; RV32IMZBS-NEXT:    or s0, s3, s0
+; RV32IMZBS-NEXT:    or a5, a5, t4
+; RV32IMZBS-NEXT:    or t4, s3, s4
+; RV32IMZBS-NEXT:    or t5, t5, s7
+; RV32IMZBS-NEXT:    or s0, s1, s0
 ; RV32IMZBS-NEXT:    or a7, a7, s2
-; RV32IMZBS-NEXT:    or a2, a4, a2
-; RV32IMZBS-NEXT:    or a0, a0, t2
+; RV32IMZBS-NEXT:    or a2, a3, a2
+; RV32IMZBS-NEXT:    or a3, t3, t2
 ; RV32IMZBS-NEXT:    or a1, t1, a1
-; RV32IMZBS-NEXT:    or a3, a6, a3
-; RV32IMZBS-NEXT:    or a4, a5, t0
-; RV32IMZBS-NEXT:    or a5, t4, t3
-; RV32IMZBS-NEXT:    or a6, t6, t5
+; RV32IMZBS-NEXT:    or a0, a6, a0
+; RV32IMZBS-NEXT:    or a4, a4, t0
+; RV32IMZBS-NEXT:    or a5, a5, t6
+; RV32IMZBS-NEXT:    or a6, t5, t4
 ; RV32IMZBS-NEXT:    or a7, a7, s0
 ; RV32IMZBS-NEXT:    srli t0, a2, 4
 ; RV32IMZBS-NEXT:    sw s11, 744(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, s11
-; RV32IMZBS-NEXT:    srli t1, a0, 4
-; RV32IMZBS-NEXT:    and a0, a0, s11
+; RV32IMZBS-NEXT:    srli t1, a3, 4
+; RV32IMZBS-NEXT:    and a3, a3, s11
 ; RV32IMZBS-NEXT:    srli t2, a1, 4
 ; RV32IMZBS-NEXT:    and a1, a1, s11
-; RV32IMZBS-NEXT:    srli t3, a3, 4
-; RV32IMZBS-NEXT:    and a3, a3, s11
+; RV32IMZBS-NEXT:    srli t3, a0, 4
+; RV32IMZBS-NEXT:    and a0, a0, s11
 ; RV32IMZBS-NEXT:    srli t4, a4, 4
 ; RV32IMZBS-NEXT:    and a4, a4, s11
 ; RV32IMZBS-NEXT:    srli t5, a5, 4
@@ -9861,11 +9837,11 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and t0, t0, s11
 ; RV32IMZBS-NEXT:    slli a2, a2, 4
 ; RV32IMZBS-NEXT:    and t1, t1, s11
-; RV32IMZBS-NEXT:    slli a0, a0, 4
+; RV32IMZBS-NEXT:    slli a3, a3, 4
 ; RV32IMZBS-NEXT:    and t2, t2, s11
 ; RV32IMZBS-NEXT:    slli a1, a1, 4
 ; RV32IMZBS-NEXT:    and t3, t3, s11
-; RV32IMZBS-NEXT:    slli a3, a3, 4
+; RV32IMZBS-NEXT:    slli a0, a0, 4
 ; RV32IMZBS-NEXT:    and t4, t4, s11
 ; RV32IMZBS-NEXT:    slli a4, a4, 4
 ; RV32IMZBS-NEXT:    and t5, t5, s11
@@ -9875,22 +9851,22 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and s0, s0, s11
 ; RV32IMZBS-NEXT:    slli a7, a7, 4
 ; RV32IMZBS-NEXT:    or a2, t0, a2
-; RV32IMZBS-NEXT:    or a0, t1, a0
+; RV32IMZBS-NEXT:    or a3, t1, a3
 ; RV32IMZBS-NEXT:    or a1, t2, a1
-; RV32IMZBS-NEXT:    or a3, t3, a3
+; RV32IMZBS-NEXT:    or a0, t3, a0
 ; RV32IMZBS-NEXT:    or a4, t4, a4
 ; RV32IMZBS-NEXT:    or a5, t5, a5
 ; RV32IMZBS-NEXT:    or a6, t6, a6
 ; RV32IMZBS-NEXT:    or a7, s0, a7
 ; RV32IMZBS-NEXT:    srli t0, a2, 2
-; RV32IMZBS-NEXT:    sw s10, 728(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s10, 724(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, s10
-; RV32IMZBS-NEXT:    srli t1, a0, 2
-; RV32IMZBS-NEXT:    and a0, a0, s10
+; RV32IMZBS-NEXT:    srli t1, a3, 2
+; RV32IMZBS-NEXT:    and a3, a3, s10
 ; RV32IMZBS-NEXT:    srli t2, a1, 2
 ; RV32IMZBS-NEXT:    and a1, a1, s10
-; RV32IMZBS-NEXT:    srli t3, a3, 2
-; RV32IMZBS-NEXT:    and a3, a3, s10
+; RV32IMZBS-NEXT:    srli t3, a0, 2
+; RV32IMZBS-NEXT:    and a0, a0, s10
 ; RV32IMZBS-NEXT:    srli t4, a4, 2
 ; RV32IMZBS-NEXT:    and a4, a4, s10
 ; RV32IMZBS-NEXT:    srli t5, a5, 2
@@ -9902,11 +9878,11 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and t0, t0, s10
 ; RV32IMZBS-NEXT:    slli a2, a2, 2
 ; RV32IMZBS-NEXT:    and t1, t1, s10
-; RV32IMZBS-NEXT:    slli a0, a0, 2
+; RV32IMZBS-NEXT:    slli a3, a3, 2
 ; RV32IMZBS-NEXT:    and t2, t2, s10
 ; RV32IMZBS-NEXT:    slli a1, a1, 2
 ; RV32IMZBS-NEXT:    and t3, t3, s10
-; RV32IMZBS-NEXT:    slli a3, a3, 2
+; RV32IMZBS-NEXT:    slli a0, a0, 2
 ; RV32IMZBS-NEXT:    and t4, t4, s10
 ; RV32IMZBS-NEXT:    slli a4, a4, 2
 ; RV32IMZBS-NEXT:    and t5, t5, s10
@@ -9916,22 +9892,22 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and s0, s0, s10
 ; RV32IMZBS-NEXT:    slli a7, a7, 2
 ; RV32IMZBS-NEXT:    or a2, t0, a2
-; RV32IMZBS-NEXT:    or a0, t1, a0
+; RV32IMZBS-NEXT:    or a3, t1, a3
 ; RV32IMZBS-NEXT:    or a1, t2, a1
-; RV32IMZBS-NEXT:    or a3, t3, a3
+; RV32IMZBS-NEXT:    or a0, t3, a0
 ; RV32IMZBS-NEXT:    or a4, t4, a4
 ; RV32IMZBS-NEXT:    or a5, t5, a5
 ; RV32IMZBS-NEXT:    or a6, t6, a6
 ; RV32IMZBS-NEXT:    or a7, s0, a7
 ; RV32IMZBS-NEXT:    srli t0, a2, 1
-; RV32IMZBS-NEXT:    sw s5, 724(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw s5, 728(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, s5
-; RV32IMZBS-NEXT:    srli t1, a0, 1
-; RV32IMZBS-NEXT:    and a0, a0, s5
+; RV32IMZBS-NEXT:    srli t1, a3, 1
+; RV32IMZBS-NEXT:    and a3, a3, s5
 ; RV32IMZBS-NEXT:    srli t2, a1, 1
 ; RV32IMZBS-NEXT:    and a1, a1, s5
-; RV32IMZBS-NEXT:    srli t3, a3, 1
-; RV32IMZBS-NEXT:    and a3, a3, s5
+; RV32IMZBS-NEXT:    srli t3, a0, 1
+; RV32IMZBS-NEXT:    and a0, a0, s5
 ; RV32IMZBS-NEXT:    srli t4, a4, 1
 ; RV32IMZBS-NEXT:    and a4, a4, s5
 ; RV32IMZBS-NEXT:    srli t5, a5, 1
@@ -9943,106 +9919,106 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and t0, t0, s5
 ; RV32IMZBS-NEXT:    slli a2, a2, 1
 ; RV32IMZBS-NEXT:    and t1, t1, s5
-; RV32IMZBS-NEXT:    slli a0, a0, 1
+; RV32IMZBS-NEXT:    slli a3, a3, 1
 ; RV32IMZBS-NEXT:    and t2, t2, s5
 ; RV32IMZBS-NEXT:    slli a1, a1, 1
 ; RV32IMZBS-NEXT:    and t3, t3, s5
-; RV32IMZBS-NEXT:    slli s1, a3, 1
+; RV32IMZBS-NEXT:    slli s1, a0, 1
 ; RV32IMZBS-NEXT:    and t4, t4, s5
 ; RV32IMZBS-NEXT:    slli a4, a4, 1
 ; RV32IMZBS-NEXT:    and t5, t5, s5
 ; RV32IMZBS-NEXT:    slli a5, a5, 1
 ; RV32IMZBS-NEXT:    and t6, t6, s5
-; RV32IMZBS-NEXT:    slli a6, a6, 1
+; RV32IMZBS-NEXT:    slli s2, a6, 1
 ; RV32IMZBS-NEXT:    and s0, s0, s5
-; RV32IMZBS-NEXT:    slli a3, a7, 1
-; RV32IMZBS-NEXT:    or s6, t0, a2
-; RV32IMZBS-NEXT:    or s8, t1, a0
-; RV32IMZBS-NEXT:    or s7, t2, a1
-; RV32IMZBS-NEXT:    srli a0, a0, 31
+; RV32IMZBS-NEXT:    slli a6, a7, 1
+; RV32IMZBS-NEXT:    or s4, t0, a2
+; RV32IMZBS-NEXT:    or s8, t1, a3
+; RV32IMZBS-NEXT:    or s6, t2, a1
+; RV32IMZBS-NEXT:    srli a0, a3, 31
 ; RV32IMZBS-NEXT:    or s9, t3, s1
 ; RV32IMZBS-NEXT:    srli a1, s1, 31
 ; RV32IMZBS-NEXT:    or a7, t4, a4
 ; RV32IMZBS-NEXT:    or t1, t5, a5
-; RV32IMZBS-NEXT:    or t0, t6, a6
+; RV32IMZBS-NEXT:    or t0, t6, s2
 ; RV32IMZBS-NEXT:    srli a2, a5, 31
-; RV32IMZBS-NEXT:    or t4, s0, a3
-; RV32IMZBS-NEXT:    srli s0, a3, 31
-; RV32IMZBS-NEXT:    srli a3, s6, 8
-; RV32IMZBS-NEXT:    srli a4, s6, 24
-; RV32IMZBS-NEXT:    srli a5, s8, 8
-; RV32IMZBS-NEXT:    srli a6, s8, 24
-; RV32IMZBS-NEXT:    slli t2, s8, 24
-; RV32IMZBS-NEXT:    and t3, s8, ra
-; RV32IMZBS-NEXT:    slli t5, s7, 31
-; RV32IMZBS-NEXT:    seqz s1, a0
+; RV32IMZBS-NEXT:    or t3, s0, a6
+; RV32IMZBS-NEXT:    srli s0, a6, 31
+; RV32IMZBS-NEXT:    srli a3, s4, 8
+; RV32IMZBS-NEXT:    srli a4, s4, 24
+; RV32IMZBS-NEXT:    srli a6, s8, 8
+; RV32IMZBS-NEXT:    srli t2, s8, 24
+; RV32IMZBS-NEXT:    slli t4, s8, 24
+; RV32IMZBS-NEXT:    and t5, s8, ra
 ; RV32IMZBS-NEXT:    slli t6, s6, 31
+; RV32IMZBS-NEXT:    seqz s1, a0
+; RV32IMZBS-NEXT:    slli a5, s4, 31
 ; RV32IMZBS-NEXT:    seqz s2, a1
-; RV32IMZBS-NEXT:    srli a0, a7, 8
-; RV32IMZBS-NEXT:    and a3, a3, ra
-; RV32IMZBS-NEXT:    or a3, a3, a4
-; RV32IMZBS-NEXT:    srli a4, a7, 24
-; RV32IMZBS-NEXT:    and a1, a5, ra
-; RV32IMZBS-NEXT:    or a6, a1, a6
-; RV32IMZBS-NEXT:    srli a5, t1, 8
-; RV32IMZBS-NEXT:    slli t3, t3, 8
-; RV32IMZBS-NEXT:    or a1, t2, t3
-; RV32IMZBS-NEXT:    srli t2, t1, 24
-; RV32IMZBS-NEXT:    and a0, a0, ra
+; RV32IMZBS-NEXT:    srli s3, a7, 8
+; RV32IMZBS-NEXT:    and a0, a3, ra
 ; RV32IMZBS-NEXT:    or a0, a0, a4
-; RV32IMZBS-NEXT:    slli t3, t1, 24
-; RV32IMZBS-NEXT:    and a4, a5, ra
-; RV32IMZBS-NEXT:    or a4, a4, t2
-; RV32IMZBS-NEXT:    and a5, t1, ra
-; RV32IMZBS-NEXT:    slli a5, a5, 8
-; RV32IMZBS-NEXT:    or a5, t3, a5
-; RV32IMZBS-NEXT:    slli t3, t0, 31
+; RV32IMZBS-NEXT:    srli a3, a7, 24
+; RV32IMZBS-NEXT:    and a1, a6, ra
+; RV32IMZBS-NEXT:    or a6, a1, t2
+; RV32IMZBS-NEXT:    srli a4, t1, 8
+; RV32IMZBS-NEXT:    slli t5, t5, 8
+; RV32IMZBS-NEXT:    or a1, t4, t5
+; RV32IMZBS-NEXT:    srli t4, t1, 24
+; RV32IMZBS-NEXT:    and t2, s3, ra
+; RV32IMZBS-NEXT:    or t2, t2, a3
+; RV32IMZBS-NEXT:    slli t5, t1, 24
+; RV32IMZBS-NEXT:    and a3, a4, ra
+; RV32IMZBS-NEXT:    or a3, a3, t4
+; RV32IMZBS-NEXT:    and a4, t1, ra
+; RV32IMZBS-NEXT:    slli a4, a4, 8
+; RV32IMZBS-NEXT:    or a4, t5, a4
+; RV32IMZBS-NEXT:    slli t4, t0, 31
 ; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi t2, s1, -1
+; RV32IMZBS-NEXT:    addi t5, s1, -1
 ; RV32IMZBS-NEXT:    addi s2, s2, -1
-; RV32IMZBS-NEXT:    and t5, t2, t5
-; RV32IMZBS-NEXT:    sw t5, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t5, s2, t6
-; RV32IMZBS-NEXT:    sw t5, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t2, t2, t6
-; RV32IMZBS-NEXT:    sw t2, 712(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t2, a7, 31
+; RV32IMZBS-NEXT:    and t6, t5, t6
+; RV32IMZBS-NEXT:    sw t6, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t6, s2, a5
+; RV32IMZBS-NEXT:    sw t6, 716(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a5, t5, a5
+; RV32IMZBS-NEXT:    sw a5, 720(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a5, a7, 31
 ; RV32IMZBS-NEXT:    seqz t5, s0
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    and t3, a2, t3
-; RV32IMZBS-NEXT:    sw t3, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and t3, t5, t2
-; RV32IMZBS-NEXT:    sw t3, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, t2
-; RV32IMZBS-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t4, a2, t4
+; RV32IMZBS-NEXT:    sw t4, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t4, t5, a5
+; RV32IMZBS-NEXT:    sw t4, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, a5
+; RV32IMZBS-NEXT:    sw a2, 708(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    sw ra, 740(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s6, ra
-; RV32IMZBS-NEXT:    slli t2, a2, 8
-; RV32IMZBS-NEXT:    slli a2, s6, 24
-; RV32IMZBS-NEXT:    or t2, a2, t2
-; RV32IMZBS-NEXT:    or a3, t2, a3
-; RV32IMZBS-NEXT:    sw a3, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a1, a1, a6
-; RV32IMZBS-NEXT:    sw a1, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a7, ra
-; RV32IMZBS-NEXT:    slli a1, a1, 8
-; RV32IMZBS-NEXT:    slli s5, a7, 24
-; RV32IMZBS-NEXT:    or a1, s5, a1
-; RV32IMZBS-NEXT:    or a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or a4, a5, a4
-; RV32IMZBS-NEXT:    sw a4, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, s4, ra
+; RV32IMZBS-NEXT:    slli a5, a2, 8
+; RV32IMZBS-NEXT:    slli a2, s4, 24
+; RV32IMZBS-NEXT:    or a5, a2, a5
+; RV32IMZBS-NEXT:    or a0, a5, a0
+; RV32IMZBS-NEXT:    sw a0, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a0, a1, a6
+; RV32IMZBS-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a0, a7, ra
+; RV32IMZBS-NEXT:    slli a0, a0, 8
+; RV32IMZBS-NEXT:    slli t5, a7, 24
+; RV32IMZBS-NEXT:    or a0, t5, a0
+; RV32IMZBS-NEXT:    or a0, a0, t2
+; RV32IMZBS-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or a3, a4, a3
+; RV32IMZBS-NEXT:    sw a3, 696(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 2
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 1
-; RV32IMZBS-NEXT:    and s2, a0, a3
 ; RV32IMZBS-NEXT:    slli a3, s6, 1
-; RV32IMZBS-NEXT:    and s1, a1, a3
+; RV32IMZBS-NEXT:    and s2, a0, a3
+; RV32IMZBS-NEXT:    slli a3, s4, 1
+; RV32IMZBS-NEXT:    and t6, a1, a3
 ; RV32IMZBS-NEXT:    and t2, a0, a3
 ; RV32IMZBS-NEXT:    andi a0, s8, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
@@ -10050,460 +10026,461 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 2
-; RV32IMZBS-NEXT:    and s4, a0, a3
 ; RV32IMZBS-NEXT:    slli a3, s6, 2
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 2
 ; RV32IMZBS-NEXT:    and s3, a1, a3
-; RV32IMZBS-NEXT:    and t6, a0, a3
+; RV32IMZBS-NEXT:    and a0, a0, a3
+; RV32IMZBS-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 8
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 3
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 3
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 3
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 16
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 4
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a3, s6, 4
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 4
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 604(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 648(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 32
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 5
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 5
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 5
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 620(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 64
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 6
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 6
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 6
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 640(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 668(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 128
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 7
+; RV32IMZBS-NEXT:    slli a3, s6, 7
 ; RV32IMZBS-NEXT:    and a3, a0, a3
 ; RV32IMZBS-NEXT:    sw a3, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, s6, 7
+; RV32IMZBS-NEXT:    slli a3, s4, 7
 ; RV32IMZBS-NEXT:    and a1, a1, a3
 ; RV32IMZBS-NEXT:    sw a1, 540(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 680(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 256
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 8
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 516(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 8
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 8
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 528(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 9
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 572(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 9
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 9
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 588(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, s8, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    andi a1, s9, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, s7, 10
-; RV32IMZBS-NEXT:    and a3, a0, a3
-; RV32IMZBS-NEXT:    sw a3, 660(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a3, s6, 10
+; RV32IMZBS-NEXT:    and a3, a0, a3
+; RV32IMZBS-NEXT:    sw a3, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 10
 ; RV32IMZBS-NEXT:    and a1, a1, a3
-; RV32IMZBS-NEXT:    sw a1, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 656(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a3
-; RV32IMZBS-NEXT:    sw a0, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a3, s8
-; RV32IMZBS-NEXT:    bexti a0, a3, 11
+; RV32IMZBS-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a6, s8
+; RV32IMZBS-NEXT:    bexti a0, a6, 11
 ; RV32IMZBS-NEXT:    addi a1, a0, -1
 ; RV32IMZBS-NEXT:    not a0, s9
-; RV32IMZBS-NEXT:    bexti a4, a0, 11
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 11
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 456(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 11
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 468(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 504(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 12
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 12
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 12
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 448(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 12
-; RV32IMZBS-NEXT:    and a4, a4, a5
+; RV32IMZBS-NEXT:    bexti a3, a0, 11
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 11
+; RV32IMZBS-NEXT:    and a4, a1, a4
 ; RV32IMZBS-NEXT:    sw a4, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 488(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 13
+; RV32IMZBS-NEXT:    slli a4, s4, 11
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 468(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 12
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 13
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 13
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 508(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 13
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 520(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 14
+; RV32IMZBS-NEXT:    bexti a3, a0, 12
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 12
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 440(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 12
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 448(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 13
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 14
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 14
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 14
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 15
+; RV32IMZBS-NEXT:    bexti a3, a0, 13
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 13
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 13
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 476(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 14
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 15
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 15
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 15
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 16
+; RV32IMZBS-NEXT:    bexti a3, a0, 14
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 14
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 568(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 14
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 15
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 16
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 16
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 412(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 16
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 420(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 436(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 17
+; RV32IMZBS-NEXT:    bexti a3, a0, 15
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 15
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 15
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 16
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 17
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 17
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 404(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 17
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 408(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 428(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 18
+; RV32IMZBS-NEXT:    bexti a3, a0, 16
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 16
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 404(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 16
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 17
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 18
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 18
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 440(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 18
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 444(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 476(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 19
+; RV32IMZBS-NEXT:    bexti a3, a0, 17
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 17
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 392(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 17
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 18
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 19
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 19
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 496(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 19
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 512(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 20
+; RV32IMZBS-NEXT:    bexti a3, a0, 18
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 18
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 432(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 18
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 436(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 19
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 20
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 20
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 20
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 21
+; RV32IMZBS-NEXT:    bexti a3, a0, 19
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 19
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 496(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 19
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 500(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 408(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 20
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 21
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 21
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 21
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 22
+; RV32IMZBS-NEXT:    bexti a3, a0, 20
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 20
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 20
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 396(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 21
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 22
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 22
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 380(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 22
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 384(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 392(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 23
+; RV32IMZBS-NEXT:    bexti a3, a0, 21
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 21
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 21
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 576(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 428(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 22
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 23
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 23
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 372(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a5, s6, 23
-; RV32IMZBS-NEXT:    and a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 376(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a5
-; RV32IMZBS-NEXT:    sw a1, 388(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 24
+; RV32IMZBS-NEXT:    bexti a3, a0, 22
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 22
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 364(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 22
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 372(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 492(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 23
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    bexti a4, a0, 24
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli a5, s7, 24
-; RV32IMZBS-NEXT:    and a5, a1, a5
-; RV32IMZBS-NEXT:    sw a5, 396(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a4, a4, a2
-; RV32IMZBS-NEXT:    sw a4, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a3, a0, 23
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 23
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a4, s4, 23
+; RV32IMZBS-NEXT:    and a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 360(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a4
+; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 24
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    bexti a3, a0, 24
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    slli a4, s6, 24
+; RV32IMZBS-NEXT:    and a4, a1, a4
+; RV32IMZBS-NEXT:    sw a4, 380(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a3, a2
+; RV32IMZBS-NEXT:    sw a3, 384(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 416(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 25
+; RV32IMZBS-NEXT:    sw a1, 376(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 25
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 25
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 25
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 424(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s6, 25
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 432(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 460(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 26
+; RV32IMZBS-NEXT:    slli a3, s6, 25
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 416(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 25
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 420(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 368(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 26
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 26
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 26
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 464(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s6, 26
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 472(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 480(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 27
+; RV32IMZBS-NEXT:    slli a3, s6, 26
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 456(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 26
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 464(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 388(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 27
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 27
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 27
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 484(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s6, 27
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 492(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 500(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 28
+; RV32IMZBS-NEXT:    slli a3, s6, 27
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 480(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 27
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 484(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 424(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 28
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 28
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 28
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 528(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s6, 28
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 524(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 544(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a3, 29
+; RV32IMZBS-NEXT:    slli a3, s6, 28
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 28
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 444(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a1, a6, 29
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    bexti a2, a0, 29
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 29
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 356(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, s6, 29
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 364(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a5, a1, a4
+; RV32IMZBS-NEXT:    slli a3, s6, 29
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 340(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s4, 29
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 344(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 472(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a1, s8, 1
 ; RV32IMZBS-NEXT:    andi a2, s9, 1
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    seqz a2, a2
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, s7, 30
-; RV32IMZBS-NEXT:    and a6, a1, s7
-; RV32IMZBS-NEXT:    sw a6, 324(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, s6
-; RV32IMZBS-NEXT:    sw a2, 340(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and s7, a1, s6
-; RV32IMZBS-NEXT:    slli s6, s6, 30
-; RV32IMZBS-NEXT:    bexti a1, a3, 30
+; RV32IMZBS-NEXT:    slli a3, s6, 30
+; RV32IMZBS-NEXT:    and s9, a1, s6
+; RV32IMZBS-NEXT:    and s6, a2, s4
+; RV32IMZBS-NEXT:    and a1, a1, s4
+; RV32IMZBS-NEXT:    sw a1, 348(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s4, s4, 30
+; RV32IMZBS-NEXT:    bexti a1, a6, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and a4, a1, a4
-; RV32IMZBS-NEXT:    sw a4, 320(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a0, s6
-; RV32IMZBS-NEXT:    sw a0, 332(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a0, a1, s6
-; RV32IMZBS-NEXT:    sw a0, 368(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a3, a1, a3
+; RV32IMZBS-NEXT:    sw a3, 308(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and s8, a0, s4
+; RV32IMZBS-NEXT:    and a0, a1, s4
+; RV32IMZBS-NEXT:    sw a0, 488(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 2
+; RV32IMZBS-NEXT:    andi a1, t3, 2
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 1
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 304(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 1
-; RV32IMZBS-NEXT:    and s6, a1, a2
+; RV32IMZBS-NEXT:    and s4, a1, a2
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 360(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 336(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 4
+; RV32IMZBS-NEXT:    andi a1, t3, 4
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 2
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 292(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 288(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 2
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 304(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 296(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 348(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 328(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 8
+; RV32IMZBS-NEXT:    andi a1, t3, 8
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 3
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 260(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 3
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 276(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 312(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 300(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 16
+; RV32IMZBS-NEXT:    andi a1, t3, 16
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 4
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 248(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 244(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 4
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 256(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 248(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 288(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 280(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 32
+; RV32IMZBS-NEXT:    andi a1, t3, 32
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 5
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 224(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 216(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 5
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 236(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 232(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 264(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 256(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 64
+; RV32IMZBS-NEXT:    andi a1, t3, 64
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 6
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 296(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 284(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 6
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 308(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 292(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 344(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 324(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 128
+; RV32IMZBS-NEXT:    andi a1, t3, 128
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
@@ -10512,77 +10489,77 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    sw a2, 184(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 7
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 192(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 196(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 220(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 256
+; RV32IMZBS-NEXT:    andi a1, t3, 256
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 8
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 156(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 8
 ; RV32IMZBS-NEXT:    and a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 176(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 204(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 200(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 512
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 512
+; RV32IMZBS-NEXT:    andi a1, t3, 512
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 9
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 228(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 212(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 9
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 240(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 224(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 260(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 180(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi a0, t1, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
-; RV32IMZBS-NEXT:    andi a1, t4, 1024
+; RV32IMZBS-NEXT:    andi a1, t3, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 10
 ; RV32IMZBS-NEXT:    and a2, a0, a2
-; RV32IMZBS-NEXT:    sw a2, 328(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 312(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a2, a7, 10
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 336(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 320(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 352(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 228(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    not a1, t1
 ; RV32IMZBS-NEXT:    bexti a0, a1, 11
 ; RV32IMZBS-NEXT:    addi a2, a0, -1
-; RV32IMZBS-NEXT:    not a0, t4
+; RV32IMZBS-NEXT:    not a0, t3
 ; RV32IMZBS-NEXT:    bexti a3, a0, 11
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 11
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 108(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 112(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 11
 ; RV32IMZBS-NEXT:    and a3, a3, a4
 ; RV32IMZBS-NEXT:    sw a3, 120(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 316(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 12
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 12
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 12
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 92(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 88(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 12
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 96(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 108(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 132(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 332(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 13
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 13
@@ -10592,69 +10569,68 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    sw a4, 144(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 13
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 152(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 160(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 188(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 14
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 14
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 14
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 244(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 236(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 14
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 252(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 240(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 272(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 96(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 15
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 15
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 15
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 280(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 264(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 15
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 284(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 272(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 300(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 140(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 16
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 16
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 16
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 56(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 52(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 16
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 60(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 56(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 220(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 17
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 17
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 17
-; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 44(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s1, t0, 17
+; RV32IMZBS-NEXT:    and s1, a2, s1
 ; RV32IMZBS-NEXT:    slli a4, a7, 17
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 52(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 48(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 252(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 18
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 18
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 18
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 80(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 76(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 18
 ; RV32IMZBS-NEXT:    and a3, a3, a4
 ; RV32IMZBS-NEXT:    sw a3, 84(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 112(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 268(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 19
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 19
@@ -10664,101 +10640,101 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    sw a4, 148(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 19
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 160(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 156(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 180(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 44(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 20
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 20
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 20
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 196(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a4, a7, 20
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 200(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 208(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 188(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s0, a7, 20
+; RV32IMZBS-NEXT:    and a3, a3, s0
+; RV32IMZBS-NEXT:    sw a3, 192(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a2, s0
+; RV32IMZBS-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 21
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 21
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
 ; RV32IMZBS-NEXT:    slli a4, t0, 21
 ; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 212(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a4, 204(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    slli a4, a7, 21
 ; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 216(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a3, 208(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, a2, a4
-; RV32IMZBS-NEXT:    sw a2, 232(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 64(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 22
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
 ; RV32IMZBS-NEXT:    bexti a3, a0, 22
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t0, 22
-; RV32IMZBS-NEXT:    and a4, a2, a4
-; RV32IMZBS-NEXT:    sw a4, 28(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a7, 22
-; RV32IMZBS-NEXT:    and a4, a3, a6
-; RV32IMZBS-NEXT:    and a2, a2, a6
-; RV32IMZBS-NEXT:    sw a2, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a5, t0, 22
+; RV32IMZBS-NEXT:    and s0, a2, a5
+; RV32IMZBS-NEXT:    slli a4, a7, 22
+; RV32IMZBS-NEXT:    and a5, a3, a4
+; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a2, a1, 23
-; RV32IMZBS-NEXT:    addi a6, a2, -1
-; RV32IMZBS-NEXT:    bexti a2, a0, 23
 ; RV32IMZBS-NEXT:    addi a3, a2, -1
+; RV32IMZBS-NEXT:    bexti a2, a0, 23
+; RV32IMZBS-NEXT:    addi a4, a2, -1
 ; RV32IMZBS-NEXT:    slli a2, t0, 23
-; RV32IMZBS-NEXT:    and a2, a6, a2
-; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli t3, a7, 23
-; RV32IMZBS-NEXT:    and a3, a3, t3
-; RV32IMZBS-NEXT:    and a6, a6, t3
-; RV32IMZBS-NEXT:    bexti t3, a1, 24
-; RV32IMZBS-NEXT:    addi s0, t3, -1
-; RV32IMZBS-NEXT:    bexti t3, a0, 24
-; RV32IMZBS-NEXT:    addi t5, t3, -1
-; RV32IMZBS-NEXT:    slli t3, t0, 24
-; RV32IMZBS-NEXT:    and a2, s0, t3
+; RV32IMZBS-NEXT:    and a2, a3, a2
+; RV32IMZBS-NEXT:    sw a2, 16(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, a7, 23
+; RV32IMZBS-NEXT:    and a4, a4, a6
+; RV32IMZBS-NEXT:    and a2, a3, a6
+; RV32IMZBS-NEXT:    sw a2, 152(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a3, a1, 24
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti a6, a0, 24
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    slli t4, t0, 24
+; RV32IMZBS-NEXT:    and a2, a3, t4
+; RV32IMZBS-NEXT:    sw a2, 32(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a6, t5
 ; RV32IMZBS-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, a3, t5
+; RV32IMZBS-NEXT:    sw a2, 24(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a3, a1, 25
+; RV32IMZBS-NEXT:    addi a3, a3, -1
+; RV32IMZBS-NEXT:    bexti t5, a0, 25
+; RV32IMZBS-NEXT:    addi t5, t5, -1
+; RV32IMZBS-NEXT:    slli s5, t0, 25
+; RV32IMZBS-NEXT:    and a2, a3, s5
+; RV32IMZBS-NEXT:    sw a2, 68(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s5, a7, 25
 ; RV32IMZBS-NEXT:    and a2, t5, s5
-; RV32IMZBS-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s0, s5
-; RV32IMZBS-NEXT:    sw a2, 48(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s5, a1, 25
-; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    bexti s8, a0, 25
-; RV32IMZBS-NEXT:    addi s9, s8, -1
-; RV32IMZBS-NEXT:    slli s8, t0, 25
-; RV32IMZBS-NEXT:    and a2, s5, s8
 ; RV32IMZBS-NEXT:    sw a2, 72(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s10, a7, 25
-; RV32IMZBS-NEXT:    and a2, s9, s10
-; RV32IMZBS-NEXT:    sw a2, 76(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s5, s10
-; RV32IMZBS-NEXT:    sw a2, 88(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti s5, a1, 26
+; RV32IMZBS-NEXT:    and a2, a3, s5
+; RV32IMZBS-NEXT:    sw a2, 20(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti t5, a1, 26
+; RV32IMZBS-NEXT:    addi t5, t5, -1
+; RV32IMZBS-NEXT:    bexti s5, a0, 26
 ; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    bexti s10, a0, 26
-; RV32IMZBS-NEXT:    addi s10, s10, -1
-; RV32IMZBS-NEXT:    slli s11, t0, 26
-; RV32IMZBS-NEXT:    and a2, s5, s11
+; RV32IMZBS-NEXT:    slli s7, t0, 26
+; RV32IMZBS-NEXT:    and a2, t5, s7
 ; RV32IMZBS-NEXT:    sw a2, 100(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s11, a7, 26
-; RV32IMZBS-NEXT:    and a2, s10, s11
+; RV32IMZBS-NEXT:    slli s7, a7, 26
+; RV32IMZBS-NEXT:    and a2, s5, s7
 ; RV32IMZBS-NEXT:    sw a2, 104(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s5, s11
-; RV32IMZBS-NEXT:    sw a2, 116(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, t5, s7
+; RV32IMZBS-NEXT:    sw a2, 28(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti s5, a1, 27
 ; RV32IMZBS-NEXT:    addi s5, s5, -1
-; RV32IMZBS-NEXT:    bexti s10, a0, 27
-; RV32IMZBS-NEXT:    addi s10, s10, -1
-; RV32IMZBS-NEXT:    slli s11, t0, 27
-; RV32IMZBS-NEXT:    and a2, s5, s11
+; RV32IMZBS-NEXT:    bexti s7, a0, 27
+; RV32IMZBS-NEXT:    addi s7, s7, -1
+; RV32IMZBS-NEXT:    slli s10, t0, 27
+; RV32IMZBS-NEXT:    and a2, s5, s10
 ; RV32IMZBS-NEXT:    sw a2, 124(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli s11, a7, 27
-; RV32IMZBS-NEXT:    and a2, s10, s11
+; RV32IMZBS-NEXT:    slli s10, a7, 27
+; RV32IMZBS-NEXT:    and a2, s7, s10
 ; RV32IMZBS-NEXT:    sw a2, 128(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    and a2, s5, s11
-; RV32IMZBS-NEXT:    sw a2, 136(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and a2, s5, s10
+; RV32IMZBS-NEXT:    sw a2, 60(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti s5, a1, 28
 ; RV32IMZBS-NEXT:    addi s5, s5, -1
 ; RV32IMZBS-NEXT:    bexti s10, a0, 28
@@ -10770,7 +10746,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    and a2, s10, s11
 ; RV32IMZBS-NEXT:    sw a2, 164(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    and a2, s5, s11
-; RV32IMZBS-NEXT:    sw a2, 172(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a2, 80(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti s5, a1, 29
 ; RV32IMZBS-NEXT:    addi s5, s5, -1
 ; RV32IMZBS-NEXT:    bexti s10, a0, 29
@@ -10778,1143 +10754,1126 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    slli s11, t0, 29
 ; RV32IMZBS-NEXT:    and s11, s5, s11
 ; RV32IMZBS-NEXT:    slli ra, a7, 29
-; RV32IMZBS-NEXT:    and s0, s10, ra
-; RV32IMZBS-NEXT:    and s8, s5, ra
+; RV32IMZBS-NEXT:    and a3, s10, ra
+; RV32IMZBS-NEXT:    and a2, s5, ra
+; RV32IMZBS-NEXT:    sw a2, 92(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    andi t1, t1, 1
-; RV32IMZBS-NEXT:    andi t4, t4, 1
+; RV32IMZBS-NEXT:    andi t3, t3, 1
 ; RV32IMZBS-NEXT:    seqz t1, t1
-; RV32IMZBS-NEXT:    seqz t4, t4
+; RV32IMZBS-NEXT:    seqz t3, t3
 ; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    addi t4, t4, -1
-; RV32IMZBS-NEXT:    slli ra, t0, 30
+; RV32IMZBS-NEXT:    addi t3, t3, -1
+; RV32IMZBS-NEXT:    slli s5, t0, 30
 ; RV32IMZBS-NEXT:    and t0, t1, t0
-; RV32IMZBS-NEXT:    and t4, t4, a7
-; RV32IMZBS-NEXT:    and a2, t1, a7
-; RV32IMZBS-NEXT:    sw a2, 20(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    and t3, t3, a7
+; RV32IMZBS-NEXT:    and a6, t1, a7
 ; RV32IMZBS-NEXT:    slli a7, a7, 30
 ; RV32IMZBS-NEXT:    bexti a1, a1, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and ra, a1, ra
+; RV32IMZBS-NEXT:    and s5, a1, s5
 ; RV32IMZBS-NEXT:    and a0, a0, a7
 ; RV32IMZBS-NEXT:    and a1, a1, a7
-; RV32IMZBS-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 324(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, s2
-; RV32IMZBS-NEXT:    sw a1, 324(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, s4, a1
+; RV32IMZBS-NEXT:    sw a1, 132(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a1, s9, s2
 ; RV32IMZBS-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 568(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 608(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 592(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 512(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 456(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 404(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 440(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 456(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 380(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 372(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 404(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 392(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 448(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 320(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 356(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 440(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 340(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, s1
-; RV32IMZBS-NEXT:    sw a1, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, s3, a1
+; RV32IMZBS-NEXT:    lw a2, 308(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, a2
 ; RV32IMZBS-NEXT:    sw a1, 404(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, s6, t6
+; RV32IMZBS-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, s3, a1
+; RV32IMZBS-NEXT:    sw a1, 392(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 584(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 540(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 528(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 364(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a1, 468(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 452(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 420(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 408(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 420(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 384(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 376(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 408(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 364(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 384(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 316(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, t0, a1
-; RV32IMZBS-NEXT:    sw a1, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 292(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 268(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 468(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 400(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 380(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 224(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a1, 448(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 372(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 360(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 376(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 412(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 344(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, s8
+; RV32IMZBS-NEXT:    sw a1, 400(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t0, a1
+; RV32IMZBS-NEXT:    sw a1, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a1, 288(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 260(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 244(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 216(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, a1, a2
 ; RV32IMZBS-NEXT:    lw a1, 184(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 156(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    lw a2, 172(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 112(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 88(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 52(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, s1
 ; RV32IMZBS-NEXT:    sw a1, 372(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 108(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 92(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 364(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 56(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 44(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, s0, a1
+; RV32IMZBS-NEXT:    sw a1, 360(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a1, s11, s5
 ; RV32IMZBS-NEXT:    sw a1, 356(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 24(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, a1, a2
-; RV32IMZBS-NEXT:    xor s11, s11, ra
-; RV32IMZBS-NEXT:    xor ra, t4, s6
-; RV32IMZBS-NEXT:    lw a1, 304(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor ra, t3, s4
+; RV32IMZBS-NEXT:    lw a1, 296(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a2, 276(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s5, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 256(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s1, 236(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s11, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 248(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s0, 232(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, a1, s0
+; RV32IMZBS-NEXT:    lw a1, 196(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s1, 176(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s1, a1, s1
-; RV32IMZBS-NEXT:    lw a1, 192(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 176(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, a1, a2
 ; RV32IMZBS-NEXT:    lw a1, 120(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 96(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 108(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, a1, a2
+; RV32IMZBS-NEXT:    lw a1, 56(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 48(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, a1, a2
-; RV32IMZBS-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 52(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s4, a1, a2
-; RV32IMZBS-NEXT:    xor s6, a4, a3
-; RV32IMZBS-NEXT:    xor s0, s0, a0
-; RV32IMZBS-NEXT:    xor s7, s7, t2
+; RV32IMZBS-NEXT:    xor s4, a5, a4
+; RV32IMZBS-NEXT:    xor t6, a3, a0
+; RV32IMZBS-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, a0, t2
 ; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t6, a0
-; RV32IMZBS-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 556(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t1, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 476(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 460(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 408(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 396(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 436(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 428(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 376(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 368(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t4, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 392(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 388(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 368(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, a5, a0
-; RV32IMZBS-NEXT:    lw a0, 360(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 348(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 312(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, a0
+; RV32IMZBS-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 300(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 288(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 264(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 280(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 256(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 220(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 204(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 200(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 180(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, a2, a3
-; RV32IMZBS-NEXT:    lw a3, 140(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 132(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 116(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 96(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a3, a4
-; RV32IMZBS-NEXT:    lw a4, 68(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 64(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a4, 44(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 40(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    lw a5, 32(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, a6
-; RV32IMZBS-NEXT:    lw a6, 16(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, s8, a6
-; RV32IMZBS-NEXT:    lw s8, 324(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 12(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s8, s9
-; RV32IMZBS-NEXT:    sw s8, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 440(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 456(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 532(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 396(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 448(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 516(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 716(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 412(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 404(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s8, s9
-; RV32IMZBS-NEXT:    sw s8, 488(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 468(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 456(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 452(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 452(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 444(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 420(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 448(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 400(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 408(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 444(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 384(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 380(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s8, s9
-; RV32IMZBS-NEXT:    sw s8, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 296(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 376(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 228(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 372(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 144(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 364(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    sw s8, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s8, 80(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 356(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, s9, s8
-; RV32IMZBS-NEXT:    lw s8, 36(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s10, s10, s8
-; RV32IMZBS-NEXT:    lw s8, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s8, s11, s8
-; RV32IMZBS-NEXT:    sw s8, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor s8, ra, s5
-; RV32IMZBS-NEXT:    lw s5, 308(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s1, s5
-; RV32IMZBS-NEXT:    sw s1, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 240(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s2, s1
-; RV32IMZBS-NEXT:    sw s1, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 152(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s3, s1
-; RV32IMZBS-NEXT:    sw s1, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 84(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s4, s1
-; RV32IMZBS-NEXT:    sw s1, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 40(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s6, s1
-; RV32IMZBS-NEXT:    sw s1, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw s1, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, s0, s1
-; RV32IMZBS-NEXT:    sw s0, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor t0, s7, t0
-; RV32IMZBS-NEXT:    sw t0, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t1, t0
-; RV32IMZBS-NEXT:    lw t0, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t2, t0
-; RV32IMZBS-NEXT:    sw t0, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t3, t0
-; RV32IMZBS-NEXT:    sw t0, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 476(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t4, t0
-; RV32IMZBS-NEXT:    sw t0, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 416(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t5, t0
-; RV32IMZBS-NEXT:    sw t0, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw t0, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t6, t0
-; RV32IMZBS-NEXT:    sw t0, 712(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    xor a0, a7, a0
-; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 344(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 24(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s5, 20(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, s5
+; RV32IMZBS-NEXT:    lw s5, 12(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s5, s6
+; RV32IMZBS-NEXT:    sw s5, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 592(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 504(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 512(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 432(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 380(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 440(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 712(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 404(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 392(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s5, s6
+; RV32IMZBS-NEXT:    sw s5, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 512(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 364(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 504(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 508(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 468(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 508(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 436(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 448(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 476(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 384(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 412(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 468(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 716(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 400(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 716(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, s5, s7
+; RV32IMZBS-NEXT:    lw s5, 284(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, s8, s5
+; RV32IMZBS-NEXT:    lw s5, 212(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s9, s9, s5
+; RV32IMZBS-NEXT:    lw s5, 144(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, s10, s5
+; RV32IMZBS-NEXT:    lw s5, 76(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 372(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 32(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 360(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 700(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 356(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s6, s5
+; RV32IMZBS-NEXT:    sw s5, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor s5, ra, s11
+; RV32IMZBS-NEXT:    sw s5, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s5, 292(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, s5
+; RV32IMZBS-NEXT:    sw s0, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s0, 224(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, s0
+; RV32IMZBS-NEXT:    lw s0, 160(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s2, s0
+; RV32IMZBS-NEXT:    sw s0, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s0, 84(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s3, s0
+; RV32IMZBS-NEXT:    sw s0, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s0, 36(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s4, s0
+; RV32IMZBS-NEXT:    sw s0, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw s0, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, t6, s0
+; RV32IMZBS-NEXT:    sw t6, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor t5, t5, a7
+; RV32IMZBS-NEXT:    lw a7, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t0, a7
+; RV32IMZBS-NEXT:    lw a7, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t1, a7
+; RV32IMZBS-NEXT:    sw a7, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a7, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t2, a7
+; RV32IMZBS-NEXT:    sw a7, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a7, 428(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t3, a7
+; RV32IMZBS-NEXT:    lw a7, 388(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t4, a7
+; RV32IMZBS-NEXT:    sw a7, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor t1, a6, a0
+; RV32IMZBS-NEXT:    lw a0, 324(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 552(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 260(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 228(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 520(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 188(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 112(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 140(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a3, a0
+; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a4, a0
-; RV32IMZBS-NEXT:    sw a0, 508(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 28(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a5, a0
-; RV32IMZBS-NEXT:    sw a0, 504(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a6, a0
-; RV32IMZBS-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a5, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli a4, a5, 4
+; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a3, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli a2, a3, 4
 ; RV32IMZBS-NEXT:    lw a1, 744(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a5, a5, a1
+; RV32IMZBS-NEXT:    and a3, a3, a1
+; RV32IMZBS-NEXT:    and a2, a2, a1
+; RV32IMZBS-NEXT:    slli a3, a3, 4
+; RV32IMZBS-NEXT:    or a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a4, 688(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli a3, a4, 4
 ; RV32IMZBS-NEXT:    and a4, a4, a1
-; RV32IMZBS-NEXT:    slli a5, a5, 4
-; RV32IMZBS-NEXT:    or a4, a4, a5
-; RV32IMZBS-NEXT:    sw a4, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli a5, a0, 4
-; RV32IMZBS-NEXT:    and a6, a0, a1
-; RV32IMZBS-NEXT:    and a5, a5, a1
-; RV32IMZBS-NEXT:    slli a6, a6, 4
-; RV32IMZBS-NEXT:    or a0, a5, a6
-; RV32IMZBS-NEXT:    sw a0, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and a3, a3, a1
+; RV32IMZBS-NEXT:    slli a4, a4, 4
+; RV32IMZBS-NEXT:    or a3, a3, a4
+; RV32IMZBS-NEXT:    sw a3, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 588(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    lw a0, 496(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 416(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 536(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 488(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 512(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a0, a2
-; RV32IMZBS-NEXT:    sw a0, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 656(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 504(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s11, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 452(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 508(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 512(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 448(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 500(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 476(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 432(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 444(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 420(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 468(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a2, a0
-; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    srli t2, a0, 4
-; RV32IMZBS-NEXT:    and t3, a0, a1
+; RV32IMZBS-NEXT:    and t4, a0, a1
 ; RV32IMZBS-NEXT:    and t2, t2, a1
-; RV32IMZBS-NEXT:    slli t3, t3, 4
-; RV32IMZBS-NEXT:    or a0, t2, t3
-; RV32IMZBS-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t3, a0, 4
+; RV32IMZBS-NEXT:    slli t4, t4, 4
+; RV32IMZBS-NEXT:    or a0, t2, t4
+; RV32IMZBS-NEXT:    sw a0, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli t2, a0, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    and t3, t3, a1
+; RV32IMZBS-NEXT:    and t2, t2, a1
 ; RV32IMZBS-NEXT:    slli a0, a0, 4
-; RV32IMZBS-NEXT:    or a0, t3, a0
-; RV32IMZBS-NEXT:    sw a0, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    lw a0, 328(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s5, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 244(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s6, a1, a0
+; RV32IMZBS-NEXT:    or a0, t2, a0
+; RV32IMZBS-NEXT:    sw a0, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    xor a0, s7, s8
+; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    lw a0, 312(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s5, s9, a0
+; RV32IMZBS-NEXT:    lw a0, 236(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s6, s10, a0
 ; RV32IMZBS-NEXT:    lw a0, 148(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, s9, a0
-; RV32IMZBS-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, s10, a0
-; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s4, s8, a0
-; RV32IMZBS-NEXT:    lw a0, 336(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s0, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s2, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 68(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 648(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s4, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 320(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, s1, a0
+; RV32IMZBS-NEXT:    lw a0, 240(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s0, 632(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s0, s0, a0
-; RV32IMZBS-NEXT:    lw a0, 252(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s1, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 156(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s1, 624(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s1, s1, a0
-; RV32IMZBS-NEXT:    lw a0, 160(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 76(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 72(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, a0
+; RV32IMZBS-NEXT:    xor a4, t5, t0
+; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a5, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, a0
+; RV32IMZBS-NEXT:    lw a0, 596(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 492(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t3, a0
+; RV32IMZBS-NEXT:    lw a0, 424(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 608(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, a1, a0
+; RV32IMZBS-NEXT:    xor t0, a1, a0
 ; RV32IMZBS-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, a0, t1
-; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t1, a0
+; RV32IMZBS-NEXT:    lw a0, 316(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t2, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 220(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor t3, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 460(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 352(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, a0
-; RV32IMZBS-NEXT:    lw a0, 272(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 180(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 508(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 88(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 504(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a0
-; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 136(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t4, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 60(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor ra, a0, ra
-; RV32IMZBS-NEXT:    lw a0, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a0, a1, a0
-; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 560(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    lw a2, 464(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s8, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 456(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 556(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a2, s8, a2
-; RV32IMZBS-NEXT:    lw s8, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 652(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s11, s8, s11
-; RV32IMZBS-NEXT:    lw s8, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s9, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s8, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 656(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s8, s9, s8
-; RV32IMZBS-NEXT:    lw s9, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s10, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s9, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s10, 580(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s9, s10, s9
-; RV32IMZBS-NEXT:    lw s10, 472(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw s7, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s10, 464(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 544(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s10, s7, s10
-; RV32IMZBS-NEXT:    lw s7, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 540(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s5, s7, s5
-; RV32IMZBS-NEXT:    lw s7, 280(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 264(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s6, s6, s7
-; RV32IMZBS-NEXT:    lw s7, 196(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s7, 188(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s2, s2, s7
 ; RV32IMZBS-NEXT:    lw s7, 100(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, s3, s7
-; RV32IMZBS-NEXT:    xor s0, s4, s0
-; RV32IMZBS-NEXT:    lw s4, 284(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, s1, s4
-; RV32IMZBS-NEXT:    lw s4, 200(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, s4
-; RV32IMZBS-NEXT:    lw s4, 104(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, s4
-; RV32IMZBS-NEXT:    xor t2, t6, t2
-; RV32IMZBS-NEXT:    lw t6, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t3, t6
-; RV32IMZBS-NEXT:    lw t6, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t6
-; RV32IMZBS-NEXT:    lw t6, 480(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t6
-; RV32IMZBS-NEXT:    xor a4, t1, a4
-; RV32IMZBS-NEXT:    lw t1, 300(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a5, t1
-; RV32IMZBS-NEXT:    lw t1, 208(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, t1
-; RV32IMZBS-NEXT:    lw t1, 116(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, t1
+; RV32IMZBS-NEXT:    xor s4, s4, t6
+; RV32IMZBS-NEXT:    lw t6, 272(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, t6
+; RV32IMZBS-NEXT:    lw t6, 192(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, t6
+; RV32IMZBS-NEXT:    lw t6, 104(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s7, a3, t6
+; RV32IMZBS-NEXT:    lw a3, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t6, a4, a3
+; RV32IMZBS-NEXT:    lw a4, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a5, a4
+; RV32IMZBS-NEXT:    lw a3, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, a3
+; RV32IMZBS-NEXT:    lw a3, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a7, a3
+; RV32IMZBS-NEXT:    lw a3, 444(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t0, a3
+; RV32IMZBS-NEXT:    lw a3, 352(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, t1, a3
+; RV32IMZBS-NEXT:    lw a7, 332(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t2, a7
+; RV32IMZBS-NEXT:    lw a7, 252(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, t3, a7
+; RV32IMZBS-NEXT:    lw a7, 152(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a7, t4, a7
+; RV32IMZBS-NEXT:    lw t3, 80(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t5, t3
 ; RV32IMZBS-NEXT:    xor a0, ra, a0
-; RV32IMZBS-NEXT:    lw t1, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, t1
-; RV32IMZBS-NEXT:    lw t1, 484(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, t1
-; RV32IMZBS-NEXT:    xor t1, s11, s8
-; RV32IMZBS-NEXT:    lw t6, 596(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t6, s9, t6
-; RV32IMZBS-NEXT:    lw s4, 492(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s4, s10, s4
+; RV32IMZBS-NEXT:    lw t4, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t4
+; RV32IMZBS-NEXT:    lw t4, 480(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t4
+; RV32IMZBS-NEXT:    xor t4, s11, s8
+; RV32IMZBS-NEXT:    lw t5, 576(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t5, s9, t5
+; RV32IMZBS-NEXT:    lw s8, 484(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s8, s10, s8
 ; RV32IMZBS-NEXT:    xor s5, s5, s6
-; RV32IMZBS-NEXT:    lw s6, 212(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw s6, 204(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s2, s2, s6
 ; RV32IMZBS-NEXT:    lw s6, 124(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor s3, s3, s6
-; RV32IMZBS-NEXT:    xor s0, s0, s1
-; RV32IMZBS-NEXT:    lw s1, 216(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, t4, s1
-; RV32IMZBS-NEXT:    lw s1, 128(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, s1
-; RV32IMZBS-NEXT:    xor t2, t2, t3
-; RV32IMZBS-NEXT:    lw t3, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t3
-; RV32IMZBS-NEXT:    lw t3, 500(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t3
-; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    lw a5, 232(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a6, a5
-; RV32IMZBS-NEXT:    lw a6, 136(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a6
-; RV32IMZBS-NEXT:    lw t3, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli a6, t3, 2
-; RV32IMZBS-NEXT:    lw s6, 728(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and t3, t3, s6
-; RV32IMZBS-NEXT:    and a6, a6, s6
-; RV32IMZBS-NEXT:    slli t3, t3, 2
-; RV32IMZBS-NEXT:    or a6, a6, t3
-; RV32IMZBS-NEXT:    lw s1, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t3, s1, 2
-; RV32IMZBS-NEXT:    and s1, s1, s6
-; RV32IMZBS-NEXT:    and t3, t3, s6
-; RV32IMZBS-NEXT:    slli s1, s1, 2
-; RV32IMZBS-NEXT:    or t3, t3, s1
+; RV32IMZBS-NEXT:    xor s0, s4, s0
+; RV32IMZBS-NEXT:    lw s4, 208(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s1, s4
+; RV32IMZBS-NEXT:    lw s4, 128(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s4, s7, s4
+; RV32IMZBS-NEXT:    lw s6, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, s6
+; RV32IMZBS-NEXT:    lw s6, 472(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t0, s6
+; RV32IMZBS-NEXT:    lw s6, 268(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t2, t2, s6
+; RV32IMZBS-NEXT:    lw s6, 92(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, t3, s6
+; RV32IMZBS-NEXT:    lw s7, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s6, s7, 2
+; RV32IMZBS-NEXT:    lw s11, 724(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s7, s7, s11
+; RV32IMZBS-NEXT:    and s6, s6, s11
+; RV32IMZBS-NEXT:    slli s7, s7, 2
+; RV32IMZBS-NEXT:    or s6, s6, s7
+; RV32IMZBS-NEXT:    lw s9, 688(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s7, s9, 2
+; RV32IMZBS-NEXT:    and s9, s9, s11
+; RV32IMZBS-NEXT:    and s7, s7, s11
+; RV32IMZBS-NEXT:    slli s9, s9, 2
+; RV32IMZBS-NEXT:    or s7, s7, s9
 ; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    lw a1, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 520(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a1, a2, a1
-; RV32IMZBS-NEXT:    xor a2, t1, t6
-; RV32IMZBS-NEXT:    lw t1, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, s4, t1
-; RV32IMZBS-NEXT:    lw s1, 696(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t6, s1, 2
-; RV32IMZBS-NEXT:    and s1, s1, s6
-; RV32IMZBS-NEXT:    and t6, t6, s6
-; RV32IMZBS-NEXT:    slli s1, s1, 2
-; RV32IMZBS-NEXT:    or t6, t6, s1
-; RV32IMZBS-NEXT:    lw s4, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli s1, s4, 2
-; RV32IMZBS-NEXT:    and s4, s4, s6
-; RV32IMZBS-NEXT:    and s1, s1, s6
-; RV32IMZBS-NEXT:    slli s4, s4, 2
-; RV32IMZBS-NEXT:    or s1, s1, s4
+; RV32IMZBS-NEXT:    xor a2, t4, t5
+; RV32IMZBS-NEXT:    lw t4, 516(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t4, s8, t4
+; RV32IMZBS-NEXT:    lw s8, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli t5, s8, 2
+; RV32IMZBS-NEXT:    and s8, s8, s11
+; RV32IMZBS-NEXT:    and t5, t5, s11
+; RV32IMZBS-NEXT:    slli s8, s8, 2
+; RV32IMZBS-NEXT:    or t5, t5, s8
+; RV32IMZBS-NEXT:    lw s9, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s8, s9, 2
+; RV32IMZBS-NEXT:    and s9, s9, s11
+; RV32IMZBS-NEXT:    and s8, s8, s11
+; RV32IMZBS-NEXT:    slli s9, s9, 2
+; RV32IMZBS-NEXT:    or s8, s8, s9
 ; RV32IMZBS-NEXT:    xor s2, s5, s2
-; RV32IMZBS-NEXT:    lw s4, 168(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s3, s3, s4
-; RV32IMZBS-NEXT:    xor t4, s0, t4
-; RV32IMZBS-NEXT:    lw s0, 164(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t5, t5, s0
-; RV32IMZBS-NEXT:    xor a7, t2, a7
-; RV32IMZBS-NEXT:    lw t2, 544(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t2
-; RV32IMZBS-NEXT:    xor a4, a4, a5
-; RV32IMZBS-NEXT:    lw a5, 172(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a5
-; RV32IMZBS-NEXT:    xor a0, a0, a1
-; RV32IMZBS-NEXT:    xor a1, a2, t1
-; RV32IMZBS-NEXT:    srli a2, a6, 1
-; RV32IMZBS-NEXT:    lw s4, 724(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a5, a6, s4
-; RV32IMZBS-NEXT:    xor a6, s2, s3
-; RV32IMZBS-NEXT:    srli t1, t3, 1
-; RV32IMZBS-NEXT:    and t2, t3, s4
-; RV32IMZBS-NEXT:    xor t3, t4, t5
-; RV32IMZBS-NEXT:    srli t4, t6, 1
-; RV32IMZBS-NEXT:    and t5, t6, s4
-; RV32IMZBS-NEXT:    xor a7, a7, t0
-; RV32IMZBS-NEXT:    srli t0, s1, 1
-; RV32IMZBS-NEXT:    and t6, s1, s4
-; RV32IMZBS-NEXT:    xor a3, a4, a3
-; RV32IMZBS-NEXT:    and a2, a2, s4
-; RV32IMZBS-NEXT:    slli a5, a5, 1
-; RV32IMZBS-NEXT:    and a4, t1, s4
-; RV32IMZBS-NEXT:    slli t2, t2, 1
-; RV32IMZBS-NEXT:    lw t1, 716(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, a0, t1
-; RV32IMZBS-NEXT:    lw s0, 720(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s0, a1, s0
-; RV32IMZBS-NEXT:    and t4, t4, s4
-; RV32IMZBS-NEXT:    slli t5, t5, 1
-; RV32IMZBS-NEXT:    and t0, t0, s4
-; RV32IMZBS-NEXT:    slli t6, t6, 1
-; RV32IMZBS-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s1, a6, a0
-; RV32IMZBS-NEXT:    lw a0, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t3, t3, a0
-; RV32IMZBS-NEXT:    lw a0, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, a0
-; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a3, a0
-; RV32IMZBS-NEXT:    or a0, a2, a5
-; RV32IMZBS-NEXT:    or a1, a4, t2
-; RV32IMZBS-NEXT:    srli a2, t2, 31
-; RV32IMZBS-NEXT:    xor a4, s0, t1
-; RV32IMZBS-NEXT:    sw a4, 720(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    or t2, t4, t5
-; RV32IMZBS-NEXT:    or s2, t0, t6
-; RV32IMZBS-NEXT:    srli a4, t6, 31
-; RV32IMZBS-NEXT:    xor a5, t3, s1
-; RV32IMZBS-NEXT:    sw a5, 716(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    srli a5, a7, 8
-; RV32IMZBS-NEXT:    srli t0, a7, 24
-; RV32IMZBS-NEXT:    slli a6, a7, 24
-; RV32IMZBS-NEXT:    lw s5, 740(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a7, a7, s5
-; RV32IMZBS-NEXT:    srli t3, a3, 8
-; RV32IMZBS-NEXT:    srli t4, a3, 24
-; RV32IMZBS-NEXT:    slli t5, a3, 24
-; RV32IMZBS-NEXT:    and a3, a3, s5
-; RV32IMZBS-NEXT:    slli t6, a0, 1
-; RV32IMZBS-NEXT:    andi s0, a1, 2
-; RV32IMZBS-NEXT:    slli s1, a0, 2
-; RV32IMZBS-NEXT:    andi t1, a1, 4
-; RV32IMZBS-NEXT:    slli s3, a0, 3
-; RV32IMZBS-NEXT:    and a5, a5, s5
-; RV32IMZBS-NEXT:    or a5, a5, t0
-; RV32IMZBS-NEXT:    andi t0, a1, 8
-; RV32IMZBS-NEXT:    slli a7, a7, 8
-; RV32IMZBS-NEXT:    or a7, a6, a7
-; RV32IMZBS-NEXT:    slli a6, a0, 4
-; RV32IMZBS-NEXT:    and t3, t3, s5
-; RV32IMZBS-NEXT:    or t3, t3, t4
-; RV32IMZBS-NEXT:    andi t4, a1, 16
-; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, t5, a3
-; RV32IMZBS-NEXT:    slli t5, a0, 31
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a2, a2, t5
-; RV32IMZBS-NEXT:    sw a2, 700(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, t2, 31
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, a2
-; RV32IMZBS-NEXT:    sw a2, 708(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a2, a0, 5
-; RV32IMZBS-NEXT:    or a4, a7, a5
-; RV32IMZBS-NEXT:    sw a4, 704(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a4, a1, 32
-; RV32IMZBS-NEXT:    or a3, a3, t3
-; RV32IMZBS-NEXT:    sw a3, 712(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, a0, 6
-; RV32IMZBS-NEXT:    seqz a5, s0
-; RV32IMZBS-NEXT:    addi a5, a5, -1
-; RV32IMZBS-NEXT:    and a5, a5, t6
-; RV32IMZBS-NEXT:    sw a5, 692(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a5, a1, 64
-; RV32IMZBS-NEXT:    seqz a7, t1
-; RV32IMZBS-NEXT:    addi a7, a7, -1
-; RV32IMZBS-NEXT:    and a7, a7, s1
-; RV32IMZBS-NEXT:    sw a7, 688(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a7, a0, 7
-; RV32IMZBS-NEXT:    seqz t0, t0
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    and t0, t0, s3
-; RV32IMZBS-NEXT:    sw t0, 676(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi t0, a1, 128
-; RV32IMZBS-NEXT:    seqz t3, t4
-; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    and a6, t3, a6
-; RV32IMZBS-NEXT:    sw a6, 672(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a6, a0, 8
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a2, a4, a2
-; RV32IMZBS-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a2, a1, 256
-; RV32IMZBS-NEXT:    seqz a4, a5
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a3, a4, a3
-; RV32IMZBS-NEXT:    sw a3, 684(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a3, a0, 9
-; RV32IMZBS-NEXT:    seqz a4, t0
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a5, a4, a7
-; RV32IMZBS-NEXT:    andi a4, a1, 512
-; RV32IMZBS-NEXT:    seqz a2, a2
-; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    and a7, a2, a6
-; RV32IMZBS-NEXT:    slli a2, a0, 10
-; RV32IMZBS-NEXT:    seqz a4, a4
-; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    and a3, a4, a3
-; RV32IMZBS-NEXT:    sw a3, 660(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a3, a1, 1024
-; RV32IMZBS-NEXT:    seqz a3, a3
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    and a2, a3, a2
-; RV32IMZBS-NEXT:    sw a2, 696(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a2, a1
-; RV32IMZBS-NEXT:    bexti a3, a2, 11
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 11
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 636(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 12
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 12
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 632(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 13
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 13
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 644(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 14
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 14
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 668(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 15
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 15
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 680(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 16
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 16
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 612(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 17
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 17
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 608(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 18
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 18
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 620(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 19
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 19
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 648(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 20
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 20
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 652(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 21
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 21
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 656(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 22
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 22
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 600(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 23
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 23
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 596(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 24
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 24
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 604(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 25
-; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 25
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 616(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 26
+; RV32IMZBS-NEXT:    lw s5, 168(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s3, s3, s5
+; RV32IMZBS-NEXT:    xor s0, s0, s1
+; RV32IMZBS-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, s4, s1
+; RV32IMZBS-NEXT:    xor a4, t6, a4
+; RV32IMZBS-NEXT:    xor a4, a4, a6
+; RV32IMZBS-NEXT:    lw a6, 488(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, t0, a6
+; RV32IMZBS-NEXT:    xor t0, a3, t1
+; RV32IMZBS-NEXT:    xor t0, t0, t2
+; RV32IMZBS-NEXT:    lw t1, 132(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t3, t1
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    xor a1, a2, t4
+; RV32IMZBS-NEXT:    xor a2, s2, s3
+; RV32IMZBS-NEXT:    xor s0, s0, s1
+; RV32IMZBS-NEXT:    xor a4, a4, a5
+; RV32IMZBS-NEXT:    slli t6, t6, 24
+; RV32IMZBS-NEXT:    slli a3, a3, 24
+; RV32IMZBS-NEXT:    lw a5, 720(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a6, a5
+; RV32IMZBS-NEXT:    srli a6, s6, 1
+; RV32IMZBS-NEXT:    lw s4, 728(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and t2, s6, s4
+; RV32IMZBS-NEXT:    xor a7, t0, a7
+; RV32IMZBS-NEXT:    srli t0, s7, 1
+; RV32IMZBS-NEXT:    and t3, s7, s4
+; RV32IMZBS-NEXT:    lw t4, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, t1, t4
+; RV32IMZBS-NEXT:    srli t4, t5, 1
+; RV32IMZBS-NEXT:    and t5, t5, s4
+; RV32IMZBS-NEXT:    lw s1, 712(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s1, a0, s1
+; RV32IMZBS-NEXT:    srli a0, s8, 1
+; RV32IMZBS-NEXT:    and s2, s8, s4
+; RV32IMZBS-NEXT:    and a6, a6, s4
+; RV32IMZBS-NEXT:    slli t2, t2, 1
+; RV32IMZBS-NEXT:    and t0, t0, s4
+; RV32IMZBS-NEXT:    slli t3, t3, 1
+; RV32IMZBS-NEXT:    lw s3, 716(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, s3
+; RV32IMZBS-NEXT:    and t4, t4, s4
+; RV32IMZBS-NEXT:    slli t5, t5, 1
+; RV32IMZBS-NEXT:    and s3, a0, s4
+; RV32IMZBS-NEXT:    mv s8, s4
+; RV32IMZBS-NEXT:    slli s4, s2, 1
+; RV32IMZBS-NEXT:    lw a0, 700(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, a0
+; RV32IMZBS-NEXT:    lw a0, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s0, s0, a0
+; RV32IMZBS-NEXT:    lw s9, 740(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s5, a4, s9
+; RV32IMZBS-NEXT:    srli s6, a4, 8
+; RV32IMZBS-NEXT:    xor a4, a4, a5
+; RV32IMZBS-NEXT:    and a5, a7, s9
+; RV32IMZBS-NEXT:    srli s7, a7, 8
+; RV32IMZBS-NEXT:    xor a7, a7, t1
+; RV32IMZBS-NEXT:    or s2, a6, t2
+; RV32IMZBS-NEXT:    or a0, t0, t3
+; RV32IMZBS-NEXT:    srli a6, t3, 31
+; RV32IMZBS-NEXT:    xor a1, a1, s1
+; RV32IMZBS-NEXT:    sw a1, 720(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    or t1, t4, t5
+; RV32IMZBS-NEXT:    or t3, s3, s4
+; RV32IMZBS-NEXT:    srli a1, s4, 31
+; RV32IMZBS-NEXT:    xor a2, s0, a2
+; RV32IMZBS-NEXT:    sw a2, 716(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli s5, s5, 8
+; RV32IMZBS-NEXT:    and a2, s6, s9
+; RV32IMZBS-NEXT:    srli a4, a4, 24
+; RV32IMZBS-NEXT:    slli a5, a5, 8
+; RV32IMZBS-NEXT:    and t0, s7, s9
+; RV32IMZBS-NEXT:    srli a7, a7, 24
+; RV32IMZBS-NEXT:    slli t2, s2, 1
+; RV32IMZBS-NEXT:    andi t4, a0, 2
+; RV32IMZBS-NEXT:    slli t5, s2, 2
+; RV32IMZBS-NEXT:    andi s0, a0, 4
+; RV32IMZBS-NEXT:    slli s1, s2, 3
+; RV32IMZBS-NEXT:    or t6, t6, s5
+; RV32IMZBS-NEXT:    andi s3, a0, 8
+; RV32IMZBS-NEXT:    or a2, a2, a4
+; RV32IMZBS-NEXT:    slli a4, s2, 4
+; RV32IMZBS-NEXT:    or a3, a3, a5
+; RV32IMZBS-NEXT:    andi a5, a0, 16
+; RV32IMZBS-NEXT:    or a7, t0, a7
+; RV32IMZBS-NEXT:    slli t0, s2, 5
+; RV32IMZBS-NEXT:    or a2, t6, a2
+; RV32IMZBS-NEXT:    sw a2, 540(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a2, a0, 32
+; RV32IMZBS-NEXT:    or a3, a3, a7
+; RV32IMZBS-NEXT:    sw a3, 704(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, s2, 31
+; RV32IMZBS-NEXT:    seqz a6, a6
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    and a3, a6, a3
+; RV32IMZBS-NEXT:    sw a3, 712(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, t1, 31
+; RV32IMZBS-NEXT:    seqz a1, a1
+; RV32IMZBS-NEXT:    addi a1, a1, -1
+; RV32IMZBS-NEXT:    and a1, a1, a3
+; RV32IMZBS-NEXT:    sw a1, 708(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, s2, 6
+; RV32IMZBS-NEXT:    seqz a3, t4
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 26
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 624(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 27
+; RV32IMZBS-NEXT:    and a3, a3, t2
+; RV32IMZBS-NEXT:    sw a3, 688(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a3, a0, 64
+; RV32IMZBS-NEXT:    seqz a6, s0
+; RV32IMZBS-NEXT:    addi a6, a6, -1
+; RV32IMZBS-NEXT:    and a6, a6, t5
+; RV32IMZBS-NEXT:    sw a6, 680(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a6, s2, 7
+; RV32IMZBS-NEXT:    seqz a7, s3
+; RV32IMZBS-NEXT:    addi a7, a7, -1
+; RV32IMZBS-NEXT:    and a7, a7, s1
+; RV32IMZBS-NEXT:    sw a7, 672(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a7, a0, 128
+; RV32IMZBS-NEXT:    seqz a5, a5
+; RV32IMZBS-NEXT:    addi a5, a5, -1
+; RV32IMZBS-NEXT:    and a5, a5, a4
+; RV32IMZBS-NEXT:    slli a4, s2, 8
+; RV32IMZBS-NEXT:    seqz a2, a2
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    and a2, a2, t0
+; RV32IMZBS-NEXT:    sw a2, 664(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a2, a0, 256
+; RV32IMZBS-NEXT:    seqz a3, a3
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 27
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 628(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 28
+; RV32IMZBS-NEXT:    and a1, a3, a1
+; RV32IMZBS-NEXT:    sw a1, 696(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a1, s2, 9
+; RV32IMZBS-NEXT:    seqz a3, a7
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 28
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 640(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a3, a2, 29
+; RV32IMZBS-NEXT:    and a3, a3, a6
+; RV32IMZBS-NEXT:    sw a3, 700(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a3, a0, 512
+; RV32IMZBS-NEXT:    seqz a2, a2
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    and a2, a2, a4
+; RV32IMZBS-NEXT:    sw a2, 652(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, s2, 10
+; RV32IMZBS-NEXT:    seqz a3, a3
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, a0, 29
-; RV32IMZBS-NEXT:    and a3, a3, a4
-; RV32IMZBS-NEXT:    sw a3, 592(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a1, a1, 1
+; RV32IMZBS-NEXT:    and a1, a3, a1
+; RV32IMZBS-NEXT:    sw a1, 648(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a1, a0, 1024
 ; RV32IMZBS-NEXT:    seqz a1, a1
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a1, a1, a0
-; RV32IMZBS-NEXT:    sw a1, 584(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    slli a0, a0, 30
-; RV32IMZBS-NEXT:    bexti a1, a2, 30
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    and a0, a1, a0
-; RV32IMZBS-NEXT:    sw a0, 588(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 2
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 668(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a1, a0
+; RV32IMZBS-NEXT:    bexti a2, a1, 11
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 11
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 676(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 12
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 12
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 692(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 13
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 13
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 632(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 14
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 14
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 620(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 15
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 15
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 644(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 16
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 16
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 656(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 17
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 17
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 660(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 18
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 18
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 684(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 19
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 19
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 604(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 20
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 20
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 596(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 21
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 21
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 616(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 22
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 22
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 628(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 23
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 23
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 640(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 24
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 24
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 592(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 25
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 25
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 588(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 26
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 26
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 600(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 27
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 27
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 608(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 28
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 28
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 612(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    bexti a2, a1, 29
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a3, s2, 29
+; RV32IMZBS-NEXT:    and a2, a2, a3
+; RV32IMZBS-NEXT:    sw a2, 636(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, a0, 1
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 1
-; RV32IMZBS-NEXT:    and a0, a0, a1
+; RV32IMZBS-NEXT:    and a0, a0, s2
 ; RV32IMZBS-NEXT:    sw a0, 580(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 4
+; RV32IMZBS-NEXT:    slli s2, s2, 30
+; RV32IMZBS-NEXT:    bexti a0, a1, 30
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    and a0, a0, s2
+; RV32IMZBS-NEXT:    sw a0, 624(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t3, 2
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 2
+; RV32IMZBS-NEXT:    slli a1, t1, 1
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 576(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 8
+; RV32IMZBS-NEXT:    andi a0, t3, 4
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 3
+; RV32IMZBS-NEXT:    slli a1, t1, 2
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 568(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 16
+; RV32IMZBS-NEXT:    andi a0, t3, 8
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 4
+; RV32IMZBS-NEXT:    slli a1, t1, 3
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 560(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 32
+; RV32IMZBS-NEXT:    andi a0, t3, 16
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 5
+; RV32IMZBS-NEXT:    slli a1, t1, 4
 ; RV32IMZBS-NEXT:    and a0, a0, a1
 ; RV32IMZBS-NEXT:    sw a0, 556(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 64
+; RV32IMZBS-NEXT:    andi a0, t3, 32
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 6
+; RV32IMZBS-NEXT:    slli a1, t1, 5
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 564(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 128
+; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t3, 64
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 7
+; RV32IMZBS-NEXT:    slli a1, t1, 6
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 540(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 256
+; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t3, 128
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 8
+; RV32IMZBS-NEXT:    slli a1, t1, 7
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 512
+; RV32IMZBS-NEXT:    sw a0, 584(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t3, 256
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 9
+; RV32IMZBS-NEXT:    slli a1, t1, 8
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 544(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    andi a0, s2, 1024
+; RV32IMZBS-NEXT:    sw a0, 528(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    andi a0, t3, 512
+; RV32IMZBS-NEXT:    seqz a0, a0
+; RV32IMZBS-NEXT:    addi a0, a0, -1
+; RV32IMZBS-NEXT:    slli s0, t1, 9
+; RV32IMZBS-NEXT:    and s10, a0, s0
+; RV32IMZBS-NEXT:    andi a0, t3, 1024
 ; RV32IMZBS-NEXT:    seqz a0, a0
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    slli a1, t2, 10
+; RV32IMZBS-NEXT:    slli a1, t1, 10
 ; RV32IMZBS-NEXT:    and a0, a0, a1
-; RV32IMZBS-NEXT:    sw a0, 572(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    not a0, s2
+; RV32IMZBS-NEXT:    sw a0, 536(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    not a0, t3
 ; RV32IMZBS-NEXT:    bexti a1, a0, 11
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 11
+; RV32IMZBS-NEXT:    slli a2, t1, 11
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 516(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 12
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 12
-; RV32IMZBS-NEXT:    and s9, a1, a2
+; RV32IMZBS-NEXT:    slli a2, t1, 12
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 564(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 13
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 13
-; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t1, 13
+; RV32IMZBS-NEXT:    and s7, a1, a2
 ; RV32IMZBS-NEXT:    bexti a1, a0, 14
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 14
-; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a2, t1, 14
+; RV32IMZBS-NEXT:    and s4, a1, a2
 ; RV32IMZBS-NEXT:    bexti a1, a0, 15
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 15
+; RV32IMZBS-NEXT:    slli a2, t1, 15
 ; RV32IMZBS-NEXT:    and a1, a1, a2
-; RV32IMZBS-NEXT:    sw a1, 552(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 16
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a3, t2, 16
-; RV32IMZBS-NEXT:    and s5, a1, a3
+; RV32IMZBS-NEXT:    slli s1, t1, 16
+; RV32IMZBS-NEXT:    and a1, a1, s1
+; RV32IMZBS-NEXT:    sw a1, 524(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 17
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a2, t2, 17
-; RV32IMZBS-NEXT:    and s3, a1, a2
+; RV32IMZBS-NEXT:    slli a2, t1, 17
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 18
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t2, 18
-; RV32IMZBS-NEXT:    and s10, a1, a4
+; RV32IMZBS-NEXT:    slli a2, t1, 18
+; RV32IMZBS-NEXT:    and a1, a1, a2
+; RV32IMZBS-NEXT:    sw a1, 548(sp) # 4-byte Folded Spill
 ; RV32IMZBS-NEXT:    bexti a1, a0, 19
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t2, 19
-; RV32IMZBS-NEXT:    and a1, a1, a4
-; RV32IMZBS-NEXT:    sw a1, 520(sp) # 4-byte Folded Spill
+; RV32IMZBS-NEXT:    slli a3, t1, 19
+; RV32IMZBS-NEXT:    and s1, a1, a3
 ; RV32IMZBS-NEXT:    bexti a1, a0, 20
 ; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s0, t2, 20
-; RV32IMZBS-NEXT:    and a1, a1, s0
-; RV32IMZBS-NEXT:    sw a1, 528(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 21
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli s1, t2, 21
-; RV32IMZBS-NEXT:    and a1, a1, s1
-; RV32IMZBS-NEXT:    sw a1, 532(sp) # 4-byte Folded Spill
-; RV32IMZBS-NEXT:    bexti a1, a0, 22
-; RV32IMZBS-NEXT:    addi a1, a1, -1
-; RV32IMZBS-NEXT:    slli a4, t2, 22
-; RV32IMZBS-NEXT:    and s0, a1, a4
+; RV32IMZBS-NEXT:    slli a2, t1, 20
+; RV32IMZBS-NEXT:    and s0, a1, a2
+; RV32IMZBS-NEXT:    bexti a2, a0, 21
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a4, t1, 21
+; RV32IMZBS-NEXT:    and s3, a2, a4
+; RV32IMZBS-NEXT:    bexti a2, a0, 22
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a4, t1, 22
+; RV32IMZBS-NEXT:    and s6, a2, a4
 ; RV32IMZBS-NEXT:    bexti a2, a0, 23
 ; RV32IMZBS-NEXT:    addi a2, a2, -1
-; RV32IMZBS-NEXT:    slli a4, t2, 23
-; RV32IMZBS-NEXT:    and t6, a2, a4
-; RV32IMZBS-NEXT:    bexti a3, a0, 24
+; RV32IMZBS-NEXT:    slli a4, t1, 23
+; RV32IMZBS-NEXT:    and s9, a2, a4
+; RV32IMZBS-NEXT:    bexti a2, a0, 24
+; RV32IMZBS-NEXT:    addi a2, a2, -1
+; RV32IMZBS-NEXT:    slli a4, t1, 24
+; RV32IMZBS-NEXT:    and t5, a2, a4
+; RV32IMZBS-NEXT:    bexti a3, a0, 25
 ; RV32IMZBS-NEXT:    addi a3, a3, -1
-; RV32IMZBS-NEXT:    slli a4, t2, 24
-; RV32IMZBS-NEXT:    and s1, a3, a4
-; RV32IMZBS-NEXT:    bexti a4, a0, 25
+; RV32IMZBS-NEXT:    slli a4, t1, 25
+; RV32IMZBS-NEXT:    and t2, a3, a4
+; RV32IMZBS-NEXT:    bexti a4, a0, 26
 ; RV32IMZBS-NEXT:    addi a4, a4, -1
-; RV32IMZBS-NEXT:    slli t0, t2, 25
-; RV32IMZBS-NEXT:    and s7, a4, t0
-; RV32IMZBS-NEXT:    bexti t0, a0, 26
-; RV32IMZBS-NEXT:    addi t0, t0, -1
-; RV32IMZBS-NEXT:    slli t3, t2, 26
-; RV32IMZBS-NEXT:    and s8, t0, t3
-; RV32IMZBS-NEXT:    bexti t3, a0, 27
-; RV32IMZBS-NEXT:    addi t3, t3, -1
-; RV32IMZBS-NEXT:    slli t5, t2, 27
-; RV32IMZBS-NEXT:    and s11, t3, t5
-; RV32IMZBS-NEXT:    bexti t5, a0, 28
-; RV32IMZBS-NEXT:    addi t5, t5, -1
-; RV32IMZBS-NEXT:    slli a6, t2, 28
-; RV32IMZBS-NEXT:    and t5, t5, a6
-; RV32IMZBS-NEXT:    bexti a6, a0, 29
+; RV32IMZBS-NEXT:    slli a6, t1, 26
+; RV32IMZBS-NEXT:    and t6, a4, a6
+; RV32IMZBS-NEXT:    bexti a6, a0, 27
 ; RV32IMZBS-NEXT:    addi a6, a6, -1
-; RV32IMZBS-NEXT:    slli t1, t2, 29
-; RV32IMZBS-NEXT:    and t4, a6, t1
-; RV32IMZBS-NEXT:    andi t1, s2, 1
-; RV32IMZBS-NEXT:    seqz t1, t1
-; RV32IMZBS-NEXT:    addi t1, t1, -1
-; RV32IMZBS-NEXT:    and t1, t1, t2
-; RV32IMZBS-NEXT:    slli t2, t2, 30
+; RV32IMZBS-NEXT:    slli a7, t1, 27
+; RV32IMZBS-NEXT:    and s2, a6, a7
+; RV32IMZBS-NEXT:    bexti a7, a0, 28
+; RV32IMZBS-NEXT:    addi a7, a7, -1
+; RV32IMZBS-NEXT:    slli t4, t1, 28
+; RV32IMZBS-NEXT:    and a7, a7, t4
+; RV32IMZBS-NEXT:    bexti t4, a0, 29
+; RV32IMZBS-NEXT:    addi t4, t4, -1
+; RV32IMZBS-NEXT:    slli t0, t1, 29
+; RV32IMZBS-NEXT:    and s5, t4, t0
+; RV32IMZBS-NEXT:    andi t0, t3, 1
+; RV32IMZBS-NEXT:    seqz t0, t0
+; RV32IMZBS-NEXT:    addi t0, t0, -1
+; RV32IMZBS-NEXT:    and t0, t0, t1
+; RV32IMZBS-NEXT:    slli t1, t1, 30
 ; RV32IMZBS-NEXT:    bexti a0, a0, 30
 ; RV32IMZBS-NEXT:    addi a0, a0, -1
-; RV32IMZBS-NEXT:    and t3, a0, t2
-; RV32IMZBS-NEXT:    lw a0, 692(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 584(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, a1, a0
+; RV32IMZBS-NEXT:    and t4, a0, t1
 ; RV32IMZBS-NEXT:    lw a0, 688(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 676(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s2, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 672(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 580(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t1, a1, a0
+; RV32IMZBS-NEXT:    lw a0, 680(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 672(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, a0, a1
+; RV32IMZBS-NEXT:    lw a0, 664(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, a0
+; RV32IMZBS-NEXT:    lw a0, 652(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a1, 648(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a6, a0, a1
-; RV32IMZBS-NEXT:    xor a7, a5, a7
-; RV32IMZBS-NEXT:    lw a0, 636(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 632(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, a0, a1
-; RV32IMZBS-NEXT:    lw a0, 612(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a3, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a0, 632(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a2, 620(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a0, a2
+; RV32IMZBS-NEXT:    lw a0, 604(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw a3, 596(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a0, a3
-; RV32IMZBS-NEXT:    lw a0, 600(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a4, 596(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a0, a4
 ; RV32IMZBS-NEXT:    lw a0, 592(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a5, 588(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, a0, a5
-; RV32IMZBS-NEXT:    lw a0, 580(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, t1, a0
+; RV32IMZBS-NEXT:    lw a4, 588(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a0, a4
 ; RV32IMZBS-NEXT:    lw a0, 576(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a1, 568(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    xor t0, t0, a0
+; RV32IMZBS-NEXT:    lw a0, 568(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw a1, 560(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw a2, 556(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 540(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    lw ra, 536(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, ra
-; RV32IMZBS-NEXT:    lw ra, 516(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor s9, ra, s9
-; RV32IMZBS-NEXT:    xor s3, s5, s3
-; RV32IMZBS-NEXT:    xor t6, s0, t6
-; RV32IMZBS-NEXT:    xor t3, t4, t3
-; RV32IMZBS-NEXT:    xor t2, t2, s2
-; RV32IMZBS-NEXT:    lw t4, 684(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a6, a6, t4
-; RV32IMZBS-NEXT:    lw t4, 660(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t4
-; RV32IMZBS-NEXT:    lw t4, 644(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t4
-; RV32IMZBS-NEXT:    lw t4, 620(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t4, a3, t4
-; RV32IMZBS-NEXT:    lw a3, 604(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, a3
-; RV32IMZBS-NEXT:    lw a3, 700(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a3, a5, a3
-; RV32IMZBS-NEXT:    xor a5, t1, a0
-; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a1, a1, a0
-; RV32IMZBS-NEXT:    lw a0, 544(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a0
-; RV32IMZBS-NEXT:    lw a0, 524(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, s9, a0
-; RV32IMZBS-NEXT:    xor s0, s3, s10
-; RV32IMZBS-NEXT:    xor t6, t6, s1
-; RV32IMZBS-NEXT:    lw a0, 708(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a0, t3, a0
-; RV32IMZBS-NEXT:    lw s1, 704(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli t3, s1, 4
-; RV32IMZBS-NEXT:    lw s3, 744(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and s1, s1, s3
-; RV32IMZBS-NEXT:    and t3, t3, s3
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a1, 556(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    lw ra, 544(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, ra
+; RV32IMZBS-NEXT:    lw ra, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor s10, ra, s10
+; RV32IMZBS-NEXT:    xor s4, s7, s4
+; RV32IMZBS-NEXT:    xor s0, s1, s0
+; RV32IMZBS-NEXT:    xor t2, t5, t2
+; RV32IMZBS-NEXT:    lw s1, 540(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli t5, s1, 4
+; RV32IMZBS-NEXT:    lw ra, 744(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    and s1, s1, ra
+; RV32IMZBS-NEXT:    and t5, t5, ra
 ; RV32IMZBS-NEXT:    slli s1, s1, 4
-; RV32IMZBS-NEXT:    or t3, t3, s1
-; RV32IMZBS-NEXT:    lw s2, 712(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    srli s1, s2, 4
-; RV32IMZBS-NEXT:    and s2, s2, s3
-; RV32IMZBS-NEXT:    and s1, s1, s3
-; RV32IMZBS-NEXT:    slli s2, s2, 4
-; RV32IMZBS-NEXT:    or s1, s1, s2
-; RV32IMZBS-NEXT:    xor a6, t2, a6
-; RV32IMZBS-NEXT:    lw t2, 696(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, a7, t2
-; RV32IMZBS-NEXT:    lw t2, 668(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t0, t2
-; RV32IMZBS-NEXT:    lw t2, 648(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t2, t4, t2
-; RV32IMZBS-NEXT:    lw t4, 616(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t4
-; RV32IMZBS-NEXT:    xor a1, a5, a1
-; RV32IMZBS-NEXT:    lw a5, 572(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a2, a5
-; RV32IMZBS-NEXT:    lw a5, 548(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a5, t1, a5
-; RV32IMZBS-NEXT:    lw t1, 520(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t1, s0, t1
-; RV32IMZBS-NEXT:    xor t4, t6, s7
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 680(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, t0, a7
-; RV32IMZBS-NEXT:    lw t0, 652(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor t0, t2, t0
-; RV32IMZBS-NEXT:    lw t2, 624(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t2
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 552(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a5, a2
-; RV32IMZBS-NEXT:    lw a5, 528(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    or t5, t5, s1
+; RV32IMZBS-NEXT:    lw s7, 704(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    srli s1, s7, 4
+; RV32IMZBS-NEXT:    and s7, s7, ra
+; RV32IMZBS-NEXT:    and s1, s1, ra
+; RV32IMZBS-NEXT:    slli s7, s7, 4
+; RV32IMZBS-NEXT:    or s1, s1, s7
+; RV32IMZBS-NEXT:    xor t1, t1, t3
+; RV32IMZBS-NEXT:    lw t3, 696(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t3
+; RV32IMZBS-NEXT:    lw t3, 668(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t3
+; RV32IMZBS-NEXT:    lw t3, 644(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t3
+; RV32IMZBS-NEXT:    lw t3, 616(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t3
+; RV32IMZBS-NEXT:    lw t3, 600(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t3
+; RV32IMZBS-NEXT:    xor a0, t0, a0
+; RV32IMZBS-NEXT:    lw t0, 572(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t0
+; RV32IMZBS-NEXT:    lw t0, 536(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, s10, t0
+; RV32IMZBS-NEXT:    lw t3, 520(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, s4, t3
+; RV32IMZBS-NEXT:    xor s0, s0, s3
+; RV32IMZBS-NEXT:    xor t2, t2, t6
 ; RV32IMZBS-NEXT:    xor a5, t1, a5
-; RV32IMZBS-NEXT:    xor t1, t4, s8
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 656(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a7, t0, a7
-; RV32IMZBS-NEXT:    lw t0, 628(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, t0
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    lw a2, 532(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a2, a5, a2
-; RV32IMZBS-NEXT:    xor a5, t1, s11
-; RV32IMZBS-NEXT:    srli t0, t3, 2
-; RV32IMZBS-NEXT:    and t1, t3, s6
-; RV32IMZBS-NEXT:    and t0, t0, s6
-; RV32IMZBS-NEXT:    slli t1, t1, 2
-; RV32IMZBS-NEXT:    or t0, t0, t1
-; RV32IMZBS-NEXT:    srli t1, s1, 2
-; RV32IMZBS-NEXT:    and t2, s1, s6
-; RV32IMZBS-NEXT:    and t1, t1, s6
+; RV32IMZBS-NEXT:    lw t1, 676(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t1
+; RV32IMZBS-NEXT:    lw t1, 656(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t1
+; RV32IMZBS-NEXT:    lw t1, 628(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t1
+; RV32IMZBS-NEXT:    lw t1, 608(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t1
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    lw a1, 552(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t0, a1
+; RV32IMZBS-NEXT:    lw t0, 524(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t0, t3, t0
+; RV32IMZBS-NEXT:    xor t1, s0, s6
+; RV32IMZBS-NEXT:    xor t2, t2, s2
+; RV32IMZBS-NEXT:    lw t3, 700(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a5, a5, t3
+; RV32IMZBS-NEXT:    lw t3, 692(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a6, t3
+; RV32IMZBS-NEXT:    lw t3, 660(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t3
+; RV32IMZBS-NEXT:    lw t3, 640(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a3, a3, t3
+; RV32IMZBS-NEXT:    lw t3, 612(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t3
+; RV32IMZBS-NEXT:    lw t3, 584(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor t3, a0, t3
+; RV32IMZBS-NEXT:    lw a0, 564(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a0, a1, a0
+; RV32IMZBS-NEXT:    lw a1, 532(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, t0, a1
+; RV32IMZBS-NEXT:    xor t0, t1, s9
+; RV32IMZBS-NEXT:    xor a7, t2, a7
+; RV32IMZBS-NEXT:    srli t1, t5, 2
+; RV32IMZBS-NEXT:    and t2, t5, s11
+; RV32IMZBS-NEXT:    and t1, t1, s11
 ; RV32IMZBS-NEXT:    slli t2, t2, 2
 ; RV32IMZBS-NEXT:    or t1, t1, t2
-; RV32IMZBS-NEXT:    xor a6, a6, a7
-; RV32IMZBS-NEXT:    lw a7, 640(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    xor a4, a4, a7
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    xor a2, a5, t5
-; RV32IMZBS-NEXT:    xor a4, a6, a4
-; RV32IMZBS-NEXT:    xor a1, a1, a2
-; RV32IMZBS-NEXT:    srli a2, t0, 1
-; RV32IMZBS-NEXT:    and a5, t0, s4
+; RV32IMZBS-NEXT:    srli t2, s1, 2
+; RV32IMZBS-NEXT:    and t5, s1, s11
+; RV32IMZBS-NEXT:    and t2, t2, s11
+; RV32IMZBS-NEXT:    slli t5, t5, 2
+; RV32IMZBS-NEXT:    or t2, t2, t5
+; RV32IMZBS-NEXT:    lw t5, 684(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a2, a2, t5
+; RV32IMZBS-NEXT:    lw t5, 636(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, t5
+; RV32IMZBS-NEXT:    lw t5, 548(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a1, a1, t5
+; RV32IMZBS-NEXT:    xor a7, a7, s5
+; RV32IMZBS-NEXT:    xor a6, a5, a6
+; RV32IMZBS-NEXT:    xor a2, a6, a2
+; RV32IMZBS-NEXT:    lw a6, 624(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a4, a4, a6
+; RV32IMZBS-NEXT:    xor a0, t3, a0
+; RV32IMZBS-NEXT:    xor a0, a0, a1
+; RV32IMZBS-NEXT:    xor a1, a7, t4
+; RV32IMZBS-NEXT:    xor a2, a2, a3
+; RV32IMZBS-NEXT:    lw a3, 712(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    xor a3, a4, a3
-; RV32IMZBS-NEXT:    srli a4, t1, 1
-; RV32IMZBS-NEXT:    and a6, t1, s4
-; RV32IMZBS-NEXT:    and a2, a2, s4
-; RV32IMZBS-NEXT:    slli a5, a5, 1
-; RV32IMZBS-NEXT:    and a4, a4, s4
-; RV32IMZBS-NEXT:    slli a6, a6, 1
-; RV32IMZBS-NEXT:    xor a7, a1, a0
-; RV32IMZBS-NEXT:    or a1, a2, a5
-; RV32IMZBS-NEXT:    or a0, a4, a6
-; RV32IMZBS-NEXT:    srli a2, a3, 8
-; RV32IMZBS-NEXT:    srli a4, a3, 24
-; RV32IMZBS-NEXT:    slli a5, a3, 24
+; RV32IMZBS-NEXT:    xor a4, a0, t0
+; RV32IMZBS-NEXT:    slli a5, a5, 24
+; RV32IMZBS-NEXT:    lw a0, 708(sp) # 4-byte Folded Reload
+; RV32IMZBS-NEXT:    xor a6, a1, a0
+; RV32IMZBS-NEXT:    srli a0, t1, 1
+; RV32IMZBS-NEXT:    and a1, t1, s8
+; RV32IMZBS-NEXT:    and a0, a0, s8
+; RV32IMZBS-NEXT:    slli a1, a1, 1
+; RV32IMZBS-NEXT:    or a0, a0, a1
+; RV32IMZBS-NEXT:    srli a1, t2, 1
+; RV32IMZBS-NEXT:    and a7, t2, s8
+; RV32IMZBS-NEXT:    and a1, a1, s8
+; RV32IMZBS-NEXT:    slli a7, a7, 1
+; RV32IMZBS-NEXT:    or a1, a1, a7
 ; RV32IMZBS-NEXT:    lw t0, 740(sp) # 4-byte Folded Reload
-; RV32IMZBS-NEXT:    and a3, a3, t0
+; RV32IMZBS-NEXT:    and a7, a2, t0
+; RV32IMZBS-NEXT:    slli a7, a7, 8
+; RV32IMZBS-NEXT:    or a5, a5, a7
+; RV32IMZBS-NEXT:    slli t3, t3, 24
+; RV32IMZBS-NEXT:    xor a3, a2, a3
+; RV32IMZBS-NEXT:    srli a2, a2, 8
 ; RV32IMZBS-NEXT:    and a2, a2, t0
-; RV32IMZBS-NEXT:    or a2, a2, a4
-; RV32IMZBS-NEXT:    srli a4, a7, 8
+; RV32IMZBS-NEXT:    srli a3, a3, 24
+; RV32IMZBS-NEXT:    or a2, a2, a3
+; RV32IMZBS-NEXT:    and a3, a4, t0
 ; RV32IMZBS-NEXT:    slli a3, a3, 8
-; RV32IMZBS-NEXT:    or a3, a5, a3
-; RV32IMZBS-NEXT:    srli a5, a7, 24
+; RV32IMZBS-NEXT:    or a3, t3, a3
+; RV32IMZBS-NEXT:    xor a6, a4, a6
+; RV32IMZBS-NEXT:    srli a4, a4, 8
 ; RV32IMZBS-NEXT:    and a4, a4, t0
-; RV32IMZBS-NEXT:    or a4, a4, a5
-; RV32IMZBS-NEXT:    slli a5, a7, 24
-; RV32IMZBS-NEXT:    and a6, a7, t0
-; RV32IMZBS-NEXT:    slli a6, a6, 8
-; RV32IMZBS-NEXT:    or a5, a5, a6
+; RV32IMZBS-NEXT:    srli a6, a6, 24
+; RV32IMZBS-NEXT:    or a4, a4, a6
 ; RV32IMZBS-NEXT:    lui a6, 349525
 ; RV32IMZBS-NEXT:    addi a6, a6, 1364
-; RV32IMZBS-NEXT:    or a2, a3, a2
-; RV32IMZBS-NEXT:    or a4, a5, a4
-; RV32IMZBS-NEXT:    srli a3, a2, 4
-; RV32IMZBS-NEXT:    and a2, a2, s3
-; RV32IMZBS-NEXT:    srli a5, a4, 4
-; RV32IMZBS-NEXT:    and a4, a4, s3
-; RV32IMZBS-NEXT:    and a3, a3, s3
+; RV32IMZBS-NEXT:    or a2, a5, a2
+; RV32IMZBS-NEXT:    or a3, a3, a4
+; RV32IMZBS-NEXT:    srli a4, a2, 4
+; RV32IMZBS-NEXT:    and a2, a2, ra
+; RV32IMZBS-NEXT:    srli a5, a3, 4
+; RV32IMZBS-NEXT:    and a3, a3, ra
+; RV32IMZBS-NEXT:    and a4, a4, ra
 ; RV32IMZBS-NEXT:    slli a2, a2, 4
-; RV32IMZBS-NEXT:    and a5, a5, s3
-; RV32IMZBS-NEXT:    slli a4, a4, 4
-; RV32IMZBS-NEXT:    or a2, a3, a2
-; RV32IMZBS-NEXT:    or a4, a5, a4
-; RV32IMZBS-NEXT:    srli a3, a2, 2
-; RV32IMZBS-NEXT:    and a2, a2, s6
-; RV32IMZBS-NEXT:    srli a5, a4, 2
-; RV32IMZBS-NEXT:    and a4, a4, s6
-; RV32IMZBS-NEXT:    and a3, a3, s6
+; RV32IMZBS-NEXT:    and a5, a5, ra
+; RV32IMZBS-NEXT:    slli a3, a3, 4
+; RV32IMZBS-NEXT:    or a2, a4, a2
+; RV32IMZBS-NEXT:    or a3, a5, a3
+; RV32IMZBS-NEXT:    srli a4, a2, 2
+; RV32IMZBS-NEXT:    and a2, a2, s11
+; RV32IMZBS-NEXT:    srli a5, a3, 2
+; RV32IMZBS-NEXT:    and a3, a3, s11
+; RV32IMZBS-NEXT:    and a4, a4, s11
 ; RV32IMZBS-NEXT:    slli a2, a2, 2
-; RV32IMZBS-NEXT:    and a5, a5, s6
-; RV32IMZBS-NEXT:    slli a4, a4, 2
-; RV32IMZBS-NEXT:    or a2, a3, a2
-; RV32IMZBS-NEXT:    or a4, a5, a4
-; RV32IMZBS-NEXT:    srli a3, a2, 1
-; RV32IMZBS-NEXT:    srli a5, a4, 1
-; RV32IMZBS-NEXT:    and a3, a3, a6
+; RV32IMZBS-NEXT:    and a5, a5, s11
+; RV32IMZBS-NEXT:    slli a3, a3, 2
+; RV32IMZBS-NEXT:    or a2, a4, a2
+; RV32IMZBS-NEXT:    or a3, a5, a3
+; RV32IMZBS-NEXT:    srli a4, a2, 1
+; RV32IMZBS-NEXT:    srli a5, a3, 1
+; RV32IMZBS-NEXT:    and a4, a4, a6
 ; RV32IMZBS-NEXT:    and a5, a5, a6
-; RV32IMZBS-NEXT:    and a2, a2, s4
+; RV32IMZBS-NEXT:    and a2, a2, s8
 ; RV32IMZBS-NEXT:    slli a2, a2, 1
-; RV32IMZBS-NEXT:    or a2, a3, a2
-; RV32IMZBS-NEXT:    and a3, a4, s4
+; RV32IMZBS-NEXT:    or a2, a4, a2
+; RV32IMZBS-NEXT:    and a3, a3, s8
 ; RV32IMZBS-NEXT:    slli a3, a3, 1
 ; RV32IMZBS-NEXT:    or a3, a5, a3
 ; RV32IMZBS-NEXT:    srli a2, a2, 1
@@ -11942,45 +11901,45 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV32IMZBS-NEXT:    or a2, a2, a4
 ; RV32IMZBS-NEXT:    or a3, a3, a5
 ; RV32IMZBS-NEXT:    srli a4, a2, 4
-; RV32IMZBS-NEXT:    and a2, a2, s3
+; RV32IMZBS-NEXT:    and a2, a2, ra
 ; RV32IMZBS-NEXT:    srli a5, a3, 4
-; RV32IMZBS-NEXT:    and a3, a3, s3
-; RV32IMZBS-NEXT:    and a4, a4, s3
-; RV32IMZBS-NEXT:    and a5, a5, s3
+; RV32IMZBS-NEXT:    and a3, a3, ra
+; RV32IMZBS-NEXT:    and a4, a4, ra
+; RV32IMZBS-NEXT:    and a5, a5, ra
 ; RV32IMZBS-NEXT:    slli a2, a2, 4
 ; RV32IMZBS-NEXT:    slli a3, a3, 4
 ; RV32IMZBS-NEXT:    or a2, a4, a2
 ; RV32IMZBS-NEXT:    or a3, a5, a3
 ; RV32IMZBS-NEXT:    srli a4, a2, 2
-; RV32IMZBS-NEXT:    and a2, a2, s6
+; RV32IMZBS-NEXT:    and a2, a2, s11
 ; RV32IMZBS-NEXT:    srli a5, a3, 2
-; RV32IMZBS-NEXT:    and a3, a3, s6
-; RV32IMZBS-NEXT:    and a4, a4, s6
-; RV32IMZBS-NEXT:    and a5, a5, s6
+; RV32IMZBS-NEXT:    and a3, a3, s11
+; RV32IMZBS-NEXT:    and a4, a4, s11
+; RV32IMZBS-NEXT:    and a5, a5, s11
 ; RV32IMZBS-NEXT:    slli a2, a2, 2
 ; RV32IMZBS-NEXT:    slli a3, a3, 2
 ; RV32IMZBS-NEXT:    or a2, a4, a2
 ; RV32IMZBS-NEXT:    or a3, a5, a3
 ; RV32IMZBS-NEXT:    srli a4, a2, 1
-; RV32IMZBS-NEXT:    and a2, a2, s4
+; RV32IMZBS-NEXT:    and a2, a2, s8
 ; RV32IMZBS-NEXT:    srli a5, a3, 1
-; RV32IMZBS-NEXT:    and a3, a3, s4
-; RV32IMZBS-NEXT:    and a4, a4, s4
-; RV32IMZBS-NEXT:    and a5, a5, s4
+; RV32IMZBS-NEXT:    and a3, a3, s8
+; RV32IMZBS-NEXT:    and a4, a4, s8
+; RV32IMZBS-NEXT:    and a5, a5, s8
 ; RV32IMZBS-NEXT:    slli a2, a2, 1
 ; RV32IMZBS-NEXT:    or a2, a4, a2
 ; RV32IMZBS-NEXT:    slli a3, a3, 1
 ; RV32IMZBS-NEXT:    or a3, a5, a3
 ; RV32IMZBS-NEXT:    lw a4, 732(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    sw a2, 0(a4)
-; RV32IMZBS-NEXT:    sw a1, 4(a4)
+; RV32IMZBS-NEXT:    sw a0, 4(a4)
 ; RV32IMZBS-NEXT:    sw a3, 8(a4)
-; RV32IMZBS-NEXT:    sw a0, 12(a4)
+; RV32IMZBS-NEXT:    sw a1, 12(a4)
 ; RV32IMZBS-NEXT:    lw a4, 736(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    sw a2, 0(a4)
-; RV32IMZBS-NEXT:    sw a1, 4(a4)
+; RV32IMZBS-NEXT:    sw a0, 4(a4)
 ; RV32IMZBS-NEXT:    sw a3, 8(a4)
-; RV32IMZBS-NEXT:    sw a0, 12(a4)
+; RV32IMZBS-NEXT:    sw a1, 12(a4)
 ; RV32IMZBS-NEXT:    lw ra, 796(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s0, 792(sp) # 4-byte Folded Reload
 ; RV32IMZBS-NEXT:    lw s1, 788(sp) # 4-byte Folded Reload
@@ -12029,81 +11988,78 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    sd a0, 920(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    lui s10, 61681
 ; RV64IMZBS-NEXT:    lui s1, 209715
-; RV64IMZBS-NEXT:    lui s4, 349525
+; RV64IMZBS-NEXT:    lui s5, 349525
 ; RV64IMZBS-NEXT:    srli t2, t5, 24
-; RV64IMZBS-NEXT:    srli t6, t5, 8
-; RV64IMZBS-NEXT:    srli s5, t5, 40
-; RV64IMZBS-NEXT:    srli s2, t5, 56
-; RV64IMZBS-NEXT:    srliw s3, t5, 24
-; RV64IMZBS-NEXT:    slli a0, t5, 56
-; RV64IMZBS-NEXT:    sd a0, 912(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    srli s0, t5, 8
+; RV64IMZBS-NEXT:    srli s2, t5, 40
+; RV64IMZBS-NEXT:    srli s3, t5, 56
+; RV64IMZBS-NEXT:    srliw s4, t5, 24
+; RV64IMZBS-NEXT:    slli t4, t5, 56
 ; RV64IMZBS-NEXT:    srli s7, a3, 24
 ; RV64IMZBS-NEXT:    srli a3, a3, 8
 ; RV64IMZBS-NEXT:    srli s6, t3, 40
-; RV64IMZBS-NEXT:    srli s11, t3, 56
+; RV64IMZBS-NEXT:    srli ra, t3, 56
 ; RV64IMZBS-NEXT:    and a5, a5, s9
-; RV64IMZBS-NEXT:    slli s8, s8, 24
-; RV64IMZBS-NEXT:    and a7, a7, s8
+; RV64IMZBS-NEXT:    slli a0, s8, 24
+; RV64IMZBS-NEXT:    and a7, a7, a0
 ; RV64IMZBS-NEXT:    or a5, a7, a5
-; RV64IMZBS-NEXT:    srliw s0, t3, 24
-; RV64IMZBS-NEXT:    addi a0, a6, -256
-; RV64IMZBS-NEXT:    and a4, a4, a0
+; RV64IMZBS-NEXT:    srliw t6, t3, 24
+; RV64IMZBS-NEXT:    addi s8, a6, -256
+; RV64IMZBS-NEXT:    and a4, a4, s8
 ; RV64IMZBS-NEXT:    or a6, a4, t0
 ; RV64IMZBS-NEXT:    and a4, a2, s9
 ; RV64IMZBS-NEXT:    slli t1, t1, 32
 ; RV64IMZBS-NEXT:    addi s10, s10, -241
-; RV64IMZBS-NEXT:    addi ra, s1, 819
-; RV64IMZBS-NEXT:    addi a7, s4, 1365
+; RV64IMZBS-NEXT:    addi s11, s1, 819
+; RV64IMZBS-NEXT:    addi a7, s5, 1365
 ; RV64IMZBS-NEXT:    slli a4, a4, 24
 ; RV64IMZBS-NEXT:    or a4, a4, t1
 ; RV64IMZBS-NEXT:    slli t0, s10, 32
 ; RV64IMZBS-NEXT:    add s10, s10, t0
-; RV64IMZBS-NEXT:    slli t0, ra, 32
-; RV64IMZBS-NEXT:    add ra, ra, t0
+; RV64IMZBS-NEXT:    slli t0, s11, 32
+; RV64IMZBS-NEXT:    add s11, s11, t0
 ; RV64IMZBS-NEXT:    slli t0, a7, 32
-; RV64IMZBS-NEXT:    add t4, a7, t0
+; RV64IMZBS-NEXT:    add s5, a7, t0
 ; RV64IMZBS-NEXT:    slli a7, t3, 56
 ; RV64IMZBS-NEXT:    and t0, t2, s9
-; RV64IMZBS-NEXT:    and t1, t6, s8
+; RV64IMZBS-NEXT:    and t1, s0, a0
 ; RV64IMZBS-NEXT:    or t0, t1, t0
 ; RV64IMZBS-NEXT:    srli t1, a1, 24
-; RV64IMZBS-NEXT:    and t2, s5, a0
-; RV64IMZBS-NEXT:    or t2, t2, s2
-; RV64IMZBS-NEXT:    lui s5, 4080
-; RV64IMZBS-NEXT:    and t6, t5, s5
-; RV64IMZBS-NEXT:    slli s3, s3, 32
-; RV64IMZBS-NEXT:    slli t6, t6, 24
-; RV64IMZBS-NEXT:    or t6, t6, s3
+; RV64IMZBS-NEXT:    and t2, s2, s8
+; RV64IMZBS-NEXT:    or t2, t2, s3
+; RV64IMZBS-NEXT:    and s0, t5, s9
+; RV64IMZBS-NEXT:    slli s4, s4, 32
+; RV64IMZBS-NEXT:    slli s0, s0, 24
+; RV64IMZBS-NEXT:    or s0, s0, s4
 ; RV64IMZBS-NEXT:    srli s1, a1, 8
-; RV64IMZBS-NEXT:    and s2, s7, s5
-; RV64IMZBS-NEXT:    sd s8, 960(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a3, a3, s8
+; RV64IMZBS-NEXT:    and s2, s7, s9
+; RV64IMZBS-NEXT:    sd a0, 960(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a3, a3, a0
 ; RV64IMZBS-NEXT:    or a3, a3, s2
 ; RV64IMZBS-NEXT:    srli s2, a1, 40
-; RV64IMZBS-NEXT:    and s3, s6, a0
-; RV64IMZBS-NEXT:    or s3, s3, s11
-; RV64IMZBS-NEXT:    and s4, t3, s5
-; RV64IMZBS-NEXT:    slli s0, s0, 32
+; RV64IMZBS-NEXT:    and s3, s6, s8
+; RV64IMZBS-NEXT:    or s3, s3, ra
+; RV64IMZBS-NEXT:    and s4, t3, s9
+; RV64IMZBS-NEXT:    slli t6, t6, 32
 ; RV64IMZBS-NEXT:    slli s4, s4, 24
-; RV64IMZBS-NEXT:    or s0, s4, s0
+; RV64IMZBS-NEXT:    or t6, s4, t6
 ; RV64IMZBS-NEXT:    srli s4, a1, 56
-; RV64IMZBS-NEXT:    and t1, t1, s5
-; RV64IMZBS-NEXT:    and s1, s1, s8
+; RV64IMZBS-NEXT:    and t1, t1, s9
+; RV64IMZBS-NEXT:    and s1, s1, a0
 ; RV64IMZBS-NEXT:    or t1, s1, t1
 ; RV64IMZBS-NEXT:    srliw s1, a1, 24
-; RV64IMZBS-NEXT:    and s2, s2, a0
+; RV64IMZBS-NEXT:    and s2, s2, s8
 ; RV64IMZBS-NEXT:    or s2, s2, s4
-; RV64IMZBS-NEXT:    and s4, a1, s5
+; RV64IMZBS-NEXT:    and s4, a1, s9
 ; RV64IMZBS-NEXT:    slli s1, s1, 32
 ; RV64IMZBS-NEXT:    slli s4, s4, 24
 ; RV64IMZBS-NEXT:    or s1, s4, s1
 ; RV64IMZBS-NEXT:    slli s4, a1, 56
-; RV64IMZBS-NEXT:    mv s5, a0
-; RV64IMZBS-NEXT:    sd a0, 936(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, a0
-; RV64IMZBS-NEXT:    and a0, t5, a0
-; RV64IMZBS-NEXT:    and t3, t3, s5
-; RV64IMZBS-NEXT:    and a1, a1, s5
+; RV64IMZBS-NEXT:    sd s8, 936(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, s8
+; RV64IMZBS-NEXT:    and a0, t5, s8
+; RV64IMZBS-NEXT:    and t3, t3, s8
+; RV64IMZBS-NEXT:    and a1, a1, s8
 ; RV64IMZBS-NEXT:    slli a2, a2, 40
 ; RV64IMZBS-NEXT:    slli a0, a0, 40
 ; RV64IMZBS-NEXT:    slli t3, t3, 40
@@ -12112,15 +12068,14 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    ld a6, 920(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    or a2, a6, a2
 ; RV64IMZBS-NEXT:    or a6, t0, t2
-; RV64IMZBS-NEXT:    ld t0, 912(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    or a0, t0, a0
+; RV64IMZBS-NEXT:    or a0, t4, a0
 ; RV64IMZBS-NEXT:    or a3, a3, s3
 ; RV64IMZBS-NEXT:    or a7, a7, t3
 ; RV64IMZBS-NEXT:    or t0, t1, s2
 ; RV64IMZBS-NEXT:    or a1, s4, a1
 ; RV64IMZBS-NEXT:    or a2, a2, a4
-; RV64IMZBS-NEXT:    or a0, a0, t6
-; RV64IMZBS-NEXT:    or a4, a7, s0
+; RV64IMZBS-NEXT:    or a0, a0, s0
+; RV64IMZBS-NEXT:    or a4, a7, t6
 ; RV64IMZBS-NEXT:    or a1, a1, s1
 ; RV64IMZBS-NEXT:    or a2, a2, a5
 ; RV64IMZBS-NEXT:    or a0, a0, a6
@@ -12148,47 +12103,47 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    or a3, a6, a3
 ; RV64IMZBS-NEXT:    or a1, a7, a1
 ; RV64IMZBS-NEXT:    srli a4, a2, 2
-; RV64IMZBS-NEXT:    sd ra, 944(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, ra
+; RV64IMZBS-NEXT:    sd s11, 944(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, s11
 ; RV64IMZBS-NEXT:    srli a5, a0, 2
-; RV64IMZBS-NEXT:    and a0, a0, ra
+; RV64IMZBS-NEXT:    and a0, a0, s11
 ; RV64IMZBS-NEXT:    srli a6, a3, 2
-; RV64IMZBS-NEXT:    and a3, a3, ra
+; RV64IMZBS-NEXT:    and a3, a3, s11
 ; RV64IMZBS-NEXT:    srli a7, a1, 2
-; RV64IMZBS-NEXT:    and a1, a1, ra
-; RV64IMZBS-NEXT:    and a4, a4, ra
+; RV64IMZBS-NEXT:    and a1, a1, s11
+; RV64IMZBS-NEXT:    and a4, a4, s11
 ; RV64IMZBS-NEXT:    slli a2, a2, 2
-; RV64IMZBS-NEXT:    and a5, a5, ra
+; RV64IMZBS-NEXT:    and a5, a5, s11
 ; RV64IMZBS-NEXT:    slli a0, a0, 2
-; RV64IMZBS-NEXT:    and a6, a6, ra
+; RV64IMZBS-NEXT:    and a6, a6, s11
 ; RV64IMZBS-NEXT:    slli a3, a3, 2
-; RV64IMZBS-NEXT:    and a7, a7, ra
+; RV64IMZBS-NEXT:    and a7, a7, s11
 ; RV64IMZBS-NEXT:    slli a1, a1, 2
 ; RV64IMZBS-NEXT:    or a2, a4, a2
 ; RV64IMZBS-NEXT:    or a0, a5, a0
 ; RV64IMZBS-NEXT:    or a3, a6, a3
 ; RV64IMZBS-NEXT:    or a1, a7, a1
 ; RV64IMZBS-NEXT:    srli a4, a2, 1
-; RV64IMZBS-NEXT:    sd t4, 928(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    and a2, a2, t4
+; RV64IMZBS-NEXT:    sd s5, 928(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a2, a2, s5
 ; RV64IMZBS-NEXT:    srli a5, a0, 1
-; RV64IMZBS-NEXT:    and a0, a0, t4
+; RV64IMZBS-NEXT:    and a0, a0, s5
 ; RV64IMZBS-NEXT:    srli a6, a3, 1
-; RV64IMZBS-NEXT:    and a3, a3, t4
+; RV64IMZBS-NEXT:    and a3, a3, s5
 ; RV64IMZBS-NEXT:    srli a7, a1, 1
-; RV64IMZBS-NEXT:    and a1, a1, t4
-; RV64IMZBS-NEXT:    and a4, a4, t4
+; RV64IMZBS-NEXT:    and a1, a1, s5
+; RV64IMZBS-NEXT:    and a4, a4, s5
 ; RV64IMZBS-NEXT:    slli a2, a2, 1
-; RV64IMZBS-NEXT:    and a5, a5, t4
+; RV64IMZBS-NEXT:    and a5, a5, s5
 ; RV64IMZBS-NEXT:    slli t0, a0, 1
-; RV64IMZBS-NEXT:    and a6, a6, t4
+; RV64IMZBS-NEXT:    and a6, a6, s5
 ; RV64IMZBS-NEXT:    slli a3, a3, 1
-; RV64IMZBS-NEXT:    and a7, a7, t4
+; RV64IMZBS-NEXT:    and a7, a7, s5
 ; RV64IMZBS-NEXT:    slli a0, a1, 1
 ; RV64IMZBS-NEXT:    or t4, a4, a2
 ; RV64IMZBS-NEXT:    or t5, a5, t0
 ; RV64IMZBS-NEXT:    srli a2, t0, 63
-; RV64IMZBS-NEXT:    or t0, a6, a3
+; RV64IMZBS-NEXT:    or t1, a6, a3
 ; RV64IMZBS-NEXT:    or s5, a7, a0
 ; RV64IMZBS-NEXT:    srli a0, a0, 63
 ; RV64IMZBS-NEXT:    slli a3, t4, 1
@@ -12196,7 +12151,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    slli a5, t4, 2
 ; RV64IMZBS-NEXT:    andi a6, t5, 4
 ; RV64IMZBS-NEXT:    slli a7, t4, 3
-; RV64IMZBS-NEXT:    andi t1, t5, 8
+; RV64IMZBS-NEXT:    andi t0, t5, 8
 ; RV64IMZBS-NEXT:    slli t2, t4, 4
 ; RV64IMZBS-NEXT:    andi t3, t5, 16
 ; RV64IMZBS-NEXT:    slli t6, t4, 5
@@ -12209,7 +12164,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
 ; RV64IMZBS-NEXT:    and a1, a2, s4
 ; RV64IMZBS-NEXT:    sd a1, 912(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    slli a2, t0, 63
+; RV64IMZBS-NEXT:    slli a2, t1, 63
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    and a0, a0, a2
@@ -12218,34 +12173,35 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    seqz a2, a4
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 880(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 864(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a2, t4, 8
 ; RV64IMZBS-NEXT:    seqz a3, a6
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
 ; RV64IMZBS-NEXT:    and a3, a3, a5
-; RV64IMZBS-NEXT:    sd a3, 864(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a3, 848(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a3, t5, 256
-; RV64IMZBS-NEXT:    seqz a4, t1
+; RV64IMZBS-NEXT:    seqz a4, t0
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
 ; RV64IMZBS-NEXT:    and a1, a4, a7
-; RV64IMZBS-NEXT:    sd a1, 848(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 840(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a4, t4, 9
 ; RV64IMZBS-NEXT:    seqz a5, t3
 ; RV64IMZBS-NEXT:    addi a5, a5, -1
-; RV64IMZBS-NEXT:    and t2, a5, t2
+; RV64IMZBS-NEXT:    and t3, a5, t2
 ; RV64IMZBS-NEXT:    andi a5, t5, 512
 ; RV64IMZBS-NEXT:    seqz a6, s0
 ; RV64IMZBS-NEXT:    addi a6, a6, -1
-; RV64IMZBS-NEXT:    and t3, a6, t6
+; RV64IMZBS-NEXT:    and t6, a6, t6
 ; RV64IMZBS-NEXT:    slli a6, t4, 10
 ; RV64IMZBS-NEXT:    seqz a7, s2
 ; RV64IMZBS-NEXT:    addi a7, a7, -1
 ; RV64IMZBS-NEXT:    and a1, a7, s1
-; RV64IMZBS-NEXT:    sd a1, 888(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 872(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a7, t5, 1024
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    and t6, a0, s3
+; RV64IMZBS-NEXT:    and a0, a0, s3
+; RV64IMZBS-NEXT:    sd a0, 904(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a0, t4, 11
 ; RV64IMZBS-NEXT:    seqz a3, a3
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
@@ -12254,235 +12210,234 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    seqz a3, a5
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
 ; RV64IMZBS-NEXT:    and a3, a3, a4
-; RV64IMZBS-NEXT:    sd a3, 840(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a3, 792(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    slli a3, t4, 12
 ; RV64IMZBS-NEXT:    seqz a4, a7
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
 ; RV64IMZBS-NEXT:    and a1, a4, a6
-; RV64IMZBS-NEXT:    sd a1, 904(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a1, 832(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a4, a2, 11
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
-; RV64IMZBS-NEXT:    and a6, a4, a0
+; RV64IMZBS-NEXT:    and a0, a4, a0
+; RV64IMZBS-NEXT:    sd a0, 880(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 12
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 776(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 13
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 13
-; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 816(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a6, a0, a3
 ; RV64IMZBS-NEXT:    bexti a0, a2, 14
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 14
-; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 856(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    and a7, a0, a3
 ; RV64IMZBS-NEXT:    bexti a0, a2, 15
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 15
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 896(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 16
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 16
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 736(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 824(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 17
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 17
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 728(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 856(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 18
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 18
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 768(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 888(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 19
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 19
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 800(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 712(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 20
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 20
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 832(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 704(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 21
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 21
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 872(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 22
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 22
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 680(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 768(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 23
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 23
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 664(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 800(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 24
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 24
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 712(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 672(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 25
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 25
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 752(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 656(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 26
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 26
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 792(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 696(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 27
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 27
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 808(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 728(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 28
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 28
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 824(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 760(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 29
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 29
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 608(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 776(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 30
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 30
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 600(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 808(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sraiw a0, t5, 31
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 31
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 648(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 816(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 32
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 32
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 672(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 608(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 33
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 33
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 704(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 584(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 34
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 34
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 744(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 632(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 35
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 35
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 760(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 648(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 36
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 36
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 784(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 688(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 37
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 37
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 552(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 720(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 38
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 38
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 544(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 736(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 39
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 39
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 568(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 752(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 40
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 40
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 592(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 552(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 41
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 41
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 640(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 536(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 42
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 42
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 656(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 568(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 43
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 43
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 688(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 592(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 44
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 44
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 696(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 624(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 45
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 45
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 720(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 640(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 46
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 46
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 496(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 664(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 47
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 47
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 488(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 680(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 48
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 48
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 520(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 496(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 49
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 49
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 536(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 480(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 50
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 50
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 560(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 512(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 51
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 51
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 576(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 544(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 52
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 52
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 584(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 560(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 53
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 53
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 616(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 576(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 54
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 54
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 624(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 600(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 55
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 55
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 632(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 616(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 56
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 56
@@ -12502,7 +12457,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 59
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 480(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 488(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a0, a2, 60
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 60
@@ -12512,7 +12467,7 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
 ; RV64IMZBS-NEXT:    slli a3, t4, 61
 ; RV64IMZBS-NEXT:    and a0, a0, a3
-; RV64IMZBS-NEXT:    sd a0, 512(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 520(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, t5, 1
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
@@ -12525,606 +12480,607 @@ define void @commutative_clmulr_v2i64(<2 x i64> %x, <2 x i64> %y, ptr %p0, ptr %
 ; RV64IMZBS-NEXT:    andi a0, s5, 2
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 1
+; RV64IMZBS-NEXT:    slli a2, t1, 1
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 448(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 432(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 4
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 2
+; RV64IMZBS-NEXT:    slli a2, t1, 2
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 432(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 416(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 8
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 3
+; RV64IMZBS-NEXT:    slli a2, t1, 3
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 408(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 400(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 16
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 4
+; RV64IMZBS-NEXT:    slli a2, t1, 4
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 400(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 384(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 32
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 5
+; RV64IMZBS-NEXT:    slli a2, t1, 5
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 376(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 368(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 64
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 6
+; RV64IMZBS-NEXT:    slli a2, t1, 6
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 440(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 424(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 128
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 7
+; RV64IMZBS-NEXT:    slli a2, t1, 7
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 360(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 448(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 256
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 8
+; RV64IMZBS-NEXT:    slli a2, t1, 8
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 344(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 336(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 512
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 9
+; RV64IMZBS-NEXT:    slli a2, t1, 9
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 392(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 328(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a0, s5, 1024
 ; RV64IMZBS-NEXT:    seqz a0, a0
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    slli a2, t0, 10
+; RV64IMZBS-NEXT:    slli a2, t1, 10
 ; RV64IMZBS-NEXT:    and a0, a0, a2
-; RV64IMZBS-NEXT:    sd a0, 424(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a0, 360(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    not a0, s5
 ; RV64IMZBS-NEXT:    bexti a2, a0, 11
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 11
+; RV64IMZBS-NEXT:    slli a3, t1, 11
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 392(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 12
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 12
+; RV64IMZBS-NEXT:    slli a3, t1, 12
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 440(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 13
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 13
+; RV64IMZBS-NEXT:    slli a3, t1, 13
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 328(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 14
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 14
+; RV64IMZBS-NEXT:    slli a3, t1, 14
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 368(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 15
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 15
+; RV64IMZBS-NEXT:    slli a3, t1, 15
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 416(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 304(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 16
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 16
+; RV64IMZBS-NEXT:    slli a3, t1, 16
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 17
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 17
+; RV64IMZBS-NEXT:    slli a3, t1, 17
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 376(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 18
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 18
+; RV64IMZBS-NEXT:    slli a3, t1, 18
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 280(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 408(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 19
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 19
+; RV64IMZBS-NEXT:    slli a3, t1, 19
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 20
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 20
+; RV64IMZBS-NEXT:    slli a3, t1, 20
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 352(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 21
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 21
+; RV64IMZBS-NEXT:    slli a3, t1, 21
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 384(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 248(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 22
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 22
+; RV64IMZBS-NEXT:    slli a3, t1, 22
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 23
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 23
+; RV64IMZBS-NEXT:    slli a3, t1, 23
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 320(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 24
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 24
+; RV64IMZBS-NEXT:    slli a3, t1, 24
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 224(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 25
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 25
+; RV64IMZBS-NEXT:    slli a3, t1, 25
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 168(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 26
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 26
+; RV64IMZBS-NEXT:    slli a3, t1, 26
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 288(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 27
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 27
+; RV64IMZBS-NEXT:    slli a3, t1, 27
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 28
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 28
+; RV64IMZBS-NEXT:    slli a3, t1, 28
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 336(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 29
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 29
+; RV64IMZBS-NEXT:    slli a3, t1, 29
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 296(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 30
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 30
+; RV64IMZBS-NEXT:    slli a3, t1, 30
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 312(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    sraiw a2, s5, 31
 ; RV64IMZBS-NEXT:    seqz a2, a2
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 31
+; RV64IMZBS-NEXT:    slli a3, t1, 31
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 344(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 32
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 32
+; RV64IMZBS-NEXT:    slli a3, t1, 32
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 33
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 33
+; RV64IMZBS-NEXT:    slli a3, t1, 33
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 34
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 34
+; RV64IMZBS-NEXT:    slli a3, t1, 34
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 240(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 136(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 35
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 35
+; RV64IMZBS-NEXT:    slli a3, t1, 35
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 264(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 152(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 36
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 36
+; RV64IMZBS-NEXT:    slli a3, t1, 36
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 272(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 192(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 37
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 37
+; RV64IMZBS-NEXT:    slli a3, t1, 37
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 216(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 38
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 38
+; RV64IMZBS-NEXT:    slli a3, t1, 38
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 232(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 39
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 39
+; RV64IMZBS-NEXT:    slli a3, t1, 39
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 256(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 40
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 40
+; RV64IMZBS-NEXT:    slli a3, t1, 40
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 56(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 41
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 41
+; RV64IMZBS-NEXT:    slli a3, t1, 41
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 48(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 42
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 42
+; RV64IMZBS-NEXT:    slli a3, t1, 42
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 43
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 43
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 176(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli s1, t1, 43
+; RV64IMZBS-NEXT:    and a2, a2, s1
+; RV64IMZBS-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 44
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 44
+; RV64IMZBS-NEXT:    slli a3, t1, 44
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 45
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 45
+; RV64IMZBS-NEXT:    slli a3, t1, 45
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 208(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 144(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 46
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 46
-; RV64IMZBS-NEXT:    and s11, a2, a3
+; RV64IMZBS-NEXT:    slli a3, t1, 46
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 160(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 47
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a4, t0, 47
-; RV64IMZBS-NEXT:    and s9, a2, a4
+; RV64IMZBS-NEXT:    slli a3, t1, 47
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 184(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 48
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 48
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a5, t1, 48
+; RV64IMZBS-NEXT:    and s10, a2, a5
 ; RV64IMZBS-NEXT:    bexti a2, a0, 49
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 49
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a4, t1, 49
+; RV64IMZBS-NEXT:    and s9, a2, a4
 ; RV64IMZBS-NEXT:    bexti a2, a0, 50
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 50
+; RV64IMZBS-NEXT:    slli a3, t1, 50
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 16(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 51
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli s0, t0, 51
-; RV64IMZBS-NEXT:    and a2, a2, s0
-; RV64IMZBS-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a3, t1, 51
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 40(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 52
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli s1, t0, 52
-; RV64IMZBS-NEXT:    and a2, a2, s1
-; RV64IMZBS-NEXT:    sd a2, 88(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli a3, t1, 52
+; RV64IMZBS-NEXT:    and a2, a2, a3
+; RV64IMZBS-NEXT:    sd a2, 64(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 53
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 53
-; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 104(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli s0, t1, 53
+; RV64IMZBS-NEXT:    and a2, a2, s0
+; RV64IMZBS-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 54
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 54
+; RV64IMZBS-NEXT:    slli a3, t1, 54
 ; RV64IMZBS-NEXT:    and a2, a2, a3
-; RV64IMZBS-NEXT:    sd a2, 128(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    sd a2, 96(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 55
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 55
+; RV64IMZBS-NEXT:    slli a3, t1, 55
 ; RV64IMZBS-NEXT:    and a2, a2, a3
 ; RV64IMZBS-NEXT:    sd a2, 120(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    bexti a2, a0, 56
 ; RV64IMZBS-NEXT:    addi a2, a2, -1
-; RV64IMZBS-NEXT:    slli a3, t0, 56
+; RV64IMZBS-NEXT:    slli a3, t1, 56
 ; RV64IMZBS-NEXT:    and s6, a2, a3
 ; RV64IMZBS-NEXT:    bexti a3, a0, 57
 ; RV64IMZBS-NEXT:    addi a3, a3, -1
-; RV64IMZBS-NEXT:    slli a4, t0, 57
+; RV64IMZBS-NEXT:    slli a4, t1, 57
 ; RV64IMZBS-NEXT:    and s4, a3, a4
 ; RV64IMZBS-NEXT:    bexti a4, a0, 58
 ; RV64IMZBS-NEXT:    addi a4, a4, -1
-; RV64IMZBS-NEXT:    slli a5, t0, 58
+; RV64IMZBS-NEXT:    slli a5, t1, 58
 ; RV64IMZBS-NEXT:    and s7, a4, a5
 ; RV64IMZBS-NEXT:    bexti a5, a0, 59
 ; RV64IMZBS-NEXT:    addi a5, a5, -1
-; RV64IMZBS-NEXT:    slli a7, t0, 59
-; RV64IMZBS-NEXT:    and s8, a5, a7
-; RV64IMZBS-NEXT:    bexti a7, a0, 60
-; RV64IMZBS-NEXT:    addi a7, a7, -1
-; RV64IMZBS-NEXT:    slli t1, t0, 60
-; RV64IMZBS-NEXT:    and s10, a7, t1
-; RV64IMZBS-NEXT:    bexti t1, a0, 61
-; RV64IMZBS-NEXT:    addi t1, t1, -1
-; RV64IMZBS-NEXT:    slli a1, t0, 61
-; RV64IMZBS-NEXT:    and a1, t1, a1
-; RV64IMZBS-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill
+; RV64IMZBS-NEXT:    slli t0, t1, 59
+; RV64IMZBS-NEXT:    and s8, a5, t0
+; RV64IMZBS-NEXT:    bexti t0, a0, 60
+; RV64IMZBS-NEXT:    addi t0, t0, -1
+; RV64IMZBS-NEXT:    slli t2, t1, 60
+; RV64IMZBS-NEXT:    and s11, t0, t2
+; RV64IMZBS-NEXT:    bexti t2, a0, 61
+; RV64IMZBS-NEXT:    addi t2, t2, -1
+; RV64IMZBS-NEXT:    slli a1, t1, 61
+; RV64IMZBS-NEXT:    and a1, t2, a1
+; RV64IMZBS-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill
 ; RV64IMZBS-NEXT:    andi a1, s5, 1
 ; RV64IMZBS-NEXT:    seqz a1, a1
 ; RV64IMZBS-NEXT:    addi a1, a1, -1
-; RV64IMZBS-NEXT:    and a1, a1, t0
-; RV64IMZBS-NEXT:    slli t0, t0, 62
+; RV64IMZBS-NEXT:    and a1, a1, t1
+; RV64IMZBS-NEXT:    slli t1, t1, 62
 ; RV64IMZBS-NEXT:    bexti a0, a0, 62
 ; RV64IMZBS-NEXT:    addi a0, a0, -1
-; RV64IMZBS-NEXT:    and a0, a0, t0
+; RV64IMZBS-NEXT:    and a0, a0, t1
 ; RV64IMZBS-NEXT:    sd a0, 32(sp) # 8-byte Folded Spill
-; RV64IMZBS-NEXT:    ld a0, 880(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor s3, t5, a0
 ; RV64IMZBS-NEXT:    ld a0, 864(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 848(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s3, t5, a0
+; RV64IMZBS-NEXT:    ld a0, 848(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 840(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s5, a0, a2
-; RV64IMZBS-NEXT:    xor t2, t2, t3
-; RV64IMZBS-NEXT:    xor t4, t6, s2
-; RV64IMZBS-NEXT:    ld a0, 776(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t5, a6, a0
-; RV64IMZBS-NEXT:    ld a0, 736(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 728(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t2, t3, t6
+; RV64IMZBS-NEXT:    ld a0, 792(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, s2, a0
+; RV64IMZBS-NEXT:    xor t5, a6, a7
+; RV64IMZBS-NEXT:    ld a0, 712(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 704(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, a0, a2
-; RV64IMZBS-NEXT:    ld a0, 680(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld s0, 664(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a0, 672(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 656(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, a0, s0
 ; RV64IMZBS-NEXT:    ld a0, 608(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s1, 584(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, a0, s1
 ; RV64IMZBS-NEXT:    ld a0, 552(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 544(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 536(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, a0, a2
 ; RV64IMZBS-NEXT:    ld a0, 496(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 488(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 480(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, a0, a2
 ; RV64IMZBS-NEXT:    ld a0, 464(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a2, 456(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, a0, a2
-; RV64IMZBS-NEXT:    ld a0, 448(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, a1, a0
 ; RV64IMZBS-NEXT:    ld a0, 432(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a1, 408(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a0, a0, a1
+; RV64IMZBS-NEXT:    xor t3, a1, a0
+; RV64IMZBS-NEXT:    ld a0, 416(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a1, 400(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a2, 376(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a0, a0, a1
+; RV64IMZBS-NEXT:    ld a1, 384(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a1, a1, a2
-; RV64IMZBS-NEXT:    ld a2, 360(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a3, 344(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a2, 336(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a3, 328(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a2, a2, a3
-; RV64IMZBS-NEXT:    ld a3, 304(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a4, 296(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a3, 280(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a4, 264(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a3, a3, a4
-; RV64IMZBS-NEXT:    ld a4, 248(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a5, 232(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a4, 224(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 208(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a4, a5
-; RV64IMZBS-NEXT:    ld a5, 192(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 176(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld a6, 168(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a5, a6
-; RV64IMZBS-NEXT:    ld a6, 136(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    ld a7, 112(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a6, 112(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a7, 104(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a6, a7
 ; RV64IMZBS-NEXT:    ld a7, 56(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    ld ra, 48(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, a7, ra
-; RV64IMZBS-NEXT:    xor s9, s11, s9
+; RV64IMZBS-NEXT:    xor s9, s10, s9
 ; RV64IMZBS-NEXT:    xor s4, s6, s4
 ; RV64IMZBS-NEXT:    xor s3, s3, s5
-; RV64IMZBS-NEXT:    ld s5, 888(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 872(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t2, t2, s5
-; RV64IMZBS-NEXT:    ld s5, 840(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 832(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t4, s5
-; RV64IMZBS-NEXT:    ld s5, 816(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 784(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t5, s5
-; RV64IMZBS-NEXT:    ld s5, 768(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 744(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, t6, s5
-; RV64IMZBS-NEXT:    ld s5, 712(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 696(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s0, s5
-; RV64IMZBS-NEXT:    ld s5, 648(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 632(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s1, s5
 ; RV64IMZBS-NEXT:    ld s5, 568(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, s2, s5
-; RV64IMZBS-NEXT:    ld s5, 520(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s5, 512(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s5
 ; RV64IMZBS-NEXT:    ld s5, 472(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s5
 ; RV64IMZBS-NEXT:    xor a0, t3, a0
-; RV64IMZBS-NEXT:    ld t3, 440(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 424(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a1, a1, t3
-; RV64IMZBS-NEXT:    ld t3, 392(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 360(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a2, a2, t3
-; RV64IMZBS-NEXT:    ld t3, 328(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 304(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a3, a3, t3
-; RV64IMZBS-NEXT:    ld t3, 280(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 248(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a4, t3
-; RV64IMZBS-NEXT:    ld t3, 224(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 200(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a5, t3
-; RV64IMZBS-NEXT:    ld t3, 152(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 136(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a6, t3
 ; RV64IMZBS-NEXT:    ld t3, 72(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, a7, t3
-; RV64IMZBS-NEXT:    ld t3, 24(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t3, 16(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t3, s9, t3
 ; RV64IMZBS-NEXT:    xor s4, s4, s7
 ; RV64IMZBS-NEXT:    xor t2, s3, t2
-; RV64IMZBS-NEXT:    ld s3, 904(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 880(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t4, s3
-; RV64IMZBS-NEXT:    ld s3, 856(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 824(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t5, s3
-; RV64IMZBS-NEXT:    ld s3, 800(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 768(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, t6, s3
-; RV64IMZBS-NEXT:    ld s3, 752(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 728(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s0, s3
-; RV64IMZBS-NEXT:    ld s3, 672(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 648(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s1, s3
 ; RV64IMZBS-NEXT:    ld s3, 592(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s2, s2, s3
-; RV64IMZBS-NEXT:    ld s3, 536(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 544(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s3
-; RV64IMZBS-NEXT:    ld s3, 480(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s3, 488(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s3
 ; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 424(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 368(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 320(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 256(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 184(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 96(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    ld a7, 40(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a7, t3, a7
-; RV64IMZBS-NEXT:    xor t3, s4, s8
-; RV64IMZBS-NEXT:    xor t2, t2, t4
-; RV64IMZBS-NEXT:    ld t4, 896(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a1, 392(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, a1
+; RV64IMZBS-NEXT:    ld a1, 352(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, a1
+; RV64IMZBS-NEXT:    ld a1, 288(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a4, a4, a1
+; RV64IMZBS-NEXT:    ld a1, 240(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, a1
+; RV64IMZBS-NEXT:    ld a1, 152(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, a1
+; RV64IMZBS-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, a1
+; RV64IMZBS-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, a1
+; RV64IMZBS-NEXT:    xor s3, s4, s8
+; RV64IMZBS-NEXT:    ld a1, 904(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a1, t2, a1
+; RV64IMZBS-NEXT:    ld t2, 896(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t2, t4, t2
+; RV64IMZBS-NEXT:    ld t4, 856(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t5, t4
-; RV64IMZBS-NEXT:    ld t5, 832(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t5, 800(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t5, t6, t5
-; RV64IMZBS-NEXT:    ld t6, 792(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t6, 760(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t6, s0, t6
-; RV64IMZBS-NEXT:    ld s0, 704(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 688(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s0, s1, s0
-; RV64IMZBS-NEXT:    ld s1, 640(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s1, 624(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor s1, s2, s1
 ; RV64IMZBS-NEXT:    ld s2, 560(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s2
 ; RV64IMZBS-NEXT:    ld s2, 504(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s2
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 416(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 352(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 288(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 216(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 144(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 64(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    xor a7, t3, s10
+; RV64IMZBS-NEXT:    ld s2, 448(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a0, a0, s2
+; RV64IMZBS-NEXT:    ld s2, 440(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, s2
+; RV64IMZBS-NEXT:    ld s2, 376(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, s2
+; RV64IMZBS-NEXT:    ld s2, 320(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a4, a4, s2
+; RV64IMZBS-NEXT:    ld s2, 272(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, s2
+; RV64IMZBS-NEXT:    ld s2, 192(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, s2
+; RV64IMZBS-NEXT:    ld s2, 128(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, s2
+; RV64IMZBS-NEXT:    ld s2, 64(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, s2
+; RV64IMZBS-NEXT:    xor s2, s3, s11
+; RV64IMZBS-NEXT:    ld s3, 888(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, t4, s3
+; RV64IMZBS-NEXT:    ld s3, 776(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, t6, s3
+; RV64IMZBS-NEXT:    ld s3, 720(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s0, s0, s3
+; RV64IMZBS-NEXT:    ld s3, 640(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s1, s1, s3
+; RV64IMZBS-NEXT:    ld s3, 576(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t0, t0, s3
+; RV64IMZBS-NEXT:    ld s3, 520(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t1, t1, s3
+; RV64IMZBS-NEXT:    ld s3, 408(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, s3
+; RV64IMZBS-NEXT:    ld s3, 296(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a5, s3
+; RV64IMZBS-NEXT:    ld s3, 216(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a6, s3
+; RV64IMZBS-NEXT:    ld s3, 144(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, a7, s3
+; RV64IMZBS-NEXT:    ld s3, 80(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, t3, s3
+; RV64IMZBS-NEXT:    ld s3, 24(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s2, s2, s3
+; RV64IMZBS-NEXT:    xor t2, a1, t2
 ; RV64IMZBS-NEXT:    xor t2, t2, t4
-; RV64IMZBS-NEXT:    ld t3, 872(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, t5, t3
 ; RV64IMZBS-NEXT:    ld t4, 808(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t4, t6, t4
-; RV64IMZBS-NEXT:    ld t5, 744(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t5, s0, t5
-; RV64IMZBS-NEXT:    ld t6, 656(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t6, s1, t6
-; RV64IMZBS-NEXT:    ld s0, 576(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld t6, 736(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, s0, t6
+; RV64IMZBS-NEXT:    ld s0, 664(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor s0, s1, s0
+; RV64IMZBS-NEXT:    ld s1, 600(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t0, t0, s1
+; RV64IMZBS-NEXT:    ld s1, 528(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t1, t1, s1
+; RV64IMZBS-NEXT:    xor a2, a0, a2
+; RV64IMZBS-NEXT:    xor a2, a2, a3
+; RV64IMZBS-NEXT:    ld a3, 312(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a5, a3
+; RV64IMZBS-NEXT:    ld a5, 232(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a5, a6, a5
+; RV64IMZBS-NEXT:    ld a6, 160(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a6, a7, a6
+; RV64IMZBS-NEXT:    ld a7, 96(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a7, t3, a7
+; RV64IMZBS-NEXT:    ld t3, 32(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t3, s2, t3
+; RV64IMZBS-NEXT:    xor t2, t2, t5
+; RV64IMZBS-NEXT:    ld t5, 816(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t4, t4, t5
+; RV64IMZBS-NEXT:    ld t5, 752(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t5, t6, t5
+; RV64IMZBS-NEXT:    ld t6, 680(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor t6, s0, t6
+; RV64IMZBS-NEXT:    ld s0, 616(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t0, t0, s0
-; RV64IMZBS-NEXT:    ld s0, 512(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld s0, 912(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor t1, t1, s0
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 384(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 312(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 240(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 160(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a2, a2, a4
+; RV64IMZBS-NEXT:    ld a4, 344(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    xor a3, a3, a4
+; RV64IMZBS-NEXT:    ld a4, 256(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 80(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a5, 184(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    ld a6, 16(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a6, 120(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a6, a7, a6
-; RV64IMZBS-NEXT:    xor a7, t2, t3
-; RV64IMZBS-NEXT:    ld t2, 824(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t2, t4, t2
-; RV64IMZBS-NEXT:    ld t3, 760(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t3, t5, t3
-; RV64IMZBS-NEXT:    ld t4, 688(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t4, t6, t4
-; RV64IMZBS-NEXT:    ld t5, 584(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t0, t0, t5
-; RV64IMZBS-NEXT:    ld t5, 528(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t1, t1, t5
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 336(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 264(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 176(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 88(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    ld a5, 32(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a6, a5
-; RV64IMZBS-NEXT:    xor a6, a7, t2
-; RV64IMZBS-NEXT:    ld a7, 784(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    ld a7, 920(sp) # 8-byte Folded Reload
 ; RV64IMZBS-NEXT:    xor a7, t3, a7
-; RV64IMZBS-NEXT:    ld t2, 696(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t2, t4, t2
-; RV64IMZBS-NEXT:    ld t3, 616(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t0, t0, t3
-; RV64IMZBS-NEXT:    ld t3, 912(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor t1, t1, t3
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 272(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 200(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    ld a3, 104(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a3, a4, a3
-; RV64IMZBS-NEXT:    ld a4, 920(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a4, a5, a4
-; RV64IMZBS-NEXT:    xor a5, a6, a7
-; RV64IMZBS-NEXT:    ld a6, 720(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a6, t2, a6
-; RV64IMZBS-NEXT:    ld a7, 624(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a7, t0, a7
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    ld a2, 128(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a2, a3, a2
-; RV64IMZBS-NEXT:    xor a3, a5, a6
-; RV64IMZBS-NEXT:    ld a5, 632(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a5, a7, a5
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    xor a1, a2, a1
-; RV64IMZBS-NEXT:    xor a3, a3, a5
-; RV64IMZBS-NEXT:    xor a0, a0, a1
-; RV64IMZBS-NEXT:    xor a1, a3, t1
-; RV64IMZBS-NEXT:    xor a0, a0, a4
-; RV64IMZBS-NEXT:    srli a2, a1, 40
-; RV64IMZBS-NEXT:    srli a3, a1, 56
-; RV64IMZBS-NEXT:    srli a4, a1, 24
-; RV64IMZBS-NEXT:    srli a5, a1, 8
-; RV64IMZBS-NEXT:    srliw a6, a1, 24
-; RV64IMZBS-NEXT:    lui t3, 4080
-; RV64IMZBS-NEXT:    and a7, a1, t3
-; RV64IMZBS-NEXT:    slli t0, a1, 56
-; RV64IMZBS-NEXT:    ld t4, 936(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a1, a1, t4
-; RV64IMZBS-NEXT:    srli t1, a0, 8
-; RV64IMZBS-NEXT:    ld t2, 960(sp) # 8-byte Folded Reload
-; RV64IMZBS-NEXT:    and a5, a5, t2
-; RV64IMZBS-NEXT:    and t1, t1, t2
-; RV64IMZBS-NEXT:    srli t2, a0, 40
-; RV64IMZBS-NEXT:    and a2, a2, t4
-; RV64IMZBS-NEXT:    or a2, a2, a3
-; RV64IMZBS-NEXT:    srli a3, a0, 56
-; RV64IMZBS-NEXT:    and a4, a4, t3
-; RV64IMZBS-NEXT:    or a4, a5, a4
-; RV64IMZBS-NEXT:    srli a5, a0, 24
-; RV64IMZBS-NEXT:    slli a6, a6, 32
-; RV64IMZBS-NEXT:    slli a7, a7, 24
-; RV64IMZBS-NEXT:    or a6, a7, a6
-; RV64IMZBS-NEXT:    srliw a7, a0, 24
-; RV64IMZBS-NEXT:    and a5, a5, t3
-; RV64IMZBS-NEXT:    and t3, a0, t3
-; RV64IMZBS-NEXT:    and t2, t2, t4
-; RV64IMZBS-NEXT:    and t4, a0, t4
+; RV64IMZBS-NEXT:    xor t3, t2, t4
+; RV64IMZBS-NEXT:    xor t3, t3, t5
+; RV64IMZBS-NEXT:    xor a3, a2, a3
+; RV64IMZBS-NEXT:    xor a3, a3, a4
+; RV64IMZBS-NEXT:    slli a1, a1, 56
 ; RV64IMZBS-NEXT:    slli a0, a0, 56
-; RV64IMZBS-NEXT:    slli a1, a1, 40
-; RV64IMZBS-NEXT:    slli a7, a7, 32
-; RV64IMZBS-NEXT:    slli t3, t3, 24
-; RV64IMZBS-NEXT:    slli t4, t4, 40
-; RV64IMZBS-NEXT:    or a1, t0, a1
-; RV64IMZBS-NEXT:    or a3, t2, a3
-; RV64IMZBS-NEXT:    or a5, t1, a5
-; RV64IMZBS-NEXT:    or a7, t3, a7
-; RV64IMZBS-NEXT:    or a0, a0, t4
-; RV64IMZBS-NEXT:    or a2, a4, a2
-; RV64IMZBS-NEXT:    or a1, a1, a6
-; RV64IMZBS-NEXT:    or a3, a5, a3
-; RV64IMZBS-NEXT:    or a0, a0, a7
-; RV64IMZBS-NEXT:    or a1, a1, a2
+; RV64IMZBS-NEXT:    ld s0, 936(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    and a4, t2, s0
+; RV64IMZBS-NEXT:    and a2, a2, s0
+; RV64IMZBS-NEXT:    slli a4, a4, 40
+; RV64IMZBS-NEXT:    slli a2, a2, 40
+; RV64IMZBS-NEXT:    or a1, a1, a4
+; RV64IMZBS-NEXT:    lui t4, 4080
+; RV64IMZBS-NEXT:    and a4, t3, t4
+; RV64IMZBS-NEXT:    xor t2, t3, t6
+; RV64IMZBS-NEXT:    srli t3, t3, 8
+; RV64IMZBS-NEXT:    or a0, a0, a2
+; RV64IMZBS-NEXT:    and a2, a3, t4
+; RV64IMZBS-NEXT:    lui t5, 4080
+; RV64IMZBS-NEXT:    xor a5, a3, a5
+; RV64IMZBS-NEXT:    srli a3, a3, 8
+; RV64IMZBS-NEXT:    slli a4, a4, 24
+; RV64IMZBS-NEXT:    xor t0, t2, t0
+; RV64IMZBS-NEXT:    ld t4, 960(sp) # 8-byte Folded Reload
+; RV64IMZBS-NEXT:    and t3, t3, t4
+; RV64IMZBS-NEXT:    srli t2, t2, 24
+; RV64IMZBS-NEXT:    slli a2, a2, 24
+; RV64IMZBS-NEXT:    xor a6, a5, a6
+; RV64IMZBS-NEXT:    and a3, a3, t4
+; RV64IMZBS-NEXT:    srli a5, a5, 24
+; RV64IMZBS-NEXT:    srliw t4, t0, 24
+; RV64IMZBS-NEXT:    and t2, t2, t5
+; RV64IMZBS-NEXT:    xor t1, t0, t1
+; RV64IMZBS-NEXT:    srli t0, t0, 40
+; RV64IMZBS-NEXT:    and a5, a5, t5
+; RV64IMZBS-NEXT:    srliw t5, a6, 24
+; RV64IMZBS-NEXT:    xor a7, a6, a7
+; RV64IMZBS-NEXT:    srli a6, a6, 40
+; RV64IMZBS-NEXT:    slli t4, t4, 32
+; RV64IMZBS-NEXT:    or t2, t3, t2
+; RV64IMZBS-NEXT:    and t0, t0, s0
+; RV64IMZBS-NEXT:    srli t1, t1, 56
+; RV64IMZBS-NEXT:    slli t5, t5, 32
+; RV64IMZBS-NEXT:    or a3, a3, a5
+; RV64IMZBS-NEXT:    and a5, a6, s0
+; RV64IMZBS-NEXT:    srli a6, a7, 56
+; RV64IMZBS-NEXT:    or a4, a4, t4
+; RV64IMZBS-NEXT:    or a7, t0, t1
+; RV64IMZBS-NEXT:    or a2, a2, t5
+; RV64IMZBS-NEXT:    or a5, a5, a6
+; RV64IMZBS-NEXT:    or a1, a1, a4
+; RV64IMZBS-NEXT:    or a4, t2, a7
+; RV64IMZBS-NEXT:    or a0, a0, a2
+; RV64IMZBS-NEXT:    or a3, a3, a5
+; RV64IMZBS-NEXT:    or a1, a1, a4
 ; RV64IMZBS-NEXT:    or a0, a0, a3
 ; RV64IMZBS-NEXT:    srli a2, a1, 4
 ; RV64IMZBS-NEXT:    ld a4, 952(sp) # 8-byte Folded Reload
diff --git a/llvm/test/CodeGen/X86/cmp-setcc-cmov-reworklist.ll b/llvm/test/CodeGen/X86/cmp-setcc-cmov-reworklist.ll
new file mode 100644
index 0000000000000..13f400881f316
--- /dev/null
+++ b/llvm/test/CodeGen/X86/cmp-setcc-cmov-reworklist.ll
@@ -0,0 +1,75 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
+
+; Multi-word unsigned subtract with a short-circuit AND of the final borrow
+; (`extra && bo ? fb : d`) where the struct return is via sret so the
+; selection becomes a CMOV cascade. Clang's `select cond, freeze(bo), false`
+; lowering hides the SETCC under a FREEZE. FREEZE of X86ISD::SETCC is
+; unconditionally non-poison and gets folded by DAGCombiner::visitFREEZE,
+; but until the worklist was fixed the consuming CMOV was not re-added —
+; so checkBoolTestSetCCCombine never fired and the asm retained a
+; redundant setb/testb/cmove triple after the final SBB.
+;
+; After the fix the final borrow is consumed directly via cmovae off the CF
+; produced by the last SBB.
+
+%struct.U = type { [3 x i64] }
+
+define void @sel(ptr sret(%struct.U) align 8 %agg.result, ptr %x, ptr %mod, ptr %fb, i1 zeroext %extra) {
+; CHECK-LABEL: sel:
+; CHECK:       # %bb.0: # %entry
+; CHECK:         subq
+; CHECK-NEXT:    movq
+; CHECK-NEXT:    movq
+; CHECK-NEXT:    sbbq
+; CHECK-NEXT:    movq
+; CHECK-NEXT:    movq
+; CHECK-NEXT:    sbbq
+; CHECK-NOT:     setb
+; CHECK-NOT:     testb
+; CHECK:         cmovae
+; CHECK-NOT:     setb
+entry:
+  %d = alloca %struct.U, align 8
+  %0 = load i64, ptr %x, align 8
+  %1 = load i64, ptr %mod, align 8
+  %2 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %0, i64 %1)
+  %3 = extractvalue { i64, i1 } %2, 1
+  %4 = extractvalue { i64, i1 } %2, 0
+  %5 = zext i1 %3 to i64
+  store i64 %4, ptr %d, align 8
+  %x1 = getelementptr inbounds nuw i8, ptr %x, i64 8
+  %6 = load i64, ptr %x1, align 8
+  %m1 = getelementptr inbounds nuw i8, ptr %mod, i64 8
+  %7 = load i64, ptr %m1, align 8
+  %8 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %6, i64 %7)
+  %9 = extractvalue { i64, i1 } %8, 1
+  %10 = extractvalue { i64, i1 } %8, 0
+  %11 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %10, i64 %5)
+  %12 = extractvalue { i64, i1 } %11, 1
+  %13 = extractvalue { i64, i1 } %11, 0
+  %14 = or i1 %9, %12
+  %15 = zext i1 %14 to i64
+  %d1 = getelementptr inbounds nuw i8, ptr %d, i64 8
+  store i64 %13, ptr %d1, align 8
+  %x2 = getelementptr inbounds nuw i8, ptr %x, i64 16
+  %16 = load i64, ptr %x2, align 8
+  %m2 = getelementptr inbounds nuw i8, ptr %mod, i64 16
+  %17 = load i64, ptr %m2, align 8
+  %18 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %16, i64 %17)
+  %19 = extractvalue { i64, i1 } %18, 1
+  %20 = extractvalue { i64, i1 } %18, 0
+  %21 = tail call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %20, i64 %15)
+  %22 = extractvalue { i64, i1 } %21, 1
+  %23 = extractvalue { i64, i1 } %21, 0
+  %24 = or i1 %19, %22
+  %d2 = getelementptr inbounds nuw i8, ptr %d, i64 16
+  store i64 %23, ptr %d2, align 8
+  %or.cond = select i1 %extra, i1 %24, i1 false
+  %cond = select i1 %or.cond, ptr %fb, ptr %d
+  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, ptr noundef nonnull align 8 dereferenceable(24) %cond, i64 24, i1 false)
+  ret void
+}
+
+declare { i64, i1 } @llvm.usub.with.overflow.i64(i64, i64)
+declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg)
diff --git a/llvm/test/CodeGen/X86/freeze-binary.ll b/llvm/test/CodeGen/X86/freeze-binary.ll
index 15e9409a46eaa..b360763f80eca 100644
--- a/llvm/test/CodeGen/X86/freeze-binary.ll
+++ b/llvm/test/CodeGen/X86/freeze-binary.ll
@@ -185,7 +185,7 @@ define i32 @freeze_add_nsw(i32 %a0) nounwind {
 define <4 x i32> @freeze_add_vec(<4 x i32> %a0) nounwind {
 ; X86-LABEL: freeze_add_vec:
 ; X86:       # %bb.0:
-; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 # [5,5,5,5]
 ; X86-NEXT:    retl
 ;
 ; X64-LABEL: freeze_add_vec:
@@ -202,14 +202,14 @@ define <4 x i32> @freeze_add_vec(<4 x i32> %a0) nounwind {
 define <4 x i32> @freeze_add_vec_undef(<4 x i32> %a0) nounwind {
 ; X86-LABEL: freeze_add_vec_undef:
 ; X86:       # %bb.0:
-; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
-; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 # [1,2,3,0]
+; X86-NEXT:    paddd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0 # [4,3,2,u]
 ; X86-NEXT:    retl
 ;
 ; X64-LABEL: freeze_add_vec_undef:
 ; X64:       # %bb.0:
-; X64-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
-; X64-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
+; X64-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [1,2,3,0]
+; X64-NEXT:    vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [4,3,2,u]
 ; X64-NEXT:    retq
   %x = add <4 x i32> %a0, <i32 1, i32 2, i32 3, i32 undef>
   %y = freeze <4 x i32> %x
@@ -867,11 +867,8 @@ define i32 @freeze_ssubo(i32 %a0, i32 %a1, i8 %a2, i8 %a3) nounwind {
 ; X86:       # %bb.0:
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
-; X86-NEXT:    xorl %edx, %edx
 ; X86-NEXT:    addb {{[0-9]+}}(%esp), %cl
-; X86-NEXT:    setb %dl
-; X86-NEXT:    movzbl %dl, %ecx
-; X86-NEXT:    subl %ecx, %eax
+; X86-NEXT:    sbbl $0, %eax
 ; X86-NEXT:    subl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    retl
 ;
@@ -899,11 +896,8 @@ define i32 @freeze_usubo(i32 %a0, i32 %a1, i8 %a2, i8 %a3) nounwind {
 ; X86:       # %bb.0:
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
-; X86-NEXT:    xorl %edx, %edx
 ; X86-NEXT:    addb {{[0-9]+}}(%esp), %cl
-; X86-NEXT:    setb %dl
-; X86-NEXT:    movzbl %dl, %ecx
-; X86-NEXT:    subl %ecx, %eax
+; X86-NEXT:    sbbl $0, %eax
 ; X86-NEXT:    subl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    retl
 ;



More information about the llvm-commits mailing list