[PATCH] D113178: [PowerPC] use right register class for XXPERMDIs

ChenZheng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 4 03:35:33 PDT 2021


shchenz created this revision.
shchenz added reviewers: jsji, nemanjai, PowerPC.
Herald added subscribers: kbarton, hiraditya.
shchenz requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This is from code review comments for D106555 <https://reviews.llvm.org/D106555>

In D106555 <https://reviews.llvm.org/D106555>, after we added:

  def : Pat<(v2i64 (PPCzextldsplat ForceXForm:$A)),
            (v2i64 (XXPERMDIs (LFIWZX ForceXForm:$A), 0))>;
  def : Pat<(v2i64 (PPCsextldsplat ForceXForm:$A)),
            (v2i64 (XXPERMDIs (LFIWAX ForceXForm:$A), 0))>;

some LIT cases change the input for vector splat instruction from `vs0` to `f0`. But for vector splat instruction, like `xxspltd`, `vs0` makes more sense than `f0`.

This patch changes register class for `XXPERMDIs` from `vsfrc` to `vsrc`. Now `XXPERMDIs` has same input type with `XXPERMDI`. So that it needs a vector register instead of a scalar float register.

Some other vector instructions have same issue, like `XXSLDWI`/`XXSLDWIs`, `XXSPLTW`/`XXSPLTWs`.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D113178

Files:
  llvm/lib/Target/PowerPC/PPCInstrVSX.td
  llvm/test/CodeGen/PowerPC/build-vector-tests.ll
  llvm/test/CodeGen/PowerPC/canonical-merge-shuffles.ll
  llvm/test/CodeGen/PowerPC/load-and-splat.ll
  llvm/test/CodeGen/PowerPC/scalar_vector_test_3.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D113178.384696.patch
Type: text/x-patch
Size: 16763 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211104/4585ac81/attachment-0001.bin>


More information about the llvm-commits mailing list