Skip to content

Commit f337bb1

Browse files
committed
Precommit tests
1 parent 7620011 commit f337bb1

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,37 @@ define void @optimize_ternary_use(<vscale x 4 x i16> %a, <vscale x 4 x i32> %b,
217217
call void @llvm.riscv.vse(<vscale x 4 x i32> %3, ptr %p, iXLen %vl)
218218
ret void
219219
}
220+
221+
; This function has a copy between two vrm2 virtual registers, make sure we can
222+
; reduce vl between it.
223+
define void @fadd_fcmp_select_copy(<vscale x 4 x float> %v, <vscale x 4 x i1> %c, ptr %p, iXLen %vl) {
224+
; NOVLOPT-LABEL: fadd_fcmp_select_copy:
225+
; NOVLOPT: # %bb.0:
226+
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
227+
; NOVLOPT-NEXT: vfadd.vv v8, v8, v8
228+
; NOVLOPT-NEXT: fmv.w.x fa5, zero
229+
; NOVLOPT-NEXT: vmflt.vf v10, v8, fa5
230+
; NOVLOPT-NEXT: vmand.mm v10, v0, v10
231+
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
232+
; NOVLOPT-NEXT: vse32.v v8, (a0)
233+
; NOVLOPT-NEXT: vsm.v v10, (a0)
234+
; NOVLOPT-NEXT: ret
235+
;
236+
; VLOPT-LABEL: fadd_fcmp_select_copy:
237+
; VLOPT: # %bb.0:
238+
; VLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
239+
; VLOPT-NEXT: vfadd.vv v8, v8, v8
240+
; VLOPT-NEXT: fmv.w.x fa5, zero
241+
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
242+
; VLOPT-NEXT: vmflt.vf v10, v8, fa5
243+
; VLOPT-NEXT: vmand.mm v10, v0, v10
244+
; VLOPT-NEXT: vse32.v v8, (a0)
245+
; VLOPT-NEXT: vsm.v v10, (a0)
246+
; VLOPT-NEXT: ret
247+
%fadd = fadd <vscale x 4 x float> %v, %v
248+
%fcmp = fcmp olt <vscale x 4 x float> %fadd, zeroinitializer
249+
%select = select <vscale x 4 x i1> %c, <vscale x 4 x i1> %fcmp, <vscale x 4 x i1> zeroinitializer
250+
call void @llvm.riscv.vse(<vscale x 4 x float> %fadd, ptr %p, iXLen %vl)
251+
call void @llvm.riscv.vsm(<vscale x 4 x i1> %select, ptr %p, iXLen %vl)
252+
ret void
253+
}

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,41 @@ body: |
290290
%x:vr = PseudoVSADDU_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */, implicit-def $vxsat
291291
%y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
292292
...
293+
---
294+
name: copy
295+
body: |
296+
bb.0:
297+
; CHECK-LABEL: name: copy
298+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
299+
; CHECK-NEXT: %y:vr = COPY %x
300+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
301+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
302+
%y:vr = COPY %x
303+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
304+
...
305+
---
306+
name: copy_multiple_users
307+
body: |
308+
bb.0:
309+
; CHECK-LABEL: name: copy_multiple_users
310+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
311+
; CHECK-NEXT: %y:vr = COPY %x
312+
; CHECK-NEXT: %z0:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
313+
; CHECK-NEXT: %z1:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 3, 3 /* e8 */, 0 /* tu, mu */
314+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
315+
%y:vr = COPY %x
316+
%z0:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
317+
%z1:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 3, 3 /* e8 */, 0 /* tu, mu */
318+
...
319+
---
320+
name: copy_user_invalid_sew
321+
body: |
322+
bb.0:
323+
; CHECK-LABEL: name: copy_user_invalid_sew
324+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
325+
; CHECK-NEXT: %y:vr = COPY %x
326+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
327+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
328+
%y:vr = COPY %x
329+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 4 /* e16 */, 0 /* tu, mu */
330+
...

0 commit comments

Comments
 (0)