Commit rG934d5fa2b8672695c335deed0e19d0e777c98403 changed the vperm codegen
for cases that vperm is not replaced by xxperm, this patch is to revert that.
Details
- Reviewers
stefanp nemanjai - Commits
- rG7614ba0a5db8: [PowerPC] Fix vperm codegen
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Thank you for fixing this.
I do have a couple of comments related to the fix.
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
10204 | I don't think you need to bother with this extra ternary operator. | |
10265 | For this section how about: if (Opcode == PPCISD::XXPERM && (V1HasXXSWAPD || V2HasXXSWAPD)) { /// Same code as above but you don't need to check that (V1HasXXSWAPD || V2HasXXSWAPD) } You don't need to go into the if statement at all if there isn't at least one XXSWAPD. | |
10269 | Is it possible to have a swap on both sides? |
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
---|---|---|
10269 | I have not see such a case. |
@maryammo Please can you take a look at https://github.com/llvm/llvm-project/issues/61315 - it looks related to this patch (and D133700)
I don't think you need to bother with this extra ternary operator.
Everywhere you use V1HasXXSWAPD or V2HasXXSWAPD seems to already be guarded by Opcode == PPCISD::XXPERM so it doesn't matter what value those two bool values have in cases when you are not using the XXPERM oeprand.