summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/arm-target-features.c28
-rw-r--r--clang/test/Driver/arm-mfpu.c348
-rw-r--r--clang/test/Driver/armv8.1m.main.c37
-rw-r--r--clang/test/Preprocessor/arm-acle-6.5.c5
-rw-r--r--clang/test/Preprocessor/arm-target-features.c3
5 files changed, 220 insertions, 201 deletions
diff --git a/clang/test/CodeGen/arm-target-features.c b/clang/test/CodeGen/arm-target-features.c
index d62cea65ed0..ec165aeec28 100644
--- a/clang/test/CodeGen/arm-target-features.c
+++ b/clang/test/CodeGen/arm-target-features.c
@@ -1,23 +1,23 @@
// REQUIRES: arm-registered-target
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a8 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3
-// CHECK-VFP3: "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+thumb-mode,+vfp3"
+// CHECK-VFP3: "target-features"="+armv7-a,+d32,+dsp,+fp64,+fpregs,+neon,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4
-// CHECK-VFP4: "target-features"="+armv7-a,+d32,+dsp,+fp64,+neon,+thumb-mode,+vfp4"
+// CHECK-VFP4: "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+fpregs,+neon,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu cortex-a7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-a12 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV
// RUN: %clang_cc1 -triple thumbv7s-linux-gnueabi -target-cpu swift -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV-2
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabihf -target-cpu krait -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV
-// CHECK-VFP4-DIV: "target-features"="+armv7-a,+d32,+dsp,+fp64,+hwdiv,+hwdiv-arm,+neon,+thumb-mode,+vfp4"
-// CHECK-VFP4-DIV-2: "target-features"="+armv7s,+d32,+dsp,+fp64,+hwdiv,+hwdiv-arm,+neon,+thumb-mode,+vfp4"
+// CHECK-VFP4-DIV: "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp"
+// CHECK-VFP4-DIV-2: "target-features"="+armv7s,+d32,+dsp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp"
// RUN: %clang_cc1 -triple armv7-linux-gnueabihf -target-cpu cortex-a15 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV-ARM
// RUN: %clang_cc1 -triple armv7-linux-gnueabihf -target-cpu cortex-a17 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-DIV-ARM
-// CHECK-VFP4-DIV-ARM: "target-features"="+armv7-a,+d32,+dsp,+fp64,+hwdiv,+hwdiv-arm,+neon,+vfp4,-thumb-mode"
+// CHECK-VFP4-DIV-ARM: "target-features"="+armv7-a,+d32,+dsp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp,-thumb-mode"
// RUN: %clang_cc1 -triple thumbv7s-apple-ios7.0 -target-cpu cyclone -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu cortex-a32 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8
@@ -28,34 +28,34 @@
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu exynos-m1 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu exynos-m2 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu exynos-m3 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8
-// CHECK-BASIC-V8: "target-features"="+armv8-a,+crc,+crypto,+d32,+dsp,+fp-armv8,+fp64,+hwdiv,+hwdiv-arm,+neon,+thumb-mode"
+// CHECK-BASIC-V8: "target-features"="+armv8-a,+crc,+crypto,+d32,+dsp,+fp-armv8,+fp-armv8d16,+fp-armv8d16sp,+fp-armv8sp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp"
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu exynos-m4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V82
// RUN: %clang_cc1 -triple thumbv8-linux-gnueabihf -target-cpu exynos-m5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V82
-// CHECK-BASIC-V82: "target-features"="+armv8.2-a,+crc,+crypto,+d32,+dotprod,+dsp,+fp-armv8,+fp64,+hwdiv,+hwdiv-arm,+neon,+ras,+thumb-mode"
+// CHECK-BASIC-V82: "target-features"="+armv8.2-a,+crc,+crypto,+d32,+dotprod,+dsp,+fp-armv8,+fp-armv8d16,+fp-armv8d16sp,+fp-armv8sp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+ras,+thumb-mode,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp"
// RUN: %clang_cc1 -triple armv8-linux-gnueabi -target-cpu cortex-a53 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-BASIC-V8-ARM
-// CHECK-BASIC-V8-ARM: "target-features"="+armv8-a,+crc,+crypto,+d32,+dsp,+fp-armv8,+fp64,+hwdiv,+hwdiv-arm,+neon,-thumb-mode"
+// CHECK-BASIC-V8-ARM: "target-features"="+armv8-a,+crc,+crypto,+d32,+dsp,+fp-armv8,+fp-armv8d16,+fp-armv8d16sp,+fp-armv8sp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+neon,+vfp2,+vfp2d16,+vfp2d16sp,+vfp2sp,+vfp3,+vfp3d16,+vfp3d16sp,+vfp3sp,+vfp4,+vfp4d16,+vfp4d16sp,+vfp4sp,-thumb-mode"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-r5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-DIV
-// CHECK-VFP3-D16-DIV: "target-features"="+armv7-r,+dsp,+fp64,+hwdiv,+hwdiv-arm,+thumb-mode,+vfp3"
+// CHECK-VFP3-D16-DIV: "target-features"="+armv7-r,+dsp,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+thumb-mode,+vfp2d16,+vfp2d16sp,+vfp3d16,+vfp3d16sp"
// RUN: %clang_cc1 -triple armv7-linux-gnueabi -target-cpu cortex-r4f -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-THUMB-DIV
-// CHECK-VFP3-D16-THUMB-DIV: "target-features"="+armv7-r,+dsp,+fp64,+hwdiv,+vfp3,-thumb-mode"
+// CHECK-VFP3-D16-THUMB-DIV: "target-features"="+armv7-r,+dsp,+fp64,+fpregs,+hwdiv,+vfp2d16,+vfp2d16sp,+vfp3d16,+vfp3d16sp,-thumb-mode"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-r7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-FP16-DIV
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-r8 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP3-D16-FP16-DIV
-// CHECK-VFP3-D16-FP16-DIV: "target-features"="+armv7-r,+dsp,+fp16,+fp64,+hwdiv,+hwdiv-arm,+thumb-mode,+vfp3"
+// CHECK-VFP3-D16-FP16-DIV: "target-features"="+armv7-r,+dsp,+fp16,+fp64,+fpregs,+hwdiv,+hwdiv-arm,+thumb-mode,+vfp2d16,+vfp2d16sp,+vfp3d16,+vfp3d16sp"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP4-D16-SP-THUMB-DIV
-// CHECK-VFP4-D16-SP-THUMB-DIV: "target-features"="+armv7e-m,+dsp,+hwdiv,+thumb-mode,+vfp4"
+// CHECK-VFP4-D16-SP-THUMB-DIV: "target-features"="+armv7e-m,+dsp,+fp16,+fpregs,+hwdiv,+thumb-mode,+vfp2d16sp,+vfp3d16sp,+vfp4d16sp"
// RUN: %clang_cc1 -triple thumbv7-linux-gnueabi -target-cpu cortex-m7 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-VFP5-D16-THUMB-DIV
-// CHECK-VFP5-D16-THUMB-DIV: "target-features"="+armv7e-m,+dsp,+fp-armv8,+fp64,+hwdiv,+thumb-mode"
+// CHECK-VFP5-D16-THUMB-DIV: "target-features"="+armv7e-m,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fpregs,+hwdiv,+thumb-mode,+vfp2d16,+vfp2d16sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp"
// RUN: %clang_cc1 -triple armv7-linux-gnueabi -target-cpu cortex-r4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-THUMB-DIV
@@ -107,6 +107,6 @@
// CHECK-ARMV8M-M23-LINUX: "target-features"="+armv8-m.base,+hwdiv,+thumb-mode"
// RUN: %clang_cc1 -triple thumb-linux-gnueabi -target-cpu cortex-m33 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-ARMV8M-MAIN-LINUX
-// CHECK-ARMV8M-MAIN-LINUX: "target-features"="+armv8-m.main,+dsp,+fp-armv8,+hwdiv,+thumb-mode"
+// CHECK-ARMV8M-MAIN-LINUX: "target-features"="+armv8-m.main,+dsp,+fp-armv8d16sp,+fp16,+fpregs,+hwdiv,+thumb-mode,+vfp2d16sp,+vfp3d16sp,+vfp4d16sp"
void foo() {}
diff --git a/clang/test/Driver/arm-mfpu.c b/clang/test/Driver/arm-mfpu.c
index 921afa227ce..4b0289b73b9 100644
--- a/clang/test/Driver/arm-mfpu.c
+++ b/clang/test/Driver/arm-mfpu.c
@@ -3,7 +3,7 @@
// RUN: %clang -target arm-linux-eabi %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-DEFAULT %s
// CHECK-DEFAULT-NOT: "-target-feature" "+soft-float"
-// CHECK-DEFAULT: "-target-feature" "+soft-float-abi"
+// CHECK-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
// CHECK-DEFAULT-NOT: "-target-feature" "+vfp2"
// CHECK-DEFAULT-NOT: "-target-feature" "+vfp3"
// CHECK-DEFAULT-NOT: "-target-feature" "+neon"
@@ -23,19 +23,19 @@
// RUN: %clang -target arm-linux-eabi -mfpu=vfp %s -mfloat-abi=soft -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-2 %s
// CHECK-VFP-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP: "-target-feature" "+soft-float-abi"
-// CHECK-VFP: "-target-feature" "+vfp2"
-// CHECK-VFP: "-target-feature" "-vfp3"
-// CHECK-VFP: "-target-feature" "-vfp4"
-// CHECK-VFP: "-target-feature" "-fp-armv8"
-// CHECK-VFP: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-2: "-target-feature" "-vfp2"
+// CHECK-VFP-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP-DAG: "-target-feature" "+vfp2"
+// CHECK-VFP-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-VFP-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-2-DAG: "-target-feature" "-vfp2d16sp"
// RUN: %clang -target arm-linux-eabi -mfpu=vfp3 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3 %s
@@ -44,33 +44,33 @@
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3: "-target-feature" "+soft-float-abi"
-// CHECK-VFP3: "-target-feature" "+vfp3"
-// CHECK-VFP3: "-target-feature" "-vfp4"
-// CHECK-VFP3: "-target-feature" "-fp-armv8"
-// CHECK-VFP3: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-3: "-target-feature" "-vfp3"
+// CHECK-VFP3-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3-DAG: "-target-feature" "+vfp3"
+// CHECK-VFP3-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP3-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-3-DAG: "-target-feature" "-vfp3d16sp"
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3-FP16 %s
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3-FP16-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3-FP16: "-target-feature" "+soft-float-abi"
-// CHECK-VFP3-FP16: "-target-feature" "+vfp3"
-// CHECK-VFP3-FP16: "-target-feature" "+fp16"
-// CHECK-VFP3-FP16: "-target-feature" "-vfp4"
-// CHECK-VFP3-FP16: "-target-feature" "-fp-armv8"
-// CHECK-VFP3-FP16: "-target-feature" "+fp64"
-// CHECK-VFP3-FP16: "-target-feature" "+d32"
-// CHECK-VFP3-FP16: "-target-feature" "-neon"
-// CHECK-VFP3-FP16: "-target-feature" "-crypto"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "+vfp3"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "+fp16"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "+fp64"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "+d32"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "-neon"
+// CHECK-VFP3-FP16-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=vfp3-d16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3-D16 %s
@@ -79,58 +79,58 @@
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3-D16-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3-D16: "-target-feature" "+soft-float-abi"
-// CHECK-VFP3-D16: "-target-feature" "+vfp3"
-// CHECK-VFP3-D16: "-target-feature" "-vfp4"
-// CHECK-VFP3-D16: "-target-feature" "-fp-armv8"
-// CHECK-VFP3-D16: "-target-feature" "+fp64"
+// CHECK-VFP3-D16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3-D16-DAG: "-target-feature" "+vfp3d16"
+// CHECK-VFP3-D16-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3-D16-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP3-D16-DAG: "-target-feature" "+fp64"
// CHECK-VFP3-D16-NOT: "-target-feature" "+d32"
-// CHECK-VFP3-D16: "-target-feature" "-neon"
+// CHECK-VFP3-D16-DAG: "-target-feature" "-neon"
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3-D16-FP16 %s
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3-d16-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3-D16-FP16-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3-D16-FP16: "-target-feature" "+soft-float-abi"
-// CHECK-VFP3-D16-FP16: "-target-feature" "+vfp3"
-// CHECK-VFP3-D16-FP16: "-target-feature" "+fp16"
-// CHECK-VFP3-D16-FP16: "-target-feature" "-vfp4"
-// CHECK-VFP3-D16-FP16: "-target-feature" "-fp-armv8"
-// CHECK-VFP3-D16-FP16: "-target-feature" "+fp64"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+vfp3d16"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp16"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "+fp64"
// CHECK-VFP3-D16-FP16-NOT: "-target-feature" "+d32"
-// CHECK-VFP3-D16-FP16: "-target-feature" "-neon"
-// CHECK-VFP3-D16-FP16: "-target-feature" "-crypto"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-neon"
+// CHECK-VFP3-D16-FP16-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3XD %s
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3XD-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3XD: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3XD-DAG: "-target-feature" "+soft-float-abi"
// CHECK-VFP3XD-NOT: "-target-feature" "+fp64"
// CHECK-VFP3XD-NOT: "-target-feature" "+d32"
-// CHECK-VFP3XD: "-target-feature" "+vfp3"
-// CHECK-VFP3XD: "-target-feature" "-fp16"
-// CHECK-VFP3XD: "-target-feature" "-vfp4"
-// CHECK-VFP3XD: "-target-feature" "-fp-armv8"
-// CHECK-VFP3XD: "-target-feature" "-neon"
-// CHECK-VFP3XD: "-target-feature" "-crypto"
+// CHECK-VFP3XD-DAG: "-target-feature" "+vfp3d16sp"
+// CHECK-VFP3XD-DAG: "-target-feature" "-fp16"
+// CHECK-VFP3XD-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3XD-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP3XD-DAG: "-target-feature" "-neon"
+// CHECK-VFP3XD-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP3XD-FP16 %s
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv3xd-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-3 %s
// CHECK-VFP3XD-FP16-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP3XD-FP16: "-target-feature" "+soft-float-abi"
-// CHECK-VFP3XD-FP16: "-target-feature" "+vfp3"
-// CHECK-VFP3XD-FP16: "-target-feature" "+fp16"
-// CHECK-VFP3XD-FP16: "-target-feature" "-vfp4"
-// CHECK-VFP3XD-FP16: "-target-feature" "-fp-armv8"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "+vfp3d16sp"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "+fp16"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
// CHECK-VFP3XD-FP16-NOT: "-target-feature" "+fp64"
// CHECK-VFP3XD-FP16-NOT: "-target-feature" "+d32"
-// CHECK-VFP3XD-FP16: "-target-feature" "-neon"
-// CHECK-VFP3XD-FP16: "-target-feature" "-crypto"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "-neon"
+// CHECK-VFP3XD-FP16-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=vfp4 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP4 %s
@@ -139,17 +139,17 @@
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
// CHECK-VFP4-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP4: "-target-feature" "+soft-float-abi"
-// CHECK-VFP4: "-target-feature" "+vfp4"
-// CHECK-VFP4: "-target-feature" "-fp-armv8"
-// CHECK-VFP4: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-4: "-target-feature" "-vfp4"
+// CHECK-VFP4-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP4-DAG: "-target-feature" "+vfp4"
+// CHECK-VFP4-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP4-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-4-DAG: "-target-feature" "-vfp4d16sp"
// RUN: %clang -target arm-linux-eabi -mfpu=vfp4-d16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-VFP4-D16 %s
@@ -158,12 +158,12 @@
// RUN: %clang -target arm-linux-eabi -mfpu=vfpv4-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
// CHECK-VFP4-D16-NOT: "-target-feature" "+soft-float"
-// CHECK-VFP4-D16: "-target-feature" "+soft-float-abi"
-// CHECK-VFP4-D16: "-target-feature" "+vfp4"
-// CHECK-VFP4-D16: "-target-feature" "-fp-armv8"
-// CHECK-VFP4-D16: "-target-feature" "+fp64"
+// CHECK-VFP4-D16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-VFP4-D16-DAG: "-target-feature" "+vfp4d16"
+// CHECK-VFP4-D16-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-VFP4-D16-DAG: "-target-feature" "+fp64"
// CHECK-VFP4-D16-NOT: "-target-feature" "+d32"
-// CHECK-VFP4-D16: "-target-feature" "-neon"
+// CHECK-VFP4-D16-DAG: "-target-feature" "-neon"
// RUN: %clang -target arm-linux-eabi -mfpu=fp4-sp-d16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-FP4-SP-D16 %s
@@ -172,12 +172,12 @@
// RUN: %clang -target arm-linux-eabi -mfpu=fpv4-sp-d16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-4 %s
// CHECK-FP4-SP-D16-NOT: "-target-feature" "+soft-float"
-// CHECK-FP4-SP-D16: "-target-feature" "+soft-float-abi"
-// CHECK-FP4-SP-D16: "-target-feature" "+vfp4"
-// CHECK-FP4-SP-D16: "-target-feature" "-fp-armv8"
+// CHECK-FP4-SP-D16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-FP4-SP-D16-DAG: "-target-feature" "+vfp4d16sp"
+// CHECK-FP4-SP-D16-DAG: "-target-feature" "-fp-armv8d16sp"
// CHECK-FP4-SP-D16-NOT: "-target-feature" "+fp64"
// CHECK-FP4-SP-D16-NOT: "-target-feature" "+d32"
-// CHECK-FP4-SP-D16: "-target-feature" "-neon"
+// CHECK-FP4-SP-D16-DAG: "-target-feature" "-neon"
// RUN: %clang -target arm-linux-eabi -mfpu=fp5-sp-d16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-FP5-SP-D16 %s
@@ -186,12 +186,12 @@
// RUN: %clang -target arm-linux-eabi -mfpu=fp-armv8-sp-d16 -mfloat-abi=soft %s -### -o %t.o \
// RUN: 2>&1 | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
// CHECK-FP5-SP-D16-NOT: "-target-feature" "+soft-float"
-// CHECK-FP5-SP-D16: "-target-feature" "+soft-float-abi"
-// CHECK-FP5-SP-D16: "-target-feature" "+fp-armv8"
-// CHECK-FP5-SP-D16: "-target-feature" "-neon"
+// CHECK-FP5-SP-D16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-FP5-SP-D16-DAG: "-target-feature" "+fp-armv8d16sp"
+// CHECK-FP5-SP-D16-DAG: "-target-feature" "-neon"
// CHECK-FP5-SP-D16-NOT: "-target-feature" "+fp64"
// CHECK-FP5-SP-D16-NOT: "-target-feature" "+d32"
-// CHECK-FP5-SP-D16: "-target-feature" "-crypto"
+// CHECK-FP5-SP-D16-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=fp5-dp-d16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-FP5-DP-D16 %s
@@ -200,74 +200,74 @@
// RUN: %clang -target arm-linux-eabi -mfpu=fpv5-dp-d16 %s -mfloat-abi=soft -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-5 %s
// CHECK-FP5-DP-D16-NOT: "-target-feature" "+soft-float"
-// CHECK-FP5-DP-D16: "-target-feature" "+soft-float-abi"
-// CHECK-FP5-DP-D16: "-target-feature" "+fp-armv8"
-// CHECK-FP5-DP-D16: "-target-feature" "+fp64"
+// CHECK-FP5-DP-D16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp-armv8d16"
+// CHECK-FP5-DP-D16-DAG: "-target-feature" "+fp64"
// CHECK-FP5-DP-D16-NOT: "-target-feature" "+d32"
-// CHECK-FP5-DP-D16: "-target-feature" "-neon"
-// CHECK-FP5-DP-D16: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "+soft-float"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-5: "-target-feature" "-fp-armv8"
+// CHECK-FP5-DP-D16-DAG: "-target-feature" "-neon"
+// CHECK-FP5-DP-D16-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-5-DAG: "-target-feature" "-fp-armv8d16sp"
// RUN: %clang -target arm-linux-eabi -mfpu=neon %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NEON %s
// RUN: %clang -target arm-linux-eabi -mfpu=neon -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
// CHECK-NEON-NOT: "-target-feature" "+soft-float"
-// CHECK-NEON: "-target-feature" "+neon"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-6: "-target-feature" "-neon"
+// CHECK-NEON-DAG: "-target-feature" "+neon"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-6-DAG: "-target-feature" "-neon"
// RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NEON-FP16 %s
// RUN: %clang -target arm-linux-eabi -mfpu=neon-fp16 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
// CHECK-NEON-FP16-NOT: "-target-feature" "+soft-float"
-// CHECK-NEON-FP16: "-target-feature" "+soft-float-abi"
-// CHECK-NEON-FP16: "-target-feature" "+vfp3"
-// CHECK-NEON-FP16: "-target-feature" "+fp16"
-// CHECK-NEON-FP16: "-target-feature" "-vfp4"
-// CHECK-NEON-FP16: "-target-feature" "-fp-armv8"
-// CHECK-NEON-FP16: "-target-feature" "+fp64"
-// CHECK-NEON-FP16: "-target-feature" "+d32"
-// CHECK-NEON-FP16: "-target-feature" "+neon"
-// CHECK-NEON-FP16: "-target-feature" "-crypto"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+vfp3"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+fp16"
+// CHECK-NEON-FP16-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-NEON-FP16-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+fp64"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+d32"
+// CHECK-NEON-FP16-DAG: "-target-feature" "+neon"
+// CHECK-NEON-FP16-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV3 %s
// RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv3 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-6 %s
// CHECK-NEON-VFPV3-NOT: "-target-feature" "+soft-float"
-// CHECK-NEON-VFPV3: "-target-feature" "+soft-float-abi"
-// CHECK-NEON-VFPV3: "-target-feature" "+vfp3"
-// CHECK-NEON-VFPV3: "-target-feature" "+neon"
+// CHECK-NEON-VFPV3-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-NEON-VFPV3-DAG: "-target-feature" "+vfp3"
+// CHECK-NEON-VFPV3-DAG: "-target-feature" "+neon"
// RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NEON-VFPV4 %s
// RUN: %clang -target arm-linux-eabi -mfpu=neon-vfpv4 -mfloat-abi=soft %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-7 %s
// CHECK-NEON-VFPV4-NOT: "-target-feature" "+soft-float"
-// CHECK-NEON-VFPV4: "-target-feature" "+soft-float-abi"
-// CHECK-NEON-VFPV4: "-target-feature" "+vfp4"
-// CHECK-NEON-VFPV4: "-target-feature" "+neon"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-7: "-target-feature" "-neon"
+// CHECK-NEON-VFPV4-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-NEON-VFPV4-DAG: "-target-feature" "+vfp4"
+// CHECK-NEON-VFPV4-DAG: "-target-feature" "+neon"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-7-DAG: "-target-feature" "-neon"
// RUN: %clang -target arm-linux-eabi -msoft-float %s -### -o %t.o 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
@@ -275,58 +275,58 @@
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
// RUN: %clang -target armv8a -mfpu=neon %s -### -c 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP-8 %s
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP-8: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-8-DAG: "-target-feature" "-neon"
// RUN: %clang -target armv8 -mfpu=fp-armv8 %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-ARMV8-SOFT-FLOAT %s
-// CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "+soft-float"
-// CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "+soft-float-abi"
+// CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float"
+// CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "+soft-float-abi"
// NOT-CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "+fp-armv8"
-// CHECK-ARMV9-SOFT-FLOAT: "-target-feature" "-neon"
-// CHECK-ARMV8-SOFT-FLOAT: "-target-feature" "-crypto"
+// CHECK-ARMV9-SOFT-FLOAT-DAG: "-target-feature" "-neon"
+// CHECK-ARMV8-SOFT-FLOAT-DAG: "-target-feature" "-crypto"
// RUN: %clang -target armv8-linux-gnueabihf -mfpu=fp-armv8 %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-FP-ARMV8 %s
// CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float"
// CHECK-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
-// CHECK-FP-ARMV8: "-target-feature" "+fp-armv8"
-// CHECK-FP-ARMV8: "-target-feature" "-neon"
-// CHECK-FP-ARMV8: "-target-feature" "-crypto"
+// CHECK-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
+// CHECK-FP-ARMV8-DAG: "-target-feature" "-neon"
+// CHECK-FP-ARMV8-DAG: "-target-feature" "-crypto"
// RUN: %clang -target armv8-linux-gnueabihf -mfpu=neon-fp-armv8 %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NEON-FP-ARMV8 %s
// CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float"
// CHECK-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
-// CHECK-NEON-FP-ARMV8: "-target-feature" "+fp-armv8"
-// CHECK-NEON-FP-ARMV8: "-target-feature" "+neon"
-// CHECK-NEON-FP-ARMV8: "-target-feature" "-crypto"
+// CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
+// CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "+neon"
+// CHECK-NEON-FP-ARMV8-DAG: "-target-feature" "-crypto"
// RUN: %clang -target armv8-linux-gnueabihf -mfpu=crypto-neon-fp-armv8 %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-CRYPTO-NEON-FP-ARMV8 %s
// CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float"
// CHECK-CRYPTO-NEON-FP-ARMV8-NOT: "-target-feature" "+soft-float-abi"
-// CHECK-CRYPTO-NEON-FP-ARMV8: "-target-feature" "+fp-armv8"
-// CHECK-CRYPTO-NEON-FP-ARMV8: "-target-feature" "+crypto"
+// CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+fp-armv8"
+// CHECK-CRYPTO-NEON-FP-ARMV8-DAG: "-target-feature" "+crypto"
// RUN: %clang -target armv8-linux-gnueabi -mfpu=none %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-NO-FP %s
// CHECK-NO-FP-NOT: "-target-feature" "+soft-float"
-// CHECK-NO-FP: "-target-feature" "+soft-float-abi"
-// CHECK-NO-FP: "-target-feature" "-fpregs"
-// CHECK-NO-FP: "-target-feature" "-vfp2"
-// CHECK-NO-FP: "-target-feature" "-vfp3"
-// CHECK-NO-FP: "-target-feature" "-vfp4"
-// CHECK-NO-FP: "-target-feature" "-fp-armv8"
+// CHECK-NO-FP-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-NO-FP-DAG: "-target-feature" "-fpregs"
+// CHECK-NO-FP-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-NO-FP-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-NO-FP-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-NO-FP-DAG: "-target-feature" "-fp-armv8d16sp"
// CHECK-NO-FP-NOT: "-target-feature" "+fp64"
// CHECK-NO-FP-NOT: "-target-feature" "+d32"
-// CHECK-NO-FP: "-target-feature" "-neon"
-// CHECK-NO-FP: "-target-feature" "-crypto"
+// CHECK-NO-FP-DAG: "-target-feature" "-neon"
+// CHECK-NO-FP-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-linux-gnueabihf %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-HF %s
@@ -334,7 +334,7 @@
// RUN: | FileCheck --check-prefix=CHECK-HF %s
// CHECK-HF-NOT: "-target-feature" "+soft-float"
// CHECK-HF-NOT: "-target-feature" "+soft-float-abi"
-// CHECK-HF: "-target-cpu" "arm1176jzf-s"
+// CHECK-HF-DAG: "-target-cpu" "arm1176jzf-s"
// RUN: %clang -target armv7-apple-darwin -x assembler %s -### -c 2>&1 \
// RUN: | FileCheck --check-prefix=ASM %s
@@ -356,20 +356,20 @@
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
// RUN: %clang -target armv8-linux-gnueabi -msoft-float %s -### -c 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-SOFT-ABI-FP %s
-// CHECK-SOFT-ABI-FP: "-target-feature" "+soft-float"
-// CHECK-SOFT-ABI-FP: "-target-feature" "+soft-float-abi"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-vfp2"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-vfp3"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-vfp4"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-fp-armv8"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-neon"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-crypto"
-// CHECK-SOFT-ABI-FP: "-target-feature" "-fpregs"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp2d16sp"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp3d16sp"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-vfp4d16sp"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fp-armv8d16sp"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-neon"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-crypto"
+// CHECK-SOFT-ABI-FP-DAG: "-target-feature" "-fpregs"
// 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-DAG: "-target-feature" "+soft-float"
+// CHECK-ARM5-ANDROID-FP-DEFAULT-DAG: "-target-feature" "+soft-float-abi"
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+d32"
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp3"
// CHECK-ARM5-ANDROID-FP-DEFAULT-NOT: "-target-feature" "+vfp4"
@@ -380,19 +380,19 @@
// RUN: %clang -target armv7-linux-androideabi21 %s -### -c 2>&1 \
// 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-DAG: "-target-feature" "+soft-float-abi"
+// CHECK-ARM7-ANDROID-FP-DEFAULT-DAG: "-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-DAG: "-target-feature" "+neon"
// CHECK-ARM7-ANDROID-FP-DEFAULT-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-DAG: "-target-feature" "+soft-float-abi"
// CHECK-ARM7-ANDROID-FP-D16-NOT: "-target-feature" "+d32"
-// CHECK-ARM7-ANDROID-FP-D16: "-target-feature" "+vfp3"
+// CHECK-ARM7-ANDROID-FP-D16-DAG: "-target-feature" "+vfp3d16"
// 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"
diff --git a/clang/test/Driver/armv8.1m.main.c b/clang/test/Driver/armv8.1m.main.c
index 9a745b1b809..dd272e1580a 100644
--- a/clang/test/Driver/armv8.1m.main.c
+++ b/clang/test/Driver/armv8.1m.main.c
@@ -4,37 +4,50 @@
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+fp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-FP < %t %s
-// CHECK-FP: "-target-feature" "+fp-armv8"
+// CHECK-FP-DAG: "-target-feature" "+fp-armv8d16sp"
+// CHECK-FP-NOT: "-target-feature" "+fp-armv8d16"
+// CHECK-FP-NOT: "-target-feature" "+fp-armv8sp"
+// CHECK-FP-NOT: "-target-feature" "+fp-armv8"
// CHECK-FP-NOT: "-target-feature" "+fp64"
// CHECK-FP-NOT: "-target-feature" "+d32"
-// CHECK-FP: "-target-feature" "+fullfp16"
+// CHECK-FP-DAG: "-target-feature" "+fullfp16"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+nofp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-NOFP < %t %s
-// CHECK-NOFP: "-target-feature" "-vfp2" "-target-feature" "-vfp3" "-target-feature" "-fp16" "-target-feature" "-vfp4" "-target-feature" "-fp-armv8" "-target-feature" "-fp64" "-target-feature" "-d32" "-target-feature" "-neon" "-target-feature" "-crypto"
+// CHECK-NOFP-DAG: "-target-feature" "-vfp2"
+// CHECK-NOFP-DAG: "-target-feature" "-vfp3"
+// CHECK-NOFP-DAG: "-target-feature" "-fp16"
+// CHECK-NOFP-DAG: "-target-feature" "-vfp4"
+// CHECK-NOFP-DAG: "-target-feature" "-fp-armv8"
+// CHECK-NOFP-DAG: "-target-feature" "-fp64"
+// CHECK-NOFP-DAG: "-target-feature" "-d32"
+// CHECK-NOFP-DAG: "-target-feature" "-neon"
+// CHECK-NOFP-DAG: "-target-feature" "-crypto"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+fp.dp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-FPDP < %t %s
-// CHECK-FPDP: "-target-feature" "+fp-armv8"
-// CHECK-FPDP: "-target-feature" "+fullfp16"
-// CHECK-FPDP: "-target-feature" "+fp64"
+// CHECK-FPDP-NOT: "-target-feature" "+fp-armv8sp"
+// CHECK-FPDP-DAG: "-target-feature" "+fp-armv8d16"
+// CHECK-FPDP-NOT: "-target-feature" "+fp-armv8"
+// CHECK-FPDP-DAG: "-target-feature" "+fullfp16"
+// CHECK-FPDP-DAG: "-target-feature" "+fp64"
// CHECK-FPDP-NOT: "-target-feature" "+d32"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+nofp.dp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-NOFPDP < %t %s
-// CHECK-NOFPDP: "-target-feature" "-fp64"
+// CHECK-NOFPDP-DAG: "-target-feature" "-fp64"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+mve -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-MVE < %t %s
-// CHECK-MVE: "-target-feature" "+mve"
+// CHECK-MVE-DAG: "-target-feature" "+mve"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+nomve -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-NOMVE < %t %s
-// CHECK-NOMVE: "-target-feature" "-mve"
+// CHECK-NOMVE-DAG: "-target-feature" "-mve"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+mve.fp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-MVEFP < %t %s
-// CHECK-MVEFP: "-target-feature" "+mve.fp"
+// CHECK-MVEFP-DAG: "-target-feature" "+mve.fp"
// CHECK-MVEFP-NOT: "-target-feature" "+fp64"
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+nomve.fp -### %s 2> %t
@@ -43,7 +56,7 @@
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+mve.fp+fp.dp -### %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-MVEFP_DP < %t %s
-// CHECK-MVEFP_DP: "-target-feature" "+mve.fp"
-// CHECK-MVEFP_DP: "-target-feature" "+fp64"
+// CHECK-MVEFP_DP-DAG: "-target-feature" "+mve.fp"
+// CHECK-MVEFP_DP-DAG: "-target-feature" "+fp64"
double foo (double a) { return a; }
diff --git a/clang/test/Preprocessor/arm-acle-6.5.c b/clang/test/Preprocessor/arm-acle-6.5.c
index 143ed75bed8..dccc59ec26a 100644
--- a/clang/test/Preprocessor/arm-acle-6.5.c
+++ b/clang/test/Preprocessor/arm-acle-6.5.c
@@ -57,8 +57,11 @@
// RUN: %clang -target armv7r-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA
// RUN: %clang -target armv7r-eabi -mfpu=vfpv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA
// RUN: %clang -target armv7em-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA
-// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA
+
+// (armv8 defaults to fp-armv8 > vfpv4, so we *should* expect FMA unless we downgrade to pre-vfpv4)
+// RUN: %clang -target armv8-eabi -mfpu=vfpv3 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-NO-FMA
// RUN: %clang -target armv8-eabi -mfpu=vfpv4 -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA
+// RUN: %clang -target armv8-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-FMA
// CHECK-FMA: __ARM_FEATURE_FMA 1
diff --git a/clang/test/Preprocessor/arm-target-features.c b/clang/test/Preprocessor/arm-target-features.c
index 57b0aa9c69e..ccc6d720a3d 100644
--- a/clang/test/Preprocessor/arm-target-features.c
+++ b/clang/test/Preprocessor/arm-target-features.c
@@ -776,3 +776,6 @@
// CHECK-V85A: #define __ARM_ARCH 8
// CHECK-V85A: #define __ARM_ARCH_8_5A__ 1
// CHECK-V85A: #define __ARM_ARCH_PROFILE 'A'
+
+// RUN: %clang -target arm-none-none-eabi -march=armv7-m -mfpu=softvfp -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SOFTVFP %s
+// CHECK-SOFTVFP-NOT: #define __ARM_FP 0x
OpenPOWER on IntegriCloud