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