[PATCH] D95634: [PowerPC][Power10] Fix XXSPLI32DX not correctly exploiting specific cases

Nemanja Ivanovic via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 28 10:47:20 PST 2021


nemanjai accepted this revision.
nemanjai added a comment.
This revision is now accepted and ready to land.

LGTM as long as the nits are addressed on the commit.



================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:8611
       Subtarget.hasPrefixInstrs()) {
-    if (convertToNonDenormSingle(APSplatBits) &&
-        (Op->getValueType(0) == MVT::v2f64)) {
+    if ((Op->getValueType(0) == MVT::v2f64) &&
+        convertToNonDenormSingle(APSplatBits)) {
----------------
```
// Check the type first to short-circuit so we don't modify APSplatBits if
// this block isn't executed.
```


================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:8617
       return DAG.getBitcast(Op.getValueType(), SplatNode);
     } else if (APSplatBits.getBitWidth() == 64) {
       // We may lose precision, so we have to use XXSPLTI32DX.
----------------
We can get rid of this now that the problem is fixed (i.e. this can go back to just being an `else`).


================
Comment at: llvm/test/CodeGen/PowerPC/p10-splatImm32.ll:104
 
 define dso_local <16 x i8> @test_xxsplti32dx_10() {
 ; CHECK-LABEL: test_xxsplti32dx_10:
----------------
Get rid of this test case now. It is redundant.


================
Comment at: llvm/test/CodeGen/PowerPC/p10-splatImm32.ll:114
 
 ; FIXME: It appears that there is something wrong with the computation
 ;        of the 64-bit constant to splat so we cannot emit xxsplti32dx for
----------------
Get rid of this comment now, the FIXME has been addressed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D95634/new/

https://reviews.llvm.org/D95634



More information about the cfe-commits mailing list