Skip to content

Commit fb3c822

Browse files
authored
[RISCV] canCreateUndefOrPoisonForTargetNode - RISCVISD::READ_VLENB nodes don't create undef/poison (#188231)
Fixes a number of regressions in an upcoming FREEZE patch
1 parent 4961700 commit fb3c822

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23476,6 +23476,8 @@ bool RISCVTargetLowering::canCreateUndefOrPoisonForTargetNode(
2347623476

2347723477
// TODO: Add more target nodes.
2347823478
switch (Op.getOpcode()) {
23479+
case RISCVISD::READ_VLENB:
23480+
return false;
2347923481
case RISCVISD::SLLW:
2348023482
case RISCVISD::SRAW:
2348123483
case RISCVISD::SRLW:

llvm/test/CodeGen/RISCV/rvv/cttz-elts.ll

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,19 @@ define i64 @ctz_nxv8i1_no_range(<vscale x 8 x i16> %a) {
109109
;
110110
; RV64-LABEL: ctz_nxv8i1_no_range:
111111
; RV64: # %bb.0:
112-
; RV64-NEXT: csrr a0, vlenb
113-
; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, ma
112+
; RV64-NEXT: vsetvli a0, zero, e64, m8, ta, ma
114113
; RV64-NEXT: vid.v v16
115-
; RV64-NEXT: li a1, -1
114+
; RV64-NEXT: li a0, -1
115+
; RV64-NEXT: csrr a1, vlenb
116116
; RV64-NEXT: vsetvli zero, zero, e16, m2, ta, ma
117117
; RV64-NEXT: vmsne.vi v0, v8, 0
118-
; RV64-NEXT: vsetvli zero, zero, e64, m8, ta, ma
119-
; RV64-NEXT: vmv.v.x v8, a0
120-
; RV64-NEXT: vmadd.vx v16, a1, v8
121-
; RV64-NEXT: vmv.v.i v8, 0
122-
; RV64-NEXT: vmerge.vvm v8, v8, v16, v0
123-
; RV64-NEXT: vredmaxu.vs v8, v8, v8
124-
; RV64-NEXT: vmv.x.s a1, v8
125-
; RV64-NEXT: sub a0, a0, a1
118+
; RV64-NEXT: vsetvli zero, zero, e64, m8, ta, mu
119+
; RV64-NEXT: vmul.vx v8, v16, a0
120+
; RV64-NEXT: vmv.v.i v16, 0
121+
; RV64-NEXT: vadd.vx v16, v8, a1, v0.t
122+
; RV64-NEXT: vredmaxu.vs v8, v16, v16
123+
; RV64-NEXT: vmv.x.s a0, v8
124+
; RV64-NEXT: sub a0, a1, a0
126125
; RV64-NEXT: ret
127126
%res = call i64 @llvm.experimental.cttz.elts.i64.nxv8i16(<vscale x 8 x i16> %a, i1 0)
128127
ret i64 %res

0 commit comments

Comments
 (0)