[PATCH] D62908: [PowerPC] Improve float vector gather codegen
Nemanja Ivanovic via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 17 10:06:01 PDT 2019
nemanjai requested changes to this revision.
nemanjai added a comment.
Requesting changes because there is no BE support.
================
Comment at: llvm/lib/Target/PowerPC/PPCInstrVSX.td:3982
(COPY_TO_REGCLASS $A, VSRC), 0))>;
-
+ def : Pat<(v4f32 (build_vector (f32 (load xoaddr:$A)),
+ (f32 (load xoaddr:$B)),
----------------
jsji wrote:
> What about BigEndian?
Yes, by all means, we need BE support as well.
================
Comment at: llvm/lib/Target/PowerPC/PPCInstrVSX.td:3986
+ (f32 (load xoaddr:$D)))),
+ (v4f32 (XXPERMDI (XXMRGHW AlignValues.LD32D, AlignValues.LD32C),
+ (XXMRGHW AlignValues.LD32B, AlignValues.LD32A), 3))>;
----------------
jsji wrote:
> What is the benefit of merging 'AB', 'CD', instead of original 'AC', 'BD' then `vmrgew`?
>
> `vmrgew` is 2 cycle ALU instruction, should still be better than 3 cycler `xxpermdi` here.
We should favour the larger register file available to `XXPERMDI` here rather than `VMRGEW`.
Besides, where does the information about `XXPERMDI` taking 3 cycles come from? It is not listed in the UM and a similar instruction (`XXSEL` is a 2 cycle ALU instruction as well).
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62908/new/
https://reviews.llvm.org/D62908
More information about the llvm-commits
mailing list