reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
405 RegInfo = Subtarget->getRegisterInfo(); 406 Itins = Subtarget->getInstrItineraryData(); 411 if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetIOS() && 411 if (!Subtarget->isTargetDarwin() && !Subtarget->isTargetIOS() && 412 !Subtarget->isTargetWatchOS()) { 420 if (Subtarget->isTargetMachO()) { 422 if (Subtarget->isThumb() && Subtarget->hasVFP2Base() && 422 if (Subtarget->isThumb() && Subtarget->hasVFP2Base() && 423 Subtarget->hasARMOps() && !Subtarget->useSoftFloat()) { 423 Subtarget->hasARMOps() && !Subtarget->useSoftFloat()) { 498 if (Subtarget->isAAPCS_ABI() && 499 (Subtarget->isTargetAEABI() || Subtarget->isTargetGNUAEABI() || 499 (Subtarget->isTargetAEABI() || Subtarget->isTargetGNUAEABI() || 500 Subtarget->isTargetMuslAEABI() || Subtarget->isTargetAndroid())) { 500 Subtarget->isTargetMuslAEABI() || Subtarget->isTargetAndroid())) { 622 if (Subtarget->isTargetWindows()) { 645 if (Subtarget->isTargetMachO() && 646 !(Subtarget->isTargetIOS() && 647 Subtarget->getTargetTriple().isOSVersionLT(5, 0))) { 655 if (!Subtarget->isTargetWatchABI()) { 656 if (Subtarget->isAAPCS_ABI()) { 669 if (Subtarget->isTargetAEABI()) { 686 if (Subtarget->isThumb1Only()) 691 if (!Subtarget->useSoftFloat() && !Subtarget->isThumb1Only() && 691 if (!Subtarget->useSoftFloat() && !Subtarget->isThumb1Only() && 692 Subtarget->hasFPRegs()) { 695 if (!Subtarget->hasVFP2Base()) 697 if (!Subtarget->hasFP64()) 701 if (Subtarget->hasFullFP16()) { 731 if (Subtarget->hasMVEIntegerOps()) 732 addMVEVectorTypes(Subtarget->hasMVEFloatOps()); 735 if (Subtarget->hasLOB()) { 740 if (Subtarget->hasNEON()) { 754 if (Subtarget->hasFullFP16()) { 760 if (Subtarget->hasMVEIntegerOps() || Subtarget->hasNEON()) { 760 if (Subtarget->hasMVEIntegerOps() || Subtarget->hasNEON()) { 798 if (Subtarget->hasNEON()) { 894 if (!Subtarget->hasVFP4Base()) { 921 if (Subtarget->hasNEON() || Subtarget->hasMVEIntegerOps()) { 921 if (Subtarget->hasNEON() || Subtarget->hasMVEIntegerOps()) { 931 if (!Subtarget->hasFP64()) { 969 if (!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) { 969 if (!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) { 971 if (Subtarget->hasFullFP16()) 975 if (!Subtarget->hasFP16()) 978 if (!Subtarget->hasFP64()) 981 computeRegisterProperties(Subtarget->getRegisterInfo()); 999 if (!Subtarget->isThumb1Only()) { 1024 if (Subtarget->hasDSP()) { 1030 if (Subtarget->hasBaseDSP()) { 1038 if (Subtarget->isThumb1Only()) { 1042 if (Subtarget->isThumb1Only() || !Subtarget->hasV6Ops() 1042 if (Subtarget->isThumb1Only() || !Subtarget->hasV6Ops() 1043 || (Subtarget->isThumb2() && !Subtarget->hasDSP())) 1043 || (Subtarget->isThumb2() && !Subtarget->hasDSP())) 1056 if (Subtarget->hasMVEIntegerOps()) 1060 if (Subtarget->isThumb1Only()) { 1066 if (!Subtarget->isThumb1Only() && Subtarget->hasV6T2Ops()) 1066 if (!Subtarget->isThumb1Only() && Subtarget->hasV6T2Ops()) 1077 if (!Subtarget->hasV5TOps() || Subtarget->isThumb1Only()) { 1077 if (!Subtarget->hasV5TOps() || Subtarget->isThumb1Only()) { 1086 if (Subtarget->hasPerfMon()) 1090 if (!Subtarget->hasV6Ops()) 1093 bool hasDivide = Subtarget->isThumb() ? Subtarget->hasDivideInThumbMode() 1093 bool hasDivide = Subtarget->isThumb() ? Subtarget->hasDivideInThumbMode() 1094 : Subtarget->hasDivideInARMMode(); 1101 if (Subtarget->isTargetWindows() && !Subtarget->hasDivideInThumbMode()) { 1101 if (Subtarget->isTargetWindows() && !Subtarget->hasDivideInThumbMode()) { 1113 if (Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() || 1113 if (Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() || 1114 Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() || 1114 Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() || 1115 Subtarget->isTargetWindows()) { 1120 if (Subtarget->isTargetWindows()) { 1173 if (Subtarget->isTargetWindows() && Subtarget->getTargetTriple().isOSMSVCRT()) 1173 if (Subtarget->isTargetWindows() && Subtarget->getTargetTriple().isOSMSVCRT()) 1193 if (Subtarget->isTargetWindows()) 1201 if (Subtarget->hasAnyDataBarrier() && 1202 (!Subtarget->isThumb() || Subtarget->hasV8MBaselineOps())) { 1202 (!Subtarget->isThumb() || Subtarget->hasV8MBaselineOps())) { 1206 if (!Subtarget->isThumb() || !Subtarget->isMClass()) 1206 if (!Subtarget->isThumb() || !Subtarget->isMClass()) 1211 if (!Subtarget->hasAcquireRelease() || 1220 if (Subtarget->hasDataBarrier()) 1224 Subtarget->hasAnyDataBarrier() ? Custom : Expand); 1250 if (!Subtarget->hasV6Ops()) { 1256 if (!Subtarget->useSoftFloat() && Subtarget->hasFPRegs() && 1256 if (!Subtarget->useSoftFloat() && Subtarget->hasFPRegs() && 1257 !Subtarget->isThumb1Only()) { 1269 if (Subtarget->useSjLjEH()) 1281 if (Subtarget->hasFullFP16()) { 1291 if (Subtarget->hasFullFP16()) 1306 if (!Subtarget->useSoftFloat() && Subtarget->hasVFP2Base() && 1306 if (!Subtarget->useSoftFloat() && Subtarget->hasVFP2Base() && 1307 !Subtarget->isThumb1Only()) { 1314 if (!Subtarget->hasVFP4Base()) { 1320 if (!Subtarget->useSoftFloat() && !Subtarget->isThumb1Only()) { 1320 if (!Subtarget->useSoftFloat() && !Subtarget->isThumb1Only()) { 1322 if (!Subtarget->hasFPARMv8Base() || !Subtarget->hasFP64()) { 1322 if (!Subtarget->hasFPARMv8Base() || !Subtarget->hasFP64()) { 1328 if (!Subtarget->hasFP16()) { 1342 if (Subtarget->hasFPARMv8Base()) { 1351 if (Subtarget->hasNEON()) { 1358 if (Subtarget->hasFP64()) { 1371 if (Subtarget->hasFullFP16()) { 1388 if (Subtarget->hasNEON()) { 1400 if (Subtarget->hasFullFP16()) { 1422 if (Subtarget->hasV6Ops()) 1424 if (Subtarget->isThumb1Only()) 1429 if (Subtarget->useSoftFloat() || Subtarget->isThumb1Only() || 1429 if (Subtarget->useSoftFloat() || Subtarget->isThumb1Only() || 1430 !Subtarget->hasVFP2Base() || Subtarget->hasMinSize()) 1430 !Subtarget->hasVFP2Base() || Subtarget->hasMinSize()) 1448 PredictableSelectIsExpensive = Subtarget->getSchedModel().isOutOfOrder(); 1450 setPrefLoopAlignment(Align(1ULL << Subtarget->getPrefLoopLogAlignment())); 1452 setMinFunctionAlignment(Subtarget->isThumb() ? Align(2) : Align(4)); 1454 if (Subtarget->isThumb() || Subtarget->isThumb2()) 1454 if (Subtarget->isThumb() || Subtarget->isThumb2()) 1459 return Subtarget->useSoftFloat(); 1490 if (Subtarget->useNEONForSinglePrecisionFP()) 1683 if (Subtarget->hasMVEIntegerOps() && 1698 if (Subtarget->hasNEON() || Subtarget->hasMVEIntegerOps()) { 1698 if (Subtarget->hasNEON() || Subtarget->hasMVEIntegerOps()) { 1717 PrefAlign = (Subtarget->hasV6Ops() && !Subtarget->isMClass() ? 8 : 4); 1717 PrefAlign = (Subtarget->hasV6Ops() && !Subtarget->isMClass() ? 8 : 4); 1746 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 1866 if (!Subtarget->isAAPCS_ABI()) 1868 else if (Subtarget->hasVFP2Base() && !Subtarget->isThumb1Only() && 1868 else if (Subtarget->hasVFP2Base() && !Subtarget->isThumb1Only() && 1876 if (!Subtarget->isAAPCS_ABI()) { 1877 if (Subtarget->hasVFP2Base() && !Subtarget->isThumb1Only() && !isVarArg) 1877 if (Subtarget->hasVFP2Base() && !Subtarget->isThumb1Only() && !isVarArg) 1880 } else if (Subtarget->hasVFP2Base() && 1881 !Subtarget->isThumb1Only() && !isVarArg) 1961 if (!Subtarget->isLittle()) 1978 if (!Subtarget->isLittle()) 2029 unsigned id = Subtarget->isLittle() ? 0 : 1; 2072 if (!Subtarget->supportsTailCall() || Attr.getValueAsString() == "true") 2082 PreferIndirect = Subtarget->isThumb() && Subtarget->hasMinSize() && 2082 PreferIndirect = Subtarget->isThumb() && Subtarget->hasMinSize() && 2276 !TM.shouldAssumeDSOLocal(*Mod, GV) && Subtarget->isTargetMachO(); 2278 bool isARMFunc = !Subtarget->isThumb() || (isStub && !Subtarget->isMClass()); 2278 bool isARMFunc = !Subtarget->isThumb() || (isStub && !Subtarget->isMClass()); 2283 if (Subtarget->genLongCalls()) { 2284 assert((!isPositionIndependent() || Subtarget->isTargetWindows()) && 2322 isLocalARMFunc = !Subtarget->isThumb() && (isDef || !ARMInterworking); 2324 if (isStub && Subtarget->isThumb1Only() && !Subtarget->hasV5TOps()) { 2324 if (isStub && Subtarget->isThumb1Only() && !Subtarget->hasV5TOps()) { 2325 assert(Subtarget->isTargetMachO() && "WrapperPIC use on non-MachO?"); 2334 } else if (Subtarget->isTargetCOFF()) { 2335 assert(Subtarget->isTargetWindows() && 2355 if (isARMFunc && Subtarget->isThumb1Only() && !Subtarget->hasV5TOps()) { 2355 if (isARMFunc && Subtarget->isThumb1Only() && !Subtarget->hasV5TOps()) { 2374 if (Subtarget->isThumb()) { 2375 if ((!isDirect || isARMFunc) && !Subtarget->hasV5TOps()) 2380 if (!isDirect && !Subtarget->hasV5TOps()) 2382 else if (doesNotRet && isDirect && Subtarget->hasRetAddrStack() && 2384 !Subtarget->hasMinSize()) 2404 const ARMBaseRegisterInfo *ARI = Subtarget->getRegisterInfo(); 2562 assert(Subtarget->supportsTailCall()); 2567 if (Subtarget->isThumb1Only() && Outs.size() >= 4 && 2607 const ARMBaseRegisterInfo *TRI = Subtarget->getRegisterInfo(); 2635 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 2738 bool isLittleEndian = Subtarget->isLittle(); 2754 if (Subtarget->hasFullFP16() && Subtarget->isTargetHardFloat()) { 2754 if (Subtarget->hasFullFP16() && Subtarget->isTargetHardFloat()) { 2833 const ARMBaseRegisterInfo *TRI = Subtarget->getRegisterInfo(); 2859 !Subtarget->isMClass()) { 2860 if (Subtarget->isThumb1Only()) 2944 if (!Subtarget->supportsTailCall()) 2991 if (Subtarget->genExecuteOnly()) { 3030 bool IsPositionIndependent = isPositionIndependent() || Subtarget->isROPI(); 3034 unsigned PCAdj = Subtarget->isThumb() ? 4 : 8; 3078 assert(Subtarget->isTargetDarwin() && 3123 assert(Subtarget->isTargetWindows() && "Windows specific TLS lowering"); 3181 unsigned char PCAdj = Subtarget->isThumb() ? 4 : 8; 3234 unsigned char PCAdj = Subtarget->isThumb() ? 4 : 8; 3275 if (Subtarget->isTargetDarwin()) 3278 if (Subtarget->isTargetWindows()) 3282 assert(Subtarget->isTargetELF() && "Only ELF implemented here"); 3425 switch (Subtarget->getTargetTriple().getObjectFormat()) { 3445 if (TM.shouldAssumeDSOLocal(*GV->getParent(), GV) && !Subtarget->genExecuteOnly()) 3459 } else if (Subtarget->isROPI() && IsRO) { 3464 } else if (Subtarget->isRWPI() && !IsRO) { 3467 if (Subtarget->useMovt()) { 3487 if (Subtarget->useMovt()) { 3504 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 3504 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 3510 if (Subtarget->useMovt()) 3521 if (Subtarget->isGVIndirectSymbol(GV)) 3529 assert(Subtarget->isTargetWindows() && "non-Windows COFF is not supported"); 3530 assert(Subtarget->useMovt() && 3532 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 3532 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 3864 if (!Subtarget->isLittle()) 4249 if (Subtarget->isThumb1Only() && LHS->getOpcode() == ISD::AND && 4272 if (Subtarget->isThumb1Only() && LHS->getOpcode() == ISD::SHL && 4324 assert(Subtarget->hasFP64() || RHS.getValueType() != MVT::f64); 4663 if (!Subtarget->hasFP64() && VT == MVT::f64) { 4871 return !Subtarget->hasVFP2Base(); 4873 return !Subtarget->hasFP64(); 4875 return !Subtarget->hasFullFP16(); 4887 if (((!Subtarget->isThumb() && Subtarget->hasV6Ops()) || Subtarget->isThumb2()) && 4887 if (((!Subtarget->isThumb() && Subtarget->hasV6Ops()) || Subtarget->isThumb2()) && 4887 if (((!Subtarget->isThumb() && Subtarget->hasV6Ops()) || Subtarget->isThumb2()) && 4924 if (Subtarget->hasV8_1MMainlineOps() && CFVal && CTVal && 4947 HasLowerConstantMaterializationCost(FVal, TVal, Subtarget)) { 4997 if (Subtarget->hasFPARMv8Base() && (TrueVal.getValueType() == MVT::f16 || 5024 if (Subtarget->hasFPARMv8Base() && 5131 bool LHSOk = canChangeToInt(LHS, LHSSeenZero, Subtarget); 5133 bool RHSOk = canChangeToInt(RHS, RHSSeenZero, Subtarget); 5182 !Subtarget->isThumb1Only(); 5233 !Subtarget->isThumb1Only(); 5304 if (Subtarget->isThumb2() || (Subtarget->hasV8MBaselineOps() && Subtarget->isThumb())) { 5304 if (Subtarget->isThumb2() || (Subtarget->hasV8MBaselineOps() && Subtarget->isThumb())) { 5304 if (Subtarget->isThumb2() || (Subtarget->hasV8MBaselineOps() && Subtarget->isThumb())) { 5312 if (isPositionIndependent() || Subtarget->isROPI()) { 5453 bool UseNEON = !InGPR && Subtarget->hasNEON(); 6547 if (IsDouble && !Subtarget->hasFP64()) 7582 if (Cost <= 4 && (Subtarget->hasNEON() || isLegalMVEShuffleOp(PFEntry))) 7597 else if (Subtarget->hasNEON() && 7602 else if (Subtarget->hasNEON() && (VT == MVT::v8i16 || VT == MVT::v16i8) && 7605 else if (Subtarget->hasMVEIntegerOps() && 8026 if (Subtarget->hasMVEIntegerOps() && 8028 return LowerINSERT_VECTOR_ELT_i1(Op, DAG, Subtarget); 8726 assert(Subtarget->isTargetDarwin()); 8744 bool ShouldUseSRet = Subtarget->isAPCS_ABI(); 9163 case ISD::ATOMIC_FENCE: return LowerATOMIC_FENCE(Op, DAG, Subtarget); 9164 case ISD::PREFETCH: return LowerPREFETCH(Op, DAG, Subtarget); 9175 case ISD::INTRINSIC_VOID: return LowerINTRINSIC_VOID(Op, DAG, Subtarget); 9177 Subtarget); 9178 case ISD::BITCAST: return ExpandBITCAST(Op.getNode(), DAG, Subtarget); 9181 case ISD::SRA: return LowerShift(Op.getNode(), DAG, Subtarget); 9188 case ISD::CTTZ_ZERO_UNDEF: return LowerCTTZ(Op.getNode(), DAG, Subtarget); 9189 case ISD::CTPOP: return LowerCTPOP(Op.getNode(), DAG, Subtarget); 9190 case ISD::SETCC: return LowerVSETCC(Op, DAG, Subtarget); 9192 case ISD::ConstantFP: return LowerConstantFP(Op, DAG, Subtarget); 9193 case ISD::BUILD_VECTOR: return LowerBUILD_VECTOR(Op, DAG, Subtarget); 9194 case ISD::VECTOR_SHUFFLE: return LowerVECTOR_SHUFFLE(Op, DAG, Subtarget); 9195 case ISD::EXTRACT_SUBVECTOR: return LowerEXTRACT_SUBVECTOR(Op, DAG, Subtarget); 9197 case ISD::EXTRACT_VECTOR_ELT: return LowerEXTRACT_VECTOR_ELT(Op, DAG, Subtarget); 9198 case ISD::CONCAT_VECTORS: return LowerCONCAT_VECTORS(Op, DAG, Subtarget); 9202 if (Subtarget->isTargetWindows() && !Op.getValueType().isVector()) 9204 return LowerSDIV(Op, DAG, Subtarget); 9206 if (Subtarget->isTargetWindows() && !Op.getValueType().isVector()) 9208 return LowerUDIV(Op, DAG, Subtarget); 9219 return LowerSADDSUBSAT(Op, DAG, Subtarget); 9232 if (Subtarget->isTargetWindows()) 9237 case ISD::FPOWI: return LowerFPOWI(Op, *Subtarget, DAG); 9286 Res = ExpandBITCAST(N, DAG, Subtarget); 9291 Res = Expand64BitShift(N, DAG, Subtarget); 9306 Res = LowerSADDSUBSAT(SDValue(N, 0), DAG, Subtarget); 9309 ReplaceREADCYCLECOUNTER(N, Results, DAG, Subtarget); 9313 assert(Subtarget->isTargetWindows() && "can only expand DIV on Windows"); 9340 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 9340 assert(!Subtarget->isROPI() && !Subtarget->isRWPI() && 9342 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 9350 bool isThumb = Subtarget->isThumb(); 9351 bool isThumb2 = Subtarget->isThumb2(); 9466 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 9473 const TargetRegisterClass *TRC = Subtarget->isThumb() ? &ARM::tGPRRegClass 9533 if (Subtarget->isThumb()) 9536 trap_opcode = Subtarget->useNaClTrap() ? ARM::TRAPNaCl : ARM::TRAP; 9571 if (Subtarget->isThumb2()) { 9627 } else if (Subtarget->isThumb()) { 9722 } else if (Subtarget->hasV6T2Ops() && isUInt<16>(NumLPads)) { 9851 if (Subtarget->isThumb2() && 9855 if (Subtarget->isThumb1Only() && !ARM::tGPRRegClass.contains(Reg)) 9857 if (!Subtarget->isThumb() && !ARM::GPRRegClass.contains(Reg)) 10013 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 10029 bool IsThumb1 = Subtarget->isThumb1Only(); 10030 bool IsThumb2 = Subtarget->isThumb2(); 10031 bool IsThumb = Subtarget->isThumb(); 10040 Subtarget->hasNEON()) { 10062 if (SizeVal <= Subtarget->getMaxInlineSizeThreshold()) { 10130 if (Subtarget->useMovt()) { 10258 const TargetInstrInfo &TII = *Subtarget->getInstrInfo(); 10261 assert(Subtarget->isTargetWindows() && 10263 assert(Subtarget->isThumb2() && "Windows on ARM requires Thumb-2 mode"); 10334 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 10400 const TargetInstrInfo *TII = Subtarget->getInstrInfo(); 10402 bool isThumb2 = Subtarget->isThumb2(); 10498 const TargetRegisterInfo *TRI = Subtarget->getRegisterInfo(); 10625 bool isThumb2 = Subtarget->isThumb2(); 10718 attachMEMCPYScratchRegs(Subtarget, MI, Node); 10734 const ARMBaseInstrInfo *TII = Subtarget->getInstrInfo(); 10748 if (Subtarget->isThumb1Only()) { 10802 if (!Subtarget->isThumb1Only()) 11591 if (Subtarget->isThumb1Only()) { 11620 if (!Subtarget->isThumb1Only()) 11630 if (!Subtarget->hasNEON()) { 11631 if (Subtarget->isThumb1Only()) 13997 unsigned Heuristic = Subtarget->isThumb() ? 3 : 2; 14257 if (!Subtarget->isThumb1Only() && Subtarget->hasV6T2Ops()) { 14257 if (!Subtarget->isThumb1Only() && Subtarget->hasV6T2Ops()) { 14312 if (!Subtarget->isThumb1Only() && Subtarget->hasV5TOps()) { 14312 if (!Subtarget->isThumb1Only() && Subtarget->hasV5TOps()) { 14340 (!Subtarget->isThumb1Only() || isPowerOf2Constant(TrueVal))) { 14353 (!Subtarget->isThumb1Only() || isPowerOf2Constant(FalseVal))) { 14382 if (Subtarget->isThumb1Only() && CC == ARMCC::NE && 14420 case ISD::ABS: return PerformABSCombine(N, DCI, Subtarget); 14421 case ARMISD::ADDE: return PerformADDECombine(N, DCI, Subtarget); 14422 case ARMISD::UMLAL: return PerformUMLALCombine(N, DCI.DAG, Subtarget); 14423 case ISD::ADD: return PerformADDCombine(N, DCI, Subtarget); 14425 case ISD::MUL: return PerformMULCombine(N, DCI, Subtarget); 14426 case ISD::OR: return PerformORCombine(N, DCI, Subtarget); 14427 case ISD::XOR: return PerformXORCombine(N, DCI, Subtarget); 14428 case ISD::AND: return PerformANDCombine(N, DCI, Subtarget); 14430 case ISD::BR_CC: return PerformHWLoopCombine(N, DCI, Subtarget); 14432 case ARMISD::SUBC: return PerformAddcSubcCombine(N, DCI, Subtarget); 14433 case ARMISD::SUBE: return PerformAddeSubeCombine(N, DCI, Subtarget); 14435 case ARMISD::VMOVRRD: return PerformVMOVRRDCombine(N, DCI, Subtarget); 14437 case ISD::STORE: return PerformSTORECombine(N, DCI, Subtarget); 14438 case ISD::BUILD_VECTOR: return PerformBUILD_VECTORCombine(N, DCI, Subtarget); 14442 case ARMISD::VDUP: return PerformVDUPCombine(N, DCI, Subtarget); 14445 return PerformVCVTCombine(N, DCI.DAG, Subtarget); 14447 return PerformVDIVCombine(N, DCI.DAG, Subtarget); 14452 return PerformShiftCombine(N, DCI, Subtarget); 14455 case ISD::ANY_EXTEND: return PerformExtendCombine(N, DCI.DAG, Subtarget); 14577 bool AllowsUnaligned = Subtarget->allowsUnalignedMem(); 14584 *Fast = Subtarget->hasV7Ops(); 14593 if (Subtarget->hasNEON() && (AllowsUnaligned || Subtarget->isLittle())) { 14593 if (Subtarget->hasNEON() && (AllowsUnaligned || Subtarget->isLittle())) { 14600 if (!Subtarget->hasMVEIntegerOps()) 14650 if ((!IsMemset || ZeroMemset) && Subtarget->hasNEON() && 14725 return Subtarget->hasFullFP16(); 14756 if (Subtarget->hasNEON()) { 14771 if (!Subtarget->hasMVEIntegerOps()) 14854 if (Subtarget->hasFPAO()) 15034 if (!isLegalAddressImmediate(AM.BaseOffs, VT, Subtarget)) 15052 if (Subtarget->isThumb1Only()) 15055 if (Subtarget->isThumb2()) 15098 if (!Subtarget->isThumb()) 15101 if (Subtarget->isThumb2()) 15115 if (!Subtarget->isThumb()) 15117 if (Subtarget->isThumb2()) 15261 if (Subtarget->isThumb1Only()) 15283 isLegal = Subtarget->hasMVEIntegerOps() && 15285 Subtarget->isLittle(), Base, Offset, 15288 if (Subtarget->isThumb2()) 15328 if (Subtarget->isThumb1Only()) { 15347 isLegal = Subtarget->hasMVEIntegerOps() && 15349 Subtarget->isLittle(), Base, Offset, 15352 if (Subtarget->isThumb2()) 15366 !Subtarget->isThumb2()) 15561 if (!Subtarget->hasV6Ops()) 15598 if (!Subtarget->hasVFP2Base()) 15602 if (ConstraintVT.isVector() && Subtarget->hasNEON() && 15659 if (Subtarget->isThumb()) 15682 if (Subtarget->isThumb()) 15686 if (Subtarget->isThumb()) 15690 if (Subtarget->isThumb1Only()) 15781 if (Subtarget->hasV6T2Ops() || (Subtarget->hasV8MBaselineOps())) 15781 if (Subtarget->hasV6T2Ops() || (Subtarget->hasV8MBaselineOps())) 15786 if (Subtarget->isThumb1Only()) { 15791 } else if (Subtarget->isThumb2()) { 15805 if (Subtarget->isThumb1Only()) { 15822 if (Subtarget->isThumb1Only()) { 15829 } else if (Subtarget->isThumb2()) { 15849 if (Subtarget->isThumb1Only()) { 15854 } else if (Subtarget->isThumb2()) { 15874 if (Subtarget->isThumb1Only()) { 15889 if (Subtarget->isThumb1Only()) { 15897 if (Subtarget->isThumb1Only()) { 15958 assert((Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() || 15958 assert((Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() || 15959 Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() || 15959 Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() || 15960 Subtarget->isTargetWindows()) && 15975 bool hasDivide = Subtarget->isThumb() ? Subtarget->hasDivideInThumbMode() 15975 bool hasDivide = Subtarget->isThumb() ? Subtarget->hasDivideInThumbMode() 15976 : Subtarget->hasDivideInARMMode(); 15996 Subtarget); 16003 if (Subtarget->isTargetWindows()) 16039 Subtarget); 16044 if (Subtarget->isTargetWindows()) 16062 assert(Subtarget->isTargetWindows() && "unsupported target platform"); 16107 assert((!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) && 16107 assert((!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) && 16110 assert(!(DstSz == 32 && Subtarget->hasFP16()) && 16123 if (Subtarget->hasFP16()) 16138 if (Subtarget->hasFP64()) // Instruction from 32 -> 64 16157 assert((!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) && 16157 assert((!Subtarget->hasFP64() || !Subtarget->hasFPARMv8Base()) && 16163 if (SrcSz == 32 && Subtarget->hasFP16()) 16226 if (!Subtarget->hasVFP3Base()) 16228 if (VT == MVT::f16 && Subtarget->hasFullFP16()) 16232 if (VT == MVT::f64 && Subtarget->hasFP64()) 16406 if (!Subtarget->hasDataBarrier()) { 16410 if (Subtarget->hasV6Ops() && !Subtarget->isThumb()) { 16410 if (Subtarget->hasV6Ops() && !Subtarget->isThumb()) { 16424 Domain = Subtarget->isMClass() ? ARM_MB::SY : Domain; 16447 if (Subtarget->preferISHSTBarriers()) 16480 return (Size == 64) && !Subtarget->isMClass(); 16493 return ((Size == 64) && !Subtarget->isMClass()) ? AtomicExpansionKind::LLOnly 16505 bool hasAtomicRMW = !Subtarget->isThumb() || Subtarget->hasV8MBaselineOps(); 16505 bool hasAtomicRMW = !Subtarget->isThumb() || Subtarget->hasV8MBaselineOps(); 16506 return (Size <= (Subtarget->isMClass() ? 32U : 64U) && hasAtomicRMW) 16519 !Subtarget->isThumb() || Subtarget->hasV8MBaselineOps(); 16519 !Subtarget->isThumb() || Subtarget->hasV8MBaselineOps(); 16532 return Subtarget->isTargetMachO(); 16536 if (!Subtarget->getTargetTriple().isWindowsMSVCEnvironment()) 16553 if (Subtarget->getTargetTriple().isWindowsMSVCEnvironment()) 16560 if (Subtarget->getTargetTriple().isWindowsMSVCEnvironment()) 16568 if (!Subtarget->hasNEON()) 16595 return Subtarget->hasV6T2Ops(); 16599 return Subtarget->hasV6T2Ops(); 16603 return !Subtarget->hasMinSize(); 16625 if (!Subtarget->isLittle()) 16644 if (!Subtarget->hasV7Ops()) 16667 if (!Subtarget->isLittle()) 16685 return Subtarget->isMClass(); 16722 if (Subtarget->hasNEON()) 16755 if (!Subtarget->hasNEON() || !isLegalInterleavedAccessType(VecTy, DL)) 16891 if (!Subtarget->hasNEON() || !isLegalInterleavedAccessType(SubVecTy, DL)) 17079 return Subtarget->useSjLjEH() ? ARM::NoRegister : ARM::R0; 17086 return Subtarget->useSjLjEH() ? ARM::NoRegister : ARM::R1; 17098 const ARMBaseRegisterInfo *TRI = Subtarget->getRegisterInfo(); 17103 const TargetInstrInfo *TII = Subtarget->getInstrInfo();lib/Target/ARM/ARMISelLowering.h
474 return Subtarget;