[Driver] Default all Android ARM targets to NEON.

Summary:
There are an insignificant number of ARM Android devices that don't
support NEON. Default to using NEON since that will improve
performance on the majority of devices. Users that need to target
non-NEON devices can still explicitly disable NEON.

Reviewers: srhines, pirama, kristof.beyls

Reviewed By: pirama

Subscribers: efriedma, javed.absar, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D58153

llvm-svn: 354166
This commit is contained in:
Dan Albert 2019-02-15 20:31:54 +00:00
parent e308e4299d
commit df89c6ffa3
2 changed files with 19 additions and 53 deletions

View File

@ -378,9 +378,7 @@ void arm::getARMTargetFeatures(const ToolChain &TC,
} 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";
const char *AndroidFPU = "neon";
if (!llvm::ARM::getFPUFeatures(llvm::ARM::parseFPU(AndroidFPU), Features))
D.Diag(clang::diag::err_drv_clang_unsupported)
<< std::string("-mfpu=") + AndroidFPU;

View File

@ -376,55 +376,23 @@
// 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: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-DEFAULT %s
// CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+soft-float"
// CHECK-ARM7-ANDROID-FP-DEFAULT: "-target-feature" "+soft-float-abi"
// CHECK-ARM7-ANDROID-FP-DEFAULT: "-target-feature" "+vfp3"
// CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
// CHECK-ARM7-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+fp-armv8"
// CHECK-ARM7-ANDROID-FP-DEFAULT: "-target-feature" "+neon"
// CHECK-ARM7-ANDROID-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"
// RUN: %clang -target armv7-linux-androideabi21 %s -mfpu=vfp3-d16 -### -c 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-ARM7-ANDROID-FP-D16 %s
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+soft-float"
// CHECK-ARM7-ANDROID-FP-D16: "-target-feature" "+soft-float-abi"
// CHECK-ARM7-ANDROID-FP-D16: "-target-feature" "+d16"
// CHECK-ARM7-ANDROID-FP-D16: "-target-feature" "+vfp3"
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+vfp4"
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+fp-armv8"
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+neon"
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+crypto"