@@ -515,7 +515,9 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
515
515
setBooleanContents(ZeroOrOneBooleanContent);
516
516
setBooleanVectorContents(ZeroOrNegativeOneBooleanContent);
517
517
518
- if (Subtarget->isTargetMachO()) {
518
+ const Triple &TT = TM.getTargetTriple();
519
+
520
+ if (TT.isOSBinFormatMachO()) {
519
521
// Uses VFP for Thumb libfuncs if available.
520
522
if (Subtarget->isThumb() && Subtarget->hasVFP2Base() &&
521
523
Subtarget->hasARMOps() && !Subtarget->useSoftFloat()) {
@@ -589,8 +591,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
589
591
590
592
// RTLIB
591
593
if (TM.isAAPCS_ABI() &&
592
- (Subtarget-> isTargetAEABI() || Subtarget-> isTargetGNUAEABI() ||
593
- Subtarget->isTargetMuslAEABI() || Subtarget->isTargetAndroid ())) {
594
+ (TT. isTargetAEABI() || TT. isTargetGNUAEABI() || TT.isTargetMuslAEABI () ||
595
+ TT.isAndroid ())) {
594
596
// clang-format off
595
597
static const struct {
596
598
const RTLIB::Libcall Op;
@@ -712,7 +714,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
712
714
// The half <-> float conversion functions are always soft-float on
713
715
// non-watchos platforms, but are needed for some targets which use a
714
716
// hard-float calling convention by default.
715
- if (!Subtarget->isTargetWatchABI ()) {
717
+ if (!TT.isWatchABI ()) {
716
718
if (TM.isAAPCS_ABI()) {
717
719
setLibcallCallingConv(RTLIB::FPROUND_F32_F16, CallingConv::ARM_AAPCS);
718
720
setLibcallCallingConv(RTLIB::FPROUND_F64_F16, CallingConv::ARM_AAPCS);
@@ -726,7 +728,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
726
728
727
729
// In EABI, these functions have an __aeabi_ prefix, but in GNUEABI they have
728
730
// a __gnu_ prefix (which is the default).
729
- if (Subtarget-> isTargetAEABI()) {
731
+ if (TT. isTargetAEABI()) {
730
732
static const struct {
731
733
const RTLIB::Libcall Op;
732
734
const char * const Name;
@@ -741,7 +743,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
741
743
setLibcallName(LC.Op, LC.Name);
742
744
setLibcallCallingConv(LC.Op, LC.CC);
743
745
}
744
- } else if (!Subtarget->isTargetMachO ()) {
746
+ } else if (!TT.isOSBinFormatMachO ()) {
745
747
setLibcallName(RTLIB::FPROUND_F32_F16, "__gnu_f2h_ieee");
746
748
setLibcallName(RTLIB::FPEXT_F16_F32, "__gnu_h2f_ieee");
747
749
}
@@ -1227,7 +1229,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
1227
1229
setOperationAction(ISD::UDIV, MVT::i32, LibCall);
1228
1230
}
1229
1231
1230
- if (Subtarget->isTargetWindows () && !Subtarget->hasDivideInThumbMode()) {
1232
+ if (TT.isOSWindows () && !Subtarget->hasDivideInThumbMode()) {
1231
1233
setOperationAction(ISD::SDIV, MVT::i32, Custom);
1232
1234
setOperationAction(ISD::UDIV, MVT::i32, Custom);
1233
1235
@@ -1239,9 +1241,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
1239
1241
setOperationAction(ISD::UREM, MVT::i32, Expand);
1240
1242
1241
1243
// Register based DivRem for AEABI (RTABI 4.2)
1242
- if (Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() ||
1243
- Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() ||
1244
- Subtarget->isTargetWindows()) {
1244
+ if (TT.isTargetAEABI() || TT.isAndroid() || TT.isTargetGNUAEABI() ||
1245
+ TT.isTargetMuslAEABI() || TT.isOSWindows()) {
1245
1246
setOperationAction(ISD::SREM, MVT::i64, Custom);
1246
1247
setOperationAction(ISD::UREM, MVT::i64, Custom);
1247
1248
HasStandaloneRem = false;
@@ -1271,7 +1272,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
1271
1272
setOperationAction(ISD::STACKSAVE, MVT::Other, Expand);
1272
1273
setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand);
1273
1274
1274
- if (Subtarget->isTargetWindows ())
1275
+ if (TT.isOSWindows ())
1275
1276
setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Custom);
1276
1277
else
1277
1278
setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Expand);
@@ -1326,8 +1327,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
1326
1327
}
1327
1328
1328
1329
// Compute supported atomic widths.
1329
- if (Subtarget->isTargetLinux() ||
1330
- (!Subtarget->isMClass() && Subtarget->hasV6Ops())) {
1330
+ if (TT.isOSLinux() || (!Subtarget->isMClass() && Subtarget->hasV6Ops())) {
1331
1331
// For targets where __sync_* routines are reliably available, we use them
1332
1332
// if necessary.
1333
1333
//
@@ -1538,7 +1538,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
1538
1538
1539
1539
// On MSVC, both 32-bit and 64-bit, ldexpf(f32) is not defined. MinGW has
1540
1540
// it, but it's just a wrapper around ldexp.
1541
- if (Subtarget->isTargetWindows ()) {
1541
+ if (TT.isOSWindows ()) {
1542
1542
for (ISD::NodeType Op : {ISD::FLDEXP, ISD::STRICT_FLDEXP, ISD::FFREXP})
1543
1543
if (isOperationExpand(Op, MVT::f32))
1544
1544
setOperationAction(Op, MVT::f32, Promote);
0 commit comments