[PATCH] D129735: [WIP][RISCV] Add new pass to transform undef to pesudo for vector values.
Piyou Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 25 04:47:52 PDT 2022
BeMg added a comment.
In D129735#3875529 <https://reviews.llvm.org/D129735#3875529>, @craig.topper wrote:
> I remember now. It only miscompiles with `-riscv-enable-subreg-liveness`
>
> That produces
>
> foo: # @foo
> .cfi_startproc
> # %bb.0: # %loopIR.preheader.i.i
> vsetvli a0, zero, e16, mf4, ta, ma
> vid.v v8
> vadd.vi v10, v8, 1
> vadd.vi v12, v8, 3
> .LBB0_1: # %loopIR3.i.i
> # =>This Inner Loop Header: Depth=1
> vl1r.v v9, (zero)
> vsetivli zero, 4, e8, m1, ta, ma
> vrgatherei16.vv v11, v9, v8
> vrgatherei16.vv v13, v9, v10
> vsetvli a0, zero, e8, m1, ta, ma
> vand.vv v11, v11, v13
> vsetivli zero, 4, e8, m1, ta, ma
> vrgatherei16.vv v13, v9, v12 <- this instruction violates the early clobber constraint
> vsetvli a0, zero, e8, m1, ta, ma
> vand.vv v9, v11, v13
> vs1r.v v9, (zero)
> j .LBB0_1
> .Lfunc_end0:
> .size foo, .Lfunc_end0-foo
> .cfi_endproc
> # -- End function
> .section ".note.GNU-stack","", at progbits
Add one more condtion for subreg-liveness.
The assembly show as below:
.p2align 2 # -- Begin function foo
.type foo, at function
foo: # @foo
.cfi_startproc
# %bb.0: # %loopIR.preheader.i.i
vsetvli a0, zero, e16, mf4, ta, ma
vid.v v14
vadd.vi v15, v14, 1
vadd.vi v16, v14, 3
vmv1r.v v8, v14
vmv1r.v v10, v15
vmv1r.v v12, v16
.LBB0_1: # %loopIR3.i.i
# =>This Inner Loop Header: Depth=1
vl1r.v v14, (zero)
vsetivli zero, 4, e8, m1, ta, ma
vrgatherei16.vv v15, v14, v8
vrgatherei16.vv v16, v14, v10
vsetvli a0, zero, e8, m1, ta, ma
vand.vv v15, v15, v16
vsetivli zero, 4, e8, m1, ta, ma
vrgatherei16.vv v16, v14, v12
vsetvli a0, zero, e8, m1, ta, ma
vand.vv v14, v15, v16
vs1r.v v14, (zero)
j .LBB0_1
.Lfunc_end0:
.size foo, .Lfunc_end0-foo
.cfi_endproc
# -- End function
.section ".note.GNU-stack","", at progbits
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D129735/new/
https://reviews.llvm.org/D129735
More information about the llvm-commits
mailing list