Skip to content

Commit c110e5b

Browse files
committed
[RISCV][VLOPT] Add fsqrt instruction to isSupportInstr
1 parent f1627e1 commit c110e5b

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ getOperandLog2EEW(const MachineOperand &MO, const MachineRegisterInfo *MRI) {
290290
return MILog2SEW;
291291
return 6;
292292
}
293-
294293
// Vector Integer Arithmetic Instructions
295294
// Vector Single-Width Integer Add and Subtract
296295
case RISCV::VADD_VI:
@@ -1141,6 +1140,10 @@ static bool isSupportedInstr(const MachineInstr &MI) {
11411140
case RISCV::VFNCVT_F_F_W:
11421141
case RISCV::VFNCVT_ROD_F_F_W:
11431142
case RISCV::VFNCVTBF16_F_F_W:
1143+
// Vector Floating-Point Square-Root Instruction
1144+
case RISCV::VFSQRT_V:
1145+
// Vector Floating-Point Reciprocal Square-Root Estimate Instruction
1146+
case RISCV::VFRSQRT7_V:
11441147
return true;
11451148
}
11461149

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1318,11 +1318,10 @@ define void @sqrt_v6bf16(ptr %x) {
13181318
; CHECK: # %bb.0:
13191319
; CHECK-NEXT: vsetivli zero, 6, e16, m1, ta, ma
13201320
; CHECK-NEXT: vle16.v v8, (a0)
1321-
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
13221321
; CHECK-NEXT: vfwcvtbf16.f.f.v v10, v8
13231322
; CHECK-NEXT: vsetvli zero, zero, e32, m2, ta, ma
13241323
; CHECK-NEXT: vfsqrt.v v8, v10
1325-
; CHECK-NEXT: vsetivli zero, 6, e16, m1, ta, ma
1324+
; CHECK-NEXT: vsetvli zero, zero, e16, m1, ta, ma
13261325
; CHECK-NEXT: vfncvtbf16.f.f.w v10, v8
13271326
; CHECK-NEXT: vse16.v v10, (a0)
13281327
; CHECK-NEXT: ret
@@ -1371,11 +1370,10 @@ define void @sqrt_v6f16(ptr %x) {
13711370
; ZVFHMIN: # %bb.0:
13721371
; ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma
13731372
; ZVFHMIN-NEXT: vle16.v v8, (a0)
1374-
; ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma
13751373
; ZVFHMIN-NEXT: vfwcvt.f.f.v v10, v8
13761374
; ZVFHMIN-NEXT: vsetvli zero, zero, e32, m2, ta, ma
13771375
; ZVFHMIN-NEXT: vfsqrt.v v8, v10
1378-
; ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma
1376+
; ZVFHMIN-NEXT: vsetvli zero, zero, e16, m1, ta, ma
13791377
; ZVFHMIN-NEXT: vfncvt.f.f.w v10, v8
13801378
; ZVFHMIN-NEXT: vse16.v v10, (a0)
13811379
; ZVFHMIN-NEXT: ret

llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,26 @@ body: |
141141
%y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 4 /* e16 */, 0
142142
...
143143
---
144+
name: vfsqr
145+
body: |
146+
bb.0:
147+
; CHECK-LABEL: name: vfsqr
148+
; CHECK: %x:vrm2 = nofpexcept PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 6, 5 /* e32 */, 3 /* ta, ma */, implicit $frm
149+
; CHECK-NEXT: early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4 /* e16 */, 3 /* ta, ma */, implicit $frm
150+
%x:vrm2 = nofpexcept PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5, 3, implicit $frm
151+
early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4, 3, implicit $frm
152+
...
153+
---
154+
name: vfsqr_nofpexcept
155+
body: |
156+
bb.0:
157+
; CHECK-LABEL: name: vfsqr_nofpexcept
158+
; CHECK: %x:vrm2 = PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5 /* e32 */, 3 /* ta, ma */, implicit $frm
159+
; CHECK-NEXT: early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4 /* e16 */, 3 /* ta, ma */, implicit $frm
160+
%x:vrm2 = PseudoVFSQRT_V_M2_E32 $noreg, $noreg, 7, 8, 5, 3, implicit $frm
161+
early-clobber %y:vr = nofpexcept PseudoVFNCVTBF16_F_F_W_M1_E16 $noreg, %x, 7, 6, 4, 3, implicit $frm
162+
...
163+
---
144164
name: vwadd_tied_vs1
145165
body: |
146166
bb.0:

0 commit comments

Comments
 (0)