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.   | |
| 10261 | Is it possible to have a swap on both sides?  | |
| 10271 | 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.  | |
| llvm/lib/Target/PowerPC/PPCISelLowering.cpp | ||
|---|---|---|
| 10261 | 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.