Skip to content

Commit ca36cc5

Browse files
committed
[RISCV] Match RVV VF variants also through masked operations
This brings floating-point RVV vector/scalar support more in line with the integer vector patterns, which can already match '.vx' instructions with masked operations. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D117697
1 parent d4a6bf4 commit ca36cc5

File tree

5 files changed

+74
-160
lines changed

5 files changed

+74
-160
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -363,32 +363,42 @@ multiclass VPatBinaryWVL_VV_VX<SDNode vop, string instruction_name> {
363363
}
364364
}
365365

366-
class VPatBinaryVL_VF<SDNode vop,
367-
string instruction_name,
368-
ValueType result_type,
369-
ValueType vop_type,
370-
ValueType mask_type,
371-
int sew,
372-
LMULInfo vlmul,
373-
VReg vop_reg_class,
374-
RegisterClass scalar_reg_class> :
375-
Pat<(result_type (vop (vop_type vop_reg_class:$rs1),
376-
(vop_type (SplatFPOp scalar_reg_class:$rs2)),
377-
(mask_type true_mask),
378-
VLOpFrag)),
366+
multiclass VPatBinaryVL_VF<SDNode vop,
367+
string instruction_name,
368+
ValueType result_type,
369+
ValueType vop_type,
370+
ValueType mask_type,
371+
int sew,
372+
LMULInfo vlmul,
373+
VReg vop_reg_class,
374+
RegisterClass scalar_reg_class> {
375+
def : Pat<(result_type (vop (vop_type vop_reg_class:$rs1),
376+
(vop_type (SplatFPOp scalar_reg_class:$rs2)),
377+
(mask_type true_mask),
378+
VLOpFrag)),
379379
(!cast<Instruction>(instruction_name#"_"#vlmul.MX)
380380
vop_reg_class:$rs1,
381381
scalar_reg_class:$rs2,
382382
GPR:$vl, sew)>;
383+
def : Pat<(result_type (vop (vop_type vop_reg_class:$rs1),
384+
(vop_type (SplatFPOp scalar_reg_class:$rs2)),
385+
(mask_type V0),
386+
VLOpFrag)),
387+
(!cast<Instruction>(instruction_name#"_"#vlmul.MX#"_MASK")
388+
(result_type (IMPLICIT_DEF)),
389+
vop_reg_class:$rs1,
390+
scalar_reg_class:$rs2,
391+
(mask_type V0), GPR:$vl, sew, TAIL_AGNOSTIC)>;
392+
}
383393

384394
multiclass VPatBinaryFPVL_VV_VF<SDNode vop, string instruction_name> {
385395
foreach vti = AllFloatVectors in {
386396
defm : VPatBinaryVL_VV<vop, instruction_name,
387397
vti.Vector, vti.Vector, vti.Mask, vti.Log2SEW,
388398
vti.LMul, vti.RegClass>;
389-
def : VPatBinaryVL_VF<vop, instruction_name#"_V"#vti.ScalarSuffix,
390-
vti.Vector, vti.Vector, vti.Mask, vti.Log2SEW,
391-
vti.LMul, vti.RegClass, vti.ScalarRegClass>;
399+
defm : VPatBinaryVL_VF<vop, instruction_name#"_V"#vti.ScalarSuffix,
400+
vti.Vector, vti.Vector, vti.Mask, vti.Log2SEW,
401+
vti.LMul, vti.RegClass, vti.ScalarRegClass>;
392402
}
393403
}
394404

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfadd-vp.ll

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@ define <2 x half> @vfadd_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %b, i32 ze
3131
define <2 x half> @vfadd_vf_v2f16(<2 x half> %va, half %b, <2 x i1> %m, i32 zeroext %evl) {
3232
; CHECK-LABEL: vfadd_vf_v2f16:
3333
; CHECK: # %bb.0:
34-
; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu
35-
; CHECK-NEXT: vfmv.v.f v9, fa0
3634
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
37-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
35+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
3836
; CHECK-NEXT: ret
3937
%elt.head = insertelement <2 x half> undef, half %b, i32 0
4038
%vb = shufflevector <2 x half> %elt.head, <2 x half> undef, <2 x i32> zeroinitializer
@@ -95,10 +93,8 @@ define <4 x half> @vfadd_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %b, i32 ze
9593
define <4 x half> @vfadd_vf_v4f16(<4 x half> %va, half %b, <4 x i1> %m, i32 zeroext %evl) {
9694
; CHECK-LABEL: vfadd_vf_v4f16:
9795
; CHECK: # %bb.0:
98-
; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
99-
; CHECK-NEXT: vfmv.v.f v9, fa0
10096
; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
101-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
97+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
10298
; CHECK-NEXT: ret
10399
%elt.head = insertelement <4 x half> undef, half %b, i32 0
104100
%vb = shufflevector <4 x half> %elt.head, <4 x half> undef, <4 x i32> zeroinitializer
@@ -147,10 +143,8 @@ define <8 x half> @vfadd_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %b, i32 ze
147143
define <8 x half> @vfadd_vf_v8f16(<8 x half> %va, half %b, <8 x i1> %m, i32 zeroext %evl) {
148144
; CHECK-LABEL: vfadd_vf_v8f16:
149145
; CHECK: # %bb.0:
150-
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
151-
; CHECK-NEXT: vfmv.v.f v9, fa0
152146
; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
153-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
147+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
154148
; CHECK-NEXT: ret
155149
%elt.head = insertelement <8 x half> undef, half %b, i32 0
156150
%vb = shufflevector <8 x half> %elt.head, <8 x half> undef, <8 x i32> zeroinitializer
@@ -199,10 +193,8 @@ define <16 x half> @vfadd_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %b, i3
199193
define <16 x half> @vfadd_vf_v16f16(<16 x half> %va, half %b, <16 x i1> %m, i32 zeroext %evl) {
200194
; CHECK-LABEL: vfadd_vf_v16f16:
201195
; CHECK: # %bb.0:
202-
; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu
203-
; CHECK-NEXT: vfmv.v.f v10, fa0
204196
; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
205-
; CHECK-NEXT: vfadd.vv v8, v8, v10, v0.t
197+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
206198
; CHECK-NEXT: ret
207199
%elt.head = insertelement <16 x half> undef, half %b, i32 0
208200
%vb = shufflevector <16 x half> %elt.head, <16 x half> undef, <16 x i32> zeroinitializer
@@ -251,10 +243,8 @@ define <2 x float> @vfadd_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %b, i32
251243
define <2 x float> @vfadd_vf_v2f32(<2 x float> %va, float %b, <2 x i1> %m, i32 zeroext %evl) {
252244
; CHECK-LABEL: vfadd_vf_v2f32:
253245
; CHECK: # %bb.0:
254-
; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
255-
; CHECK-NEXT: vfmv.v.f v9, fa0
256246
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
257-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
247+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
258248
; CHECK-NEXT: ret
259249
%elt.head = insertelement <2 x float> undef, float %b, i32 0
260250
%vb = shufflevector <2 x float> %elt.head, <2 x float> undef, <2 x i32> zeroinitializer
@@ -303,10 +293,8 @@ define <4 x float> @vfadd_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %b, i32
303293
define <4 x float> @vfadd_vf_v4f32(<4 x float> %va, float %b, <4 x i1> %m, i32 zeroext %evl) {
304294
; CHECK-LABEL: vfadd_vf_v4f32:
305295
; CHECK: # %bb.0:
306-
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
307-
; CHECK-NEXT: vfmv.v.f v9, fa0
308296
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
309-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
297+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
310298
; CHECK-NEXT: ret
311299
%elt.head = insertelement <4 x float> undef, float %b, i32 0
312300
%vb = shufflevector <4 x float> %elt.head, <4 x float> undef, <4 x i32> zeroinitializer
@@ -355,10 +343,8 @@ define <8 x float> @vfadd_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %b, i32
355343
define <8 x float> @vfadd_vf_v8f32(<8 x float> %va, float %b, <8 x i1> %m, i32 zeroext %evl) {
356344
; CHECK-LABEL: vfadd_vf_v8f32:
357345
; CHECK: # %bb.0:
358-
; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu
359-
; CHECK-NEXT: vfmv.v.f v10, fa0
360346
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
361-
; CHECK-NEXT: vfadd.vv v8, v8, v10, v0.t
347+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
362348
; CHECK-NEXT: ret
363349
%elt.head = insertelement <8 x float> undef, float %b, i32 0
364350
%vb = shufflevector <8 x float> %elt.head, <8 x float> undef, <8 x i32> zeroinitializer
@@ -407,10 +393,8 @@ define <16 x float> @vfadd_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %b,
407393
define <16 x float> @vfadd_vf_v16f32(<16 x float> %va, float %b, <16 x i1> %m, i32 zeroext %evl) {
408394
; CHECK-LABEL: vfadd_vf_v16f32:
409395
; CHECK: # %bb.0:
410-
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
411-
; CHECK-NEXT: vfmv.v.f v12, fa0
412396
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
413-
; CHECK-NEXT: vfadd.vv v8, v8, v12, v0.t
397+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
414398
; CHECK-NEXT: ret
415399
%elt.head = insertelement <16 x float> undef, float %b, i32 0
416400
%vb = shufflevector <16 x float> %elt.head, <16 x float> undef, <16 x i32> zeroinitializer
@@ -459,10 +443,8 @@ define <2 x double> @vfadd_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %b,
459443
define <2 x double> @vfadd_vf_v2f64(<2 x double> %va, double %b, <2 x i1> %m, i32 zeroext %evl) {
460444
; CHECK-LABEL: vfadd_vf_v2f64:
461445
; CHECK: # %bb.0:
462-
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
463-
; CHECK-NEXT: vfmv.v.f v9, fa0
464446
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
465-
; CHECK-NEXT: vfadd.vv v8, v8, v9, v0.t
447+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
466448
; CHECK-NEXT: ret
467449
%elt.head = insertelement <2 x double> undef, double %b, i32 0
468450
%vb = shufflevector <2 x double> %elt.head, <2 x double> undef, <2 x i32> zeroinitializer
@@ -511,10 +493,8 @@ define <4 x double> @vfadd_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %b,
511493
define <4 x double> @vfadd_vf_v4f64(<4 x double> %va, double %b, <4 x i1> %m, i32 zeroext %evl) {
512494
; CHECK-LABEL: vfadd_vf_v4f64:
513495
; CHECK: # %bb.0:
514-
; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu
515-
; CHECK-NEXT: vfmv.v.f v10, fa0
516496
; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
517-
; CHECK-NEXT: vfadd.vv v8, v8, v10, v0.t
497+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
518498
; CHECK-NEXT: ret
519499
%elt.head = insertelement <4 x double> undef, double %b, i32 0
520500
%vb = shufflevector <4 x double> %elt.head, <4 x double> undef, <4 x i32> zeroinitializer
@@ -563,10 +543,8 @@ define <8 x double> @vfadd_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %b,
563543
define <8 x double> @vfadd_vf_v8f64(<8 x double> %va, double %b, <8 x i1> %m, i32 zeroext %evl) {
564544
; CHECK-LABEL: vfadd_vf_v8f64:
565545
; CHECK: # %bb.0:
566-
; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu
567-
; CHECK-NEXT: vfmv.v.f v12, fa0
568546
; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
569-
; CHECK-NEXT: vfadd.vv v8, v8, v12, v0.t
547+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
570548
; CHECK-NEXT: ret
571549
%elt.head = insertelement <8 x double> undef, double %b, i32 0
572550
%vb = shufflevector <8 x double> %elt.head, <8 x double> undef, <8 x i32> zeroinitializer
@@ -615,10 +593,8 @@ define <16 x double> @vfadd_vv_v16f64_unmasked(<16 x double> %va, <16 x double>
615593
define <16 x double> @vfadd_vf_v16f64(<16 x double> %va, double %b, <16 x i1> %m, i32 zeroext %evl) {
616594
; CHECK-LABEL: vfadd_vf_v16f64:
617595
; CHECK: # %bb.0:
618-
; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, mu
619-
; CHECK-NEXT: vfmv.v.f v16, fa0
620596
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu
621-
; CHECK-NEXT: vfadd.vv v8, v8, v16, v0.t
597+
; CHECK-NEXT: vfadd.vf v8, v8, fa0, v0.t
622598
; CHECK-NEXT: ret
623599
%elt.head = insertelement <16 x double> undef, double %b, i32 0
624600
%vb = shufflevector <16 x double> %elt.head, <16 x double> undef, <16 x i32> zeroinitializer

llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vfdiv-vp.ll

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@ define <2 x half> @vfdiv_vv_v2f16_unmasked(<2 x half> %va, <2 x half> %b, i32 ze
3131
define <2 x half> @vfdiv_vf_v2f16(<2 x half> %va, half %b, <2 x i1> %m, i32 zeroext %evl) {
3232
; CHECK-LABEL: vfdiv_vf_v2f16:
3333
; CHECK: # %bb.0:
34-
; CHECK-NEXT: vsetivli zero, 2, e16, mf4, ta, mu
35-
; CHECK-NEXT: vfmv.v.f v9, fa0
3634
; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, mu
37-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
35+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
3836
; CHECK-NEXT: ret
3937
%elt.head = insertelement <2 x half> undef, half %b, i32 0
4038
%vb = shufflevector <2 x half> %elt.head, <2 x half> undef, <2 x i32> zeroinitializer
@@ -95,10 +93,8 @@ define <4 x half> @vfdiv_vv_v4f16_unmasked(<4 x half> %va, <4 x half> %b, i32 ze
9593
define <4 x half> @vfdiv_vf_v4f16(<4 x half> %va, half %b, <4 x i1> %m, i32 zeroext %evl) {
9694
; CHECK-LABEL: vfdiv_vf_v4f16:
9795
; CHECK: # %bb.0:
98-
; CHECK-NEXT: vsetivli zero, 4, e16, mf2, ta, mu
99-
; CHECK-NEXT: vfmv.v.f v9, fa0
10096
; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, mu
101-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
97+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
10298
; CHECK-NEXT: ret
10399
%elt.head = insertelement <4 x half> undef, half %b, i32 0
104100
%vb = shufflevector <4 x half> %elt.head, <4 x half> undef, <4 x i32> zeroinitializer
@@ -147,10 +143,8 @@ define <8 x half> @vfdiv_vv_v8f16_unmasked(<8 x half> %va, <8 x half> %b, i32 ze
147143
define <8 x half> @vfdiv_vf_v8f16(<8 x half> %va, half %b, <8 x i1> %m, i32 zeroext %evl) {
148144
; CHECK-LABEL: vfdiv_vf_v8f16:
149145
; CHECK: # %bb.0:
150-
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
151-
; CHECK-NEXT: vfmv.v.f v9, fa0
152146
; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, mu
153-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
147+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
154148
; CHECK-NEXT: ret
155149
%elt.head = insertelement <8 x half> undef, half %b, i32 0
156150
%vb = shufflevector <8 x half> %elt.head, <8 x half> undef, <8 x i32> zeroinitializer
@@ -199,10 +193,8 @@ define <16 x half> @vfdiv_vv_v16f16_unmasked(<16 x half> %va, <16 x half> %b, i3
199193
define <16 x half> @vfdiv_vf_v16f16(<16 x half> %va, half %b, <16 x i1> %m, i32 zeroext %evl) {
200194
; CHECK-LABEL: vfdiv_vf_v16f16:
201195
; CHECK: # %bb.0:
202-
; CHECK-NEXT: vsetivli zero, 16, e16, m2, ta, mu
203-
; CHECK-NEXT: vfmv.v.f v10, fa0
204196
; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, mu
205-
; CHECK-NEXT: vfdiv.vv v8, v8, v10, v0.t
197+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
206198
; CHECK-NEXT: ret
207199
%elt.head = insertelement <16 x half> undef, half %b, i32 0
208200
%vb = shufflevector <16 x half> %elt.head, <16 x half> undef, <16 x i32> zeroinitializer
@@ -251,10 +243,8 @@ define <2 x float> @vfdiv_vv_v2f32_unmasked(<2 x float> %va, <2 x float> %b, i32
251243
define <2 x float> @vfdiv_vf_v2f32(<2 x float> %va, float %b, <2 x i1> %m, i32 zeroext %evl) {
252244
; CHECK-LABEL: vfdiv_vf_v2f32:
253245
; CHECK: # %bb.0:
254-
; CHECK-NEXT: vsetivli zero, 2, e32, mf2, ta, mu
255-
; CHECK-NEXT: vfmv.v.f v9, fa0
256246
; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, mu
257-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
247+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
258248
; CHECK-NEXT: ret
259249
%elt.head = insertelement <2 x float> undef, float %b, i32 0
260250
%vb = shufflevector <2 x float> %elt.head, <2 x float> undef, <2 x i32> zeroinitializer
@@ -303,10 +293,8 @@ define <4 x float> @vfdiv_vv_v4f32_unmasked(<4 x float> %va, <4 x float> %b, i32
303293
define <4 x float> @vfdiv_vf_v4f32(<4 x float> %va, float %b, <4 x i1> %m, i32 zeroext %evl) {
304294
; CHECK-LABEL: vfdiv_vf_v4f32:
305295
; CHECK: # %bb.0:
306-
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
307-
; CHECK-NEXT: vfmv.v.f v9, fa0
308296
; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, mu
309-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
297+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
310298
; CHECK-NEXT: ret
311299
%elt.head = insertelement <4 x float> undef, float %b, i32 0
312300
%vb = shufflevector <4 x float> %elt.head, <4 x float> undef, <4 x i32> zeroinitializer
@@ -355,10 +343,8 @@ define <8 x float> @vfdiv_vv_v8f32_unmasked(<8 x float> %va, <8 x float> %b, i32
355343
define <8 x float> @vfdiv_vf_v8f32(<8 x float> %va, float %b, <8 x i1> %m, i32 zeroext %evl) {
356344
; CHECK-LABEL: vfdiv_vf_v8f32:
357345
; CHECK: # %bb.0:
358-
; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, mu
359-
; CHECK-NEXT: vfmv.v.f v10, fa0
360346
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, mu
361-
; CHECK-NEXT: vfdiv.vv v8, v8, v10, v0.t
347+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
362348
; CHECK-NEXT: ret
363349
%elt.head = insertelement <8 x float> undef, float %b, i32 0
364350
%vb = shufflevector <8 x float> %elt.head, <8 x float> undef, <8 x i32> zeroinitializer
@@ -407,10 +393,8 @@ define <16 x float> @vfdiv_vv_v16f32_unmasked(<16 x float> %va, <16 x float> %b,
407393
define <16 x float> @vfdiv_vf_v16f32(<16 x float> %va, float %b, <16 x i1> %m, i32 zeroext %evl) {
408394
; CHECK-LABEL: vfdiv_vf_v16f32:
409395
; CHECK: # %bb.0:
410-
; CHECK-NEXT: vsetivli zero, 16, e32, m4, ta, mu
411-
; CHECK-NEXT: vfmv.v.f v12, fa0
412396
; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, mu
413-
; CHECK-NEXT: vfdiv.vv v8, v8, v12, v0.t
397+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
414398
; CHECK-NEXT: ret
415399
%elt.head = insertelement <16 x float> undef, float %b, i32 0
416400
%vb = shufflevector <16 x float> %elt.head, <16 x float> undef, <16 x i32> zeroinitializer
@@ -459,10 +443,8 @@ define <2 x double> @vfdiv_vv_v2f64_unmasked(<2 x double> %va, <2 x double> %b,
459443
define <2 x double> @vfdiv_vf_v2f64(<2 x double> %va, double %b, <2 x i1> %m, i32 zeroext %evl) {
460444
; CHECK-LABEL: vfdiv_vf_v2f64:
461445
; CHECK: # %bb.0:
462-
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
463-
; CHECK-NEXT: vfmv.v.f v9, fa0
464446
; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, mu
465-
; CHECK-NEXT: vfdiv.vv v8, v8, v9, v0.t
447+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
466448
; CHECK-NEXT: ret
467449
%elt.head = insertelement <2 x double> undef, double %b, i32 0
468450
%vb = shufflevector <2 x double> %elt.head, <2 x double> undef, <2 x i32> zeroinitializer
@@ -511,10 +493,8 @@ define <4 x double> @vfdiv_vv_v4f64_unmasked(<4 x double> %va, <4 x double> %b,
511493
define <4 x double> @vfdiv_vf_v4f64(<4 x double> %va, double %b, <4 x i1> %m, i32 zeroext %evl) {
512494
; CHECK-LABEL: vfdiv_vf_v4f64:
513495
; CHECK: # %bb.0:
514-
; CHECK-NEXT: vsetivli zero, 4, e64, m2, ta, mu
515-
; CHECK-NEXT: vfmv.v.f v10, fa0
516496
; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, mu
517-
; CHECK-NEXT: vfdiv.vv v8, v8, v10, v0.t
497+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
518498
; CHECK-NEXT: ret
519499
%elt.head = insertelement <4 x double> undef, double %b, i32 0
520500
%vb = shufflevector <4 x double> %elt.head, <4 x double> undef, <4 x i32> zeroinitializer
@@ -563,10 +543,8 @@ define <8 x double> @vfdiv_vv_v8f64_unmasked(<8 x double> %va, <8 x double> %b,
563543
define <8 x double> @vfdiv_vf_v8f64(<8 x double> %va, double %b, <8 x i1> %m, i32 zeroext %evl) {
564544
; CHECK-LABEL: vfdiv_vf_v8f64:
565545
; CHECK: # %bb.0:
566-
; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, mu
567-
; CHECK-NEXT: vfmv.v.f v12, fa0
568546
; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, mu
569-
; CHECK-NEXT: vfdiv.vv v8, v8, v12, v0.t
547+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
570548
; CHECK-NEXT: ret
571549
%elt.head = insertelement <8 x double> undef, double %b, i32 0
572550
%vb = shufflevector <8 x double> %elt.head, <8 x double> undef, <8 x i32> zeroinitializer
@@ -615,10 +593,8 @@ define <16 x double> @vfdiv_vv_v16f64_unmasked(<16 x double> %va, <16 x double>
615593
define <16 x double> @vfdiv_vf_v16f64(<16 x double> %va, double %b, <16 x i1> %m, i32 zeroext %evl) {
616594
; CHECK-LABEL: vfdiv_vf_v16f64:
617595
; CHECK: # %bb.0:
618-
; CHECK-NEXT: vsetivli zero, 16, e64, m8, ta, mu
619-
; CHECK-NEXT: vfmv.v.f v16, fa0
620596
; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, mu
621-
; CHECK-NEXT: vfdiv.vv v8, v8, v16, v0.t
597+
; CHECK-NEXT: vfdiv.vf v8, v8, fa0, v0.t
622598
; CHECK-NEXT: ret
623599
%elt.head = insertelement <16 x double> undef, double %b, i32 0
624600
%vb = shufflevector <16 x double> %elt.head, <16 x double> undef, <16 x i32> zeroinitializer

0 commit comments

Comments
 (0)