You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[RISCV] Remove implicit $vl def on vleNff pseudos (llvm#143935)
In llvm#90049 we removed the side effect flag on the vleNff pseudos with the
reasoning that we modelled the effect of setting vl as an output
operand.
This extends this further by removing the implicit def on vl, inserting
it back in RISCVInsertVSETVLI when we also emit the PseudoReadVL.
The motiviation for this is to make it easier to handle vleff in more
places in RISCVVectorPeephole in a follow up patch, which in turn will
make migrating the last vmerge peephole over from RISCVISelDAGToDAG
easier.
Some of these tests claim that the vleff shouldn't be deleted when none
of its values are used, but these are from the initial commit in
3b5430e. I'm not sure if these still hold today?
This also moves the fault-only-first predicate to
RISCVInstrPredicates.td since we can't rely on the implicit vl operand
anymore.
tailcall {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i32} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr%base, i32%vl, i324)
@@ -77,8 +75,6 @@ entry:
77
75
definevoid@test_vlseg2ff_mask_dead_all(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr%base, i32%vl, <vscale x 16 x i1> %mask) {
78
76
; CHECK-LABEL: test_vlseg2ff_mask_dead_all:
79
77
; CHECK: # %bb.0: # %entry
80
-
; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu
81
-
; CHECK-NEXT: vlseg2e16ff.v v8, (a0), v0.t
82
78
; CHECK-NEXT: ret
83
79
entry:
84
80
tailcall {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i32} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr%base, <vscale x 16 x i1> %mask, i32%vl, i321, i324)
tailcall {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.triscv.vector.tuple_nxv32i8_2t(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) undef, ptr%base, i64%vl, i644)
@@ -77,8 +75,6 @@ entry:
77
75
definevoid@test_vlseg2ff_mask_dead_all(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr%base, i64%vl, <vscale x 16 x i1> %mask) {
78
76
; CHECK-LABEL: test_vlseg2ff_mask_dead_all:
79
77
; CHECK: # %bb.0: # %entry
80
-
; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, mu
81
-
; CHECK-NEXT: vlseg2e16ff.v v8, (a0), v0.t
82
78
; CHECK-NEXT: ret
83
79
entry:
84
80
tailcall {target("riscv.vector.tuple", <vscale x 32 x i8>, 2), i64} @llvm.riscv.vlseg2ff.mask.triscv.vector.tuple_nxv32i8_2t.nxv16i1(target("riscv.vector.tuple", <vscale x 32 x i8>, 2) %val, ptr%base, <vscale x 16 x i1> %mask, i64%vl, i641, i644)
0 commit comments