forked from OSchip/llvm-project
Fix -mfpu parsing on ARM.
- Support gcc-compatible vfpv3 name in addition to vfp3. - Support vfpv3-d16. - Disable neon feature for -mfpu=vfp* (yes, we were emitting Neon instructions for those!). llvm-svn: 147943
This commit is contained in:
parent
3eacfb83fa
commit
48af2a9e66
|
@ -2658,7 +2658,7 @@ public:
|
|||
const std::string &Name,
|
||||
bool Enabled) const {
|
||||
if (Name == "soft-float" || Name == "soft-float-abi" ||
|
||||
Name == "vfp2" || Name == "vfp3" || Name == "neon") {
|
||||
Name == "vfp2" || Name == "vfp3" || Name == "neon" || Name == "d16") {
|
||||
Features[Name] = Enabled;
|
||||
} else
|
||||
return false;
|
||||
|
|
|
@ -660,12 +660,23 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
|
|||
CmdArgs.push_back("-vfp3");
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("-neon");
|
||||
} else if (FPU == "vfp3-d16" || FPU == "vfpv3-d16") {
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("+vfp3");
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("+d16");
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("-neon");
|
||||
} else if (FPU == "vfp") {
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("+vfp2");
|
||||
} else if (FPU == "vfp3") {
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("-neon");
|
||||
} else if (FPU == "vfp3" || FPU == "vfpv3") {
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("+vfp3");
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("-neon");
|
||||
} else if (FPU == "neon") {
|
||||
CmdArgs.push_back("-target-feature");
|
||||
CmdArgs.push_back("+neon");
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=fpa %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-FPA %s
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=fpe2 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-FPA %s
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=fpe3 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-FPA %s
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=maverick %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-FPA %s
|
||||
// CHECK-FPA: "-target-feature" "-vfp2"
|
||||
// CHECK-FPA: "-target-feature" "-vfp3"
|
||||
// CHECK-FPA: "-target-feature" "-neon"
|
||||
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=vfp3-d16 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=vfpv3-d16 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s
|
||||
// CHECK-VFP3-D16: "-target-feature" "+vfp3"
|
||||
// CHECK-VFP3-D16: "-target-feature" "+d16"
|
||||
// CHECK-VFP3-D16: "-target-feature" "-neon"
|
||||
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=vfp %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-VFP %s
|
||||
// CHECK-VFP: "-target-feature" "+vfp2"
|
||||
// CHECK-VFP: "-target-feature" "-neon"
|
||||
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=vfp3 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-VFP3 %s
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=vfpv3 %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-VFP3 %s
|
||||
// CHECK-VFP3: "-target-feature" "+vfp3"
|
||||
// CHECK-VFP3: "-target-feature" "-neon"
|
||||
|
||||
// RUN: %clang -ccc-host-triple arm-linux-eabi -mfpu=neon %s -### -o %t.o 2>&1 \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-NEON %s
|
||||
// CHECK-NEON: "-target-feature" "+neon"
|
||||
|
Loading…
Reference in New Issue