diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfo.td b/llvm/lib/Target/RISCV/RISCVInstrInfo.td index 1c127742638527..641ff455e266f8 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td @@ -1262,11 +1262,11 @@ def : Pat<(sext_inreg (sub GPR:$rs1, GPR:$rs2), i32), (SUBW GPR:$rs1, GPR:$rs2)>; def : Pat<(sext_inreg (shl GPR:$rs1, uimm5:$shamt), i32), (SLLIW GPR:$rs1, uimm5:$shamt)>; -def : Pat<(i64 (srl (and GPR:$rs1, 0xffffffff), uimm5:$shamt)), +def : Pat<(i64 (srl (zexti32 (i64 GPR:$rs1)), uimm5:$shamt)), (SRLIW GPR:$rs1, uimm5:$shamt)>; def : Pat<(i64 (srl (shl GPR:$rs1, (i64 32)), uimm6gt32:$shamt)), (SRLIW GPR:$rs1, (ImmSub32 uimm6gt32:$shamt))>; -def : Pat<(sra (sext_inreg GPR:$rs1, i32), uimm5:$shamt), +def : Pat<(i64 (sra (sexti32 (i64 GPR:$rs1)), uimm5:$shamt)), (SRAIW GPR:$rs1, uimm5:$shamt)>; def : Pat<(i64 (sra (shl GPR:$rs1, (i64 32)), uimm6gt32:$shamt)), (SRAIW GPR:$rs1, (ImmSub32 uimm6gt32:$shamt))>; diff --git a/llvm/test/CodeGen/RISCV/alu8.ll b/llvm/test/CodeGen/RISCV/alu8.ll index ed09174745b883..a3d9d2673db3f8 100644 --- a/llvm/test/CodeGen/RISCV/alu8.ll +++ b/llvm/test/CodeGen/RISCV/alu8.ll @@ -124,7 +124,7 @@ define i8 @srli(i8 %a) nounwind { ; RV64I-LABEL: srli: ; RV64I: # %bb.0: ; RV64I-NEXT: andi a0, a0, 192 -; RV64I-NEXT: srli a0, a0, 6 +; RV64I-NEXT: srliw a0, a0, 6 ; RV64I-NEXT: ret %1 = lshr i8 %a, 6 ret i8 %1 diff --git a/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll b/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll index 9896ca1d1020d0..ef69945e34746e 100644 --- a/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll +++ b/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll @@ -499,9 +499,9 @@ define i32 @test_ctlz_i32(i32 %a) nounwind { ; RV64I-NEXT: slli a0, a0, 32 ; RV64I-NEXT: srli a0, a0, 32 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 diff --git a/llvm/test/CodeGen/RISCV/copysign-casts.ll b/llvm/test/CodeGen/RISCV/copysign-casts.ll index ab4580da255125..59f9507f86c2e3 100644 --- a/llvm/test/CodeGen/RISCV/copysign-casts.ll +++ b/llvm/test/CodeGen/RISCV/copysign-casts.ll @@ -357,7 +357,7 @@ define half @fold_demote_h_s(half %a, float %b) nounwind { ; RV64I-NEXT: addi a2, zero, 1 ; RV64I-NEXT: slli a2, a2, 31 ; RV64I-NEXT: and a1, a1, a2 -; RV64I-NEXT: srli a1, a1, 16 +; RV64I-NEXT: srliw a1, a1, 16 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/div.ll b/llvm/test/CodeGen/RISCV/div.ll index a7db30213cc30e..33cfa365c24b77 100644 --- a/llvm/test/CodeGen/RISCV/div.ll +++ b/llvm/test/CodeGen/RISCV/div.ll @@ -276,7 +276,7 @@ define i8 @udiv8_constant(i8 %a) nounwind { ; RV64IM-NEXT: andi a0, a0, 255 ; RV64IM-NEXT: addi a1, zero, 205 ; RV64IM-NEXT: mul a0, a0, a1 -; RV64IM-NEXT: srli a0, a0, 10 +; RV64IM-NEXT: srliw a0, a0, 10 ; RV64IM-NEXT: ret %1 = udiv i8 %a, 5 ret i8 %1 @@ -298,13 +298,13 @@ define i8 @udiv8_pow2(i8 %a) nounwind { ; RV64I-LABEL: udiv8_pow2: ; RV64I: # %bb.0: ; RV64I-NEXT: andi a0, a0, 248 -; RV64I-NEXT: srli a0, a0, 3 +; RV64I-NEXT: srliw a0, a0, 3 ; RV64I-NEXT: ret ; ; RV64IM-LABEL: udiv8_pow2: ; RV64IM: # %bb.0: ; RV64IM-NEXT: andi a0, a0, 248 -; RV64IM-NEXT: srli a0, a0, 3 +; RV64IM-NEXT: srliw a0, a0, 3 ; RV64IM-NEXT: ret %1 = udiv i8 %a, 8 ret i8 %1 @@ -404,7 +404,7 @@ define i16 @udiv16_constant(i16 %a) nounwind { ; RV64IM-NEXT: lui a1, 13 ; RV64IM-NEXT: addiw a1, a1, -819 ; RV64IM-NEXT: mul a0, a0, a1 -; RV64IM-NEXT: srli a0, a0, 18 +; RV64IM-NEXT: srliw a0, a0, 18 ; RV64IM-NEXT: ret %1 = udiv i16 %a, 5 ret i16 %1 @@ -786,7 +786,7 @@ define i8 @sdiv8_constant(i8 %a) nounwind { ; RV64IM-NEXT: srai a0, a0, 56 ; RV64IM-NEXT: addi a1, zero, 103 ; RV64IM-NEXT: mul a0, a0, a1 -; RV64IM-NEXT: srai a1, a0, 9 +; RV64IM-NEXT: sraiw a1, a0, 9 ; RV64IM-NEXT: srli a0, a0, 15 ; RV64IM-NEXT: andi a0, a0, 1 ; RV64IM-NEXT: add a0, a1, a0 @@ -935,7 +935,7 @@ define i16 @sdiv16_constant(i16 %a) nounwind { ; RV64IM-NEXT: lui a1, 6 ; RV64IM-NEXT: addiw a1, a1, 1639 ; RV64IM-NEXT: mul a0, a0, a1 -; RV64IM-NEXT: srai a1, a0, 17 +; RV64IM-NEXT: sraiw a1, a0, 17 ; RV64IM-NEXT: srli a0, a0, 31 ; RV64IM-NEXT: andi a0, a0, 1 ; RV64IM-NEXT: add a0, a1, a0 diff --git a/llvm/test/CodeGen/RISCV/rv64i-exhaustive-w-insts.ll b/llvm/test/CodeGen/RISCV/rv64i-exhaustive-w-insts.ll index 8c6c5d79de81ce..ecbe2fd1ce31d4 100644 --- a/llvm/test/CodeGen/RISCV/rv64i-exhaustive-w-insts.ll +++ b/llvm/test/CodeGen/RISCV/rv64i-exhaustive-w-insts.ll @@ -1529,7 +1529,7 @@ define i32 @aext_srliw_sext(i32 signext %a) nounwind { define i32 @aext_srliw_zext(i32 zeroext %a) nounwind { ; RV64I-LABEL: aext_srliw_zext: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a0, a0, 3 +; RV64I-NEXT: srliw a0, a0, 3 ; RV64I-NEXT: ret %1 = lshr i32 %a, 3 ret i32 %1 @@ -1556,7 +1556,7 @@ define signext i32 @sext_srliw_sext(i32 signext %a) nounwind { define signext i32 @sext_srliw_zext(i32 zeroext %a) nounwind { ; RV64I-LABEL: sext_srliw_zext: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a0, a0, 6 +; RV64I-NEXT: srliw a0, a0, 6 ; RV64I-NEXT: ret %1 = lshr i32 %a, 6 ret i32 %1 @@ -1583,7 +1583,7 @@ define zeroext i32 @zext_srliw_sext(i32 signext %a) nounwind { define zeroext i32 @zext_srliw_zext(i32 zeroext %a) nounwind { ; RV64I-LABEL: zext_srliw_zext: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a0, a0, 9 +; RV64I-NEXT: srliw a0, a0, 9 ; RV64I-NEXT: ret %1 = lshr i32 %a, 9 ret i32 %1 @@ -1603,7 +1603,7 @@ define i32 @aext_sraiw_aext(i32 %a) nounwind { define i32 @aext_sraiw_sext(i32 signext %a) nounwind { ; RV64I-LABEL: aext_sraiw_sext: ; RV64I: # %bb.0: -; RV64I-NEXT: srai a0, a0, 2 +; RV64I-NEXT: sraiw a0, a0, 2 ; RV64I-NEXT: ret %1 = ashr i32 %a, 2 ret i32 %1 @@ -1630,7 +1630,7 @@ define signext i32 @sext_sraiw_aext(i32 %a) nounwind { define signext i32 @sext_sraiw_sext(i32 signext %a) nounwind { ; RV64I-LABEL: sext_sraiw_sext: ; RV64I: # %bb.0: -; RV64I-NEXT: srai a0, a0, 5 +; RV64I-NEXT: sraiw a0, a0, 5 ; RV64I-NEXT: ret %1 = ashr i32 %a, 5 ret i32 %1 diff --git a/llvm/test/CodeGen/RISCV/rv64zbb-zbp.ll b/llvm/test/CodeGen/RISCV/rv64zbb-zbp.ll index 804c5465b14dac..319b610e99b1b9 100644 --- a/llvm/test/CodeGen/RISCV/rv64zbb-zbp.ll +++ b/llvm/test/CodeGen/RISCV/rv64zbb-zbp.ll @@ -614,25 +614,25 @@ define i8 @srli_i8(i8 %a) nounwind { ; RV64I-LABEL: srli_i8: ; RV64I: # %bb.0: ; RV64I-NEXT: andi a0, a0, 192 -; RV64I-NEXT: srli a0, a0, 6 +; RV64I-NEXT: srliw a0, a0, 6 ; RV64I-NEXT: ret ; ; RV64IB-LABEL: srli_i8: ; RV64IB: # %bb.0: ; RV64IB-NEXT: andi a0, a0, 192 -; RV64IB-NEXT: srli a0, a0, 6 +; RV64IB-NEXT: srliw a0, a0, 6 ; RV64IB-NEXT: ret ; ; RV64IBB-LABEL: srli_i8: ; RV64IBB: # %bb.0: ; RV64IBB-NEXT: andi a0, a0, 192 -; RV64IBB-NEXT: srli a0, a0, 6 +; RV64IBB-NEXT: srliw a0, a0, 6 ; RV64IBB-NEXT: ret ; ; RV64IBP-LABEL: srli_i8: ; RV64IBP: # %bb.0: ; RV64IBP-NEXT: andi a0, a0, 192 -; RV64IBP-NEXT: srli a0, a0, 6 +; RV64IBP-NEXT: srliw a0, a0, 6 ; RV64IBP-NEXT: ret %1 = lshr i8 %a, 6 ret i8 %1 @@ -648,13 +648,13 @@ define i8 @srai_i8(i8 %a) nounwind { ; RV64IB-LABEL: srai_i8: ; RV64IB: # %bb.0: ; RV64IB-NEXT: sext.b a0, a0 -; RV64IB-NEXT: srai a0, a0, 5 +; RV64IB-NEXT: sraiw a0, a0, 5 ; RV64IB-NEXT: ret ; ; RV64IBB-LABEL: srai_i8: ; RV64IBB: # %bb.0: ; RV64IBB-NEXT: sext.b a0, a0 -; RV64IBB-NEXT: srai a0, a0, 5 +; RV64IBB-NEXT: sraiw a0, a0, 5 ; RV64IBB-NEXT: ret ; ; RV64IBP-LABEL: srai_i8: @@ -676,19 +676,19 @@ define i16 @srli_i16(i16 %a) nounwind { ; RV64IB-LABEL: srli_i16: ; RV64IB: # %bb.0: ; RV64IB-NEXT: zext.h a0, a0 -; RV64IB-NEXT: srli a0, a0, 6 +; RV64IB-NEXT: srliw a0, a0, 6 ; RV64IB-NEXT: ret ; ; RV64IBB-LABEL: srli_i16: ; RV64IBB: # %bb.0: ; RV64IBB-NEXT: zext.h a0, a0 -; RV64IBB-NEXT: srli a0, a0, 6 +; RV64IBB-NEXT: srliw a0, a0, 6 ; RV64IBB-NEXT: ret ; ; RV64IBP-LABEL: srli_i16: ; RV64IBP: # %bb.0: ; RV64IBP-NEXT: zext.h a0, a0 -; RV64IBP-NEXT: srli a0, a0, 6 +; RV64IBP-NEXT: srliw a0, a0, 6 ; RV64IBP-NEXT: ret %1 = lshr i16 %a, 6 ret i16 %1 @@ -704,13 +704,13 @@ define i16 @srai_i16(i16 %a) nounwind { ; RV64IB-LABEL: srai_i16: ; RV64IB: # %bb.0: ; RV64IB-NEXT: sext.h a0, a0 -; RV64IB-NEXT: srai a0, a0, 9 +; RV64IB-NEXT: sraiw a0, a0, 9 ; RV64IB-NEXT: ret ; ; RV64IBB-LABEL: srai_i16: ; RV64IBB: # %bb.0: ; RV64IBB-NEXT: sext.h a0, a0 -; RV64IBB-NEXT: srai a0, a0, 9 +; RV64IBB-NEXT: sraiw a0, a0, 9 ; RV64IBB-NEXT: ret ; ; RV64IBP-LABEL: srai_i16: diff --git a/llvm/test/CodeGen/RISCV/rv64zbb.ll b/llvm/test/CodeGen/RISCV/rv64zbb.ll index 7a20bf0f0320c2..3a9e0351186335 100644 --- a/llvm/test/CodeGen/RISCV/rv64zbb.ll +++ b/llvm/test/CodeGen/RISCV/rv64zbb.ll @@ -19,9 +19,9 @@ define signext i32 @ctlz_i32(i32 signext %a) nounwind { ; RV64I-NEXT: slli a0, a0, 32 ; RV64I-NEXT: srli a0, a0, 32 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 @@ -105,9 +105,9 @@ define signext i32 @log2_i32(i32 signext %a) nounwind { ; RV64I-NEXT: slli a0, a0, 32 ; RV64I-NEXT: srli a0, a0, 32 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 @@ -202,9 +202,9 @@ define signext i32 @log2_ceil_i32(i32 signext %a) nounwind { ; RV64I-NEXT: slli a0, a0, 32 ; RV64I-NEXT: srli a0, a0, 32 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 @@ -295,9 +295,9 @@ define signext i32 @findLastSet_i32(i32 signext %a) nounwind { ; RV64I-NEXT: srli a0, a0, 32 ; RV64I-NEXT: srliw a1, s0, 1 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 @@ -395,11 +395,11 @@ define i32 @ctlz_lshr_i32(i32 signext %a) { ; RV64I-NEXT: srliw a0, a0, 1 ; RV64I-NEXT: beqz a0, .LBB4_2 ; RV64I-NEXT: # %bb.1: # %cond.false -; RV64I-NEXT: srli a1, a0, 1 +; RV64I-NEXT: srliw a1, a0, 1 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 2 +; RV64I-NEXT: srliw a1, a0, 2 ; RV64I-NEXT: or a0, a0, a1 -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: srli a1, a0, 8 ; RV64I-NEXT: or a0, a0, a1 @@ -1016,7 +1016,7 @@ define signext i32 @ctpop_i32_load(i32* %p) nounwind { ; RV64I-NEXT: addi sp, sp, -16 ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: lwu a0, 0(a0) -; RV64I-NEXT: srli a1, a0, 1 +; RV64I-NEXT: srliw a1, a0, 1 ; RV64I-NEXT: lui a2, 349525 ; RV64I-NEXT: addiw a2, a2, 1365 ; RV64I-NEXT: and a1, a1, a2 diff --git a/llvm/test/CodeGen/RISCV/rv64zbp.ll b/llvm/test/CodeGen/RISCV/rv64zbp.ll index 00d3278a3283d2..fee2b2dfb61c05 100644 --- a/llvm/test/CodeGen/RISCV/rv64zbp.ll +++ b/llvm/test/CodeGen/RISCV/rv64zbp.ll @@ -2669,7 +2669,7 @@ declare i16 @llvm.bswap.i16(i16) define zeroext i16 @bswap_i16(i16 zeroext %a) nounwind { ; RV64I-LABEL: bswap_i16: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a1, a0, 8 +; RV64I-NEXT: srliw a1, a0, 8 ; RV64I-NEXT: slli a0, a0, 8 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 16 @@ -2812,19 +2812,19 @@ declare i8 @llvm.bitreverse.i8(i8) define zeroext i8 @bitreverse_i8(i8 zeroext %a) nounwind { ; RV64I-LABEL: bitreverse_i8: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a1, a0, 4 +; RV64I-NEXT: srliw a1, a0, 4 ; RV64I-NEXT: andi a0, a0, 15 ; RV64I-NEXT: slli a0, a0, 4 ; RV64I-NEXT: or a0, a1, a0 ; RV64I-NEXT: andi a1, a0, 51 ; RV64I-NEXT: slli a1, a1, 2 ; RV64I-NEXT: andi a0, a0, 204 -; RV64I-NEXT: srli a0, a0, 2 +; RV64I-NEXT: srliw a0, a0, 2 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: andi a1, a0, 85 ; RV64I-NEXT: slli a1, a1, 1 ; RV64I-NEXT: andi a0, a0, 170 -; RV64I-NEXT: srli a0, a0, 1 +; RV64I-NEXT: srliw a0, a0, 1 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: ret ; @@ -2846,7 +2846,7 @@ declare i16 @llvm.bitreverse.i16(i16) define zeroext i16 @bitreverse_i16(i16 zeroext %a) nounwind { ; RV64I-LABEL: bitreverse_i16: ; RV64I: # %bb.0: -; RV64I-NEXT: srli a1, a0, 8 +; RV64I-NEXT: srliw a1, a0, 8 ; RV64I-NEXT: slli a0, a0, 8 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 1 @@ -2856,7 +2856,7 @@ define zeroext i16 @bitreverse_i16(i16 zeroext %a) nounwind { ; RV64I-NEXT: lui a2, 15 ; RV64I-NEXT: addiw a2, a2, 240 ; RV64I-NEXT: and a0, a0, a2 -; RV64I-NEXT: srli a0, a0, 4 +; RV64I-NEXT: srliw a0, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 3 ; RV64I-NEXT: addiw a1, a1, 819 @@ -2865,7 +2865,7 @@ define zeroext i16 @bitreverse_i16(i16 zeroext %a) nounwind { ; RV64I-NEXT: lui a2, 13 ; RV64I-NEXT: addiw a2, a2, -820 ; RV64I-NEXT: and a0, a0, a2 -; RV64I-NEXT: srli a0, a0, 2 +; RV64I-NEXT: srliw a0, a0, 2 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 5 ; RV64I-NEXT: addiw a1, a1, 1365 @@ -2874,7 +2874,7 @@ define zeroext i16 @bitreverse_i16(i16 zeroext %a) nounwind { ; RV64I-NEXT: lui a2, 11 ; RV64I-NEXT: addiw a2, a2, -1366 ; RV64I-NEXT: and a0, a0, a2 -; RV64I-NEXT: srli a0, a0, 1 +; RV64I-NEXT: srliw a0, a0, 1 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: ret ; @@ -2917,7 +2917,7 @@ define signext i32 @bitreverse_i32(i32 signext %a) nounwind { ; RV64I-NEXT: slli a2, a2, 12 ; RV64I-NEXT: addi a2, a2, 240 ; RV64I-NEXT: and a0, a0, a2 -; RV64I-NEXT: srli a0, a0, 4 +; RV64I-NEXT: srliw a0, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 209715 ; RV64I-NEXT: addiw a1, a1, 819 @@ -2926,7 +2926,7 @@ define signext i32 @bitreverse_i32(i32 signext %a) nounwind { ; RV64I-NEXT: lui a2, 838861 ; RV64I-NEXT: addiw a2, a2, -820 ; RV64I-NEXT: and a0, a0, a2 -; RV64I-NEXT: srli a0, a0, 2 +; RV64I-NEXT: srliw a0, a0, 2 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 349525 ; RV64I-NEXT: addiw a1, a1, 1365 @@ -2978,7 +2978,7 @@ define void @bitreverse_i32_nosext(i32 signext %a, i32* %x) nounwind { ; RV64I-NEXT: slli a3, a3, 12 ; RV64I-NEXT: addi a3, a3, 240 ; RV64I-NEXT: and a0, a0, a3 -; RV64I-NEXT: srli a0, a0, 4 +; RV64I-NEXT: srliw a0, a0, 4 ; RV64I-NEXT: or a0, a0, a2 ; RV64I-NEXT: lui a2, 209715 ; RV64I-NEXT: addiw a2, a2, 819 @@ -2987,7 +2987,7 @@ define void @bitreverse_i32_nosext(i32 signext %a, i32* %x) nounwind { ; RV64I-NEXT: lui a3, 838861 ; RV64I-NEXT: addiw a3, a3, -820 ; RV64I-NEXT: and a0, a0, a3 -; RV64I-NEXT: srli a0, a0, 2 +; RV64I-NEXT: srliw a0, a0, 2 ; RV64I-NEXT: or a0, a0, a2 ; RV64I-NEXT: lui a2, 349525 ; RV64I-NEXT: addiw a2, a2, 1365 @@ -3221,7 +3221,7 @@ define i32 @bitreverse_bswap_i32(i32 %a) { ; RV64I-NEXT: slli a3, a3, 12 ; RV64I-NEXT: addi a3, a3, 240 ; RV64I-NEXT: and a0, a0, a3 -; RV64I-NEXT: srli a0, a0, 4 +; RV64I-NEXT: srliw a0, a0, 4 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 209715 ; RV64I-NEXT: addiw a1, a1, 819 @@ -3230,7 +3230,7 @@ define i32 @bitreverse_bswap_i32(i32 %a) { ; RV64I-NEXT: lui a3, 838861 ; RV64I-NEXT: addiw a3, a3, -820 ; RV64I-NEXT: and a0, a0, a3 -; RV64I-NEXT: srli a0, a0, 2 +; RV64I-NEXT: srliw a0, a0, 2 ; RV64I-NEXT: or a0, a0, a1 ; RV64I-NEXT: lui a1, 349525 ; RV64I-NEXT: addiw a1, a1, 1365 diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz.ll index b5dbfb82128929..9b421de9a5c834 100644 --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-ctlz.ll @@ -482,11 +482,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vle8.v v25, (a0) ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -543,11 +543,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 15 ; LMULMAX2-RV64-NEXT: vmv.x.s a5, v26 ; LMULMAX2-RV64-NEXT: andi a5, a5, 255 -; LMULMAX2-RV64-NEXT: srli a1, a5, 1 +; LMULMAX2-RV64-NEXT: srliw a1, a5, 1 ; LMULMAX2-RV64-NEXT: or a1, a5, a1 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -573,11 +573,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 14 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -603,11 +603,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 13 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -633,11 +633,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 12 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -663,11 +663,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 11 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -693,11 +693,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 10 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -723,11 +723,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 9 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -753,11 +753,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -783,11 +783,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -813,11 +813,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -843,11 +843,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -873,11 +873,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -903,11 +903,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -933,11 +933,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -963,11 +963,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a5, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -1474,11 +1474,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vle8.v v25, (a0) ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -1535,11 +1535,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 15 ; LMULMAX1-RV64-NEXT: vmv.x.s a5, v26 ; LMULMAX1-RV64-NEXT: andi a5, a5, 255 -; LMULMAX1-RV64-NEXT: srli a1, a5, 1 +; LMULMAX1-RV64-NEXT: srliw a1, a5, 1 ; LMULMAX1-RV64-NEXT: or a1, a5, a1 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1565,11 +1565,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 14 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1595,11 +1595,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 13 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1625,11 +1625,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 12 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1655,11 +1655,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 11 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1685,11 +1685,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 10 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1715,11 +1715,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 9 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1745,11 +1745,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1775,11 +1775,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1805,11 +1805,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1835,11 +1835,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1865,11 +1865,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1895,11 +1895,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1925,11 +1925,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -1955,11 +1955,11 @@ define void @ctlz_v16i8(<16 x i8>* %x, <16 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a5, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -2254,11 +2254,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: lui a1, 16 ; LMULMAX2-RV64-NEXT: addiw a6, a1, -1 ; LMULMAX2-RV64-NEXT: and a2, a2, a6 -; LMULMAX2-RV64-NEXT: srli a3, a2, 1 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 2 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 4 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 ; LMULMAX2-RV64-NEXT: srli a3, a2, 8 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 @@ -2315,11 +2315,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2345,11 +2345,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2375,11 +2375,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2405,11 +2405,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2435,11 +2435,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2465,11 +2465,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2495,11 +2495,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -2786,11 +2786,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: lui a1, 16 ; LMULMAX1-RV64-NEXT: addiw a6, a1, -1 ; LMULMAX1-RV64-NEXT: and a2, a2, a6 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -2847,11 +2847,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -2877,11 +2877,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -2907,11 +2907,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -2937,11 +2937,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -2967,11 +2967,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -2997,11 +2997,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -3027,11 +3027,11 @@ define void @ctlz_v8i16(<8 x i16>* %x, <8 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX1-RV64-NEXT: and a1, a1, a6 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -3205,9 +3205,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -3267,9 +3267,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a5, a5, 32 ; LMULMAX2-RV64-NEXT: srli a5, a5, 32 ; LMULMAX2-RV64-NEXT: or a1, a5, a1 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -3298,9 +3298,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -3329,9 +3329,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -3497,9 +3497,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -3559,9 +3559,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a5, a5, 32 ; LMULMAX1-RV64-NEXT: srli a5, a5, 32 ; LMULMAX1-RV64-NEXT: or a1, a5, a1 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -3590,9 +3590,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -3621,9 +3621,9 @@ define void @ctlz_v4i32(<4 x i32>* %x, <4 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 -; LMULMAX1-RV64-NEXT: srli a5, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 ; LMULMAX1-RV64-NEXT: srli a5, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a5 @@ -5083,11 +5083,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vle8.v v26, (a0) ; LMULMAX2-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX2-RV64-NEXT: andi a2, a2, 255 -; LMULMAX2-RV64-NEXT: srli a3, a2, 1 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 2 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 4 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 ; LMULMAX2-RV64-NEXT: srli a3, a2, 8 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 @@ -5144,11 +5144,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 31 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5174,11 +5174,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 30 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5204,11 +5204,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 29 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5234,11 +5234,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 28 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5264,11 +5264,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 27 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5294,11 +5294,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 26 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5324,11 +5324,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 25 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5354,11 +5354,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 24 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5384,11 +5384,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 23 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5414,11 +5414,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 22 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5444,11 +5444,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 21 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5474,11 +5474,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 20 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5504,11 +5504,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 19 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5534,11 +5534,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 18 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5564,11 +5564,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 17 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5594,11 +5594,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 16 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5624,11 +5624,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 15 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5654,11 +5654,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 14 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5684,11 +5684,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 13 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5714,11 +5714,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 12 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5744,11 +5744,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 11 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5774,11 +5774,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 10 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5804,11 +5804,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 9 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5834,11 +5834,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 8 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5864,11 +5864,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 7 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5894,11 +5894,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 6 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5924,11 +5924,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 5 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5954,11 +5954,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 4 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -5984,11 +5984,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 3 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -6014,11 +6014,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 2 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -6044,11 +6044,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v26, 1 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: andi a1, a1, 255 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -7012,11 +7012,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vle8.v v25, (a0) ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: andi a2, a2, 255 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -7073,11 +7073,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 15 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7103,11 +7103,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 14 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7133,11 +7133,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 13 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7163,11 +7163,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 12 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7193,11 +7193,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 11 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7223,11 +7223,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 10 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7253,11 +7253,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 9 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7283,11 +7283,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 8 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7313,11 +7313,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7343,11 +7343,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7373,11 +7373,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7403,11 +7403,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7433,11 +7433,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7463,11 +7463,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v27 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7493,11 +7493,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v26, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7522,11 +7522,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: sb a1, 33(sp) ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7552,11 +7552,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 15 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7582,11 +7582,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 14 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7612,11 +7612,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 13 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7642,11 +7642,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 12 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7672,11 +7672,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 11 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7702,11 +7702,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 10 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7732,11 +7732,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 9 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7762,11 +7762,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 8 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7792,11 +7792,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7822,11 +7822,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7852,11 +7852,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7882,11 +7882,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7912,11 +7912,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7942,11 +7942,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -7972,11 +7972,11 @@ define void @ctlz_v32i8(<32 x i8>* %x, <32 x i8>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a1, v25 ; LMULMAX1-RV64-NEXT: andi a1, a1, 255 -; LMULMAX1-RV64-NEXT: srli a2, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -8515,11 +8515,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: lui a1, 16 ; LMULMAX2-RV64-NEXT: addiw a6, a1, -1 ; LMULMAX2-RV64-NEXT: and a2, a2, a6 -; LMULMAX2-RV64-NEXT: srli a3, a2, 1 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 2 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 -; LMULMAX2-RV64-NEXT: srli a3, a2, 4 +; LMULMAX2-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 ; LMULMAX2-RV64-NEXT: srli a3, a2, 8 ; LMULMAX2-RV64-NEXT: or a2, a2, a3 @@ -8576,11 +8576,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 15 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8606,11 +8606,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 14 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8636,11 +8636,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 13 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8666,11 +8666,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 12 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8696,11 +8696,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 11 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8726,11 +8726,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 10 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8756,11 +8756,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 9 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8786,11 +8786,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 8 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8816,11 +8816,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 7 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8846,11 +8846,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 6 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8876,11 +8876,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 5 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8906,11 +8906,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 4 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8936,11 +8936,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 3 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8966,11 +8966,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v28, v26, 2 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v28 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -8996,11 +8996,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX2-RV64-NEXT: vslidedown.vi v26, v26, 1 ; LMULMAX2-RV64-NEXT: vmv.x.s a1, v26 ; LMULMAX2-RV64-NEXT: and a1, a1, a6 -; LMULMAX2-RV64-NEXT: srli a2, a1, 1 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 1 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -9520,11 +9520,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: lui a2, 16 ; LMULMAX1-RV64-NEXT: addiw a7, a2, -1 ; LMULMAX1-RV64-NEXT: and a1, a1, a7 -; LMULMAX1-RV64-NEXT: srli a3, a1, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a1, 1 ; LMULMAX1-RV64-NEXT: or a1, a1, a3 -; LMULMAX1-RV64-NEXT: srli a3, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a3 -; LMULMAX1-RV64-NEXT: srli a3, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a3 ; LMULMAX1-RV64-NEXT: srli a3, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a3 @@ -9581,11 +9581,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9611,11 +9611,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9641,11 +9641,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9671,11 +9671,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9701,11 +9701,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9731,11 +9731,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v27, v26, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v27 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9761,11 +9761,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v26, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9790,11 +9790,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: sh a2, 34(sp) ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v25 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9820,11 +9820,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 7 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9850,11 +9850,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 6 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9880,11 +9880,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 5 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9910,11 +9910,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 4 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9940,11 +9940,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 3 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -9970,11 +9970,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v26, v25, 2 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v26 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -10000,11 +10000,11 @@ define void @ctlz_v16i16(<16 x i16>* %x, <16 x i16>* %y) { ; LMULMAX1-RV64-NEXT: vslidedown.vi v25, v25, 1 ; LMULMAX1-RV64-NEXT: vmv.x.s a2, v25 ; LMULMAX1-RV64-NEXT: and a2, a2, a7 -; LMULMAX1-RV64-NEXT: srli a3, a2, 1 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 1 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -10302,9 +10302,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 -; LMULMAX2-RV64-NEXT: srli a2, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 ; LMULMAX2-RV64-NEXT: srli a2, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a2 @@ -10364,9 +10364,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a5, a5, 32 ; LMULMAX2-RV64-NEXT: srli a5, a5, 32 ; LMULMAX2-RV64-NEXT: or a1, a5, a1 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10395,9 +10395,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10426,9 +10426,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10457,9 +10457,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10488,9 +10488,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10519,9 +10519,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10550,9 +10550,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX2-RV64-NEXT: slli a1, a1, 32 ; LMULMAX2-RV64-NEXT: srli a1, a1, 32 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 2 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 2 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 -; LMULMAX2-RV64-NEXT: srli a5, a1, 4 +; LMULMAX2-RV64-NEXT: srliw a5, a1, 4 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 ; LMULMAX2-RV64-NEXT: srli a5, a1, 8 ; LMULMAX2-RV64-NEXT: or a1, a1, a5 @@ -10831,9 +10831,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a2, a2, 32 ; LMULMAX1-RV64-NEXT: srli a2, a2, 32 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 2 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 2 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 -; LMULMAX1-RV64-NEXT: srli a3, a2, 4 +; LMULMAX1-RV64-NEXT: srliw a3, a2, 4 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 ; LMULMAX1-RV64-NEXT: srli a3, a2, 8 ; LMULMAX1-RV64-NEXT: or a2, a2, a3 @@ -10893,9 +10893,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -10924,9 +10924,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -10955,9 +10955,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -10985,9 +10985,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -11016,9 +11016,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -11047,9 +11047,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 @@ -11078,9 +11078,9 @@ define void @ctlz_v8i32(<8 x i32>* %x, <8 x i32>* %y) { ; LMULMAX1-RV64-NEXT: slli a1, a1, 32 ; LMULMAX1-RV64-NEXT: srli a1, a1, 32 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 2 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 2 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 -; LMULMAX1-RV64-NEXT: srli a2, a1, 4 +; LMULMAX1-RV64-NEXT: srliw a2, a1, 4 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 ; LMULMAX1-RV64-NEXT: srli a2, a1, 8 ; LMULMAX1-RV64-NEXT: or a1, a1, a2 diff --git a/llvm/test/CodeGen/RISCV/urem-lkk.ll b/llvm/test/CodeGen/RISCV/urem-lkk.ll index fb7591a26066cf..f4b8e8c64f5b0b 100644 --- a/llvm/test/CodeGen/RISCV/urem-lkk.ll +++ b/llvm/test/CodeGen/RISCV/urem-lkk.ll @@ -56,7 +56,7 @@ define i32 @fold_urem_positive_odd(i32 %x) nounwind { ; RV64IM-NEXT: sub a2, a0, a1 ; RV64IM-NEXT: srliw a2, a2, 1 ; RV64IM-NEXT: add a1, a2, a1 -; RV64IM-NEXT: srli a1, a1, 6 +; RV64IM-NEXT: srliw a1, a1, 6 ; RV64IM-NEXT: addi a2, zero, 95 ; RV64IM-NEXT: mul a1, a1, a2 ; RV64IM-NEXT: subw a0, a0, a1 @@ -189,7 +189,7 @@ define i32 @combine_urem_udiv(i32 %x) nounwind { ; RV64IM-NEXT: sub a2, a0, a1 ; RV64IM-NEXT: srliw a2, a2, 1 ; RV64IM-NEXT: add a1, a2, a1 -; RV64IM-NEXT: srli a1, a1, 6 +; RV64IM-NEXT: srliw a1, a1, 6 ; RV64IM-NEXT: addi a2, zero, 95 ; RV64IM-NEXT: mul a2, a1, a2 ; RV64IM-NEXT: sub a0, a0, a2 diff --git a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll index c64e656cd76551..fdf1ee6a2161e8 100644 --- a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll +++ b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll @@ -119,7 +119,7 @@ define i1 @test_urem_even(i27 %X) nounwind { ; RV64-NEXT: lui a2, 32768 ; RV64-NEXT: addiw a3, a2, -2 ; RV64-NEXT: and a0, a0, a3 -; RV64-NEXT: srli a0, a0, 1 +; RV64-NEXT: srliw a0, a0, 1 ; RV64-NEXT: or a0, a0, a1 ; RV64-NEXT: addiw a1, a2, -1 ; RV64-NEXT: and a0, a0, a1 @@ -157,7 +157,7 @@ define i1 @test_urem_even(i27 %X) nounwind { ; RV64M-NEXT: lui a2, 32768 ; RV64M-NEXT: addiw a3, a2, -2 ; RV64M-NEXT: and a0, a0, a3 -; RV64M-NEXT: srli a0, a0, 1 +; RV64M-NEXT: srliw a0, a0, 1 ; RV64M-NEXT: or a0, a0, a1 ; RV64M-NEXT: addiw a1, a2, -1 ; RV64M-NEXT: and a0, a0, a1 @@ -193,7 +193,7 @@ define i1 @test_urem_even(i27 %X) nounwind { ; RV64MV-NEXT: lui a2, 32768 ; RV64MV-NEXT: addiw a3, a2, -2 ; RV64MV-NEXT: and a0, a0, a3 -; RV64MV-NEXT: srli a0, a0, 1 +; RV64MV-NEXT: srliw a0, a0, 1 ; RV64MV-NEXT: or a0, a0, a1 ; RV64MV-NEXT: addiw a1, a2, -1 ; RV64MV-NEXT: and a0, a0, a1 @@ -419,7 +419,7 @@ define void @test_urem_vec(<3 x i11>* %X) nounwind { ; RV64-NEXT: call __muldi3@plt ; RV64-NEXT: slli a1, a0, 10 ; RV64-NEXT: andi a0, a0, 2046 -; RV64-NEXT: srli a0, a0, 1 +; RV64-NEXT: srliw a0, a0, 1 ; RV64-NEXT: or a0, a0, a1 ; RV64-NEXT: andi a0, a0, 2047 ; RV64-NEXT: addi a1, zero, 341 @@ -518,7 +518,7 @@ define void @test_urem_vec(<3 x i11>* %X) nounwind { ; RV64M-NEXT: mul a1, a1, a4 ; RV64M-NEXT: slli a4, a1, 10 ; RV64M-NEXT: andi a1, a1, 2046 -; RV64M-NEXT: srli a1, a1, 1 +; RV64M-NEXT: srliw a1, a1, 1 ; RV64M-NEXT: or a1, a1, a4 ; RV64M-NEXT: andi a1, a1, 2047 ; RV64M-NEXT: addi a4, zero, 341 diff --git a/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll b/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll index e91b0834e7d238..cf2e2e2a8db65c 100644 --- a/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll +++ b/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll @@ -164,7 +164,7 @@ define <4 x i16> @fold_urem_vec_1(<4 x i16> %x) nounwind { ; RV64IM-NEXT: addi a5, zero, 95 ; RV64IM-NEXT: mul a2, a2, a5 ; RV64IM-NEXT: sub a1, a1, a2 -; RV64IM-NEXT: srli a2, a4, 2 +; RV64IM-NEXT: srliw a2, a4, 2 ; RV64IM-NEXT: lui a5, 264 ; RV64IM-NEXT: addiw a5, a5, 1057 ; RV64IM-NEXT: slli a5, a5, 15 @@ -174,11 +174,11 @@ define <4 x i16> @fold_urem_vec_1(<4 x i16> %x) nounwind { ; RV64IM-NEXT: slli a5, a5, 12 ; RV64IM-NEXT: addi a5, a5, 133 ; RV64IM-NEXT: mulhu a2, a2, a5 -; RV64IM-NEXT: srli a2, a2, 3 +; RV64IM-NEXT: srliw a2, a2, 3 ; RV64IM-NEXT: addi a5, zero, 124 ; RV64IM-NEXT: mul a2, a2, a5 ; RV64IM-NEXT: sub a2, a4, a2 -; RV64IM-NEXT: srli a4, a3, 1 +; RV64IM-NEXT: srliw a4, a3, 1 ; RV64IM-NEXT: lui a5, 2675 ; RV64IM-NEXT: addiw a5, a5, -251 ; RV64IM-NEXT: slli a5, a5, 13 @@ -188,7 +188,7 @@ define <4 x i16> @fold_urem_vec_1(<4 x i16> %x) nounwind { ; RV64IM-NEXT: slli a5, a5, 13 ; RV64IM-NEXT: addi a5, a5, 1505 ; RV64IM-NEXT: mulhu a4, a4, a5 -; RV64IM-NEXT: srli a4, a4, 4 +; RV64IM-NEXT: srliw a4, a4, 4 ; RV64IM-NEXT: addi a5, zero, 98 ; RV64IM-NEXT: mul a4, a4, a5 ; RV64IM-NEXT: sub a3, a3, a4 @@ -201,7 +201,7 @@ define <4 x i16> @fold_urem_vec_1(<4 x i16> %x) nounwind { ; RV64IM-NEXT: slli a4, a4, 12 ; RV64IM-NEXT: addi a4, a4, 1213 ; RV64IM-NEXT: mulhu a4, a6, a4 -; RV64IM-NEXT: srli a4, a4, 7 +; RV64IM-NEXT: srliw a4, a4, 7 ; RV64IM-NEXT: addi a5, zero, 1003 ; RV64IM-NEXT: mul a4, a4, a5 ; RV64IM-NEXT: sub a4, a6, a4 @@ -902,7 +902,7 @@ define <4 x i16> @dont_fold_urem_one(<4 x i16> %x) nounwind { ; RV64IM-NEXT: addi a5, zero, 23 ; RV64IM-NEXT: mul a4, a4, a5 ; RV64IM-NEXT: sub a1, a1, a4 -; RV64IM-NEXT: srli a4, a3, 1 +; RV64IM-NEXT: srliw a4, a3, 1 ; RV64IM-NEXT: lui a5, 6413 ; RV64IM-NEXT: addiw a5, a5, 1265 ; RV64IM-NEXT: slli a5, a5, 13 @@ -912,7 +912,7 @@ define <4 x i16> @dont_fold_urem_one(<4 x i16> %x) nounwind { ; RV64IM-NEXT: slli a5, a5, 12 ; RV64IM-NEXT: addi a5, a5, 965 ; RV64IM-NEXT: mulhu a4, a4, a5 -; RV64IM-NEXT: srli a4, a4, 7 +; RV64IM-NEXT: srliw a4, a4, 7 ; RV64IM-NEXT: addi a5, zero, 654 ; RV64IM-NEXT: mul a4, a4, a5 ; RV64IM-NEXT: sub a3, a3, a4 @@ -925,7 +925,7 @@ define <4 x i16> @dont_fold_urem_one(<4 x i16> %x) nounwind { ; RV64IM-NEXT: slli a4, a4, 12 ; RV64IM-NEXT: addi a4, a4, -179 ; RV64IM-NEXT: mulhu a4, a2, a4 -; RV64IM-NEXT: srli a4, a4, 12 +; RV64IM-NEXT: srliw a4, a4, 12 ; RV64IM-NEXT: lui a5, 1 ; RV64IM-NEXT: addiw a5, a5, 1327 ; RV64IM-NEXT: mul a4, a4, a5 diff --git a/llvm/test/CodeGen/RISCV/vec3-setcc-crash.ll b/llvm/test/CodeGen/RISCV/vec3-setcc-crash.ll index e12f7cd6edd5eb..0daecd25076bf1 100644 --- a/llvm/test/CodeGen/RISCV/vec3-setcc-crash.ll +++ b/llvm/test/CodeGen/RISCV/vec3-setcc-crash.ll @@ -70,7 +70,7 @@ define void @vec3_setcc_crash(<3 x i8>* %in, <3 x i8>* %out) { ; RV64-NEXT: mv a2, zero ; RV64-NEXT: j .LBB0_5 ; RV64-NEXT: .LBB0_4: -; RV64-NEXT: srli a2, a2, 8 +; RV64-NEXT: srliw a2, a2, 8 ; RV64-NEXT: .LBB0_5: ; RV64-NEXT: slli a2, a2, 8 ; RV64-NEXT: or a2, a5, a2 @@ -79,7 +79,7 @@ define void @vec3_setcc_crash(<3 x i8>* %in, <3 x i8>* %out) { ; RV64-NEXT: mv a0, zero ; RV64-NEXT: j .LBB0_8 ; RV64-NEXT: .LBB0_7: -; RV64-NEXT: srli a0, a0, 16 +; RV64-NEXT: srliw a0, a0, 16 ; RV64-NEXT: .LBB0_8: ; RV64-NEXT: sb a0, 2(a1) ; RV64-NEXT: sh a2, 0(a1)