[PATCH] D116584: [RISCV] Block vmsltu.vx/vmsgeu.vi with 0 immediate in Isel
Chenbing.Zheng via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 4 23:50:38 PST 2022
Chenbing.Zheng added inline comments.
================
Comment at: llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp:817
break;
+ case Intrinsic::riscv_vmsltu: {
+ SDValue Src1 = Node->getOperand(1);
----------------
craig.topper wrote:
> Chenbing.Zheng wrote:
> > craig.topper wrote:
> > > This could be done by using a new version of simm5_plus1 that excludes 0 in VPatCompare_VI for the vmsltu case.
> > New simm5_plus1 excludes 0, and I Keep pattern "defm : VPatCompareUnsignedZero<"int_riscv_vmsltu", "PseudoVMSNE">" to match vmsltu 0,and del this two case. Understanding right ?
> Remove the VPatCOmpareUnisignedZero. The vmsltu.vx will then be able to match. The 0 will select to X0.
I try it, but vmsleu.vi -1 still generate.
VPattern of vmsltu.vx is different from vmsltu.vi , it cause vmsltu.vx canot be match ?
So I keep these two cases, and delate VPatCompareUnsignedZero in my newest patch.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D116584/new/
https://reviews.llvm.org/D116584
More information about the llvm-commits
mailing list