Lines Matching full:ppc
16 #include "PPC.h"
148 return MRI.getRegClass(Register)->getID() == PPC::VSFRCRegClassID;
154 unsigned FP64LoadOpc = PPC::LFD);
207 static Optional<PPC::Predicate> getComparePred(CmpInst::Predicate Pred) {
219 return Optional<PPC::Predicate>();
223 return PPC::PRED_EQ;
228 return PPC::PRED_GT;
233 return PPC::PRED_GE;
238 return PPC::PRED_LT;
243 return PPC::PRED_LE;
247 return PPC::PRED_NE;
250 return PPC::PRED_NU;
253 return PPC::PRED_UN;
393 MRI.setRegClass(Addr.Base.Reg, &PPC::G8RC_and_G8RC_NOX0RegClass);
412 unsigned ResultReg = createResultReg(&PPC::G8RC_and_G8RC_NOX0RegClass);
413 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ADDI8),
448 (VT == MVT::f64 ? &PPC::F8RCRegClass :
449 (VT == MVT::f32 ? &PPC::F4RCRegClass :
450 (VT == MVT::i64 ? &PPC::G8RC_and_G8RC_NOX0RegClass :
451 &PPC::GPRC_and_GPRC_NOR0RegClass)))));
453 bool Is32BitInt = UseRC->hasSuperClassEq(&PPC::GPRCRegClass);
459 Opc = Is32BitInt ? PPC::LBZ : PPC::LBZ8;
463 (Is32BitInt ? PPC::LHZ : PPC::LHZ8) :
464 (Is32BitInt ? PPC::LHA : PPC::LHA8));
468 (Is32BitInt ? PPC::LWZ : PPC::LWZ8) :
469 (Is32BitInt ? PPC::LWA_32 : PPC::LWA));
470 if ((Opc == PPC::LWA || Opc == PPC::LWA_32) && ((Addr.Offset & 3) != 0))
474 Opc = PPC::LD;
475 assert(UseRC->hasSuperClassEq(&PPC::G8RCRegClass) &&
480 Opc = PPC::LFS;
495 if (IsVSFRC && (Opc == PPC::LFD) &&
509 if (IsVSFRC && Opc == PPC::LFD) return false;
523 if (IsVSFRC && Opc == PPC::LFD) return false;
535 case PPC::LBZ: Opc = PPC::LBZX; break;
536 case PPC::LBZ8: Opc = PPC::LBZX8; break;
537 case PPC::LHZ: Opc = PPC::LHZX; break;
538 case PPC::LHZ8: Opc = PPC::LHZX8; break;
539 case PPC::LHA: Opc = PPC::LHAX; break;
540 case PPC::LHA8: Opc = PPC::LHAX8; break;
541 case PPC::LWZ: Opc = PPC::LWZX; break;
542 case PPC::LWZ8: Opc = PPC::LWZX8; break;
543 case PPC::LWA: Opc = PPC::LWAX; break;
544 case PPC::LWA_32: Opc = PPC::LWAX_32; break;
545 case PPC::LD: Opc = PPC::LDX; break;
546 case PPC::LFS: Opc = PPC::LFSX; break;
547 case PPC::LFD: Opc = IsVSFRC ? PPC::LXSDX : PPC::LFDX; break;
593 bool Is32BitInt = RC->hasSuperClassEq(&PPC::GPRCRegClass);
599 Opc = Is32BitInt ? PPC::STB : PPC::STB8;
602 Opc = Is32BitInt ? PPC::STH : PPC::STH8;
606 Opc = PPC::STW;
609 Opc = PPC::STD;
613 Opc = PPC::STFS;
616 Opc = PPC::STFD;
628 if (IsVSFRC && (Opc == PPC::STFD) &&
639 if (IsVSFRC && Opc == PPC::STFD) return false;
656 if (IsVSFRC && Opc == PPC::STFD) return false;
668 case PPC::STB: Opc = PPC::STBX; break;
669 case PPC::STH : Opc = PPC::STHX; break;
670 case PPC::STW : Opc = PPC::STWX; break;
671 case PPC::STB8: Opc = PPC::STBX8; break;
672 case PPC::STH8: Opc = PPC::STHX8; break;
673 case PPC::STW8: Opc = PPC::STWX8; break;
674 case PPC::STD: Opc = PPC::STDX; break;
675 case PPC::STFS: Opc = PPC::STFSX; break;
676 case PPC::STFD: Opc = IsVSFRC ? PPC::STXSDX : PPC::STFDX; break;
689 MIB.addReg(PPC::ZERO8).addReg(Addr.Base.Reg);
734 Optional<PPC::Predicate> OptPPCPred = getComparePred(CI->getPredicate());
738 PPC::Predicate PPCPred = OptPPCPred.getValue();
743 PPCPred = PPC::InvertPredicate(PPCPred);
746 unsigned CondReg = createResultReg(&PPC::CRRCRegClass);
752 BuildMI(*BrBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::BCC))
812 CmpOpc = PPC::FCMPUS;
815 CmpOpc = PPC::FCMPUD;
824 CmpOpc = IsZExt ? PPC::CMPLW : PPC::CMPW;
826 CmpOpc = IsZExt ? PPC::CMPLWI : PPC::CMPWI;
830 CmpOpc = IsZExt ? PPC::CMPLD : PPC::CMPD;
832 CmpOpc = IsZExt ? PPC::CMPLDI : PPC::CMPDI;
848 unsigned ExtReg = createResultReg(&PPC::GPRCRegClass);
854 unsigned ExtReg = createResultReg(&PPC::GPRCRegClass);
903 unsigned DestReg = createResultReg(&PPC::F4RCRegClass);
904 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::FRSP), DestReg)
923 unsigned TmpReg = createResultReg(&PPC::G8RCRegClass);
940 unsigned LoadOpc = PPC::LFD;
944 LoadOpc = PPC::LFIWZX;
947 LoadOpc = PPC::LFIWAX;
952 const TargetRegisterClass *RC = &PPC::F8RCRegClass;
1002 unsigned TmpReg = createResultReg(&PPC::G8RCRegClass);
1015 const TargetRegisterClass *RC = &PPC::F8RCRegClass;
1020 Opc = IsSigned ? PPC::FCFIDS : PPC::FCFIDUS;
1022 Opc = IsSigned ? PPC::FCFID : PPC::FCFIDU;
1101 if (InRC == &PPC::F4RCRegClass) {
1102 unsigned TmpReg = createResultReg(&PPC::F8RCRegClass);
1105 .addReg(SrcReg).addImm(PPC::F8RCRegClassID);
1111 unsigned DestReg = createResultReg(&PPC::F8RCRegClass);
1116 Opc = PPC::FCTIWZ;
1118 Opc = PPCSubTarget->hasFPCVT() ? PPC::FCTIWUZ : PPC::FCTIDZ;
1120 Opc = IsSigned ? PPC::FCTIDZ : PPC::FCTIDUZ;
1151 &PPC::GPRC_and_GPRC_NOR0RegClass);
1152 bool IsGPRC = RC->hasSuperClassEq(&PPC::GPRCRegClass);
1158 Opc = IsGPRC ? PPC::ADD4 : PPC::ADD8;
1161 Opc = IsGPRC ? PPC::OR : PPC::OR8;
1164 Opc = IsGPRC ? PPC::SUBF : PPC::SUBF8;
1168 unsigned ResultReg = createResultReg(RC ? RC : &PPC::G8RCRegClass);
1181 case PPC::ADD4:
1182 Opc = PPC::ADDI;
1183 MRI.setRegClass(SrcReg1, &PPC::GPRC_and_GPRC_NOR0RegClass);
1185 case PPC::ADD8:
1186 Opc = PPC::ADDI8;
1187 MRI.setRegClass(SrcReg1, &PPC::G8RC_and_G8RC_NOX0RegClass);
1189 case PPC::OR:
1190 Opc = PPC::ORI;
1192 case PPC::OR8:
1193 Opc = PPC::ORI8;
1195 case PPC::SUBF:
1199 Opc = PPC::ADDI;
1200 MRI.setRegClass(SrcReg1, &PPC::GPRC_and_GPRC_NOR0RegClass);
1204 case PPC::SUBF8:
1208 Opc = PPC::ADDI8;
1209 MRI.setRegClass(SrcReg1, &PPC::G8RC_and_G8RC_NOX0RegClass);
1294 unsigned NextGPR = PPC::X3;
1295 unsigned NextFPR = PPC::F1;
1312 (DestVT == MVT::i64) ? &PPC::G8RCRegClass : &PPC::GPRCRegClass;
1324 (DestVT == MVT::i64) ? &PPC::G8RCRegClass : &PPC::GPRCRegClass;
1399 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::FRSP),
1407 ResultReg = createResultReg(&PPC::GPRCRegClass);
1409 PPC::X0 - PPC::R0;
1529 MIB = BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::NOP));
1536 TII.get(PPC::BL8_NOP));
1548 MIB.addReg(PPC::X2, RegState::Implicit);
1641 (DestVT == MVT::i64) ? &PPC::G8RCRegClass : &PPC::GPRCRegClass;
1650 (DestVT == MVT::i64) ? &PPC::G8RCRegClass : &PPC::GPRCRegClass;
1668 TII.get(PPC::BLR8));
1690 Opc = (DestVT == MVT::i32) ? PPC::EXTSB : PPC::EXTSB8_32_64;
1692 Opc = (DestVT == MVT::i32) ? PPC::EXTSH : PPC::EXTSH8_32_64;
1695 Opc = PPC::EXTSW_32_64;
1709 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::RLWINM),
1723 TII.get(PPC::RLDICL_32_64), DestReg)
1736 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::MTCTR8))
1738 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::BCTR8));
1765 unsigned ResultReg = createResultReg(&PPC::GPRCRegClass);
1768 ResultReg).addReg(SrcReg, 0, PPC::sub_32);
1804 (DestVT == MVT::i64 ? &PPC::G8RC_and_G8RC_NOX0RegClass :
1805 &PPC::GPRC_and_GPRC_NOR0RegClass));
1883 unsigned Opc = (VT == MVT::f32) ? PPC::LFS : PPC::LFD;
1884 unsigned TmpReg = createResultReg(&PPC::G8RC_and_G8RC_NOX0RegClass);
1889 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::LDtocCPT),
1891 .addConstantPoolIndex(Idx).addReg(PPC::X2);
1896 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ADDIStocHA),
1897 TmpReg).addReg(PPC::X2).addConstantPoolIndex(Idx);
1901 unsigned TmpReg2 = createResultReg(&PPC::G8RC_and_G8RC_NOX0RegClass);
1902 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::LDtocL),
1920 const TargetRegisterClass *RC = &PPC::G8RC_and_G8RC_NOX0RegClass;
1939 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::LDtoc),
1942 .addReg(PPC::X2);
1953 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ADDIStocHA),
1954 HighPartReg).addReg(PPC::X2).addGlobalAddress(GV);
1963 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::LDtocL),
1967 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ADDItocL),
1982 bool IsGPRC = RC->hasSuperClassEq(&PPC::GPRCRegClass);
1986 TII.get(IsGPRC ? PPC::LI : PPC::LI8), ResultReg)
1992 TII.get(IsGPRC ? PPC::LIS : PPC::LIS8), TmpReg)
1995 TII.get(IsGPRC ? PPC::ORI : PPC::ORI8), ResultReg)
2000 TII.get(IsGPRC ? PPC::LIS : PPC::LIS8), ResultReg)
2039 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::RLDICR),
2047 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ORIS8),
2054 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ORI8),
2071 unsigned ImmReg = createResultReg(&PPC::CRBITRCRegClass);
2073 TII.get(CI->isZero() ? PPC::CRUNSET : PPC::CRSET), ImmReg);
2081 const TargetRegisterClass *RC = ((VT == MVT::i64) ? &PPC::G8RCRegClass :
2082 &PPC::GPRCRegClass);
2087 unsigned Opc = (VT == MVT::i64) ? PPC::LI8 : PPC::LI;
2137 unsigned ResultReg = createResultReg(&PPC::G8RC_and_G8RC_NOX0RegClass);
2138 BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(PPC::ADDI8),
2167 case PPC::RLDICL:
2168 case PPC::RLDICL_32_64: {
2178 case PPC::RLWINM:
2179 case PPC::RLWINM8: {
2188 case PPC::EXTSB:
2189 case PPC::EXTSB8:
2190 case PPC::EXTSB8_32_64:
2194 case PPC::EXTSH:
2195 case PPC::EXTSH8:
2196 case PPC::EXTSH8_32_64: {
2202 case PPC::EXTSW:
2203 case PPC::EXTSW_32_64: {
2244 unsigned ImmReg = createResultReg(&PPC::CRBITRCRegClass);
2246 TII.get(Imm == 0 ? PPC::CRUNSET : PPC::CRSET), ImmReg);
2254 const TargetRegisterClass *RC = ((VT == MVT::i64) ? &PPC::G8RCRegClass :
2255 &PPC::GPRCRegClass);
2277 if (MachineInstOpcode == PPC::ADDI)
2278 MRI.setRegClass(Op0, &PPC::GPRC_and_GPRC_NOR0RegClass);
2279 else if (MachineInstOpcode == PPC::ADDI8)
2280 MRI.setRegClass(Op0, &PPC::G8RC_and_G8RC_NOX0RegClass);
2283 (RC == &PPC::GPRCRegClass ? &PPC::GPRC_and_GPRC_NOR0RegClass :
2284 (RC == &PPC::G8RCRegClass ? &PPC::G8RC_and_G8RC_NOX0RegClass : RC));
2297 (RC == &PPC::GPRCRegClass ? &PPC::GPRC_and_GPRC_NOR0RegClass :
2298 (RC == &PPC::G8RCRegClass ? &PPC::G8RC_and_G8RC_NOX0RegClass : RC));
2311 (RC == &PPC::GPRCRegClass ? &PPC::GPRC_and_GPRC_NOR0RegClass :
2312 (RC == &PPC::G8RCRegClass ? &PPC::G8RC_and_G8RC_NOX0RegClass : RC));
2320 FastISel *PPC::createFastISel(FunctionLoweringInfo &FuncInfo,