[PATCH] D20310: Teach LLVM about Power 9 D-Form VSX Instructions
Chuang-Yu Cheng via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 15 03:39:10 PDT 2016
cycheng added a comment.
In http://reviews.llvm.org/D20310#457783, @amehsan wrote:
> As we discussed, before you commit the change, please add -verify-machineinstrs to your regression tests. No need to upload the patch again. Thanks.
Done! Thanks!
Hi Hal,
Looks like we can eliminate my stack slot tracking by force using STXVD2X/LXVD2X when HasVSX is true. I have tested my full test-set, we only need to update 2 llc test cases.
By the way, Spec2006 config I used in testing:
1. -m64 -O3 -mcpu=power8
2. -m64 -O1 -mcpu=power8 -mno-vsx
CY
================
Comment at: lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp:451
@@ +450,3 @@
+ // (Please synchronize with PPCAsmPrinter::printOperand)
+ if ((MII.get(MI->getOpcode()).TSFlags & PPCII::UseVSXReg)) {
+ if (isVRRegister(Reg))
----------------
hfinkel wrote:
> Can you please use something like this instead:
>
> MI->getDesc().OpInfo[MO's index].RegClass == PPC::VFRCRegClassID
>
> and then get rid of the UseVSXReg flag?
1. I tried it, but I got failed, the reason was: RegClass return Super Register Class name, i.e. VSRC in our case, so when I get VSRC, I won't be able to know it is VRRC or VSLRC. And we only want to translate VRRC, not VSLRC.
```
const MCInstrDesc &MCID = MI->getDesc();
if (MCID.TSFlags & PPCII::UseVSXReg) {
int RCID = MCID.OpInfo[OpNo].RegClass;
if (RCID == PPC::VRRCRegClassID)
Reg = PPC::VSX32 + (Reg - PPC::V0);
else if (RCID == PPC::VFRCRegClassID)
Reg = PPC::VSX32 + (Reg - PPC::VF0);
}
```
2. Probably not! Because the information is not enough. When the input register is VRRC, I won't know whether it is Altivec instruction, or VSX instruction, I need a flag for this. (so I need to tag the information in PPCInstrVSX.td)
So when UseVSXReg == true:
1. MI is a VSX
2. MI uses VSX registers
when UseVSXReg == false:
1. MI can be a VSX or Altivec, but they both use Altivec registers
http://reviews.llvm.org/D20310
More information about the llvm-commits
mailing list