Lines Matching full:ppc
16 #include "PPC.h"
53 EnableBasePointer("ppc-use-base-pointer", cl::Hidden, cl::init(true),
57 AlwaysBasePointer("ppc-always-use-base-pointer", cl::Hidden, cl::init(false),
61 : PPCGenRegisterInfo(TM.isPPC64() ? PPC::LR8 : PPC::LR,
65 ImmToIdxMap[PPC::LD] = PPC::LDX; ImmToIdxMap[PPC::STD] = PPC::STDX;
66 ImmToIdxMap[PPC::LBZ] = PPC::LBZX; ImmToIdxMap[PPC::STB] = PPC::STBX;
67 ImmToIdxMap[PPC::LHZ] = PPC::LHZX; ImmToIdxMap[PPC::LHA] = PPC::LHAX;
68 ImmToIdxMap[PPC::LWZ] = PPC::LWZX; ImmToIdxMap[PPC::LWA] = PPC::LWAX;
69 ImmToIdxMap[PPC::LFS] = PPC::LFSX; ImmToIdxMap[PPC::LFD] = PPC::LFDX;
70 ImmToIdxMap[PPC::STH] = PPC::STHX; ImmToIdxMap[PPC::STW] = PPC::STWX;
71 ImmToIdxMap[PPC::STFS] = PPC::STFSX; ImmToIdxMap[PPC::STFD] = PPC::STFDX;
72 ImmToIdxMap[PPC::ADDI] = PPC::ADD4;
73 ImmToIdxMap[PPC::LWA_32] = PPC::LWAX_32;
76 ImmToIdxMap[PPC::LHA8] = PPC::LHAX8; ImmToIdxMap[PPC::LBZ8] = PPC::LBZX8;
77 ImmToIdxMap[PPC::LHZ8] = PPC::LHZX8; ImmToIdxMap[PPC::LWZ8] = PPC::LWZX8;
78 ImmToIdxMap[PPC::STB8] = PPC::STBX8; ImmToIdxMap[PPC::STH8] = PPC::STHX8;
79 ImmToIdxMap[PPC::STW8] = PPC::STWX8; ImmToIdxMap[PPC::STDU] = PPC::STDUX;
80 ImmToIdxMap[PPC::ADDI8] = PPC::ADD8;
92 return &PPC::G8RC_NOX0RegClass;
93 return &PPC::GPRC_NOR0RegClass;
97 return &PPC::G8RCRegClass;
98 return &PPC::GPRCRegClass;
120 bool SaveR2 = MF->getRegInfo().isAllocatable(PPC::X2);
161 for (unsigned PseudoReg : {PPC::ZERO, PPC::ZERO8, PPC::RM})
172 Reserved.set(PPC::ZERO);
173 Reserved.set(PPC::ZERO8);
177 Reserved.set(PPC::FP);
178 Reserved.set(PPC::FP8);
182 Reserved.set(PPC::BP);
183 Reserved.set(PPC::BP8);
187 Reserved.set(PPC::CTR);
188 Reserved.set(PPC::CTR8);
190 Reserved.set(PPC::R1);
191 Reserved.set(PPC::LR);
192 Reserved.set(PPC::LR8);
193 Reserved.set(PPC::RM);
196 Reserved.set(PPC::VRSAVE);
200 Reserved.set(PPC::R2); // System-reserved register
201 Reserved.set(PPC::R13); // Small Data Area pointer register
206 Reserved.set(PPC::R13);
208 Reserved.set(PPC::X1);
209 Reserved.set(PPC::X13);
212 Reserved.set(PPC::X31);
215 Reserved.set(PPC::X30);
226 Reserved.set(PPC::X2);
228 Reserved.reset(PPC::R2);
233 Reserved.set(PPC::R31);
238 Reserved.set(PPC::R29);
240 Reserved.set(PPC::R30);
245 Reserved.set(PPC::R30);
249 for (TargetRegisterClass::iterator I = PPC::VRRCRegClass.begin(),
250 IE = PPC::VRRCRegClass.end(); I != IE; ++I)
264 case PPC::G8RC_NOX0RegClassID:
265 case PPC::GPRC_NOR0RegClassID:
266 case PPC::G8RCRegClassID:
267 case PPC::GPRCRegClassID: {
271 case PPC::F8RCRegClassID:
272 case PPC::F4RCRegClassID:
273 case PPC::QFRCRegClassID:
274 case PPC::QSRCRegClassID:
275 case PPC::QBRCRegClassID:
276 case PPC::VRRCRegClassID:
277 case PPC::VFRCRegClassID:
278 case PPC::VSLRCRegClassID:
279 case PPC::VSHRCRegClassID:
281 case PPC::VSRCRegClassID:
282 case PPC::VSFRCRegClassID:
283 case PPC::VSSRCRegClassID:
285 case PPC::CRRCRegClassID:
298 if (RC == &PPC::F8RCRegClass)
299 return &PPC::VSFRCRegClass;
300 else if (RC == &PPC::VRRCRegClass)
301 return &PPC::VSRCRegClass;
302 else if (RC == &PPC::F4RCRegClass && Subtarget.hasP8Vector())
303 return &PPC::VSSRCRegClass;
354 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
355 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
359 BuildMI(MBB, II, dl, TII.get(PPC::ADDI), Reg)
360 .addReg(PPC::R31)
363 BuildMI(MBB, II, dl, TII.get(PPC::LD), Reg)
365 .addReg(PPC::X1);
367 BuildMI(MBB, II, dl, TII.get(PPC::LWZ), Reg)
369 .addReg(PPC::R1);
384 BuildMI(MBB, II, dl, TII.get(PPC::LI8), NegSizeReg)
389 BuildMI(MBB, II, dl, TII.get(PPC::AND8), NegSizeReg)
395 BuildMI(MBB, II, dl, TII.get(PPC::STDUX), PPC::X1)
397 .addReg(PPC::X1)
399 BuildMI(MBB, II, dl, TII.get(PPC::ADDI8), MI.getOperand(0).getReg())
400 .addReg(PPC::X1)
409 BuildMI(MBB, II, dl, TII.get(PPC::LI), NegSizeReg)
414 BuildMI(MBB, II, dl, TII.get(PPC::AND), NegSizeReg)
420 BuildMI(MBB, II, dl, TII.get(PPC::STWUX), PPC::R1)
422 .addReg(PPC::R1)
424 BuildMI(MBB, II, dl, TII.get(PPC::ADDI), MI.getOperand(0).getReg())
425 .addReg(PPC::R1)
449 BuildMI(MBB, II, dl, TII.get(PPC::LI), MI.getOperand(0).getReg())
474 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
475 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
482 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::MFOCRF8 : PPC::MFOCRF), Reg)
487 if (SrcReg != PPC::CR0) {
492 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::RLWINM8 : PPC::RLWINM), Reg)
499 addFrameReference(BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::STW8 : PPC::STW))
519 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
520 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
527 addFrameReference(BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::LWZ8 : PPC::LWZ),
532 if (DestReg != PPC::CR0) {
538 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::RLWINM8 : PPC::RLWINM), Reg)
543 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::MTOCRF8 : PPC::MTOCRF), DestReg)
562 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
563 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
572 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::MFOCRF8 : PPC::MFOCRF), Reg)
581 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::RLWINM8 : PPC::RLWINM), Reg)
586 addFrameReference(BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::STW8 : PPC::STW))
606 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
607 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
614 addFrameReference(BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::LWZ8 : PPC::LWZ),
620 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::MFOCRF8 : PPC::MFOCRF), RegO)
625 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::RLWIMI8 : PPC::RLWIMI), RegO)
632 BuildMI(MBB, II, dl, TII.get(LP64 ? PPC::MTOCRF8 : PPC::MTOCRF),
655 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
659 BuildMI(MBB, II, dl, TII.get(PPC::MFVRSAVEv), Reg)
663 BuildMI(MBB, II, dl, TII.get(PPC::STW)).addReg(Reg, RegState::Kill),
681 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
687 addFrameReference(BuildMI(MBB, II, dl, TII.get(PPC::LWZ),
690 BuildMI(MBB, II, dl, TII.get(PPC::MTVRSAVEv), DestReg)
705 if (Subtarget.isSVR4ABI() && PPC::CR2 <= Reg && Reg <= PPC::CR4) {
725 case PPC::LWA:
726 case PPC::LWA_32:
727 case PPC::LD:
728 case PPC::STD:
778 if ((OpC == PPC::DYNAREAOFFSET || OpC == PPC::DYNAREAOFFSET8)) {
785 (OpC == PPC::DYNALLOC || OpC == PPC::DYNALLOC8)) {
791 if (OpC == PPC::SPILL_CR) {
794 } else if (OpC == PPC::RESTORE_CR) {
797 } else if (OpC == PPC::SPILL_CRBIT) {
800 } else if (OpC == PPC::RESTORE_CRBIT) {
803 } else if (OpC == PPC::SPILL_VRSAVE) {
806 } else if (OpC == PPC::RESTORE_VRSAVE) {
839 // normal PPC "ri" instruction, any 16-bit value can be safely encoded. If
844 assert(OpC != PPC::DBG_VALUE &&
857 const TargetRegisterClass *G8RC = &PPC::G8RCRegClass;
858 const TargetRegisterClass *GPRC = &PPC::GPRCRegClass;
864 PPC::LIS8 : PPC::LIS), SRegHi)
866 BuildMI(MBB, II, dl, TII.get(is64Bit ? PPC::ORI8 : PPC::ORI), SReg)
897 return TFI->hasFP(MF) ? PPC::R31 : PPC::R1;
899 return TFI->hasFP(MF) ? PPC::X31 : PPC::X1;
908 return PPC::X30;
912 return PPC::R29;
914 return PPC::R30;
951 if ((OpC == PPC::ADDI || OpC == PPC::ADDI8) &&
982 unsigned ADDriOpc = TM.isPPC64() ? PPC::ADDI8 : PPC::ADDI;
1037 return MI->getOpcode() == PPC::DBG_VALUE || // DBG_VALUE is always Reg+Imm