Those vp intrinsics should be vp binary operations.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vmax-vp.ll | ||
---|---|---|
360 | I think these FIXMEs can be removed. The upper halves are now being removed, aren't they? I'm not sure what is causing that, but it's good news. |
Sorry that I am unclear to the context of VP_BINARY_OP, may elaborate on how adding VP_BINARY_OP helps the code generation?
My trace stopped at DAGCombiner.cpp where ISD::isVPBinaryOp() == true is setting `return value type to undef.
As you mentioned, DAGCombiner make vp binary op with evl = 0 or false mask be undefined value. The improvement in test cases is caused that there are some vp operations with evl = 0 is transformed to undef value by DAGCombiner.
llvm/test/CodeGen/RISCV/rvv/vmax-vp.ll | ||
---|---|---|
1170 | Why does RV64 not see the EVL is 0? |
llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vmax-vp.ll | ||
---|---|---|
360 | Done. | |
llvm/test/CodeGen/RISCV/rvv/vmax-vp.ll | ||
1170 | As the comment of the test illustrated, DAGCombiner could not transformed usubsat((and (vscale x 16), 0xffffffff), vscale x 16) to 0 before lowering. And vp binary operations are only existed before lowering. |
llvm/test/CodeGen/RISCV/rvv/vmax-vp.ll | ||
---|---|---|
1170 | Thanks. I didn't see the comment. |
I think these FIXMEs can be removed. The upper halves are now being removed, aren't they? I'm not sure what is causing that, but it's good news.