[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