forked from OSchip/llvm-project
[ARM] Add CLI support for Armv8.1-M and MVE
Given the existing infrastructure in LLVM side for +fp and +fp.dp, this is more or less trivial, needing only one tiny source change and a couple of tests. Patch by Simon Tatham. Differential Revision: https://reviews.llvm.org/D60699 llvm-svn: 362096
This commit is contained in:
parent
064ae08e86
commit
24f12711ae
|
@ -197,6 +197,8 @@ StringRef ARMTargetInfo::getCPUAttr() const {
|
|||
return "8M_MAIN";
|
||||
case llvm::ARM::ArchKind::ARMV8R:
|
||||
return "8R";
|
||||
case llvm::ARM::ArchKind::ARMV8_1MMainline:
|
||||
return "8_1M_MAIN";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1-m.main+dsp -### %s 2> %t
|
||||
// RUN: FileCheck --check-prefix=CHECK-DSP < %t %s
|
||||
// CHECK-DSP: "-target-feature" "+dsp"
|
||||
|
||||
// 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-NOT: "-target-feature" "+fp64"
|
||||
// CHECK-FP-NOT: "-target-feature" "+d32"
|
||||
// CHECK-FP: "-target-feature" "+fullfp16"
|
||||
|
||||
// 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" "+d32"
|
||||
|
||||
// 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"
|
||||
|
||||
// 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-NOT: "-target-feature" "+fp64"
|
||||
|
||||
// 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"
|
||||
|
||||
// RUN: %clang -target arm-arm-none-eabi -march=armv8.1m.main+fp -S %s
|
||||
double foo (double a) { return a; }
|
|
@ -0,0 +1,65 @@
|
|||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8-m.main %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V8M < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+dsp %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_DSP < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+fp %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_FP < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+fp.dp %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_FPDP < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+mve %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_MVE < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+mve+fp %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_MVE_FP < %t %s
|
||||
# RUN: not %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+mve.fp %s 2>%t
|
||||
# RUN: FileCheck --check-prefix=ERROR-V81M_MVEFP < %t %s
|
||||
# RUN: %clang -c -target arm-none-none-eabi -march=armv8.1-m.main+mve.fp+fp.dp %s
|
||||
|
||||
.syntax unified
|
||||
.thumb
|
||||
.text
|
||||
|
||||
csinc r0, r1, r2, eq
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
|
||||
qadd r0, r1, r2
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_FP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_FPDP: :[[@LINE-4]]:1: error
|
||||
|
||||
vadd.f16 s0, s1, s2
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_DSP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_MVE: :[[@LINE-4]]:1: error
|
||||
|
||||
vabs.f32 s0, s1
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_DSP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_MVE: :[[@LINE-4]]:1: error
|
||||
|
||||
vcmp.f64 d0,d1
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_DSP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_FP: :[[@LINE-4]]:1: error
|
||||
# ERROR-V81M_MVE: :[[@LINE-5]]:1: error
|
||||
# ERROR-V81M_MVE_FP: :[[@LINE-6]]:1: error
|
||||
# ERROR-V81M_MVEFP: :[[@LINE-7]]:1: error
|
||||
|
||||
asrl r0, r1, r2
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_DSP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_FP: :[[@LINE-4]]:1: error
|
||||
# ERROR-V81M_FPDP: :[[@LINE-5]]:1: error
|
||||
|
||||
vcadd.i8 q0, q1, q2, #90
|
||||
# ERROR-V8M: :[[@LINE-1]]:1: error
|
||||
# ERROR-V81M: :[[@LINE-2]]:1: error
|
||||
# ERROR-V81M_DSP: :[[@LINE-3]]:1: error
|
||||
# ERROR-V81M_FP: :[[@LINE-4]]:1: error
|
||||
# ERROR-V81M_FPDP: :[[@LINE-5]]:1: error
|
Loading…
Reference in New Issue