[PATCH] D19825: Power9 - Add exploitation of vector load and store that do not require swaps

Nemanja Ivanovic via llvm-commits llvm-commits at lists.llvm.org
Fri May 20 00:17:57 PDT 2016


nemanjai added inline comments.

================
Comment at: test/CodeGen/PowerPC/swaps-le-1.ll:105
@@ -101,1 +104,3 @@
+; CHECK-P9-NOT: xxpermdi
+; CHECK-P9-NOT: xxswapd
 
----------------
cycheng wrote:
> ; CHECK-P9-NOT: xxswapd 
> 
> Looks like it has been covered by "-implicit-check-not xxswapd"?
> Or this is intentional?
Good point. I initially started by adding a bunch of CHECK-NOT's and then realized that adding the implicit one is easier.

================
Comment at: test/CodeGen/PowerPC/vsx-p9.ll:103
@@ +102,3 @@
+; CHECK: bl sink
+  %16 = load <1 x i128>, <1 x i128>* @uxa, align 16
+  %17 = load <1 x i128>, <1 x i128>* @uxb, align 16
----------------
cycheng wrote:
> I'm curious about that we don't add pattern match of i128 type for lxvs in PPCInstrVSX.td, but why it finally gets matched to lxvx?
The legalization code takes care of this as far as I remember.

================
Comment at: test/CodeGen/PowerPC/vsx_shuffle_le.ll:81
@@ +80,3 @@
+
+; CHECK-P9-LABEL: @test10
+; CHECK-P9: lxvx 0, 0, 3
----------------
cycheng wrote:
> So looks like use 'lxvd2x' can be more benefit?
> If it is true, then, of course we don't have to handle it in current milestone, just a todo in future.
Yes, I looked into this. I think this can actually be handled rather cleanly in the swap optimization pass. For situations where we actually want the value loaded to be permuted in the register, we can use the lxvd2x instruction.
However, such situations should be reasonably rare that we can defer this work as a "nice-to-have".


Repository:
  rL LLVM

http://reviews.llvm.org/D19825





More information about the llvm-commits mailing list