Skip to content

Commit 1c19854

Browse files
committed
[RISCV] Remove vmv.s.x and vmv.x.s lmul pseudo variants
vmv.s.x and vmv.x.s ignore LMUL, so we can replace the PseudoVMV_S_X_MX and PseudoVMV_X_S_MX with just one pseudo each. These pseudos use the VR register class (just like the actual instruction), so for the tablegen patterns we need to wrap LMUL>1 in subregister inserts/extracts. The test diff is due to the fact that a PseudoVMV_S_X/PsuedoVMV_X_S no longer carries any information about LMUL, so if it's the only vector pseudo instruction in a block then it now default to LMUL=1.
1 parent 11c1827 commit 1c19854

33 files changed

+1053
-1213
lines changed

llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -3362,7 +3362,9 @@ static bool usesAllOnesMask(SDNode *N, unsigned MaskOpIdx) {
33623362

33633363
static bool isImplicitDef(SDValue V) {
33643364
return V.isMachineOpcode() &&
3365-
V.getMachineOpcode() == TargetOpcode::IMPLICIT_DEF;
3365+
(V.getMachineOpcode() == TargetOpcode::IMPLICIT_DEF ||
3366+
(V.getMachineOpcode() == TargetOpcode::EXTRACT_SUBREG &&
3367+
isImplicitDef(V.getOperand(0))));
33663368
}
33673369

33683370
// Optimize masked RVV pseudo instructions with a known all-ones mask to their

llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td

+26-21
Original file line numberDiff line numberDiff line change
@@ -6756,24 +6756,19 @@ defm PseudoVID : VPseudoVID_V;
67566756

67576757
let Predicates = [HasVInstructions] in {
67586758
let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in {
6759-
foreach m = MxList in {
6760-
defvar mx = m.MX;
6761-
let VLMul = m.value in {
6762-
let HasSEWOp = 1, BaseInstr = VMV_X_S in
6763-
def PseudoVMV_X_S # "_" # mx:
6764-
Pseudo<(outs GPR:$rd), (ins m.vrclass:$rs2, ixlenimm:$sew), []>,
6765-
Sched<[WriteVIMovVX, ReadVIMovVX]>,
6766-
RISCVVPseudo;
6767-
let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VMV_S_X,
6768-
Constraints = "$rd = $rs1" in
6769-
def PseudoVMV_S_X # "_" # mx: Pseudo<(outs m.vrclass:$rd),
6770-
(ins m.vrclass:$rs1, GPR:$rs2,
6771-
AVL:$vl, ixlenimm:$sew),
6772-
[]>,
6773-
Sched<[WriteVIMovXV, ReadVIMovXV, ReadVIMovXX]>,
6774-
RISCVVPseudo;
6775-
}
6776-
}
6759+
let HasSEWOp = 1, BaseInstr = VMV_X_S in
6760+
def PseudoVMV_X_S:
6761+
Pseudo<(outs GPR:$rd), (ins VR:$rs2, ixlenimm:$sew), []>,
6762+
Sched<[WriteVIMovVX, ReadVIMovVX]>,
6763+
RISCVVPseudo;
6764+
let HasVLOp = 1, HasSEWOp = 1, BaseInstr = VMV_S_X,
6765+
Constraints = "$rd = $rs1" in
6766+
def PseudoVMV_S_X: Pseudo<(outs VR:$rd),
6767+
(ins VR:$rs1, GPR:$rs2,
6768+
AVL:$vl, ixlenimm:$sew),
6769+
[]>,
6770+
Sched<[WriteVIMovXV, ReadVIMovXV, ReadVIMovXX]>,
6771+
RISCVVPseudo;
67776772
}
67786773
} // Predicates = [HasVInstructions]
67796774

@@ -7403,7 +7398,12 @@ defm : VPatNullaryV<"int_riscv_vid", "PseudoVID">;
74037398
foreach vti = AllIntegerVectors in {
74047399
let Predicates = GetVTypePredicates<vti>.Predicates in
74057400
def : Pat<(XLenVT (riscv_vmv_x_s (vti.Vector vti.RegClass:$rs2))),
7406-
(!cast<Instruction>("PseudoVMV_X_S_" # vti.LMul.MX) $rs2, vti.Log2SEW)>;
7401+
(PseudoVMV_X_S
7402+
!if(!isa<GroupVTypeInfo>(vti),
7403+
(!cast<GroupVTypeInfo>(vti).VectorM1
7404+
(EXTRACT_SUBREG $rs2, sub_vrm1_0)),
7405+
(vti.Vector $rs2)),
7406+
vti.Log2SEW)>;
74077407
// vmv.s.x is handled with a custom node in RISCVInstrInfoVVLPatterns.td
74087408
}
74097409

@@ -7421,10 +7421,15 @@ foreach fvti = AllFloatVectors in {
74217421
(fvti.Scalar fvti.ScalarRegClass:$rs2),
74227422
GPR:$vl, fvti.Log2SEW)>;
74237423

7424+
defvar is_group = !isa<GroupVTypeInfo>(fvti);
7425+
defvar merge = !if(is_group,
7426+
(!cast<GroupVTypeInfo>(fvti).VectorM1
7427+
(EXTRACT_SUBREG $rs1, sub_vrm1_0)),
7428+
(fvti.Vector $rs1));
7429+
defvar vmv_s_x = (PseudoVMV_S_X merge, (XLenVT X0), GPR:$vl, fvti.Log2SEW);
74247430
def : Pat<(fvti.Vector (int_riscv_vfmv_s_f (fvti.Vector fvti.RegClass:$rs1),
74257431
(fvti.Scalar (fpimm0)), VLOpFrag)),
7426-
(!cast<Instruction>("PseudoVMV_S_X_" # fvti.LMul.MX)
7427-
(fvti.Vector $rs1), (XLenVT X0), GPR:$vl, fvti.Log2SEW)>;
7432+
!if(is_group, (INSERT_SUBREG $rs1, vmv_s_x, sub_vrm1_0), vmv_s_x)>;
74287433
}
74297434
}
74307435

llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td

+24-7
Original file line numberDiff line numberDiff line change
@@ -2762,12 +2762,20 @@ foreach mti = AllMasks in {
27622762
// 16.4. Vector Register Gather Instruction
27632763
foreach vti = AllIntegerVectors in {
27642764
let Predicates = GetVTypePredicates<vti>.Predicates in {
2765+
defvar is_group = !isa<GroupVTypeInfo>(vti);
2766+
defvar merge = !if(is_group,
2767+
(!cast<GroupVTypeInfo>(vti).VectorM1
2768+
(EXTRACT_SUBREG $merge, sub_vrm1_0)),
2769+
(vti.Vector $merge));
2770+
defvar vmv_s_x = (PseudoVMV_S_X merge,
2771+
(vti.Scalar vti.ScalarRegClass:$rs1),
2772+
GPR:$vl, vti.Log2SEW);
27652773
def : Pat<(vti.Vector (riscv_vmv_s_x_vl (vti.Vector vti.RegClass:$merge),
27662774
vti.ScalarRegClass:$rs1,
27672775
VLOpFrag)),
2768-
(!cast<Instruction>("PseudoVMV_S_X_"#vti.LMul.MX)
2769-
vti.RegClass:$merge,
2770-
(vti.Scalar vti.ScalarRegClass:$rs1), GPR:$vl, vti.Log2SEW)>;
2776+
!if(is_group, (INSERT_SUBREG $merge, vmv_s_x, sub_vrm1_0),
2777+
vmv_s_x)>;
2778+
27712779

27722780
def : Pat<(vti.Vector (riscv_vrgather_vv_vl vti.RegClass:$rs2,
27732781
vti.RegClass:$rs1,
@@ -2818,16 +2826,25 @@ foreach vti = AllIntegerVectors in {
28182826
// 16.2. Floating-Point Scalar Move Instructions
28192827
foreach vti = AllFloatVectors in {
28202828
let Predicates = GetVTypePredicates<vti>.Predicates in {
2829+
defvar is_group = !isa<GroupVTypeInfo>(vti);
2830+
defvar merge = !if(is_group,
2831+
(!cast<GroupVTypeInfo>(vti).VectorM1
2832+
(EXTRACT_SUBREG $merge, sub_vrm1_0)),
2833+
(vti.Vector $merge));
2834+
defvar vmv_s_x_x0 = (PseudoVMV_S_X merge, (XLenVT X0), GPR:$vl, vti.Log2SEW);
28212835
def : Pat<(vti.Vector (riscv_vfmv_s_f_vl (vti.Vector vti.RegClass:$merge),
28222836
(vti.Scalar (fpimm0)),
28232837
VLOpFrag)),
2824-
(!cast<Instruction>("PseudoVMV_S_X_"#vti.LMul.MX)
2825-
vti.RegClass:$merge, (XLenVT X0), GPR:$vl, vti.Log2SEW)>;
2838+
!if(is_group, (INSERT_SUBREG $merge, vmv_s_x_x0, sub_vrm1_0),
2839+
vmv_s_x_x0)>;
2840+
2841+
defvar vmv_s_x = (PseudoVMV_S_X merge, GPR:$imm, GPR:$vl, vti.Log2SEW);
28262842
def : Pat<(vti.Vector (riscv_vfmv_s_f_vl (vti.Vector vti.RegClass:$merge),
28272843
(vti.Scalar (SelectFPImm (XLenVT GPR:$imm))),
28282844
VLOpFrag)),
2829-
(!cast<Instruction>("PseudoVMV_S_X_"#vti.LMul.MX)
2830-
vti.RegClass:$merge, GPR:$imm, GPR:$vl, vti.Log2SEW)>;
2845+
!if(is_group, (INSERT_SUBREG $merge, vmv_s_x, sub_vrm1_0),
2846+
vmv_s_x)>;
2847+
28312848
def : Pat<(vti.Vector (riscv_vfmv_s_f_vl (vti.Vector vti.RegClass:$merge),
28322849
vti.ScalarRegClass:$rs1,
28332850
VLOpFrag)),

llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir

+2-2
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ body: |
139139
; CHECK-NEXT: renamable $v0 = VL1RE8_V killed $x10 :: (load unknown-size from %stack.1, align 8)
140140
; CHECK-NEXT: $x10 = LD $x2, 8 :: (load (s64) from %stack.15)
141141
; CHECK-NEXT: renamable $v0 = PseudoVSLIDEDOWN_VX_M1 undef renamable $v0, killed renamable $v0, killed renamable $x13, $noreg, 3 /* e8 */, 1 /* ta, mu */, implicit $vl, implicit $vtype
142-
; CHECK-NEXT: renamable $x13 = PseudoVMV_X_S_M1 killed renamable $v0, 3 /* e8 */, implicit $vl, implicit $vtype
142+
; CHECK-NEXT: renamable $x13 = PseudoVMV_X_S killed renamable $v0, 3 /* e8 */, implicit $vl, implicit $vtype
143143
; CHECK-NEXT: BLT killed renamable $x16, renamable $x27, %bb.2
144144
; CHECK-NEXT: {{ $}}
145145
; CHECK-NEXT: bb.1:
@@ -206,7 +206,7 @@ body: |
206206
renamable $x13 = nsw ADDI renamable $x16, -2
207207
renamable $v0 = VL1RE8_V %stack.1 :: (load unknown-size from %stack.1, align 8)
208208
renamable $v0 = PseudoVSLIDEDOWN_VX_M1 undef renamable $v0, killed renamable $v0, killed renamable $x13, $noreg, 3, 1, implicit $vl, implicit $vtype
209-
renamable $x13 = PseudoVMV_X_S_M1 killed renamable $v0, 3, implicit $vl, implicit $vtype
209+
renamable $x13 = PseudoVMV_X_S killed renamable $v0, 3, implicit $vl, implicit $vtype
210210
BLT killed renamable $x16, renamable $x27, %bb.2
211211
212212
bb.1:

llvm/test/CodeGen/RISCV/rvv/extractelt-int-rv32.ll

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
define signext i8 @extractelt_nxv1i8_0(<vscale x 1 x i8> %v) {
99
; CHECK-LABEL: extractelt_nxv1i8_0:
1010
; CHECK: # %bb.0:
11-
; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
11+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
1212
; CHECK-NEXT: vmv.x.s a0, v8
1313
; CHECK-NEXT: ret
1414
%r = extractelement <vscale x 1 x i8> %v, i32 0
@@ -40,7 +40,7 @@ define signext i8 @extractelt_nxv1i8_idx(<vscale x 1 x i8> %v, i32 %idx) {
4040
define signext i8 @extractelt_nxv2i8_0(<vscale x 2 x i8> %v) {
4141
; CHECK-LABEL: extractelt_nxv2i8_0:
4242
; CHECK: # %bb.0:
43-
; CHECK-NEXT: vsetivli zero, 1, e8, mf4, ta, ma
43+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
4444
; CHECK-NEXT: vmv.x.s a0, v8
4545
; CHECK-NEXT: ret
4646
%r = extractelement <vscale x 2 x i8> %v, i32 0
@@ -72,7 +72,7 @@ define signext i8 @extractelt_nxv2i8_idx(<vscale x 2 x i8> %v, i32 %idx) {
7272
define signext i8 @extractelt_nxv4i8_0(<vscale x 4 x i8> %v) {
7373
; CHECK-LABEL: extractelt_nxv4i8_0:
7474
; CHECK: # %bb.0:
75-
; CHECK-NEXT: vsetivli zero, 1, e8, mf2, ta, ma
75+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
7676
; CHECK-NEXT: vmv.x.s a0, v8
7777
; CHECK-NEXT: ret
7878
%r = extractelement <vscale x 4 x i8> %v, i32 0
@@ -232,7 +232,7 @@ define signext i8 @extractelt_nxv64i8_idx(<vscale x 64 x i8> %v, i32 %idx) {
232232
define signext i16 @extractelt_nxv1i16_0(<vscale x 1 x i16> %v) {
233233
; CHECK-LABEL: extractelt_nxv1i16_0:
234234
; CHECK: # %bb.0:
235-
; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
235+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
236236
; CHECK-NEXT: vmv.x.s a0, v8
237237
; CHECK-NEXT: ret
238238
%r = extractelement <vscale x 1 x i16> %v, i32 0
@@ -264,7 +264,7 @@ define signext i16 @extractelt_nxv1i16_idx(<vscale x 1 x i16> %v, i32 %idx) {
264264
define signext i16 @extractelt_nxv2i16_0(<vscale x 2 x i16> %v) {
265265
; CHECK-LABEL: extractelt_nxv2i16_0:
266266
; CHECK: # %bb.0:
267-
; CHECK-NEXT: vsetivli zero, 1, e16, mf2, ta, ma
267+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
268268
; CHECK-NEXT: vmv.x.s a0, v8
269269
; CHECK-NEXT: ret
270270
%r = extractelement <vscale x 2 x i16> %v, i32 0
@@ -424,7 +424,7 @@ define signext i16 @extractelt_nxv32i16_idx(<vscale x 32 x i16> %v, i32 %idx) {
424424
define i32 @extractelt_nxv1i32_0(<vscale x 1 x i32> %v) {
425425
; CHECK-LABEL: extractelt_nxv1i32_0:
426426
; CHECK: # %bb.0:
427-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
427+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
428428
; CHECK-NEXT: vmv.x.s a0, v8
429429
; CHECK-NEXT: ret
430430
%r = extractelement <vscale x 1 x i32> %v, i32 0

llvm/test/CodeGen/RISCV/rvv/extractelt-int-rv64.ll

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
define signext i8 @extractelt_nxv1i8_0(<vscale x 1 x i8> %v) {
88
; CHECK-LABEL: extractelt_nxv1i8_0:
99
; CHECK: # %bb.0:
10-
; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
10+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
1111
; CHECK-NEXT: vmv.x.s a0, v8
1212
; CHECK-NEXT: ret
1313
%r = extractelement <vscale x 1 x i8> %v, i32 0
@@ -39,7 +39,7 @@ define signext i8 @extractelt_nxv1i8_idx(<vscale x 1 x i8> %v, i32 zeroext %idx)
3939
define signext i8 @extractelt_nxv2i8_0(<vscale x 2 x i8> %v) {
4040
; CHECK-LABEL: extractelt_nxv2i8_0:
4141
; CHECK: # %bb.0:
42-
; CHECK-NEXT: vsetivli zero, 1, e8, mf4, ta, ma
42+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
4343
; CHECK-NEXT: vmv.x.s a0, v8
4444
; CHECK-NEXT: ret
4545
%r = extractelement <vscale x 2 x i8> %v, i32 0
@@ -71,7 +71,7 @@ define signext i8 @extractelt_nxv2i8_idx(<vscale x 2 x i8> %v, i32 zeroext %idx)
7171
define signext i8 @extractelt_nxv4i8_0(<vscale x 4 x i8> %v) {
7272
; CHECK-LABEL: extractelt_nxv4i8_0:
7373
; CHECK: # %bb.0:
74-
; CHECK-NEXT: vsetivli zero, 1, e8, mf2, ta, ma
74+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
7575
; CHECK-NEXT: vmv.x.s a0, v8
7676
; CHECK-NEXT: ret
7777
%r = extractelement <vscale x 4 x i8> %v, i32 0
@@ -231,7 +231,7 @@ define signext i8 @extractelt_nxv64i8_idx(<vscale x 64 x i8> %v, i32 zeroext %id
231231
define signext i16 @extractelt_nxv1i16_0(<vscale x 1 x i16> %v) {
232232
; CHECK-LABEL: extractelt_nxv1i16_0:
233233
; CHECK: # %bb.0:
234-
; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
234+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
235235
; CHECK-NEXT: vmv.x.s a0, v8
236236
; CHECK-NEXT: ret
237237
%r = extractelement <vscale x 1 x i16> %v, i32 0
@@ -263,7 +263,7 @@ define signext i16 @extractelt_nxv1i16_idx(<vscale x 1 x i16> %v, i32 zeroext %i
263263
define signext i16 @extractelt_nxv2i16_0(<vscale x 2 x i16> %v) {
264264
; CHECK-LABEL: extractelt_nxv2i16_0:
265265
; CHECK: # %bb.0:
266-
; CHECK-NEXT: vsetivli zero, 1, e16, mf2, ta, ma
266+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
267267
; CHECK-NEXT: vmv.x.s a0, v8
268268
; CHECK-NEXT: ret
269269
%r = extractelement <vscale x 2 x i16> %v, i32 0
@@ -423,7 +423,7 @@ define signext i16 @extractelt_nxv32i16_idx(<vscale x 32 x i16> %v, i32 zeroext
423423
define signext i32 @extractelt_nxv1i32_0(<vscale x 1 x i32> %v) {
424424
; CHECK-LABEL: extractelt_nxv1i32_0:
425425
; CHECK: # %bb.0:
426-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
426+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
427427
; CHECK-NEXT: vmv.x.s a0, v8
428428
; CHECK-NEXT: ret
429429
%r = extractelement <vscale x 1 x i32> %v, i32 0

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-bitcast.ll

+13-13
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ define <32 x i1> @bitcast_v4i8_v32i1(<4 x i8> %a, <32 x i1> %b) {
3232
define i8 @bitcast_v1i8_i8(<1 x i8> %a) {
3333
; CHECK-LABEL: bitcast_v1i8_i8:
3434
; CHECK: # %bb.0:
35-
; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, ma
35+
; CHECK-NEXT: vsetivli zero, 1, e8, m1, ta, ma
3636
; CHECK-NEXT: vmv.x.s a0, v8
3737
; CHECK-NEXT: ret
3838
;
3939
; ELEN32-LABEL: bitcast_v1i8_i8:
4040
; ELEN32: # %bb.0:
41-
; ELEN32-NEXT: vsetivli zero, 1, e8, mf4, ta, ma
41+
; ELEN32-NEXT: vsetivli zero, 1, e8, m1, ta, ma
4242
; ELEN32-NEXT: vmv.x.s a0, v8
4343
; ELEN32-NEXT: ret
4444
%b = bitcast <1 x i8> %a to i8
@@ -48,13 +48,13 @@ define i8 @bitcast_v1i8_i8(<1 x i8> %a) {
4848
define i16 @bitcast_v2i8_i16(<2 x i8> %a) {
4949
; CHECK-LABEL: bitcast_v2i8_i16:
5050
; CHECK: # %bb.0:
51-
; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
51+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
5252
; CHECK-NEXT: vmv.x.s a0, v8
5353
; CHECK-NEXT: ret
5454
;
5555
; ELEN32-LABEL: bitcast_v2i8_i16:
5656
; ELEN32: # %bb.0:
57-
; ELEN32-NEXT: vsetivli zero, 1, e16, mf2, ta, ma
57+
; ELEN32-NEXT: vsetivli zero, 1, e16, m1, ta, ma
5858
; ELEN32-NEXT: vmv.x.s a0, v8
5959
; ELEN32-NEXT: ret
6060
%b = bitcast <2 x i8> %a to i16
@@ -64,13 +64,13 @@ define i16 @bitcast_v2i8_i16(<2 x i8> %a) {
6464
define i16 @bitcast_v1i16_i16(<1 x i16> %a) {
6565
; CHECK-LABEL: bitcast_v1i16_i16:
6666
; CHECK: # %bb.0:
67-
; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
67+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
6868
; CHECK-NEXT: vmv.x.s a0, v8
6969
; CHECK-NEXT: ret
7070
;
7171
; ELEN32-LABEL: bitcast_v1i16_i16:
7272
; ELEN32: # %bb.0:
73-
; ELEN32-NEXT: vsetivli zero, 1, e16, mf2, ta, ma
73+
; ELEN32-NEXT: vsetivli zero, 1, e16, m1, ta, ma
7474
; ELEN32-NEXT: vmv.x.s a0, v8
7575
; ELEN32-NEXT: ret
7676
%b = bitcast <1 x i16> %a to i16
@@ -80,7 +80,7 @@ define i16 @bitcast_v1i16_i16(<1 x i16> %a) {
8080
define i32 @bitcast_v4i8_i32(<4 x i8> %a) {
8181
; CHECK-LABEL: bitcast_v4i8_i32:
8282
; CHECK: # %bb.0:
83-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
83+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
8484
; CHECK-NEXT: vmv.x.s a0, v8
8585
; CHECK-NEXT: ret
8686
;
@@ -96,7 +96,7 @@ define i32 @bitcast_v4i8_i32(<4 x i8> %a) {
9696
define i32 @bitcast_v2i16_i32(<2 x i16> %a) {
9797
; CHECK-LABEL: bitcast_v2i16_i32:
9898
; CHECK: # %bb.0:
99-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
99+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
100100
; CHECK-NEXT: vmv.x.s a0, v8
101101
; CHECK-NEXT: ret
102102
;
@@ -112,7 +112,7 @@ define i32 @bitcast_v2i16_i32(<2 x i16> %a) {
112112
define i32 @bitcast_v1i32_i32(<1 x i32> %a) {
113113
; CHECK-LABEL: bitcast_v1i32_i32:
114114
; CHECK: # %bb.0:
115-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
115+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
116116
; CHECK-NEXT: vmv.x.s a0, v8
117117
; CHECK-NEXT: ret
118118
;
@@ -433,13 +433,13 @@ define double @bitcast_v1i64_f64(<1 x i64> %a) {
433433
define <1 x i16> @bitcast_i16_v1i16(i16 %a) {
434434
; CHECK-LABEL: bitcast_i16_v1i16:
435435
; CHECK: # %bb.0:
436-
; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, ma
436+
; CHECK-NEXT: vsetivli zero, 1, e16, m1, ta, ma
437437
; CHECK-NEXT: vmv.s.x v8, a0
438438
; CHECK-NEXT: ret
439439
;
440440
; ELEN32-LABEL: bitcast_i16_v1i16:
441441
; ELEN32: # %bb.0:
442-
; ELEN32-NEXT: vsetivli zero, 1, e16, mf2, ta, ma
442+
; ELEN32-NEXT: vsetivli zero, 1, e16, m1, ta, ma
443443
; ELEN32-NEXT: vmv.s.x v8, a0
444444
; ELEN32-NEXT: ret
445445
%b = bitcast i16 %a to <1 x i16>
@@ -449,7 +449,7 @@ define <1 x i16> @bitcast_i16_v1i16(i16 %a) {
449449
define <2 x i16> @bitcast_i32_v2i16(i32 %a) {
450450
; CHECK-LABEL: bitcast_i32_v2i16:
451451
; CHECK: # %bb.0:
452-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
452+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
453453
; CHECK-NEXT: vmv.s.x v8, a0
454454
; CHECK-NEXT: ret
455455
;
@@ -465,7 +465,7 @@ define <2 x i16> @bitcast_i32_v2i16(i32 %a) {
465465
define <1 x i32> @bitcast_i32_v1i32(i32 %a) {
466466
; CHECK-LABEL: bitcast_i32_v1i32:
467467
; CHECK: # %bb.0:
468-
; CHECK-NEXT: vsetivli zero, 1, e32, mf2, ta, ma
468+
; CHECK-NEXT: vsetivli zero, 1, e32, m1, ta, ma
469469
; CHECK-NEXT: vmv.s.x v8, a0
470470
; CHECK-NEXT: ret
471471
;

0 commit comments

Comments
 (0)