Lines Matching refs:ARM

1 //===-- ARMBaseInstrInfo.cpp - ARM Instruction Information ----------------===//
10 // This file contains the Base ARM implementation of the TargetInstrInfo class.
14 #include "ARM.h"
47 cl::desc("Enable ARM 2-addr to 3-addr conv"));
51 cl::desc("Widen ARM vmovs to vmovd when possible"));
70 { ARM::VMLAS, ARM::VMULS, ARM::VADDS, false, false },
71 { ARM::VMLSS, ARM::VMULS, ARM::VSUBS, false, false },
72 { ARM::VMLAD, ARM::VMULD, ARM::VADDD, false, false },
73 { ARM::VMLSD, ARM::VMULD, ARM::VSUBD, false, false },
74 { ARM::VNMLAS, ARM::VNMULS, ARM::VSUBS, true, false },
75 { ARM::VNMLSS, ARM::VMULS, ARM::VSUBS, true, false },
76 { ARM::VNMLAD, ARM::VNMULD, ARM::VSUBD, true, false },
77 { ARM::VNMLSD, ARM::VMULD, ARM::VSUBD, true, false },
80 { ARM::VMLAfd, ARM::VMULfd, ARM::VADDfd, false, false },
81 { ARM::VMLSfd, ARM::VMULfd, ARM::VSUBfd, false, false },
82 { ARM::VMLAfq, ARM::VMULfq, ARM::VADDfq, false, false },
83 { ARM::VMLSfq, ARM::VMULfq, ARM::VSUBfq, false, false },
84 { ARM::VMLAslfd, ARM::VMULslfd, ARM::VADDfd, false, true },
85 { ARM::VMLSslfd, ARM::VMULslfd, ARM::VSUBfd, false, true },
86 { ARM::VMLAslfq, ARM::VMULslfq, ARM::VADDfq, false, true },
87 { ARM::VMLSslfq, ARM::VMULslfq, ARM::VSUBfq, false, true },
91 : ARMGenInstrInfo(ARM::ADJCALLSTACKDOWN, ARM::ADJCALLSTACKUP),
101 // Use a ScoreboardHazardRecognizer for prepass ARM scheduling. TargetInstrImpl
174 get(isSub ? ARM::SUBri : ARM::ADDri), WBReg)
181 get(isSub ? ARM::SUBrsi : ARM::ADDrsi), WBReg)
186 get(isSub ? ARM::SUBrr : ARM::ADDrr), WBReg)
197 get(isSub ? ARM::SUBri : ARM::ADDri), WBReg)
202 get(isSub ? ARM::SUBrr : ARM::ADDrr), WBReg)
398 ? ARM::B : (AFI->isThumb2Function() ? ARM::t2B : ARM::tB);
400 ? ARM::Bcc : (AFI->isThumb2Function() ? ARM::t2Bcc : ARM::tBcc);
406 "ARM branch conditions have two components!");
507 if ((MO.isRegMask() && MO.clobbersPhysReg(ARM::CPSR)) ||
508 (MO.isReg() && MO.isDef() && MO.getReg() == ARM::CPSR)) {
560 if (MI->getOpcode() == ARM::INLINEASM)
574 case ARM::MOVi16_ga_pcrel:
575 case ARM::MOVTi16_ga_pcrel:
576 case ARM::t2MOVi16_ga_pcrel:
577 case ARM::t2MOVTi16_ga_pcrel:
579 case ARM::MOVi32imm:
580 case ARM::t2MOVi32imm:
582 case ARM::CONSTPOOL_ENTRY:
586 case ARM::Int_eh_sjlj_longjmp:
588 case ARM::tInt_eh_sjlj_longjmp:
590 case ARM::Int_eh_sjlj_setjmp:
591 case ARM::Int_eh_sjlj_setjmp_nofp:
593 case ARM::tInt_eh_sjlj_setjmp:
594 case ARM::t2Int_eh_sjlj_setjmp:
595 case ARM::t2Int_eh_sjlj_setjmp_nofp:
597 case ARM::BR_JTr:
598 case ARM::BR_JTm:
599 case ARM::BR_JTadd:
600 case ARM::tBR_JTr:
601 case ARM::t2BR_JT:
602 case ARM::t2TBB_JT:
603 case ARM::t2TBH_JT: {
607 unsigned EntrySize = (Opc == ARM::t2TBB_JT)
608 ? 1 : ((Opc == ARM::t2TBH_JT) ? 2 : 4);
624 unsigned InstSize = (Opc == ARM::tBR_JTr || Opc == ARM::t2BR_JT) ? 2 : 4;
626 if (Opc == ARM::t2TBB_JT && (NumEntries & 1))
654 bool GPRDest = ARM::GPRRegClass.contains(DestReg);
655 bool GPRSrc = ARM::GPRRegClass.contains(SrcReg);
658 AddDefaultCC(AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::MOVr), DestReg)
663 bool SPRDest = ARM::SPRRegClass.contains(DestReg);
664 bool SPRSrc = ARM::SPRRegClass.contains(SrcReg);
668 Opc = ARM::VMOVS;
670 Opc = ARM::VMOVRS;
672 Opc = ARM::VMOVSR;
673 else if (ARM::DPRRegClass.contains(DestReg, SrcReg))
674 Opc = ARM::VMOVD;
675 else if (ARM::QPRRegClass.contains(DestReg, SrcReg))
676 Opc = ARM::VORRq;
681 if (Opc == ARM::VORRq)
693 if (ARM::QQPRRegClass.contains(DestReg, SrcReg)) {
694 Opc = ARM::VORRq;
695 BeginIdx = ARM::qsub_0;
697 } else if (ARM::QQQQPRRegClass.contains(DestReg, SrcReg)) {
698 Opc = ARM::VORRq;
699 BeginIdx = ARM::qsub_0;
702 } else if (ARM::DPairRegClass.contains(DestReg, SrcReg)) {
703 Opc = ARM::VMOVD;
704 BeginIdx = ARM::dsub_0;
706 } else if (ARM::DTripleRegClass.contains(DestReg, SrcReg)) {
707 Opc = ARM::VMOVD;
708 BeginIdx = ARM::dsub_0;
710 } else if (ARM::DQuadRegClass.contains(DestReg, SrcReg)) {
711 Opc = ARM::VMOVD;
712 BeginIdx = ARM::dsub_0;
714 } else if (ARM::GPRPairRegClass.contains(DestReg, SrcReg)) {
715 Opc = Subtarget.isThumb2() ? ARM::tMOVr : ARM::MOVr;
716 BeginIdx = ARM::gsub_0;
718 } else if (ARM::DPairSpcRegClass.contains(DestReg, SrcReg)) {
719 Opc = ARM::VMOVD;
720 BeginIdx = ARM::dsub_0;
723 } else if (ARM::DTripleSpcRegClass.contains(DestReg, SrcReg)) {
724 Opc = ARM::VMOVD;
725 BeginIdx = ARM::dsub_0;
728 } else if (ARM::DQuadSpcRegClass.contains(DestReg, SrcReg)) {
729 Opc = ARM::VMOVD;
730 BeginIdx = ARM::dsub_0;
758 if (Opc == ARM::VORRq)
762 if (Opc == ARM::MOVr)
802 if (ARM::GPRRegClass.hasSubClassEq(RC)) {
803 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::STRi12))
806 } else if (ARM::SPRRegClass.hasSubClassEq(RC)) {
807 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTRS))
814 if (ARM::DPRRegClass.hasSubClassEq(RC)) {
815 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTRD))
818 } else if (ARM::GPRPairRegClass.hasSubClassEq(RC)) {
820 MachineInstrBuilder MIB = BuildMI(MBB, I, DL, get(ARM::STRD));
821 AddDReg(MIB, SrcReg, ARM::gsub_0, getKillRegState(isKill), TRI);
822 AddDReg(MIB, SrcReg, ARM::gsub_1, 0, TRI);
830 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::STMIA))
832 AddDReg(MIB, SrcReg, ARM::gsub_0, getKillRegState(isKill), TRI);
833 AddDReg(MIB, SrcReg, ARM::gsub_1, 0, TRI);
839 if (ARM::DPairRegClass.hasSubClassEq(RC)) {
842 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VST1q64))
847 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTMQIA))
856 if (ARM::DTripleRegClass.hasSubClassEq(RC)) {
859 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VST1d64TPseudo))
865 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTMDIA))
868 MIB = AddDReg(MIB, SrcReg, ARM::dsub_0, getKillRegState(isKill), TRI);
869 MIB = AddDReg(MIB, SrcReg, ARM::dsub_1, 0, TRI);
870 AddDReg(MIB, SrcReg, ARM::dsub_2, 0, TRI);
876 if (ARM::QQPRRegClass.hasSubClassEq(RC) || ARM::DQuadRegClass.hasSubClassEq(RC)) {
880 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VST1d64QPseudo))
886 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTMDIA))
889 MIB = AddDReg(MIB, SrcReg, ARM::dsub_0, getKillRegState(isKill), TRI);
890 MIB = AddDReg(MIB, SrcReg, ARM::dsub_1, 0, TRI);
891 MIB = AddDReg(MIB, SrcReg, ARM::dsub_2, 0, TRI);
892 AddDReg(MIB, SrcReg, ARM::dsub_3, 0, TRI);
898 if (ARM::QQQQPRRegClass.hasSubClassEq(RC)) {
900 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VSTMDIA))
903 MIB = AddDReg(MIB, SrcReg, ARM::dsub_0, getKillRegState(isKill), TRI);
904 MIB = AddDReg(MIB, SrcReg, ARM::dsub_1, 0, TRI);
905 MIB = AddDReg(MIB, SrcReg, ARM::dsub_2, 0, TRI);
906 MIB = AddDReg(MIB, SrcReg, ARM::dsub_3, 0, TRI);
907 MIB = AddDReg(MIB, SrcReg, ARM::dsub_4, 0, TRI);
908 MIB = AddDReg(MIB, SrcReg, ARM::dsub_5, 0, TRI);
909 MIB = AddDReg(MIB, SrcReg, ARM::dsub_6, 0, TRI);
910 AddDReg(MIB, SrcReg, ARM::dsub_7, 0, TRI);
924 case ARM::STRrs:
925 case ARM::t2STRs: // FIXME: don't use t2STRs to access frame.
935 case ARM::STRi12:
936 case ARM::t2STRi12:
937 case ARM::tSTRspi:
938 case ARM::VSTRD:
939 case ARM::VSTRS:
947 case ARM::VST1q64:
948 case ARM::VST1d64TPseudo:
949 case ARM::VST1d64QPseudo:
956 case ARM::VSTMQIA:
993 if (ARM::GPRRegClass.hasSubClassEq(RC)) {
994 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::LDRi12), DestReg)
997 } else if (ARM::SPRRegClass.hasSubClassEq(RC)) {
998 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDRS), DestReg)
1004 if (ARM::DPRRegClass.hasSubClassEq(RC)) {
1005 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDRD), DestReg)
1007 } else if (ARM::GPRPairRegClass.hasSubClassEq(RC)) {
1011 MIB = BuildMI(MBB, I, DL, get(ARM::LDRD));
1012 AddDReg(MIB, DestReg, ARM::gsub_0, RegState::DefineNoRead, TRI);
1013 AddDReg(MIB, DestReg, ARM::gsub_1, RegState::DefineNoRead, TRI);
1020 MIB = AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::LDMIA))
1022 MIB = AddDReg(MIB, DestReg, ARM::gsub_0, RegState::DefineNoRead, TRI);
1023 MIB = AddDReg(MIB, DestReg, ARM::gsub_1, RegState::DefineNoRead, TRI);
1032 if (ARM::DPairRegClass.hasSubClassEq(RC)) {
1034 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLD1q64), DestReg)
1038 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDMQIA), DestReg)
1046 if (ARM::DTripleRegClass.hasSubClassEq(RC)) {
1048 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLD1d64TPseudo), DestReg)
1053 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDMDIA))
1056 MIB = AddDReg(MIB, DestReg, ARM::dsub_0, RegState::DefineNoRead, TRI);
1057 MIB = AddDReg(MIB, DestReg, ARM::dsub_1, RegState::DefineNoRead, TRI);
1058 MIB = AddDReg(MIB, DestReg, ARM::dsub_2, RegState::DefineNoRead, TRI);
1066 if (ARM::QQPRRegClass.hasSubClassEq(RC) || ARM::DQuadRegClass.hasSubClassEq(RC)) {
1068 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLD1d64QPseudo), DestReg)
1073 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDMDIA))
1076 MIB = AddDReg(MIB, DestReg, ARM::dsub_0, RegState::DefineNoRead, TRI);
1077 MIB = AddDReg(MIB, DestReg, ARM::dsub_1, RegState::DefineNoRead, TRI);
1078 MIB = AddDReg(MIB, DestReg, ARM::dsub_2, RegState::DefineNoRead, TRI);
1079 MIB = AddDReg(MIB, DestReg, ARM::dsub_3, RegState::DefineNoRead, TRI);
1087 if (ARM::QQQQPRRegClass.hasSubClassEq(RC)) {
1089 AddDefaultPred(BuildMI(MBB, I, DL, get(ARM::VLDMDIA))
1092 MIB = AddDReg(MIB, DestReg, ARM::dsub_0, RegState::DefineNoRead, TRI);
1093 MIB = AddDReg(MIB, DestReg, ARM::dsub_1, RegState::DefineNoRead, TRI);
1094 MIB = AddDReg(MIB, DestReg, ARM::dsub_2, RegState::DefineNoRead, TRI);
1095 MIB = AddDReg(MIB, DestReg, ARM::dsub_3, RegState::DefineNoRead, TRI);
1096 MIB = AddDReg(MIB, DestReg, ARM::dsub_4, RegState::DefineNoRead, TRI);
1097 MIB = AddDReg(MIB, DestReg, ARM::dsub_5, RegState::DefineNoRead, TRI);
1098 MIB = AddDReg(MIB, DestReg, ARM::dsub_6, RegState::DefineNoRead, TRI);
1099 MIB = AddDReg(MIB, DestReg, ARM::dsub_7, RegState::DefineNoRead, TRI);
1115 case ARM::LDRrs:
1116 case ARM::t2LDRs: // FIXME: don't use t2LDRs to access frame.
1126 case ARM::LDRi12:
1127 case ARM::t2LDRi12:
1128 case ARM::tLDRspi:
1129 case ARM::VLDRD:
1130 case ARM::VLDRS:
1138 case ARM::VLD1q64:
1139 case ARM::VLD1d64TPseudo:
1140 case ARM::VLD1d64QPseudo:
1147 case ARM::VLDMQIA:
1177 if (!ARM::SPRRegClass.contains(DstRegS, SrcRegS))
1181 unsigned DstRegD = TRI->getMatchingSuperReg(DstRegS, ARM::ssub_0,
1182 &ARM::DPRRegClass);
1183 unsigned SrcRegD = TRI->getMatchingSuperReg(SrcRegS, ARM::ssub_0,
1184 &ARM::DPRRegClass);
1209 MI->setDesc(get(ARM::VMOVD));
1247 // is Thumb mode (t1 or t2). PCAdjustment would be 8 for ARM mode PIC, and
1248 // zero for non-PIC in ARM or Thumb. The callers are all of thumb LDR
1271 llvm_unreachable("Unexpected ARM constantpool value type!!");
1290 case ARM::tLDRpci_pic:
1291 case ARM::t2LDRpci_pic: {
1308 case ARM::tLDRpci_pic:
1309 case ARM::t2LDRpci_pic: {
1324 if (Opcode == ARM::t2LDRpci ||
1325 Opcode == ARM::t2LDRpci_pic ||
1326 Opcode == ARM::tLDRpci ||
1327 Opcode == ARM::tLDRpci_pic ||
1328 Opcode == ARM::MOV_ga_dyn ||
1329 Opcode == ARM::MOV_ga_pcrel ||
1330 Opcode == ARM::MOV_ga_pcrel_ldr ||
1331 Opcode == ARM::t2MOV_ga_dyn ||
1332 Opcode == ARM::t2MOV_ga_pcrel) {
1343 if (Opcode == ARM::MOV_ga_dyn ||
1344 Opcode == ARM::MOV_ga_pcrel ||
1345 Opcode == ARM::MOV_ga_pcrel_ldr ||
1346 Opcode == ARM::t2MOV_ga_dyn ||
1347 Opcode == ARM::t2MOV_ga_pcrel)
1369 } else if (Opcode == ARM::PICLDR) {
1416 // Don't worry about Thumb: just ARM and Thumb2.
1425 case ARM::LDRi12:
1426 case ARM::LDRBi12:
1427 case ARM::LDRD:
1428 case ARM::LDRH:
1429 case ARM::LDRSB:
1430 case ARM::LDRSH:
1431 case ARM::VLDRD:
1432 case ARM::VLDRS:
1433 case ARM::t2LDRi8:
1434 case ARM::t2LDRBi8:
1435 case ARM::t2LDRDi8:
1436 case ARM::t2LDRSHi8:
1437 case ARM::t2LDRi12:
1438 case ARM::t2LDRBi12:
1439 case ARM::t2LDRSHi12:
1446 case ARM::LDRi12:
1447 case ARM::LDRBi12:
1448 case ARM::LDRD:
1449 case ARM::LDRH:
1450 case ARM::LDRSB:
1451 case ARM::LDRSH:
1452 case ARM::VLDRD:
1453 case ARM::VLDRS:
1454 case ARM::t2LDRi8:
1455 case ARM::t2LDRBi8:
1456 case ARM::t2LDRSHi8:
1457 case ARM::t2LDRi12:
1458 case ARM::t2LDRBi12:
1459 case ARM::t2LDRSHi12:
1497 // Don't worry about Thumb: just ARM and Thumb2.
1511 !((Load1->getMachineOpcode() == ARM::t2LDRBi8 &&
1512 Load2->getMachineOpcode() == ARM::t2LDRBi12) ||
1513 (Load1->getMachineOpcode() == ARM::t2LDRBi12 &&
1514 Load2->getMachineOpcode() == ARM::t2LDRBi8)))
1550 if (I != MBB->end() && I->getOpcode() == ARM::t2IT)
1559 // No ARM calling conventions change the stack pointer. (X86 calling
1561 if (!MI->isCall() && MI->definesRegister(ARM::SP))
1632 if (Opc == ARM::B)
1633 return ARM::Bcc;
1634 if (Opc == ARM::tB)
1635 return ARM::tBcc;
1636 if (Opc == ARM::t2B)
1637 return ARM::t2Bcc;
1646 case ARM::MOVCCr:
1647 case ARM::t2MOVCCr: {
1652 if (CC == ARMCC::AL || PredReg != ARM::CPSR)
1708 assert((MI->getOpcode() == ARM::MOVCCr || MI->getOpcode() == ARM::t2MOVCCr) &&
1727 assert((MI->getOpcode() == ARM::MOVCCr || MI->getOpcode() == ARM::t2MOVCCr) &&
1791 {ARM::ADDSri, ARM::ADDri},
1792 {ARM::ADDSrr, ARM::ADDrr},
1793 {ARM::ADDSrsi, ARM::ADDrsi},
1794 {ARM::ADDSrsr, ARM::ADDrsr},
1796 {ARM::SUBSri, ARM::SUBri},
1797 {ARM::SUBSrr, ARM::SUBrr},
1798 {ARM::SUBSrsi, ARM::SUBrsi},
1799 {ARM::SUBSrsr, ARM::SUBrsr},
1801 {ARM::RSBSri, ARM::RSBri},
1802 {ARM::RSBSrsi, ARM::RSBrsi},
1803 {ARM::RSBSrsr, ARM::RSBrsr},
1805 {ARM::t2ADDSri, ARM::t2ADDri},
1806 {ARM::t2ADDSrr, ARM::t2ADDrr},
1807 {ARM::t2ADDSrs, ARM::t2ADDrs},
1809 {ARM::t2SUBSri, ARM::t2SUBri},
1810 {ARM::t2SUBSrr, ARM::t2SUBrr},
1811 {ARM::t2SUBSrs, ARM::t2SUBrs},
1813 {ARM::t2RSBSri, ARM::t2RSBri},
1814 {ARM::t2RSBSrs, ARM::t2RSBrs},
1830 BuildMI(MBB, MBBI, dl, TII.get(ARM::MOVr), DestReg)
1851 unsigned Opc = isSub ? ARM::SUBri : ARM::ADDri;
1876 bool IsVFPPushPop = MI->getOpcode() == ARM::VSTMDDB_UPD ||
1877 MI->getOpcode() == ARM::VLDMDIA_UPD;
1878 bool IsT1PushPop = MI->getOpcode() == ARM::tPUSH ||
1879 MI->getOpcode() == ARM::tPOP ||
1880 MI->getOpcode() == ARM::tPOP_RET;
1882 assert((IsT1PushPop || (MI->getOperand(0).getReg() == ARM::SP &&
1883 MI->getOperand(1).getReg() == ARM::SP)) &&
1892 // ARM and Thumb2 push/pop insts have explicit "sp, sp" operands (+
1900 RD0Reg = ARM::D0;
1903 RD0Reg = ARM::R0;
1978 if (Opcode == ARM::INLINEASM)
1981 if (Opcode == ARM::ADDri) {
1985 MI.setDesc(TII.get(ARM::MOVr));
1993 MI.setDesc(TII.get(ARM::SUBri));
2118 case ARM::CMPri:
2119 case ARM::t2CMPri:
2125 case ARM::CMPrr:
2126 case ARM::t2CMPrr:
2132 case ARM::TSTri:
2133 case ARM::t2TSTri:
2151 case ARM::ANDri:
2152 case ARM::t2ANDri:
2158 case ARM::COPY: {
2200 if ((CmpI->getOpcode() == ARM::CMPrr ||
2201 CmpI->getOpcode() == ARM::t2CMPrr) &&
2202 (OI->getOpcode() == ARM::SUBrr ||
2203 OI->getOpcode() == ARM::t2SUBrr) &&
2210 if ((CmpI->getOpcode() == ARM::CMPri ||
2211 CmpI->getOpcode() == ARM::t2CMPri) &&
2212 (OI->getOpcode() == ARM::SUBri ||
2213 OI->getOpcode() == ARM::t2SUBri) &&
2272 if (CmpInstr->getOpcode() == ARM::CMPri ||
2273 CmpInstr->getOpcode() == ARM::t2CMPri)
2286 if (Instr.modifiesRegister(ARM::CPSR, TRI) ||
2287 Instr.readsRegister(ARM::CPSR, TRI))
2316 case ARM::RSBrr:
2317 case ARM::RSBri:
2318 case ARM::RSCrr:
2319 case ARM::RSCri:
2320 case ARM::ADDrr:
2321 case ARM::ADDri:
2322 case ARM::ADCrr:
2323 case ARM::ADCri:
2324 case ARM::SUBrr:
2325 case ARM::SUBri:
2326 case ARM::SBCrr:
2327 case ARM::SBCri:
2328 case ARM::t2RSBri:
2329 case ARM::t2ADDrr:
2330 case ARM::t2ADDri:
2331 case ARM::t2ADCrr:
2332 case ARM::t2ADCri:
2333 case ARM::t2SUBrr:
2334 case ARM::t2SUBri:
2335 case ARM::t2SBCrr:
2336 case ARM::t2SBCri:
2337 case ARM::ANDrr:
2338 case ARM::ANDri:
2339 case ARM::t2ANDrr:
2340 case ARM::t2ANDri:
2341 case ARM::ORRrr:
2342 case ARM::ORRri:
2343 case ARM::t2ORRrr:
2344 case ARM::t2ORRri:
2345 case ARM::EORrr:
2346 case ARM::EORri:
2347 case ARM::t2EORrr:
2348 case ARM::t2EORri: {
2365 if (MO.isRegMask() && MO.clobbersPhysReg(ARM::CPSR)) {
2369 if (!MO.isReg() || MO.getReg() != ARM::CPSR)
2383 case ARM::VSELEQD:
2384 case ARM::VSELEQS:
2387 case ARM::VSELGTD:
2388 case ARM::VSELGTS:
2391 case ARM::VSELGED:
2392 case ARM::VSELGES:
2395 case ARM::VSELVSS:
2396 case ARM::VSELVSD:
2440 if ((*SI)->isLiveIn(ARM::CPSR))
2445 MI->getOperand(5).setReg(ARM::CPSR);
2467 if (DefOpc != ARM::t2MOVi32imm && DefOpc != ARM::MOVi32imm)
2480 if (MO.getReg() == ARM::CPSR && !MO.isDead())
2489 if (UseMI->getOperand(NumOps-1).getReg() == ARM::CPSR)
2502 case ARM::SUBrr:
2503 case ARM::ADDrr:
2504 case ARM::ORRrr:
2505 case ARM::EORrr:
2506 case ARM::t2SUBrr:
2507 case ARM::t2ADDrr:
2508 case ARM::t2ORRrr:
2509 case ARM::t2EORrr: {
2513 case ARM::SUBrr: {
2517 NewUseOpc = ARM::SUBri;
2520 case ARM::ADDrr:
2521 case ARM::ORRrr:
2522 case ARM::EORrr: {
2529 case ARM::ADDrr: NewUseOpc = ARM::ADDri; break;
2530 case ARM::ORRrr: NewUseOpc = ARM::ORRri; break;
2531 case ARM::EORrr: NewUseOpc = ARM::EORri; break;
2535 case ARM::t2SUBrr: {
2539 NewUseOpc = ARM::t2SUBri;
2542 case ARM::t2ADDrr:
2543 case ARM::t2ORRrr:
2544 case ARM::t2EORrr: {
2551 case ARM::t2ADDrr: NewUseOpc = ARM::t2ADDri; break;
2552 case ARM::t2ORRrr: NewUseOpc = ARM::t2ORRri; break;
2553 case ARM::t2EORrr: NewUseOpc = ARM::t2EORri; break;
2588 case ARM::LDRrs:
2589 case ARM::LDRBrs:
2590 case ARM::STRrs:
2591 case ARM::STRBrs: {
2603 case ARM::LDRH:
2604 case ARM::STRH: {
2619 case ARM::LDRSB:
2620 case ARM::LDRSH:
2623 case ARM::LDRSB_POST:
2624 case ARM::LDRSH_POST: {
2630 case ARM::LDR_PRE_REG:
2631 case ARM::LDRB_PRE_REG: {
2647 case ARM::STR_PRE_REG:
2648 case ARM::STRB_PRE_REG: {
2660 case ARM::LDRH_PRE:
2661 case ARM::STRH_PRE: {
2672 case ARM::LDR_POST_REG:
2673 case ARM::LDRB_POST_REG:
2674 case ARM::LDRH_POST: {
2680 case ARM::LDR_PRE_IMM:
2681 case ARM::LDRB_PRE_IMM:
2682 case ARM::LDR_POST_IMM:
2683 case ARM::LDRB_POST_IMM:
2684 case ARM::STRB_POST_IMM:
2685 case ARM::STRB_POST_REG:
2686 case ARM::STRB_PRE_IMM:
2687 case ARM::STRH_POST:
2688 case ARM::STR_POST_IMM:
2689 case ARM::STR_POST_REG:
2690 case ARM::STR_PRE_IMM:
2693 case ARM::LDRSB_PRE:
2694 case ARM::LDRSH_PRE: {
2712 case ARM::LDRD: {
2721 case ARM::STRD: {
2728 case ARM::LDRD_POST:
2729 case ARM::t2LDRD_POST:
2732 case ARM::STRD_POST:
2733 case ARM::t2STRD_POST:
2736 case ARM::LDRD_PRE: {
2745 case ARM::t2LDRD_PRE: {
2751 case ARM::STRD_PRE: {
2758 case ARM::t2STRD_PRE:
2761 case ARM::t2LDR_POST:
2762 case ARM::t2LDRB_POST:
2763 case ARM::t2LDRB_PRE:
2764 case ARM::t2LDRSBi12:
2765 case ARM::t2LDRSBi8:
2766 case ARM::t2LDRSBpci:
2767 case ARM::t2LDRSBs:
2768 case ARM::t2LDRH_POST:
2769 case ARM::t2LDRH_PRE:
2770 case ARM::t2LDRSBT:
2771 case ARM::t2LDRSB_POST:
2772 case ARM::t2LDRSB_PRE:
2773 case ARM::t2LDRSH_POST:
2774 case ARM::t2LDRSH_PRE:
2775 case ARM::t2LDRSHi12:
2776 case ARM::t2LDRSHi8:
2777 case ARM::t2LDRSHpci:
2778 case ARM::t2LDRSHs:
2781 case ARM::t2LDRDi8: {
2787 case ARM::t2STRB_POST:
2788 case ARM::t2STRB_PRE:
2789 case ARM::t2STRBs:
2790 case ARM::t2STRDi8:
2791 case ARM::t2STRH_POST:
2792 case ARM::t2STRH_PRE:
2793 case ARM::t2STRHs:
2794 case ARM::t2STR_POST:
2795 case ARM::t2STR_PRE:
2796 case ARM::t2STRs:
2852 case ARM::VLDMQIA:
2853 case ARM::VSTMQIA:
2866 case ARM::VLDMDIA:
2867 case ARM::VLDMDIA_UPD:
2868 case ARM::VLDMDDB_UPD:
2869 case ARM::VLDMSIA:
2870 case ARM::VLDMSIA_UPD:
2871 case ARM::VLDMSDB_UPD:
2872 case ARM::VSTMDIA:
2873 case ARM::VSTMDIA_UPD:
2874 case ARM::VSTMDDB_UPD:
2875 case ARM::VSTMSIA:
2876 case ARM::VSTMSIA_UPD:
2877 case ARM::VSTMSDB_UPD: {
2882 case ARM::LDMIA_RET:
2883 case ARM::LDMIA:
2884 case ARM::LDMDA:
2885 case ARM::LDMDB:
2886 case ARM::LDMIB:
2887 case ARM::LDMIA_UPD:
2888 case ARM::LDMDA_UPD:
2889 case ARM::LDMDB_UPD:
2890 case ARM::LDMIB_UPD:
2891 case ARM::STMIA:
2892 case ARM::STMDA:
2893 case ARM::STMDB:
2894 case ARM::STMIB:
2895 case ARM::STMIA_UPD:
2896 case ARM::STMDA_UPD:
2897 case ARM::STMDB_UPD:
2898 case ARM::STMIB_UPD:
2899 case ARM::tLDMIA:
2900 case ARM::tLDMIA_UPD:
2901 case ARM::tSTMIA_UPD:
2902 case ARM::tPOP_RET:
2903 case ARM::tPOP:
2904 case ARM::tPUSH:
2905 case ARM::t2LDMIA_RET:
2906 case ARM::t2LDMIA:
2907 case ARM::t2LDMDB:
2908 case ARM::t2LDMIA_UPD:
2909 case ARM::t2LDMDB_UPD:
2910 case ARM::t2STMIA:
2911 case ARM::t2STMDB:
2912 case ARM::t2STMIA_UPD:
2913 case ARM::t2STMDB_UPD: {
2919 case ARM::VLDMDIA_UPD:
2920 case ARM::VLDMDDB_UPD:
2921 case ARM::VLDMSIA_UPD:
2922 case ARM::VLDMSDB_UPD:
2923 case ARM::VSTMDIA_UPD:
2924 case ARM::VSTMDDB_UPD:
2925 case ARM::VSTMSIA_UPD:
2926 case ARM::VSTMSDB_UPD:
2927 case ARM::LDMIA_UPD:
2928 case ARM::LDMDA_UPD:
2929 case ARM::LDMDB_UPD:
2930 case ARM::LDMIB_UPD:
2931 case ARM::STMIA_UPD:
2932 case ARM::STMDA_UPD:
2933 case ARM::STMDB_UPD:
2934 case ARM::STMIB_UPD:
2935 case ARM::tLDMIA_UPD:
2936 case ARM::tSTMIA_UPD:
2937 case ARM::t2LDMIA_UPD:
2938 case ARM::t2LDMDB_UPD:
2939 case ARM::t2STMIA_UPD:
2940 case ARM::t2STMDB_UPD:
2943 case ARM::LDMIA_RET:
2944 case ARM::tPOP_RET:
2945 case ARM::t2LDMIA_RET:
2998 case ARM::VLDMSIA:
2999 case ARM::VLDMSIA_UPD:
3000 case ARM::VLDMSDB_UPD:
3073 case ARM::VSTMSIA:
3074 case ARM::VSTMSIA_UPD:
3075 case ARM::VSTMSDB_UPD:
3143 case ARM::VLDMDIA:
3144 case ARM::VLDMDIA_UPD:
3145 case ARM::VLDMDDB_UPD:
3146 case ARM::VLDMSIA:
3147 case ARM::VLDMSIA_UPD:
3148 case ARM::VLDMSDB_UPD:
3152 case ARM::LDMIA_RET:
3153 case ARM::LDMIA:
3154 case ARM::LDMDA:
3155 case ARM::LDMDB:
3156 case ARM::LDMIB:
3157 case ARM::LDMIA_UPD:
3158 case ARM::LDMDA_UPD:
3159 case ARM::LDMDB_UPD:
3160 case ARM::LDMIB_UPD:
3161 case ARM::tLDMIA:
3162 case ARM::tLDMIA_UPD:
3163 case ARM::tPUSH:
3164 case ARM::t2LDMIA_RET:
3165 case ARM::t2LDMIA:
3166 case ARM::t2LDMDB:
3167 case ARM::t2LDMIA_UPD:
3168 case ARM::t2LDMDB_UPD:
3184 case ARM::VSTMDIA:
3185 case ARM::VSTMDIA_UPD:
3186 case ARM::VSTMDDB_UPD:
3187 case ARM::VSTMSIA:
3188 case ARM::VSTMSIA_UPD:
3189 case ARM::VSTMSDB_UPD:
3193 case ARM::STMIA:
3194 case ARM::STMDA:
3195 case ARM::STMDB:
3196 case ARM::STMIB:
3197 case ARM::STMIA_UPD:
3198 case ARM::STMDA_UPD:
3199 case ARM::STMDB_UPD:
3200 case ARM::STMIB_UPD:
3201 case ARM::tSTMIA_UPD:
3202 case ARM::tPOP_RET:
3203 case ARM::tPOP:
3204 case ARM::t2STMIA:
3205 case ARM::t2STMDB:
3206 case ARM::t2STMIA_UPD:
3207 case ARM::t2STMDB_UPD:
3272 if (II->getOpcode() != ARM::t2IT)
3298 case ARM::LDRrs:
3299 case ARM::LDRBrs: {
3307 case ARM::t2LDRs:
3308 case ARM::t2LDRBs:
3309 case ARM::t2LDRHs:
3310 case ARM::t2LDRSHs: {
3323 case ARM::LDRrs:
3324 case ARM::LDRBrs: {
3338 case ARM::t2LDRs:
3339 case ARM::t2LDRBs:
3340 case ARM::t2LDRHs:
3341 case ARM::t2LDRSHs: {
3354 case ARM::VLD1q8:
3355 case ARM::VLD1q16:
3356 case ARM::VLD1q32:
3357 case ARM::VLD1q64:
3358 case ARM::VLD1q8wb_fixed:
3359 case ARM::VLD1q16wb_fixed:
3360 case ARM::VLD1q32wb_fixed:
3361 case ARM::VLD1q64wb_fixed:
3362 case ARM::VLD1q8wb_register:
3363 case ARM::VLD1q16wb_register:
3364 case ARM::VLD1q32wb_register:
3365 case ARM::VLD1q64wb_register:
3366 case ARM::VLD2d8:
3367 case ARM::VLD2d16:
3368 case ARM::VLD2d32:
3369 case ARM::VLD2q8:
3370 case ARM::VLD2q16:
3371 case ARM::VLD2q32:
3372 case ARM::VLD2d8wb_fixed:
3373 case ARM::VLD2d16wb_fixed:
3374 case ARM::VLD2d32wb_fixed:
3375 case ARM::VLD2q8wb_fixed:
3376 case ARM::VLD2q16wb_fixed:
3377 case ARM::VLD2q32wb_fixed:
3378 case ARM::VLD2d8wb_register:
3379 case ARM::VLD2d16wb_register:
3380 case ARM::VLD2d32wb_register:
3381 case ARM::VLD2q8wb_register:
3382 case ARM::VLD2q16wb_register:
3383 case ARM::VLD2q32wb_register:
3384 case ARM::VLD3d8:
3385 case ARM::VLD3d16:
3386 case ARM::VLD3d32:
3387 case ARM::VLD1d64T:
3388 case ARM::VLD3d8_UPD:
3389 case ARM::VLD3d16_UPD:
3390 case ARM::VLD3d32_UPD:
3391 case ARM::VLD1d64Twb_fixed:
3392 case ARM::VLD1d64Twb_register:
3393 case ARM::VLD3q8_UPD:
3394 case ARM::VLD3q16_UPD:
3395 case ARM::VLD3q32_UPD:
3396 case ARM::VLD4d8:
3397 case ARM::VLD4d16:
3398 case ARM::VLD4d32:
3399 case ARM::VLD1d64Q:
3400 case ARM::VLD4d8_UPD:
3401 case ARM::VLD4d16_UPD:
3402 case ARM::VLD4d32_UPD:
3403 case ARM::VLD1d64Qwb_fixed:
3404 case ARM::VLD1d64Qwb_register:
3405 case ARM::VLD4q8_UPD:
3406 case ARM::VLD4q16_UPD:
3407 case ARM::VLD4q32_UPD:
3408 case ARM::VLD1DUPq8:
3409 case ARM::VLD1DUPq16:
3410 case ARM::VLD1DUPq32:
3411 case ARM::VLD1DUPq8wb_fixed:
3412 case ARM::VLD1DUPq16wb_fixed:
3413 case ARM::VLD1DUPq32wb_fixed:
3414 case ARM::VLD1DUPq8wb_register:
3415 case ARM::VLD1DUPq16wb_register:
3416 case ARM::VLD1DUPq32wb_register:
3417 case ARM::VLD2DUPd8:
3418 case ARM::VLD2DUPd16:
3419 case ARM::VLD2DUPd32:
3420 case ARM::VLD2DUPd8wb_fixed:
3421 case ARM::VLD2DUPd16wb_fixed:
3422 case ARM::VLD2DUPd32wb_fixed:
3423 case ARM::VLD2DUPd8wb_register:
3424 case ARM::VLD2DUPd16wb_register:
3425 case ARM::VLD2DUPd32wb_register:
3426 case ARM::VLD4DUPd8:
3427 case ARM::VLD4DUPd16:
3428 case ARM::VLD4DUPd32:
3429 case ARM::VLD4DUPd8_UPD:
3430 case ARM::VLD4DUPd16_UPD:
3431 case ARM::VLD4DUPd32_UPD:
3432 case ARM::VLD1LNd8:
3433 case ARM::VLD1LNd16:
3434 case ARM::VLD1LNd32:
3435 case ARM::VLD1LNd8_UPD:
3436 case ARM::VLD1LNd16_UPD:
3437 case ARM::VLD1LNd32_UPD:
3438 case ARM::VLD2LNd8:
3439 case ARM::VLD2LNd16:
3440 case ARM::VLD2LNd32:
3441 case ARM::VLD2LNq16:
3442 case ARM::VLD2LNq32:
3443 case ARM::VLD2LNd8_UPD:
3444 case ARM::VLD2LNd16_UPD:
3445 case ARM::VLD2LNd32_UPD:
3446 case ARM::VLD2LNq16_UPD:
3447 case ARM::VLD2LNq32_UPD:
3448 case ARM::VLD4LNd8:
3449 case ARM::VLD4LNd16:
3450 case ARM::VLD4LNd32:
3451 case ARM::VLD4LNq16:
3452 case ARM::VLD4LNq32:
3453 case ARM::VLD4LNd8_UPD:
3454 case ARM::VLD4LNd16_UPD:
3455 case ARM::VLD4LNd32_UPD:
3456 case ARM::VLD4LNq16_UPD:
3457 case ARM::VLD4LNq32_UPD:
3506 if (Reg == ARM::CPSR) {
3507 if (DefMI->getOpcode() == ARM::FMSTAT) {
3599 case ARM::LDRrs:
3600 case ARM::LDRBrs: {
3609 case ARM::t2LDRs:
3610 case ARM::t2LDRBs:
3611 case ARM::t2LDRHs:
3612 case ARM::t2LDRSHs: {
3626 case ARM::LDRrs:
3627 case ARM::LDRBrs: {
3639 case ARM::t2LDRs:
3640 case ARM::t2LDRBs:
3641 case ARM::t2LDRHs:
3642 case ARM::t2LDRSHs: {
3653 case ARM::VLD1q8:
3654 case ARM::VLD1q16:
3655 case ARM::VLD1q32:
3656 case ARM::VLD1q64:
3657 case ARM::VLD1q8wb_register:
3658 case ARM::VLD1q16wb_register:
3659 case ARM::VLD1q32wb_register:
3660 case ARM::VLD1q64wb_register:
3661 case ARM::VLD1q8wb_fixed:
3662 case ARM::VLD1q16wb_fixed:
3663 case ARM::VLD1q32wb_fixed:
3664 case ARM::VLD1q64wb_fixed:
3665 case ARM::VLD2d8:
3666 case ARM::VLD2d16:
3667 case ARM::VLD2d32:
3668 case ARM::VLD2q8Pseudo:
3669 case ARM::VLD2q16Pseudo:
3670 case ARM::VLD2q32Pseudo:
3671 case ARM::VLD2d8wb_fixed:
3672 case ARM::VLD2d16wb_fixed:
3673 case ARM::VLD2d32wb_fixed:
3674 case ARM::VLD2q8PseudoWB_fixed:
3675 case ARM::VLD2q16PseudoWB_fixed:
3676 case ARM::VLD2q32PseudoWB_fixed:
3677 case ARM::VLD2d8wb_register:
3678 case ARM::VLD2d16wb_register:
3679 case ARM::VLD2d32wb_register:
3680 case ARM::VLD2q8PseudoWB_register:
3681 case ARM::VLD2q16PseudoWB_register:
3682 case ARM::VLD2q32PseudoWB_register:
3683 case ARM::VLD3d8Pseudo:
3684 case ARM::VLD3d16Pseudo:
3685 case ARM::VLD3d32Pseudo:
3686 case ARM::VLD1d64TPseudo:
3687 case ARM::VLD1d64TPseudoWB_fixed:
3688 case ARM::VLD3d8Pseudo_UPD:
3689 case ARM::VLD3d16Pseudo_UPD:
3690 case ARM::VLD3d32Pseudo_UPD:
3691 case ARM::VLD3q8Pseudo_UPD:
3692 case ARM::VLD3q16Pseudo_UPD:
3693 case ARM::VLD3q32Pseudo_UPD:
3694 case ARM::VLD3q8oddPseudo:
3695 case ARM::VLD3q16oddPseudo:
3696 case ARM::VLD3q32oddPseudo:
3697 case ARM::VLD3q8oddPseudo_UPD:
3698 case ARM::VLD3q16oddPseudo_UPD:
3699 case ARM::VLD3q32oddPseudo_UPD:
3700 case ARM::VLD4d8Pseudo:
3701 case ARM::VLD4d16Pseudo:
3702 case ARM::VLD4d32Pseudo:
3703 case ARM::VLD1d64QPseudo:
3704 case ARM::VLD1d64QPseudoWB_fixed:
3705 case ARM::VLD4d8Pseudo_UPD:
3706 case ARM::VLD4d16Pseudo_UPD:
3707 case ARM::VLD4d32Pseudo_UPD:
3708 case ARM::VLD4q8Pseudo_UPD:
3709 case ARM::VLD4q16Pseudo_UPD:
3710 case ARM::VLD4q32Pseudo_UPD:
3711 case ARM::VLD4q8oddPseudo:
3712 case ARM::VLD4q16oddPseudo:
3713 case ARM::VLD4q32oddPseudo:
3714 case ARM::VLD4q8oddPseudo_UPD:
3715 case ARM::VLD4q16oddPseudo_UPD:
3716 case ARM::VLD4q32oddPseudo_UPD:
3717 case ARM::VLD1DUPq8:
3718 case ARM::VLD1DUPq16:
3719 case ARM::VLD1DUPq32:
3720 case ARM::VLD1DUPq8wb_fixed:
3721 case ARM::VLD1DUPq16wb_fixed:
3722 case ARM::VLD1DUPq32wb_fixed:
3723 case ARM::VLD1DUPq8wb_register:
3724 case ARM::VLD1DUPq16wb_register:
3725 case ARM::VLD1DUPq32wb_register:
3726 case ARM::VLD2DUPd8:
3727 case ARM::VLD2DUPd16:
3728 case ARM::VLD2DUPd32:
3729 case ARM::VLD2DUPd8wb_fixed:
3730 case ARM::VLD2DUPd16wb_fixed:
3731 case ARM::VLD2DUPd32wb_fixed:
3732 case ARM::VLD2DUPd8wb_register:
3733 case ARM::VLD2DUPd16wb_register:
3734 case ARM::VLD2DUPd32wb_register:
3735 case ARM::VLD4DUPd8Pseudo:
3736 case ARM::VLD4DUPd16Pseudo:
3737 case ARM::VLD4DUPd32Pseudo:
3738 case ARM::VLD4DUPd8Pseudo_UPD:
3739 case ARM::VLD4DUPd16Pseudo_UPD:
3740 case ARM::VLD4DUPd32Pseudo_UPD:
3741 case ARM::VLD1LNq8Pseudo:
3742 case ARM::VLD1LNq16Pseudo:
3743 case ARM::VLD1LNq32Pseudo:
3744 case ARM::VLD1LNq8Pseudo_UPD:
3745 case ARM::VLD1LNq16Pseudo_UPD:
3746 case ARM::VLD1LNq32Pseudo_UPD:
3747 case ARM::VLD2LNd8Pseudo:
3748 case ARM::VLD2LNd16Pseudo:
3749 case ARM::VLD2LNd32Pseudo:
3750 case ARM::VLD2LNq16Pseudo:
3751 case ARM::VLD2LNq32Pseudo:
3752 case ARM::VLD2LNd8Pseudo_UPD:
3753 case ARM::VLD2LNd16Pseudo_UPD:
3754 case ARM::VLD2LNd32Pseudo_UPD:
3755 case ARM::VLD2LNq16Pseudo_UPD:
3756 case ARM::VLD2LNq32Pseudo_UPD:
3757 case ARM::VLD4LNd8Pseudo:
3758 case ARM::VLD4LNd16Pseudo:
3759 case ARM::VLD4LNd32Pseudo:
3760 case ARM::VLD4LNq16Pseudo:
3761 case ARM::VLD4LNq32Pseudo:
3762 case ARM::VLD4LNd8Pseudo_UPD:
3763 case ARM::VLD4LNd16Pseudo_UPD:
3764 case ARM::VLD4LNd32Pseudo_UPD:
3765 case ARM::VLD4LNq16Pseudo_UPD:
3766 case ARM::VLD4LNq32Pseudo_UPD:
3786 if (MCID.isCall() || MCID.hasImplicitDefOfPhysReg(ARM::CPSR)) {
3808 if (I->getOpcode() != ARM::t2IT)
3815 if (PredCost && (MCID.isCall() || MCID.hasImplicitDefOfPhysReg(ARM::CPSR))) {
3856 case ARM::VLDMQIA:
3857 case ARM::VSTMQIA:
3947 if (MI->getOpcode() == ARM::VMOVD && !isPredicated(MI))
3953 (MI->getOpcode() == ARM::VMOVRS ||
3954 MI->getOpcode() == ARM::VMOVSR ||
3955 MI->getOpcode() == ARM::VMOVS))
3977 unsigned DReg = TRI->getMatchingSuperReg(SReg, ARM::ssub_0, &ARM::DPRRegClass);
3980 if (DReg != ARM::NoRegister)
3984 DReg = TRI->getMatchingSuperReg(SReg, ARM::ssub_1, &ARM::DPRRegClass);
4018 (Lane & 1) ? ARM::ssub_0 : ARM::ssub_1);
4043 case ARM::VMOVD:
4058 MI->setDesc(get(ARM::VORRd));
4063 case ARM::VMOVRS:
4080 MI->setDesc(get(ARM::VGETLNi32));
4089 case ARM::VMOVSR: {
4109 MI->setDesc(get(ARM::VSETLNi32));
4123 case ARM::VMOVS: {
4145 MI->setDesc(get(ARM::VDUPLN32d));
4174 get(ARM::VEXTd32), DDst);
4193 MI->setDesc(get(ARM::VEXTd32));
4257 case ARM::VLDRS:
4258 case ARM::FCONSTS:
4259 case ARM::VMOVSR:
4260 case ARM::VMOVv8i8:
4261 case ARM::VMOVv4i16:
4262 case ARM::VMOVv2i32:
4263 case ARM::VMOVv2f32:
4264 case ARM::VMOVv1i64:
4269 case ARM::VLD1LNd32:
4286 } else if (ARM::SPRRegClass.contains(Reg)) {
4288 unsigned DReg = TRI->getMatchingSuperReg(Reg, ARM::ssub_0,
4289 &ARM::DPRRegClass);
4315 if (ARM::SPRRegClass.contains(Reg)) {
4316 DReg = ARM::D0 + (Reg - ARM::S0) / 2;
4320 assert(ARM::DPRRegClass.contains(DReg) && "Can only break D-reg deps");
4332 get(ARM::FCONSTD), DReg).addImm(96));
4337 return (Subtarget.getFeatureBits() & ARM::HasV6T2Ops) != 0;