diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.td b/llvm/lib/Target/RISCV/RISCVInstrInfo.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td @@ -1406,24 +1406,17 @@ Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>; } -multiclass SelectCC_GPR_rrirr { - let usesCustomInserter = 1 in - def _Using_CC_GPR : Pseudo<(outs valty:$dst), - (ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc, - valty:$truev, valty:$falsev), - [(set valty:$dst, - (riscv_selectcc_frag:$cc GPR:$lhs, GPR:$rhs, cond, - valty:$truev, valty:$falsev))]>; - // Explicitly select 0 in the condition to X0. The register coalescer doesn't - // always do it. - def : Pat<(riscv_selectcc_frag:$cc GPR:$lhs, 0, cond, valty:$truev, - valty:$falsev), - (!cast(NAME#"_Using_CC_GPR") GPR:$lhs, X0, - (IntCCtoRISCVCC $cc), valty:$truev, valty:$falsev)>; -} +let usesCustomInserter = 1 in +class SelectCC_GPR_rrirr + : Pseudo<(outs valty:$dst), + (ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc, + valty:$truev, valty:$falsev), + [(set valty:$dst, + (riscv_selectcc_frag:$cc GPR:$lhs, GPR:$rhs, cond, + valty:$truev, valty:$falsev))]>; let Predicates = [NoShortForwardBranchOpt] in -defm Select_GPR : SelectCC_GPR_rrirr; +def Select_GPR_Using_CC_GPR : SelectCC_GPR_rrirr; class SelectCompressOpt: Pat<(riscv_selectcc_frag:$select GPR:$lhs, simm12_no6:$Constant, Cond, GPR:$truev, GPR:$falsev), @@ -1440,23 +1433,19 @@ /// Branches and jumps // Match `riscv_brcc` and lower to the appropriate RISC-V branch instruction. -multiclass BccPat { - def : Pat<(riscv_brcc GPR:$rs1, GPR:$rs2, Cond, bb:$imm12), - (Inst GPR:$rs1, GPR:$rs2, simm13_lsb0:$imm12)>; - // Explicitly select 0 to X0. The register coalescer doesn't always do it. - def : Pat<(riscv_brcc GPR:$rs1, 0, Cond, bb:$imm12), - (Inst GPR:$rs1, X0, simm13_lsb0:$imm12)>; -} +class BccPat + : Pat<(riscv_brcc GPR:$rs1, GPR:$rs2, Cond, bb:$imm12), + (Inst GPR:$rs1, GPR:$rs2, simm13_lsb0:$imm12)>; class BrccCompessOpt : Pat<(riscv_brcc GPR:$lhs, simm12_no6:$Constant, Cond, bb:$place), (Inst (ADDI GPR:$lhs, (NegImm simm12:$Constant)), X0, bb:$place)>; -defm : BccPat; -defm : BccPat; -defm : BccPat; -defm : BccPat; -defm : BccPat; -defm : BccPat; +def : BccPat; +def : BccPat; +def : BccPat; +def : BccPat; +def : BccPat; +def : BccPat; let Predicates = [HasStdExtC, OptForMinSize] in { def : BrccCompessOpt; diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoD.td b/llvm/lib/Target/RISCV/RISCVInstrInfoD.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoD.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoD.td @@ -336,7 +336,7 @@ def : PatSetCC; def : PatSetCC; -defm Select_FPR64 : SelectCC_GPR_rrirr; +def Select_FPR64_Using_CC_GPR : SelectCC_GPR_rrirr; def PseudoFROUND_D : PseudoFROUND; diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoF.td b/llvm/lib/Target/RISCV/RISCVInstrInfoF.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoF.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoF.td @@ -585,7 +585,7 @@ def : PatSetCC; def : PatSetCC; -defm Select_FPR32 : SelectCC_GPR_rrirr; +def Select_FPR32_Using_CC_GPR : SelectCC_GPR_rrirr; def PseudoFROUND_S : PseudoFROUND; diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td @@ -336,7 +336,7 @@ def : PatSetCC; def : PatSetCC; -defm Select_FPR16 : SelectCC_GPR_rrirr; +def Select_FPR16_Using_CC_GPR : SelectCC_GPR_rrirr; def PseudoFROUND_H : PseudoFROUND; } // Predicates = [HasStdExtZfh] diff --git a/llvm/test/CodeGen/RISCV/double-convert.ll b/llvm/test/CodeGen/RISCV/double-convert.ll --- a/llvm/test/CodeGen/RISCV/double-convert.ll +++ b/llvm/test/CodeGen/RISCV/double-convert.ll @@ -110,29 +110,28 @@ ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 -; RV32I-NEXT: lui a3, 269824 -; RV32I-NEXT: addi a3, a3, -1 -; RV32I-NEXT: lui a2, 1047552 -; RV32I-NEXT: call __gtdf2@plt -; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a3, 794112 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: li a2, 0 ; RV32I-NEXT: call __gedf2@plt -; RV32I-NEXT: mv s4, a0 +; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __fixdfsi@plt -; RV32I-NEXT: mv s3, a0 -; RV32I-NEXT: lui a0, 524288 -; RV32I-NEXT: bgez s4, .LBB3_2 +; RV32I-NEXT: mv s2, a0 +; RV32I-NEXT: lui s4, 524288 +; RV32I-NEXT: bgez s3, .LBB3_2 ; RV32I-NEXT: # %bb.1: # %start -; RV32I-NEXT: lui s3, 524288 +; RV32I-NEXT: lui s2, 524288 ; RV32I-NEXT: .LBB3_2: # %start -; RV32I-NEXT: blez s2, .LBB3_4 +; RV32I-NEXT: lui a3, 269824 +; RV32I-NEXT: addi a3, a3, -1 +; RV32I-NEXT: lui a2, 1047552 +; RV32I-NEXT: mv a0, s1 +; RV32I-NEXT: mv a1, s0 +; RV32I-NEXT: call __gtdf2@plt +; RV32I-NEXT: blez a0, .LBB3_4 ; RV32I-NEXT: # %bb.3: # %start -; RV32I-NEXT: addi s3, a0, -1 +; RV32I-NEXT: addi s2, s4, -1 ; RV32I-NEXT: .LBB3_4: # %start ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -141,7 +140,7 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and a0, a0, s3 +; RV32I-NEXT: and a0, a0, s2 ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload @@ -590,34 +589,32 @@ ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 -; RV32I-NEXT: lui s2, 278016 -; RV32I-NEXT: addi s2, s2, -1 -; RV32I-NEXT: li a2, -1 -; RV32I-NEXT: mv a3, s2 -; RV32I-NEXT: call __gtdf2@plt -; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: lui a3, 802304 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: li a2, 0 ; RV32I-NEXT: call __gedf2@plt -; RV32I-NEXT: mv s6, a0 +; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __fixdfdi@plt -; RV32I-NEXT: mv s3, a0 -; RV32I-NEXT: mv s5, a1 -; RV32I-NEXT: lui a0, 524288 -; RV32I-NEXT: bgez s6, .LBB12_2 -; RV32I-NEXT: # %bb.1: # %start +; RV32I-NEXT: mv s2, a0 +; RV32I-NEXT: mv s4, a1 ; RV32I-NEXT: lui s5, 524288 +; RV32I-NEXT: bgez s3, .LBB12_2 +; RV32I-NEXT: # %bb.1: # %start +; RV32I-NEXT: lui s4, 524288 ; RV32I-NEXT: .LBB12_2: # %start -; RV32I-NEXT: blez s4, .LBB12_4 +; RV32I-NEXT: lui s3, 278016 +; RV32I-NEXT: addi s3, s3, -1 +; RV32I-NEXT: li a2, -1 +; RV32I-NEXT: mv a0, s1 +; RV32I-NEXT: mv a1, s0 +; RV32I-NEXT: mv a3, s3 +; RV32I-NEXT: call __gtdf2@plt +; RV32I-NEXT: blez a0, .LBB12_4 ; RV32I-NEXT: # %bb.3: # %start -; RV32I-NEXT: addi s5, a0, -1 +; RV32I-NEXT: addi s4, s5, -1 ; RV32I-NEXT: .LBB12_4: # %start ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -626,7 +623,7 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and s4, a0, s5 +; RV32I-NEXT: and s4, a0, s4 ; RV32I-NEXT: lui a3, 802304 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -634,15 +631,15 @@ ; RV32I-NEXT: call __gedf2@plt ; RV32I-NEXT: slti a0, a0, 0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and s3, a0, s3 +; RV32I-NEXT: and s2, a0, s2 ; RV32I-NEXT: li a2, -1 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 -; RV32I-NEXT: mv a3, s2 +; RV32I-NEXT: mv a3, s3 ; RV32I-NEXT: call __gtdf2@plt ; RV32I-NEXT: sgtz a0, a0 ; RV32I-NEXT: neg a0, a0 -; RV32I-NEXT: or s2, a0, s3 +; RV32I-NEXT: or s2, a0, s2 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: mv a2, s1 @@ -659,7 +656,6 @@ ; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1326,33 +1322,30 @@ ; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 -; RV32I-NEXT: lui a0, 265728 -; RV32I-NEXT: addi a3, a0, -64 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: li a2, 0 -; RV32I-NEXT: call __gtdf2@plt -; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a3, 790016 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: li a2, 0 ; RV32I-NEXT: call __gedf2@plt -; RV32I-NEXT: mv s4, a0 +; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __fixdfsi@plt -; RV32I-NEXT: mv s3, a0 -; RV32I-NEXT: bgez s4, .LBB26_2 +; RV32I-NEXT: mv s2, a0 +; RV32I-NEXT: bgez s3, .LBB26_2 ; RV32I-NEXT: # %bb.1: # %start -; RV32I-NEXT: lui s3, 1048568 +; RV32I-NEXT: lui s2, 1048568 ; RV32I-NEXT: .LBB26_2: # %start -; RV32I-NEXT: blez s2, .LBB26_4 +; RV32I-NEXT: lui a0, 265728 +; RV32I-NEXT: addi a3, a0, -64 +; RV32I-NEXT: mv a0, s1 +; RV32I-NEXT: mv a1, s0 +; RV32I-NEXT: li a2, 0 +; RV32I-NEXT: call __gtdf2@plt +; RV32I-NEXT: blez a0, .LBB26_4 ; RV32I-NEXT: # %bb.3: # %start -; RV32I-NEXT: lui s3, 8 -; RV32I-NEXT: addi s3, s3, -1 +; RV32I-NEXT: lui s2, 8 +; RV32I-NEXT: addi s2, s2, -1 ; RV32I-NEXT: .LBB26_4: # %start ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -1361,7 +1354,7 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and a0, a0, s3 +; RV32I-NEXT: and a0, a0, s2 ; RV32I-NEXT: slli a0, a0, 16 ; RV32I-NEXT: srai a0, a0, 16 ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload @@ -1369,7 +1362,6 @@ ; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1633,30 +1625,28 @@ ; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 -; RV32I-NEXT: lui a3, 263676 -; RV32I-NEXT: li a2, 0 -; RV32I-NEXT: call __gtdf2@plt -; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a3, 787968 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: li a2, 0 ; RV32I-NEXT: call __gedf2@plt -; RV32I-NEXT: mv s4, a0 +; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __fixdfsi@plt -; RV32I-NEXT: mv s3, a0 -; RV32I-NEXT: bgez s4, .LBB30_2 +; RV32I-NEXT: mv s2, a0 +; RV32I-NEXT: bgez s3, .LBB30_2 ; RV32I-NEXT: # %bb.1: # %start -; RV32I-NEXT: li s3, -128 +; RV32I-NEXT: li s2, -128 ; RV32I-NEXT: .LBB30_2: # %start -; RV32I-NEXT: blez s2, .LBB30_4 +; RV32I-NEXT: lui a3, 263676 +; RV32I-NEXT: mv a0, s1 +; RV32I-NEXT: mv a1, s0 +; RV32I-NEXT: li a2, 0 +; RV32I-NEXT: call __gtdf2@plt +; RV32I-NEXT: blez a0, .LBB30_4 ; RV32I-NEXT: # %bb.3: # %start -; RV32I-NEXT: li s3, 127 +; RV32I-NEXT: li s2, 127 ; RV32I-NEXT: .LBB30_4: # %start ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -1665,7 +1655,7 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and a0, a0, s3 +; RV32I-NEXT: and a0, a0, s2 ; RV32I-NEXT: slli a0, a0, 24 ; RV32I-NEXT: srai a0, a0, 24 ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload @@ -1673,7 +1663,6 @@ ; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1983,29 +1972,28 @@ ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 -; RV32I-NEXT: lui a3, 269824 -; RV32I-NEXT: addi a3, a3, -1 -; RV32I-NEXT: lui a2, 1047552 -; RV32I-NEXT: call __gtdf2@plt -; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a3, 794112 -; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: li a2, 0 ; RV32I-NEXT: call __gedf2@plt -; RV32I-NEXT: mv s4, a0 +; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __fixdfsi@plt -; RV32I-NEXT: mv s3, a0 -; RV32I-NEXT: lui a0, 524288 -; RV32I-NEXT: bgez s4, .LBB34_2 +; RV32I-NEXT: mv s2, a0 +; RV32I-NEXT: lui s4, 524288 +; RV32I-NEXT: bgez s3, .LBB34_2 ; RV32I-NEXT: # %bb.1: # %start -; RV32I-NEXT: lui s3, 524288 +; RV32I-NEXT: lui s2, 524288 ; RV32I-NEXT: .LBB34_2: # %start -; RV32I-NEXT: blez s2, .LBB34_4 +; RV32I-NEXT: lui a3, 269824 +; RV32I-NEXT: addi a3, a3, -1 +; RV32I-NEXT: lui a2, 1047552 +; RV32I-NEXT: mv a0, s1 +; RV32I-NEXT: mv a1, s0 +; RV32I-NEXT: call __gtdf2@plt +; RV32I-NEXT: blez a0, .LBB34_4 ; RV32I-NEXT: # %bb.3: # %start -; RV32I-NEXT: addi s3, a0, -1 +; RV32I-NEXT: addi s2, s4, -1 ; RV32I-NEXT: .LBB34_4: # %start ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 @@ -2014,7 +2002,7 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: addi a0, a0, -1 -; RV32I-NEXT: and a0, a0, s3 +; RV32I-NEXT: and a0, a0, s2 ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload diff --git a/llvm/test/CodeGen/RISCV/float-select-verify.ll b/llvm/test/CodeGen/RISCV/float-select-verify.ll --- a/llvm/test/CodeGen/RISCV/float-select-verify.ll +++ b/llvm/test/CodeGen/RISCV/float-select-verify.ll @@ -30,7 +30,8 @@ ; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.4(0x40000000) ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[PHI:%[0-9]+]]:fpr32 = PHI [[FMV_W_X1]], %bb.0, [[FSGNJ_S]], %bb.1 - ; CHECK-NEXT: BNE [[ANDI]], $x0, %bb.4 + ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x0 + ; CHECK-NEXT: BNE [[ANDI]], [[COPY3]], %bb.4 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.3.entry: ; CHECK-NEXT: successors: %bb.4(0x80000000) @@ -55,7 +56,7 @@ ; CHECK-NEXT: successors: %bb.7(0x40000000), %bb.8(0x40000000) ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[PHI2:%[0-9]+]]:fpr32 = PHI [[FMV_W_X]], %bb.4, [[FSGNJ_S1]], %bb.5 - ; CHECK-NEXT: BNE [[ANDI]], $x0, %bb.8 + ; CHECK-NEXT: BNE [[ANDI]], [[COPY3]], %bb.8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.7.entry: ; CHECK-NEXT: successors: %bb.8(0x80000000) diff --git a/llvm/test/CodeGen/RISCV/fpclamptosat.ll b/llvm/test/CodeGen/RISCV/fpclamptosat.ll --- a/llvm/test/CodeGen/RISCV/fpclamptosat.ll +++ b/llvm/test/CodeGen/RISCV/fpclamptosat.ll @@ -1118,21 +1118,21 @@ ; RV64IF-NEXT: srli a3, a2, 1 ; RV64IF-NEXT: beqz a1, .LBB18_2 ; RV64IF-NEXT: # %bb.1: # %entry -; RV64IF-NEXT: slti a4, a1, 0 +; RV64IF-NEXT: slti a5, a1, 0 ; RV64IF-NEXT: j .LBB18_3 ; RV64IF-NEXT: .LBB18_2: -; RV64IF-NEXT: sltu a4, a0, a3 +; RV64IF-NEXT: sltu a5, a0, a3 ; RV64IF-NEXT: .LBB18_3: # %entry -; RV64IF-NEXT: neg a5, a4 -; RV64IF-NEXT: and a5, a5, a1 -; RV64IF-NEXT: bnez a4, .LBB18_5 +; RV64IF-NEXT: neg a4, a5 +; RV64IF-NEXT: and a4, a4, a1 +; RV64IF-NEXT: bnez a5, .LBB18_5 ; RV64IF-NEXT: # %bb.4: # %entry ; RV64IF-NEXT: mv a0, a3 ; RV64IF-NEXT: .LBB18_5: # %entry ; RV64IF-NEXT: slli a1, a2, 63 -; RV64IF-NEXT: beq a5, a2, .LBB18_7 +; RV64IF-NEXT: beq a4, a2, .LBB18_7 ; RV64IF-NEXT: # %bb.6: # %entry -; RV64IF-NEXT: slti a2, a5, 0 +; RV64IF-NEXT: slti a2, a4, 0 ; RV64IF-NEXT: xori a2, a2, 1 ; RV64IF-NEXT: beqz a2, .LBB18_8 ; RV64IF-NEXT: j .LBB18_9 @@ -1756,21 +1756,21 @@ ; RV64-NEXT: srli a3, a2, 1 ; RV64-NEXT: beqz a1, .LBB24_2 ; RV64-NEXT: # %bb.1: # %entry -; RV64-NEXT: slti a4, a1, 0 +; RV64-NEXT: slti a5, a1, 0 ; RV64-NEXT: j .LBB24_3 ; RV64-NEXT: .LBB24_2: -; RV64-NEXT: sltu a4, a0, a3 +; RV64-NEXT: sltu a5, a0, a3 ; RV64-NEXT: .LBB24_3: # %entry -; RV64-NEXT: neg a5, a4 -; RV64-NEXT: and a5, a5, a1 -; RV64-NEXT: bnez a4, .LBB24_5 +; RV64-NEXT: neg a4, a5 +; RV64-NEXT: and a4, a4, a1 +; RV64-NEXT: bnez a5, .LBB24_5 ; RV64-NEXT: # %bb.4: # %entry ; RV64-NEXT: mv a0, a3 ; RV64-NEXT: .LBB24_5: # %entry ; RV64-NEXT: slli a1, a2, 63 -; RV64-NEXT: beq a5, a2, .LBB24_7 +; RV64-NEXT: beq a4, a2, .LBB24_7 ; RV64-NEXT: # %bb.6: # %entry -; RV64-NEXT: slti a2, a5, 0 +; RV64-NEXT: slti a2, a4, 0 ; RV64-NEXT: xori a2, a2, 1 ; RV64-NEXT: beqz a2, .LBB24_8 ; RV64-NEXT: j .LBB24_9 @@ -3303,36 +3303,36 @@ ; RV32IF-NEXT: call __fixdfti@plt ; RV32IF-NEXT: lw a1, 16(sp) ; RV32IF-NEXT: lw a0, 20(sp) -; RV32IF-NEXT: li a3, 1 -; RV32IF-NEXT: mv a6, a1 +; RV32IF-NEXT: li a4, 1 +; RV32IF-NEXT: mv a3, a1 ; RV32IF-NEXT: bltz a0, .LBB47_2 ; RV32IF-NEXT: # %bb.1: # %entry -; RV32IF-NEXT: li a6, 1 +; RV32IF-NEXT: li a3, 1 ; RV32IF-NEXT: .LBB47_2: # %entry ; RV32IF-NEXT: mv a2, a1 -; RV32IF-NEXT: bltu a1, a3, .LBB47_4 +; RV32IF-NEXT: bltu a1, a4, .LBB47_4 ; RV32IF-NEXT: # %bb.3: # %entry ; RV32IF-NEXT: li a2, 1 ; RV32IF-NEXT: .LBB47_4: # %entry ; RV32IF-NEXT: lw a4, 12(sp) -; RV32IF-NEXT: lw a3, 8(sp) +; RV32IF-NEXT: lw a6, 8(sp) ; RV32IF-NEXT: slti a5, a0, 0 ; RV32IF-NEXT: beqz a0, .LBB47_6 ; RV32IF-NEXT: # %bb.5: # %entry -; RV32IF-NEXT: mv a2, a6 -; RV32IF-NEXT: mv a6, a5 +; RV32IF-NEXT: mv a2, a3 +; RV32IF-NEXT: mv a3, a5 ; RV32IF-NEXT: j .LBB47_7 ; RV32IF-NEXT: .LBB47_6: -; RV32IF-NEXT: seqz a6, a1 +; RV32IF-NEXT: seqz a3, a1 ; RV32IF-NEXT: .LBB47_7: # %entry -; RV32IF-NEXT: neg a6, a6 -; RV32IF-NEXT: and a3, a6, a3 +; RV32IF-NEXT: neg a7, a3 +; RV32IF-NEXT: and a3, a7, a6 ; RV32IF-NEXT: xori a1, a1, 1 ; RV32IF-NEXT: or a1, a1, a0 ; RV32IF-NEXT: seqz a1, a1 ; RV32IF-NEXT: addi a1, a1, -1 ; RV32IF-NEXT: and a3, a1, a3 -; RV32IF-NEXT: and a4, a6, a4 +; RV32IF-NEXT: and a4, a7, a4 ; RV32IF-NEXT: and a1, a1, a4 ; RV32IF-NEXT: neg a4, a5 ; RV32IF-NEXT: and a4, a4, a0 @@ -3401,36 +3401,36 @@ ; RV32IFD-NEXT: call __fixdfti@plt ; RV32IFD-NEXT: lw a1, 16(sp) ; RV32IFD-NEXT: lw a0, 20(sp) -; RV32IFD-NEXT: li a3, 1 -; RV32IFD-NEXT: mv a6, a1 +; RV32IFD-NEXT: li a4, 1 +; RV32IFD-NEXT: mv a3, a1 ; RV32IFD-NEXT: bltz a0, .LBB47_2 ; RV32IFD-NEXT: # %bb.1: # %entry -; RV32IFD-NEXT: li a6, 1 +; RV32IFD-NEXT: li a3, 1 ; RV32IFD-NEXT: .LBB47_2: # %entry ; RV32IFD-NEXT: mv a2, a1 -; RV32IFD-NEXT: bltu a1, a3, .LBB47_4 +; RV32IFD-NEXT: bltu a1, a4, .LBB47_4 ; RV32IFD-NEXT: # %bb.3: # %entry ; RV32IFD-NEXT: li a2, 1 ; RV32IFD-NEXT: .LBB47_4: # %entry ; RV32IFD-NEXT: lw a4, 12(sp) -; RV32IFD-NEXT: lw a3, 8(sp) +; RV32IFD-NEXT: lw a6, 8(sp) ; RV32IFD-NEXT: slti a5, a0, 0 ; RV32IFD-NEXT: beqz a0, .LBB47_6 ; RV32IFD-NEXT: # %bb.5: # %entry -; RV32IFD-NEXT: mv a2, a6 -; RV32IFD-NEXT: mv a6, a5 +; RV32IFD-NEXT: mv a2, a3 +; RV32IFD-NEXT: mv a3, a5 ; RV32IFD-NEXT: j .LBB47_7 ; RV32IFD-NEXT: .LBB47_6: -; RV32IFD-NEXT: seqz a6, a1 +; RV32IFD-NEXT: seqz a3, a1 ; RV32IFD-NEXT: .LBB47_7: # %entry -; RV32IFD-NEXT: neg a6, a6 -; RV32IFD-NEXT: and a3, a6, a3 +; RV32IFD-NEXT: neg a7, a3 +; RV32IFD-NEXT: and a3, a7, a6 ; RV32IFD-NEXT: xori a1, a1, 1 ; RV32IFD-NEXT: or a1, a1, a0 ; RV32IFD-NEXT: seqz a1, a1 ; RV32IFD-NEXT: addi a1, a1, -1 ; RV32IFD-NEXT: and a3, a1, a3 -; RV32IFD-NEXT: and a4, a6, a4 +; RV32IFD-NEXT: and a4, a7, a4 ; RV32IFD-NEXT: and a1, a1, a4 ; RV32IFD-NEXT: neg a4, a5 ; RV32IFD-NEXT: and a4, a4, a0 @@ -3637,36 +3637,36 @@ ; RV32-NEXT: call __fixsfti@plt ; RV32-NEXT: lw a1, 16(sp) ; RV32-NEXT: lw a0, 20(sp) -; RV32-NEXT: li a3, 1 -; RV32-NEXT: mv a6, a1 +; RV32-NEXT: li a4, 1 +; RV32-NEXT: mv a3, a1 ; RV32-NEXT: bltz a0, .LBB50_2 ; RV32-NEXT: # %bb.1: # %entry -; RV32-NEXT: li a6, 1 +; RV32-NEXT: li a3, 1 ; RV32-NEXT: .LBB50_2: # %entry ; RV32-NEXT: mv a2, a1 -; RV32-NEXT: bltu a1, a3, .LBB50_4 +; RV32-NEXT: bltu a1, a4, .LBB50_4 ; RV32-NEXT: # %bb.3: # %entry ; RV32-NEXT: li a2, 1 ; RV32-NEXT: .LBB50_4: # %entry ; RV32-NEXT: lw a4, 12(sp) -; RV32-NEXT: lw a3, 8(sp) +; RV32-NEXT: lw a6, 8(sp) ; RV32-NEXT: slti a5, a0, 0 ; RV32-NEXT: beqz a0, .LBB50_6 ; RV32-NEXT: # %bb.5: # %entry -; RV32-NEXT: mv a2, a6 -; RV32-NEXT: mv a6, a5 +; RV32-NEXT: mv a2, a3 +; RV32-NEXT: mv a3, a5 ; RV32-NEXT: j .LBB50_7 ; RV32-NEXT: .LBB50_6: -; RV32-NEXT: seqz a6, a1 +; RV32-NEXT: seqz a3, a1 ; RV32-NEXT: .LBB50_7: # %entry -; RV32-NEXT: neg a6, a6 -; RV32-NEXT: and a3, a6, a3 +; RV32-NEXT: neg a7, a3 +; RV32-NEXT: and a3, a7, a6 ; RV32-NEXT: xori a1, a1, 1 ; RV32-NEXT: or a1, a1, a0 ; RV32-NEXT: seqz a1, a1 ; RV32-NEXT: addi a1, a1, -1 ; RV32-NEXT: and a3, a1, a3 -; RV32-NEXT: and a4, a6, a4 +; RV32-NEXT: and a4, a7, a4 ; RV32-NEXT: and a1, a1, a4 ; RV32-NEXT: neg a4, a5 ; RV32-NEXT: and a4, a4, a0 @@ -3952,36 +3952,36 @@ ; RV32-NEXT: call __fixsfti@plt ; RV32-NEXT: lw a1, 16(sp) ; RV32-NEXT: lw a0, 20(sp) -; RV32-NEXT: li a3, 1 -; RV32-NEXT: mv a6, a1 +; RV32-NEXT: li a4, 1 +; RV32-NEXT: mv a3, a1 ; RV32-NEXT: bltz a0, .LBB53_2 ; RV32-NEXT: # %bb.1: # %entry -; RV32-NEXT: li a6, 1 +; RV32-NEXT: li a3, 1 ; RV32-NEXT: .LBB53_2: # %entry ; RV32-NEXT: mv a2, a1 -; RV32-NEXT: bltu a1, a3, .LBB53_4 +; RV32-NEXT: bltu a1, a4, .LBB53_4 ; RV32-NEXT: # %bb.3: # %entry ; RV32-NEXT: li a2, 1 ; RV32-NEXT: .LBB53_4: # %entry ; RV32-NEXT: lw a4, 12(sp) -; RV32-NEXT: lw a3, 8(sp) +; RV32-NEXT: lw a6, 8(sp) ; RV32-NEXT: slti a5, a0, 0 ; RV32-NEXT: beqz a0, .LBB53_6 ; RV32-NEXT: # %bb.5: # %entry -; RV32-NEXT: mv a2, a6 -; RV32-NEXT: mv a6, a5 +; RV32-NEXT: mv a2, a3 +; RV32-NEXT: mv a3, a5 ; RV32-NEXT: j .LBB53_7 ; RV32-NEXT: .LBB53_6: -; RV32-NEXT: seqz a6, a1 +; RV32-NEXT: seqz a3, a1 ; RV32-NEXT: .LBB53_7: # %entry -; RV32-NEXT: neg a6, a6 -; RV32-NEXT: and a3, a6, a3 +; RV32-NEXT: neg a7, a3 +; RV32-NEXT: and a3, a7, a6 ; RV32-NEXT: xori a1, a1, 1 ; RV32-NEXT: or a1, a1, a0 ; RV32-NEXT: seqz a1, a1 ; RV32-NEXT: addi a1, a1, -1 ; RV32-NEXT: and a3, a1, a3 -; RV32-NEXT: and a4, a6, a4 +; RV32-NEXT: and a4, a7, a4 ; RV32-NEXT: and a1, a1, a4 ; RV32-NEXT: neg a4, a5 ; RV32-NEXT: and a4, a4, a0 diff --git a/llvm/test/CodeGen/RISCV/rv32zbb-zbkb.ll b/llvm/test/CodeGen/RISCV/rv32zbb-zbkb.ll --- a/llvm/test/CodeGen/RISCV/rv32zbb-zbkb.ll +++ b/llvm/test/CodeGen/RISCV/rv32zbb-zbkb.ll @@ -138,25 +138,25 @@ define i64 @rol_i64(i64 %a, i64 %b) nounwind { ; CHECK-LABEL: rol_i64: ; CHECK: # %bb.0: -; CHECK-NEXT: slli a5, a2, 26 -; CHECK-NEXT: srli a5, a5, 31 +; CHECK-NEXT: slli a3, a2, 26 +; CHECK-NEXT: srli a3, a3, 31 ; CHECK-NEXT: mv a4, a1 -; CHECK-NEXT: bnez a5, .LBB7_2 +; CHECK-NEXT: bnez a3, .LBB7_2 ; CHECK-NEXT: # %bb.1: ; CHECK-NEXT: mv a4, a0 ; CHECK-NEXT: .LBB7_2: -; CHECK-NEXT: sll a3, a4, a2 -; CHECK-NEXT: bnez a5, .LBB7_4 +; CHECK-NEXT: sll a5, a4, a2 +; CHECK-NEXT: bnez a3, .LBB7_4 ; CHECK-NEXT: # %bb.3: ; CHECK-NEXT: mv a0, a1 ; CHECK-NEXT: .LBB7_4: ; CHECK-NEXT: srli a1, a0, 1 -; CHECK-NEXT: not a5, a2 -; CHECK-NEXT: srl a1, a1, a5 -; CHECK-NEXT: or a3, a3, a1 +; CHECK-NEXT: not a6, a2 +; CHECK-NEXT: srl a3, a1, a6 +; CHECK-NEXT: or a3, a5, a3 ; CHECK-NEXT: sll a0, a0, a2 ; CHECK-NEXT: srli a4, a4, 1 -; CHECK-NEXT: srl a1, a4, a5 +; CHECK-NEXT: srl a1, a4, a6 ; CHECK-NEXT: or a1, a0, a1 ; CHECK-NEXT: mv a0, a3 ; CHECK-NEXT: ret @@ -191,24 +191,24 @@ define i64 @ror_i64(i64 %a, i64 %b) nounwind { ; CHECK-LABEL: ror_i64: ; CHECK: # %bb.0: -; CHECK-NEXT: andi a5, a2, 32 +; CHECK-NEXT: andi a4, a2, 32 ; CHECK-NEXT: mv a3, a0 -; CHECK-NEXT: beqz a5, .LBB9_2 +; CHECK-NEXT: beqz a4, .LBB9_2 ; CHECK-NEXT: # %bb.1: ; CHECK-NEXT: mv a3, a1 ; CHECK-NEXT: .LBB9_2: -; CHECK-NEXT: srl a4, a3, a2 -; CHECK-NEXT: beqz a5, .LBB9_4 +; CHECK-NEXT: srl a5, a3, a2 +; CHECK-NEXT: beqz a4, .LBB9_4 ; CHECK-NEXT: # %bb.3: ; CHECK-NEXT: mv a1, a0 ; CHECK-NEXT: .LBB9_4: ; CHECK-NEXT: slli a0, a1, 1 -; CHECK-NEXT: not a5, a2 -; CHECK-NEXT: sll a0, a0, a5 -; CHECK-NEXT: or a0, a0, a4 +; CHECK-NEXT: not a4, a2 +; CHECK-NEXT: sll a0, a0, a4 +; CHECK-NEXT: or a0, a0, a5 ; CHECK-NEXT: srl a1, a1, a2 ; CHECK-NEXT: slli a3, a3, 1 -; CHECK-NEXT: sll a2, a3, a5 +; CHECK-NEXT: sll a2, a3, a4 ; CHECK-NEXT: or a1, a2, a1 ; CHECK-NEXT: ret %or = tail call i64 @llvm.fshr.i64(i64 %a, i64 %a, i64 %b) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-masked-gather.ll @@ -4426,22 +4426,22 @@ ; RV64ZVE32F-LABEL: mgather_baseidx_v8i8_v8i64: ; RV64ZVE32F: # %bb.0: ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: vmv.x.s a6, v0 -; RV64ZVE32F-NEXT: andi a3, a6, 1 +; RV64ZVE32F-NEXT: vmv.x.s a5, v0 +; RV64ZVE32F-NEXT: andi a3, a5, 1 ; RV64ZVE32F-NEXT: beqz a3, .LBB48_3 ; RV64ZVE32F-NEXT: # %bb.1: # %cond.load ; RV64ZVE32F-NEXT: vmv.x.s a3, v8 ; RV64ZVE32F-NEXT: slli a3, a3, 3 ; RV64ZVE32F-NEXT: add a3, a1, a3 ; RV64ZVE32F-NEXT: ld a3, 0(a3) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: bnez a4, .LBB48_4 ; RV64ZVE32F-NEXT: .LBB48_2: ; RV64ZVE32F-NEXT: ld a4, 8(a2) ; RV64ZVE32F-NEXT: j .LBB48_5 ; RV64ZVE32F-NEXT: .LBB48_3: ; RV64ZVE32F-NEXT: ld a3, 0(a2) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: beqz a4, .LBB48_2 ; RV64ZVE32F-NEXT: .LBB48_4: # %cond.load1 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma @@ -4452,20 +4452,20 @@ ; RV64ZVE32F-NEXT: ld a4, 0(a4) ; RV64ZVE32F-NEXT: .LBB48_5: # %else2 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: andi a5, a6, 4 +; RV64ZVE32F-NEXT: andi a6, a5, 4 ; RV64ZVE32F-NEXT: vslidedown.vi v9, v8, 2 -; RV64ZVE32F-NEXT: beqz a5, .LBB48_7 +; RV64ZVE32F-NEXT: beqz a6, .LBB48_7 ; RV64ZVE32F-NEXT: # %bb.6: # %cond.load4 -; RV64ZVE32F-NEXT: vmv.x.s a5, v9 -; RV64ZVE32F-NEXT: slli a5, a5, 3 -; RV64ZVE32F-NEXT: add a5, a1, a5 -; RV64ZVE32F-NEXT: ld a5, 0(a5) +; RV64ZVE32F-NEXT: vmv.x.s a6, v9 +; RV64ZVE32F-NEXT: slli a6, a6, 3 +; RV64ZVE32F-NEXT: add a6, a1, a6 +; RV64ZVE32F-NEXT: ld a6, 0(a6) ; RV64ZVE32F-NEXT: j .LBB48_8 ; RV64ZVE32F-NEXT: .LBB48_7: -; RV64ZVE32F-NEXT: ld a5, 16(a2) +; RV64ZVE32F-NEXT: ld a6, 16(a2) ; RV64ZVE32F-NEXT: .LBB48_8: # %else5 ; RV64ZVE32F-NEXT: vsetivli zero, 4, e8, mf2, ta, ma -; RV64ZVE32F-NEXT: andi a7, a6, 8 +; RV64ZVE32F-NEXT: andi a7, a5, 8 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 4 ; RV64ZVE32F-NEXT: beqz a7, .LBB48_12 ; RV64ZVE32F-NEXT: # %bb.9: # %cond.load7 @@ -4475,18 +4475,18 @@ ; RV64ZVE32F-NEXT: slli a7, a7, 3 ; RV64ZVE32F-NEXT: add a7, a1, a7 ; RV64ZVE32F-NEXT: ld a7, 0(a7) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: bnez t0, .LBB48_13 ; RV64ZVE32F-NEXT: .LBB48_10: ; RV64ZVE32F-NEXT: ld t0, 32(a2) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: bnez t1, .LBB48_14 ; RV64ZVE32F-NEXT: .LBB48_11: ; RV64ZVE32F-NEXT: ld t1, 40(a2) ; RV64ZVE32F-NEXT: j .LBB48_15 ; RV64ZVE32F-NEXT: .LBB48_12: ; RV64ZVE32F-NEXT: ld a7, 24(a2) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: beqz t0, .LBB48_10 ; RV64ZVE32F-NEXT: .LBB48_13: # %cond.load10 ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma @@ -4494,7 +4494,7 @@ ; RV64ZVE32F-NEXT: slli t0, t0, 3 ; RV64ZVE32F-NEXT: add t0, a1, t0 ; RV64ZVE32F-NEXT: ld t0, 0(t0) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: beqz t1, .LBB48_11 ; RV64ZVE32F-NEXT: .LBB48_14: # %cond.load13 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma @@ -4505,7 +4505,7 @@ ; RV64ZVE32F-NEXT: ld t1, 0(t1) ; RV64ZVE32F-NEXT: .LBB48_15: # %else14 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: andi t2, a6, 64 +; RV64ZVE32F-NEXT: andi t2, a5, 64 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 2 ; RV64ZVE32F-NEXT: beqz t2, .LBB48_18 ; RV64ZVE32F-NEXT: # %bb.16: # %cond.load16 @@ -4513,15 +4513,15 @@ ; RV64ZVE32F-NEXT: slli t2, t2, 3 ; RV64ZVE32F-NEXT: add t2, a1, t2 ; RV64ZVE32F-NEXT: ld t2, 0(t2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: bnez a6, .LBB48_19 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: bnez a5, .LBB48_19 ; RV64ZVE32F-NEXT: .LBB48_17: ; RV64ZVE32F-NEXT: ld a1, 56(a2) ; RV64ZVE32F-NEXT: j .LBB48_20 ; RV64ZVE32F-NEXT: .LBB48_18: ; RV64ZVE32F-NEXT: ld t2, 48(a2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: beqz a6, .LBB48_17 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: beqz a5, .LBB48_17 ; RV64ZVE32F-NEXT: .LBB48_19: # %cond.load19 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 1 @@ -4532,7 +4532,7 @@ ; RV64ZVE32F-NEXT: .LBB48_20: # %else20 ; RV64ZVE32F-NEXT: sd a3, 0(a0) ; RV64ZVE32F-NEXT: sd a4, 8(a0) -; RV64ZVE32F-NEXT: sd a5, 16(a0) +; RV64ZVE32F-NEXT: sd a6, 16(a0) ; RV64ZVE32F-NEXT: sd a7, 24(a0) ; RV64ZVE32F-NEXT: sd t0, 32(a0) ; RV64ZVE32F-NEXT: sd t1, 40(a0) @@ -4705,22 +4705,22 @@ ; RV64ZVE32F-LABEL: mgather_baseidx_sext_v8i8_v8i64: ; RV64ZVE32F: # %bb.0: ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: vmv.x.s a6, v0 -; RV64ZVE32F-NEXT: andi a3, a6, 1 +; RV64ZVE32F-NEXT: vmv.x.s a5, v0 +; RV64ZVE32F-NEXT: andi a3, a5, 1 ; RV64ZVE32F-NEXT: beqz a3, .LBB49_3 ; RV64ZVE32F-NEXT: # %bb.1: # %cond.load ; RV64ZVE32F-NEXT: vmv.x.s a3, v8 ; RV64ZVE32F-NEXT: slli a3, a3, 3 ; RV64ZVE32F-NEXT: add a3, a1, a3 ; RV64ZVE32F-NEXT: ld a3, 0(a3) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: bnez a4, .LBB49_4 ; RV64ZVE32F-NEXT: .LBB49_2: ; RV64ZVE32F-NEXT: ld a4, 8(a2) ; RV64ZVE32F-NEXT: j .LBB49_5 ; RV64ZVE32F-NEXT: .LBB49_3: ; RV64ZVE32F-NEXT: ld a3, 0(a2) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: beqz a4, .LBB49_2 ; RV64ZVE32F-NEXT: .LBB49_4: # %cond.load1 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma @@ -4731,20 +4731,20 @@ ; RV64ZVE32F-NEXT: ld a4, 0(a4) ; RV64ZVE32F-NEXT: .LBB49_5: # %else2 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: andi a5, a6, 4 +; RV64ZVE32F-NEXT: andi a6, a5, 4 ; RV64ZVE32F-NEXT: vslidedown.vi v9, v8, 2 -; RV64ZVE32F-NEXT: beqz a5, .LBB49_7 +; RV64ZVE32F-NEXT: beqz a6, .LBB49_7 ; RV64ZVE32F-NEXT: # %bb.6: # %cond.load4 -; RV64ZVE32F-NEXT: vmv.x.s a5, v9 -; RV64ZVE32F-NEXT: slli a5, a5, 3 -; RV64ZVE32F-NEXT: add a5, a1, a5 -; RV64ZVE32F-NEXT: ld a5, 0(a5) +; RV64ZVE32F-NEXT: vmv.x.s a6, v9 +; RV64ZVE32F-NEXT: slli a6, a6, 3 +; RV64ZVE32F-NEXT: add a6, a1, a6 +; RV64ZVE32F-NEXT: ld a6, 0(a6) ; RV64ZVE32F-NEXT: j .LBB49_8 ; RV64ZVE32F-NEXT: .LBB49_7: -; RV64ZVE32F-NEXT: ld a5, 16(a2) +; RV64ZVE32F-NEXT: ld a6, 16(a2) ; RV64ZVE32F-NEXT: .LBB49_8: # %else5 ; RV64ZVE32F-NEXT: vsetivli zero, 4, e8, mf2, ta, ma -; RV64ZVE32F-NEXT: andi a7, a6, 8 +; RV64ZVE32F-NEXT: andi a7, a5, 8 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 4 ; RV64ZVE32F-NEXT: beqz a7, .LBB49_12 ; RV64ZVE32F-NEXT: # %bb.9: # %cond.load7 @@ -4754,18 +4754,18 @@ ; RV64ZVE32F-NEXT: slli a7, a7, 3 ; RV64ZVE32F-NEXT: add a7, a1, a7 ; RV64ZVE32F-NEXT: ld a7, 0(a7) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: bnez t0, .LBB49_13 ; RV64ZVE32F-NEXT: .LBB49_10: ; RV64ZVE32F-NEXT: ld t0, 32(a2) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: bnez t1, .LBB49_14 ; RV64ZVE32F-NEXT: .LBB49_11: ; RV64ZVE32F-NEXT: ld t1, 40(a2) ; RV64ZVE32F-NEXT: j .LBB49_15 ; RV64ZVE32F-NEXT: .LBB49_12: ; RV64ZVE32F-NEXT: ld a7, 24(a2) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: beqz t0, .LBB49_10 ; RV64ZVE32F-NEXT: .LBB49_13: # %cond.load10 ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma @@ -4773,7 +4773,7 @@ ; RV64ZVE32F-NEXT: slli t0, t0, 3 ; RV64ZVE32F-NEXT: add t0, a1, t0 ; RV64ZVE32F-NEXT: ld t0, 0(t0) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: beqz t1, .LBB49_11 ; RV64ZVE32F-NEXT: .LBB49_14: # %cond.load13 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma @@ -4784,7 +4784,7 @@ ; RV64ZVE32F-NEXT: ld t1, 0(t1) ; RV64ZVE32F-NEXT: .LBB49_15: # %else14 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: andi t2, a6, 64 +; RV64ZVE32F-NEXT: andi t2, a5, 64 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 2 ; RV64ZVE32F-NEXT: beqz t2, .LBB49_18 ; RV64ZVE32F-NEXT: # %bb.16: # %cond.load16 @@ -4792,15 +4792,15 @@ ; RV64ZVE32F-NEXT: slli t2, t2, 3 ; RV64ZVE32F-NEXT: add t2, a1, t2 ; RV64ZVE32F-NEXT: ld t2, 0(t2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: bnez a6, .LBB49_19 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: bnez a5, .LBB49_19 ; RV64ZVE32F-NEXT: .LBB49_17: ; RV64ZVE32F-NEXT: ld a1, 56(a2) ; RV64ZVE32F-NEXT: j .LBB49_20 ; RV64ZVE32F-NEXT: .LBB49_18: ; RV64ZVE32F-NEXT: ld t2, 48(a2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: beqz a6, .LBB49_17 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: beqz a5, .LBB49_17 ; RV64ZVE32F-NEXT: .LBB49_19: # %cond.load19 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e8, mf4, ta, ma ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 1 @@ -4811,7 +4811,7 @@ ; RV64ZVE32F-NEXT: .LBB49_20: # %else20 ; RV64ZVE32F-NEXT: sd a3, 0(a0) ; RV64ZVE32F-NEXT: sd a4, 8(a0) -; RV64ZVE32F-NEXT: sd a5, 16(a0) +; RV64ZVE32F-NEXT: sd a6, 16(a0) ; RV64ZVE32F-NEXT: sd a7, 24(a0) ; RV64ZVE32F-NEXT: sd t0, 32(a0) ; RV64ZVE32F-NEXT: sd t1, 40(a0) @@ -5273,8 +5273,8 @@ ; RV64ZVE32F-LABEL: mgather_baseidx_v8i16_v8i64: ; RV64ZVE32F: # %bb.0: ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: vmv.x.s a6, v0 -; RV64ZVE32F-NEXT: andi a3, a6, 1 +; RV64ZVE32F-NEXT: vmv.x.s a5, v0 +; RV64ZVE32F-NEXT: andi a3, a5, 1 ; RV64ZVE32F-NEXT: beqz a3, .LBB51_3 ; RV64ZVE32F-NEXT: # %bb.1: # %cond.load ; RV64ZVE32F-NEXT: vsetvli zero, zero, e16, mf2, ta, ma @@ -5282,14 +5282,14 @@ ; RV64ZVE32F-NEXT: slli a3, a3, 3 ; RV64ZVE32F-NEXT: add a3, a1, a3 ; RV64ZVE32F-NEXT: ld a3, 0(a3) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: bnez a4, .LBB51_4 ; RV64ZVE32F-NEXT: .LBB51_2: ; RV64ZVE32F-NEXT: ld a4, 8(a2) ; RV64ZVE32F-NEXT: j .LBB51_5 ; RV64ZVE32F-NEXT: .LBB51_3: ; RV64ZVE32F-NEXT: ld a3, 0(a2) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: beqz a4, .LBB51_2 ; RV64ZVE32F-NEXT: .LBB51_4: # %cond.load1 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma @@ -5300,20 +5300,20 @@ ; RV64ZVE32F-NEXT: ld a4, 0(a4) ; RV64ZVE32F-NEXT: .LBB51_5: # %else2 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, mf2, ta, ma -; RV64ZVE32F-NEXT: andi a5, a6, 4 +; RV64ZVE32F-NEXT: andi a6, a5, 4 ; RV64ZVE32F-NEXT: vslidedown.vi v9, v8, 2 -; RV64ZVE32F-NEXT: beqz a5, .LBB51_7 +; RV64ZVE32F-NEXT: beqz a6, .LBB51_7 ; RV64ZVE32F-NEXT: # %bb.6: # %cond.load4 -; RV64ZVE32F-NEXT: vmv.x.s a5, v9 -; RV64ZVE32F-NEXT: slli a5, a5, 3 -; RV64ZVE32F-NEXT: add a5, a1, a5 -; RV64ZVE32F-NEXT: ld a5, 0(a5) +; RV64ZVE32F-NEXT: vmv.x.s a6, v9 +; RV64ZVE32F-NEXT: slli a6, a6, 3 +; RV64ZVE32F-NEXT: add a6, a1, a6 +; RV64ZVE32F-NEXT: ld a6, 0(a6) ; RV64ZVE32F-NEXT: j .LBB51_8 ; RV64ZVE32F-NEXT: .LBB51_7: -; RV64ZVE32F-NEXT: ld a5, 16(a2) +; RV64ZVE32F-NEXT: ld a6, 16(a2) ; RV64ZVE32F-NEXT: .LBB51_8: # %else5 ; RV64ZVE32F-NEXT: vsetivli zero, 4, e16, m1, ta, ma -; RV64ZVE32F-NEXT: andi a7, a6, 8 +; RV64ZVE32F-NEXT: andi a7, a5, 8 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 4 ; RV64ZVE32F-NEXT: beqz a7, .LBB51_12 ; RV64ZVE32F-NEXT: # %bb.9: # %cond.load7 @@ -5323,18 +5323,18 @@ ; RV64ZVE32F-NEXT: slli a7, a7, 3 ; RV64ZVE32F-NEXT: add a7, a1, a7 ; RV64ZVE32F-NEXT: ld a7, 0(a7) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: bnez t0, .LBB51_13 ; RV64ZVE32F-NEXT: .LBB51_10: ; RV64ZVE32F-NEXT: ld t0, 32(a2) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: bnez t1, .LBB51_14 ; RV64ZVE32F-NEXT: .LBB51_11: ; RV64ZVE32F-NEXT: ld t1, 40(a2) ; RV64ZVE32F-NEXT: j .LBB51_15 ; RV64ZVE32F-NEXT: .LBB51_12: ; RV64ZVE32F-NEXT: ld a7, 24(a2) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: beqz t0, .LBB51_10 ; RV64ZVE32F-NEXT: .LBB51_13: # %cond.load10 ; RV64ZVE32F-NEXT: vsetivli zero, 0, e16, mf2, ta, ma @@ -5342,7 +5342,7 @@ ; RV64ZVE32F-NEXT: slli t0, t0, 3 ; RV64ZVE32F-NEXT: add t0, a1, t0 ; RV64ZVE32F-NEXT: ld t0, 0(t0) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: beqz t1, .LBB51_11 ; RV64ZVE32F-NEXT: .LBB51_14: # %cond.load13 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma @@ -5353,7 +5353,7 @@ ; RV64ZVE32F-NEXT: ld t1, 0(t1) ; RV64ZVE32F-NEXT: .LBB51_15: # %else14 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, mf2, ta, ma -; RV64ZVE32F-NEXT: andi t2, a6, 64 +; RV64ZVE32F-NEXT: andi t2, a5, 64 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 2 ; RV64ZVE32F-NEXT: beqz t2, .LBB51_18 ; RV64ZVE32F-NEXT: # %bb.16: # %cond.load16 @@ -5361,15 +5361,15 @@ ; RV64ZVE32F-NEXT: slli t2, t2, 3 ; RV64ZVE32F-NEXT: add t2, a1, t2 ; RV64ZVE32F-NEXT: ld t2, 0(t2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: bnez a6, .LBB51_19 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: bnez a5, .LBB51_19 ; RV64ZVE32F-NEXT: .LBB51_17: ; RV64ZVE32F-NEXT: ld a1, 56(a2) ; RV64ZVE32F-NEXT: j .LBB51_20 ; RV64ZVE32F-NEXT: .LBB51_18: ; RV64ZVE32F-NEXT: ld t2, 48(a2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: beqz a6, .LBB51_17 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: beqz a5, .LBB51_17 ; RV64ZVE32F-NEXT: .LBB51_19: # %cond.load19 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 1 @@ -5380,7 +5380,7 @@ ; RV64ZVE32F-NEXT: .LBB51_20: # %else20 ; RV64ZVE32F-NEXT: sd a3, 0(a0) ; RV64ZVE32F-NEXT: sd a4, 8(a0) -; RV64ZVE32F-NEXT: sd a5, 16(a0) +; RV64ZVE32F-NEXT: sd a6, 16(a0) ; RV64ZVE32F-NEXT: sd a7, 24(a0) ; RV64ZVE32F-NEXT: sd t0, 32(a0) ; RV64ZVE32F-NEXT: sd t1, 40(a0) @@ -5553,8 +5553,8 @@ ; RV64ZVE32F-LABEL: mgather_baseidx_sext_v8i16_v8i64: ; RV64ZVE32F: # %bb.0: ; RV64ZVE32F-NEXT: vsetivli zero, 0, e8, mf4, ta, ma -; RV64ZVE32F-NEXT: vmv.x.s a6, v0 -; RV64ZVE32F-NEXT: andi a3, a6, 1 +; RV64ZVE32F-NEXT: vmv.x.s a5, v0 +; RV64ZVE32F-NEXT: andi a3, a5, 1 ; RV64ZVE32F-NEXT: beqz a3, .LBB52_3 ; RV64ZVE32F-NEXT: # %bb.1: # %cond.load ; RV64ZVE32F-NEXT: vsetvli zero, zero, e16, mf2, ta, ma @@ -5562,14 +5562,14 @@ ; RV64ZVE32F-NEXT: slli a3, a3, 3 ; RV64ZVE32F-NEXT: add a3, a1, a3 ; RV64ZVE32F-NEXT: ld a3, 0(a3) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: bnez a4, .LBB52_4 ; RV64ZVE32F-NEXT: .LBB52_2: ; RV64ZVE32F-NEXT: ld a4, 8(a2) ; RV64ZVE32F-NEXT: j .LBB52_5 ; RV64ZVE32F-NEXT: .LBB52_3: ; RV64ZVE32F-NEXT: ld a3, 0(a2) -; RV64ZVE32F-NEXT: andi a4, a6, 2 +; RV64ZVE32F-NEXT: andi a4, a5, 2 ; RV64ZVE32F-NEXT: beqz a4, .LBB52_2 ; RV64ZVE32F-NEXT: .LBB52_4: # %cond.load1 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma @@ -5580,20 +5580,20 @@ ; RV64ZVE32F-NEXT: ld a4, 0(a4) ; RV64ZVE32F-NEXT: .LBB52_5: # %else2 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, mf2, ta, ma -; RV64ZVE32F-NEXT: andi a5, a6, 4 +; RV64ZVE32F-NEXT: andi a6, a5, 4 ; RV64ZVE32F-NEXT: vslidedown.vi v9, v8, 2 -; RV64ZVE32F-NEXT: beqz a5, .LBB52_7 +; RV64ZVE32F-NEXT: beqz a6, .LBB52_7 ; RV64ZVE32F-NEXT: # %bb.6: # %cond.load4 -; RV64ZVE32F-NEXT: vmv.x.s a5, v9 -; RV64ZVE32F-NEXT: slli a5, a5, 3 -; RV64ZVE32F-NEXT: add a5, a1, a5 -; RV64ZVE32F-NEXT: ld a5, 0(a5) +; RV64ZVE32F-NEXT: vmv.x.s a6, v9 +; RV64ZVE32F-NEXT: slli a6, a6, 3 +; RV64ZVE32F-NEXT: add a6, a1, a6 +; RV64ZVE32F-NEXT: ld a6, 0(a6) ; RV64ZVE32F-NEXT: j .LBB52_8 ; RV64ZVE32F-NEXT: .LBB52_7: -; RV64ZVE32F-NEXT: ld a5, 16(a2) +; RV64ZVE32F-NEXT: ld a6, 16(a2) ; RV64ZVE32F-NEXT: .LBB52_8: # %else5 ; RV64ZVE32F-NEXT: vsetivli zero, 4, e16, m1, ta, ma -; RV64ZVE32F-NEXT: andi a7, a6, 8 +; RV64ZVE32F-NEXT: andi a7, a5, 8 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 4 ; RV64ZVE32F-NEXT: beqz a7, .LBB52_12 ; RV64ZVE32F-NEXT: # %bb.9: # %cond.load7 @@ -5603,18 +5603,18 @@ ; RV64ZVE32F-NEXT: slli a7, a7, 3 ; RV64ZVE32F-NEXT: add a7, a1, a7 ; RV64ZVE32F-NEXT: ld a7, 0(a7) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: bnez t0, .LBB52_13 ; RV64ZVE32F-NEXT: .LBB52_10: ; RV64ZVE32F-NEXT: ld t0, 32(a2) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: bnez t1, .LBB52_14 ; RV64ZVE32F-NEXT: .LBB52_11: ; RV64ZVE32F-NEXT: ld t1, 40(a2) ; RV64ZVE32F-NEXT: j .LBB52_15 ; RV64ZVE32F-NEXT: .LBB52_12: ; RV64ZVE32F-NEXT: ld a7, 24(a2) -; RV64ZVE32F-NEXT: andi t0, a6, 16 +; RV64ZVE32F-NEXT: andi t0, a5, 16 ; RV64ZVE32F-NEXT: beqz t0, .LBB52_10 ; RV64ZVE32F-NEXT: .LBB52_13: # %cond.load10 ; RV64ZVE32F-NEXT: vsetivli zero, 0, e16, mf2, ta, ma @@ -5622,7 +5622,7 @@ ; RV64ZVE32F-NEXT: slli t0, t0, 3 ; RV64ZVE32F-NEXT: add t0, a1, t0 ; RV64ZVE32F-NEXT: ld t0, 0(t0) -; RV64ZVE32F-NEXT: andi t1, a6, 32 +; RV64ZVE32F-NEXT: andi t1, a5, 32 ; RV64ZVE32F-NEXT: beqz t1, .LBB52_11 ; RV64ZVE32F-NEXT: .LBB52_14: # %cond.load13 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma @@ -5633,7 +5633,7 @@ ; RV64ZVE32F-NEXT: ld t1, 0(t1) ; RV64ZVE32F-NEXT: .LBB52_15: # %else14 ; RV64ZVE32F-NEXT: vsetivli zero, 2, e16, mf2, ta, ma -; RV64ZVE32F-NEXT: andi t2, a6, 64 +; RV64ZVE32F-NEXT: andi t2, a5, 64 ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 2 ; RV64ZVE32F-NEXT: beqz t2, .LBB52_18 ; RV64ZVE32F-NEXT: # %bb.16: # %cond.load16 @@ -5641,15 +5641,15 @@ ; RV64ZVE32F-NEXT: slli t2, t2, 3 ; RV64ZVE32F-NEXT: add t2, a1, t2 ; RV64ZVE32F-NEXT: ld t2, 0(t2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: bnez a6, .LBB52_19 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: bnez a5, .LBB52_19 ; RV64ZVE32F-NEXT: .LBB52_17: ; RV64ZVE32F-NEXT: ld a1, 56(a2) ; RV64ZVE32F-NEXT: j .LBB52_20 ; RV64ZVE32F-NEXT: .LBB52_18: ; RV64ZVE32F-NEXT: ld t2, 48(a2) -; RV64ZVE32F-NEXT: andi a6, a6, -128 -; RV64ZVE32F-NEXT: beqz a6, .LBB52_17 +; RV64ZVE32F-NEXT: andi a5, a5, -128 +; RV64ZVE32F-NEXT: beqz a5, .LBB52_17 ; RV64ZVE32F-NEXT: .LBB52_19: # %cond.load19 ; RV64ZVE32F-NEXT: vsetivli zero, 1, e16, mf2, ta, ma ; RV64ZVE32F-NEXT: vslidedown.vi v8, v8, 1 @@ -5660,7 +5660,7 @@ ; RV64ZVE32F-NEXT: .LBB52_20: # %else20 ; RV64ZVE32F-NEXT: sd a3, 0(a0) ; RV64ZVE32F-NEXT: sd a4, 8(a0) -; RV64ZVE32F-NEXT: sd a5, 16(a0) +; RV64ZVE32F-NEXT: sd a6, 16(a0) ; RV64ZVE32F-NEXT: sd a7, 24(a0) ; RV64ZVE32F-NEXT: sd t0, 32(a0) ; RV64ZVE32F-NEXT: sd t1, 40(a0) diff --git a/llvm/test/CodeGen/RISCV/shifts.ll b/llvm/test/CodeGen/RISCV/shifts.ll --- a/llvm/test/CodeGen/RISCV/shifts.ll +++ b/llvm/test/CodeGen/RISCV/shifts.ll @@ -585,24 +585,24 @@ define i64 @fshr64_minsize(i64 %a, i64 %b) minsize nounwind { ; RV32I-LABEL: fshr64_minsize: ; RV32I: # %bb.0: -; RV32I-NEXT: andi a5, a2, 32 +; RV32I-NEXT: andi a4, a2, 32 ; RV32I-NEXT: mv a3, a0 -; RV32I-NEXT: beqz a5, .LBB9_2 +; RV32I-NEXT: beqz a4, .LBB9_2 ; RV32I-NEXT: # %bb.1: ; RV32I-NEXT: mv a3, a1 ; RV32I-NEXT: .LBB9_2: -; RV32I-NEXT: srl a4, a3, a2 -; RV32I-NEXT: beqz a5, .LBB9_4 +; RV32I-NEXT: srl a5, a3, a2 +; RV32I-NEXT: beqz a4, .LBB9_4 ; RV32I-NEXT: # %bb.3: ; RV32I-NEXT: mv a1, a0 ; RV32I-NEXT: .LBB9_4: ; RV32I-NEXT: slli a0, a1, 1 -; RV32I-NEXT: not a5, a2 -; RV32I-NEXT: sll a0, a0, a5 -; RV32I-NEXT: or a0, a0, a4 +; RV32I-NEXT: not a4, a2 +; RV32I-NEXT: sll a0, a0, a4 +; RV32I-NEXT: or a0, a0, a5 ; RV32I-NEXT: srl a1, a1, a2 ; RV32I-NEXT: slli a3, a3, 1 -; RV32I-NEXT: sll a2, a3, a5 +; RV32I-NEXT: sll a2, a3, a4 ; RV32I-NEXT: or a1, a2, a1 ; RV32I-NEXT: ret ; @@ -621,56 +621,56 @@ ; RV32I-LABEL: fshr128_minsize: ; RV32I: # %bb.0: ; RV32I-NEXT: lw a3, 8(a1) -; RV32I-NEXT: lw t1, 0(a1) +; RV32I-NEXT: lw t2, 0(a1) ; RV32I-NEXT: lw a2, 0(a2) -; RV32I-NEXT: lw t0, 4(a1) +; RV32I-NEXT: lw a7, 4(a1) ; RV32I-NEXT: lw a1, 12(a1) -; RV32I-NEXT: andi t2, a2, 64 -; RV32I-NEXT: mv a7, t0 -; RV32I-NEXT: mv a4, t1 -; RV32I-NEXT: beqz t2, .LBB10_2 +; RV32I-NEXT: andi t1, a2, 64 +; RV32I-NEXT: mv t0, a7 +; RV32I-NEXT: mv a4, t2 +; RV32I-NEXT: beqz t1, .LBB10_2 ; RV32I-NEXT: # %bb.1: -; RV32I-NEXT: mv a7, a1 +; RV32I-NEXT: mv t0, a1 ; RV32I-NEXT: mv a4, a3 ; RV32I-NEXT: .LBB10_2: ; RV32I-NEXT: andi a6, a2, 32 ; RV32I-NEXT: mv a5, a4 ; RV32I-NEXT: bnez a6, .LBB10_13 ; RV32I-NEXT: # %bb.3: -; RV32I-NEXT: bnez t2, .LBB10_14 +; RV32I-NEXT: bnez t1, .LBB10_14 ; RV32I-NEXT: .LBB10_4: ; RV32I-NEXT: beqz a6, .LBB10_6 ; RV32I-NEXT: .LBB10_5: -; RV32I-NEXT: mv a7, a3 +; RV32I-NEXT: mv t0, a3 ; RV32I-NEXT: .LBB10_6: -; RV32I-NEXT: slli t3, a7, 1 -; RV32I-NEXT: not t1, a2 -; RV32I-NEXT: beqz t2, .LBB10_8 +; RV32I-NEXT: slli t3, t0, 1 +; RV32I-NEXT: not t2, a2 +; RV32I-NEXT: beqz t1, .LBB10_8 ; RV32I-NEXT: # %bb.7: -; RV32I-NEXT: mv a1, t0 +; RV32I-NEXT: mv a1, a7 ; RV32I-NEXT: .LBB10_8: -; RV32I-NEXT: srl t2, a5, a2 -; RV32I-NEXT: sll t3, t3, t1 -; RV32I-NEXT: srl t0, a7, a2 +; RV32I-NEXT: srl a7, a5, a2 +; RV32I-NEXT: sll t1, t3, t2 +; RV32I-NEXT: srl t0, t0, a2 ; RV32I-NEXT: beqz a6, .LBB10_10 ; RV32I-NEXT: # %bb.9: ; RV32I-NEXT: mv a3, a1 ; RV32I-NEXT: .LBB10_10: -; RV32I-NEXT: or a7, t3, t2 -; RV32I-NEXT: slli t2, a3, 1 -; RV32I-NEXT: sll t2, t2, t1 -; RV32I-NEXT: or t0, t2, t0 +; RV32I-NEXT: or a7, t1, a7 +; RV32I-NEXT: slli t1, a3, 1 +; RV32I-NEXT: sll t1, t1, t2 +; RV32I-NEXT: or t0, t1, t0 ; RV32I-NEXT: srl a3, a3, a2 ; RV32I-NEXT: beqz a6, .LBB10_12 ; RV32I-NEXT: # %bb.11: ; RV32I-NEXT: mv a1, a4 ; RV32I-NEXT: .LBB10_12: ; RV32I-NEXT: slli a4, a1, 1 -; RV32I-NEXT: sll a4, a4, t1 +; RV32I-NEXT: sll a4, a4, t2 ; RV32I-NEXT: or a3, a4, a3 ; RV32I-NEXT: srl a1, a1, a2 ; RV32I-NEXT: slli a5, a5, 1 -; RV32I-NEXT: sll a2, a5, t1 +; RV32I-NEXT: sll a2, a5, t2 ; RV32I-NEXT: or a1, a2, a1 ; RV32I-NEXT: sw a1, 12(a0) ; RV32I-NEXT: sw a3, 8(a0) @@ -678,33 +678,33 @@ ; RV32I-NEXT: sw a7, 0(a0) ; RV32I-NEXT: ret ; RV32I-NEXT: .LBB10_13: -; RV32I-NEXT: mv a5, a7 -; RV32I-NEXT: beqz t2, .LBB10_4 +; RV32I-NEXT: mv a5, t0 +; RV32I-NEXT: beqz t1, .LBB10_4 ; RV32I-NEXT: .LBB10_14: -; RV32I-NEXT: mv a3, t1 +; RV32I-NEXT: mv a3, t2 ; RV32I-NEXT: bnez a6, .LBB10_5 ; RV32I-NEXT: j .LBB10_6 ; ; RV64I-LABEL: fshr128_minsize: ; RV64I: # %bb.0: -; RV64I-NEXT: andi a5, a2, 64 +; RV64I-NEXT: andi a4, a2, 64 ; RV64I-NEXT: mv a3, a0 -; RV64I-NEXT: beqz a5, .LBB10_2 +; RV64I-NEXT: beqz a4, .LBB10_2 ; RV64I-NEXT: # %bb.1: ; RV64I-NEXT: mv a3, a1 ; RV64I-NEXT: .LBB10_2: -; RV64I-NEXT: srl a4, a3, a2 -; RV64I-NEXT: beqz a5, .LBB10_4 +; RV64I-NEXT: srl a5, a3, a2 +; RV64I-NEXT: beqz a4, .LBB10_4 ; RV64I-NEXT: # %bb.3: ; RV64I-NEXT: mv a1, a0 ; RV64I-NEXT: .LBB10_4: ; RV64I-NEXT: slli a0, a1, 1 -; RV64I-NEXT: not a5, a2 -; RV64I-NEXT: sll a0, a0, a5 -; RV64I-NEXT: or a0, a0, a4 +; RV64I-NEXT: not a4, a2 +; RV64I-NEXT: sll a0, a0, a4 +; RV64I-NEXT: or a0, a0, a5 ; RV64I-NEXT: srl a1, a1, a2 ; RV64I-NEXT: slli a3, a3, 1 -; RV64I-NEXT: sll a2, a3, a5 +; RV64I-NEXT: sll a2, a3, a4 ; RV64I-NEXT: or a1, a2, a1 ; RV64I-NEXT: ret %res = tail call i128 @llvm.fshr.i128(i128 %a, i128 %a, i128 %b)