Skip to content

Commit 3f55135

Browse files
committed
Precommit tests
1 parent 8675cd3 commit 3f55135

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,3 +194,18 @@ define <vscale x 4 x i32> @dont_optimize_tied_def(<vscale x 4 x i32> %a, <vscale
194194
ret <vscale x 4 x i32> %2
195195
}
196196

197+
define void @optimize_ternary_use(<vscale x 4 x i16> %a, <vscale x 4 x i32> %b, <vscale x 4 x i32> %c, ptr %p, iXLen %vl) {
198+
; CHECK-LABEL: optimize_ternary_use:
199+
; CHECK: # %bb.0:
200+
; CHECK-NEXT: vsetvli a2, zero, e32, m2, ta, ma
201+
; CHECK-NEXT: vzext.vf2 v14, v8
202+
; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
203+
; CHECK-NEXT: vmadd.vv v14, v10, v12
204+
; CHECK-NEXT: vse32.v v14, (a0)
205+
; CHECK-NEXT: ret
206+
%1 = zext <vscale x 4 x i16> %a to <vscale x 4 x i32>
207+
%2 = mul <vscale x 4 x i32> %b, %1
208+
%3 = add <vscale x 4 x i32> %2, %c
209+
call void @llvm.riscv.vse(<vscale x 4 x i32> %3, ptr %p, iXLen %vl)
210+
ret void
211+
}

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,3 +209,64 @@ body: |
209209
bb.1:
210210
%y:vr = PseudoVADD_VV_M1 $noreg, %x, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
211211
PseudoRET
212+
...
213+
---
214+
# Can reduce %x even though %y uses it as a passthru, because %y's inactive elements aren't demanded
215+
name: passthru_not_demanded
216+
body: |
217+
bb.0:
218+
; CHECK-LABEL: name: passthru_not_demanded
219+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
220+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
221+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
222+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
223+
%y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
224+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
225+
...
226+
---
227+
# Can't reduce %x because %y uses it as a passthru, and %y's inactive elements are demanded by %z
228+
name: passthru_demanded
229+
body: |
230+
bb.0:
231+
; CHECK-LABEL: name: passthru_demanded
232+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
233+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
234+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
235+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
236+
%y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
237+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
238+
...
239+
---
240+
# Can reduce %x even though %y uses it as a passthru, because %y's inactive elements aren't demanded
241+
name: passthru_not_demanded_passthru_chain
242+
body: |
243+
bb.0:
244+
; CHECK-LABEL: name: passthru_not_demanded_passthru_chain
245+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
246+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
247+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
248+
; CHECK-NEXT: %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
249+
; CHECK-NEXT: %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
250+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
251+
%y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
252+
%z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
253+
%a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
254+
%b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
255+
...
256+
---
257+
# Can't reduce %x because %y uses it as a passthru, and %y's inactive elements are ultimately demanded in %b
258+
name: passthru_demanded_passthru_chain
259+
body: |
260+
bb.0:
261+
; CHECK-LABEL: name: passthru_demanded_passthru_chain
262+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
263+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
264+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
265+
; CHECK-NEXT: %a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
266+
; CHECK-NEXT: %b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
267+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
268+
%y:vr = PseudoVADD_VV_M1 %x, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
269+
%z:vr = PseudoVADD_VV_M1 %y, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
270+
%a:vr = PseudoVADD_VV_M1 %z, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
271+
%b:vr = PseudoVADD_VV_M1 $noreg, %a, $noreg, 2, 3 /* e8 */, 0 /* tu, mu */
272+
...

0 commit comments

Comments
 (0)