forked from OSchip/llvm-project
[Driver] Add defaults for Android ARM FPUs.
Summary: Android mandates that devices have at least vfpv3-d16 until Marshmallow and NEON after that. Still honor the user's decision, but raise the defaults for Android targets. Reviewers: srhines, pirama, javed.absar, kristof.beyls, peter.smith Reviewed By: peter.smith Subscribers: peter.smith, rengolin, kristof.beyls, chrib, cfe-commits Differential Revision: https://reviews.llvm.org/D53121 llvm-svn: 344367
This commit is contained in:
parent
6c2327a09e
commit
d0fbef9c75
|
@ -378,6 +378,13 @@ void arm::getARMTargetFeatures(const ToolChain &TC,
|
|||
Features);
|
||||
} else if (FPUArg) {
|
||||
getARMFPUFeatures(D, FPUArg, Args, FPUArg->getValue(), Features);
|
||||
} else if (Triple.isAndroid() && getARMSubArchVersionNumber(Triple) >= 7) {
|
||||
// Android mandates minimum FPU requirements based on OS version.
|
||||
const char *AndroidFPU =
|
||||
Triple.isAndroidVersionLT(23) ? "vfpv3-d16" : "neon";
|
||||
if (!llvm::ARM::getFPUFeatures(llvm::ARM::parseFPU(AndroidFPU), Features))
|
||||
D.Diag(clang::diag::err_drv_clang_unsupported)
|
||||
<< std::string("-mfpu=") + AndroidFPU;
|
||||
}
|
||||
|
||||
// Honor -mhwdiv=. ClangAs gives preference to -Wa,-mhwdiv=.
|
||||
|
|
|
@ -364,3 +364,67 @@
|
|||
// CHECK-SOFT-ABI-FP: "-target-feature" "-fp-armv8"
|
||||
// CHECK-SOFT-ABI-FP: "-target-feature" "-neon"
|
||||
// CHECK-SOFT-ABI-FP: "-target-feature" "-crypto"
|
||||
|
||||
// RUN: %clang -target arm-linux-androideabi21 %s -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ARM5-ANDROID-FP-DEFAULT %s
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT: "-target-feature" "+soft-float"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+d16"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp3"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+neon"
|
||||
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+crypto"
|
||||
|
||||
// RUN: %clang -target arm-linux-androideabi21 -march=armv7-a %s -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-MARCH-ARM7-ANDROID-FP %s
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+soft-float"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+d16"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP: "-target-feature" "+vfp3"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+neon"
|
||||
// CHECK-MARCH-ARM7-ANDROID-FP-NOT: "-target-feature" "+crypto"
|
||||
|
||||
// RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-L-FP-DEFAULT %s
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+soft-float"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+d16"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT: "-target-feature" "+vfp3"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+neon"
|
||||
// CHECK-ARM-ANDROID-L-FP-DEFAULT-NOT: "-target-feature" "+crypto"
|
||||
|
||||
// RUN: %clang -target armv7-linux-androideabi21 -mfpu=neon %s -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-L-FP-NEON %s
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+soft-float"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+vfp3"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON: "-target-feature" "+neon"
|
||||
// CHECK-ARM-ANDROID-L-FP-NEON-NOT: "-target-feature" "+crypto"
|
||||
|
||||
// RUN: %clang -target armv7-linux-androideabi23 %s -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-M-FP-DEFAULT %s
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+soft-float"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+vfp3"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT: "-target-feature" "+neon"
|
||||
// CHECK-ARM-ANDROID-M-FP-DEFAULT-NOT: "-target-feature" "+crypto"
|
||||
|
||||
// RUN: %clang -target armv7-linux-androideabi23 %s -mfpu=vfp3-d16 -### -c 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ARM-ANDROID-M-FP-D16 %s
|
||||
// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+soft-float"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+soft-float-abi"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+d16"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16: "-target-feature" "+vfp3"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+vfp4"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+fp-armv8"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+neon"
|
||||
// CHECK-ARM-ANDROID-M-FP-D16-NOT: "-target-feature" "+crypto"
|
||||
|
|
Loading…
Reference in New Issue