Author: sjoerdmeijer Date: Thu May 30 07:22:26 2019 New Revision: 362096 URL: http://llvm.org/viewvc/llvm-project?rev=362096&view=rev Log: [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 Added: cfe/trunk/test/Driver/armv8.1m.main.c cfe/trunk/test/Driver/armv8.1m.main.s Modified: cfe/trunk/lib/Basic/Targets/ARM.cpp Modified: cfe/trunk/lib/Basic/Targets/ARM.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/ARM.cpp?rev=362096&r1=362095&r2=362096&view=diff ============================================================================== --- cfe/trunk/lib/Basic/Targets/ARM.cpp (original) +++ cfe/trunk/lib/Basic/Targets/ARM.cpp Thu May 30 07:22:26 2019 @@ -197,6 +197,8 @@ StringRef ARMTargetInfo::getCPUAttr() co return "8M_MAIN"; case llvm::ARM::ArchKind::ARMV8R: return "8R"; + case llvm::ARM::ArchKind::ARMV8_1MMainline: + return "8_1M_MAIN"; } } Added: cfe/trunk/test/Driver/armv8.1m.main.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/armv8.1m.main.c?rev=362096&view=auto ============================================================================== --- cfe/trunk/test/Driver/armv8.1m.main.c (added) +++ cfe/trunk/test/Driver/armv8.1m.main.c Thu May 30 07:22:26 2019 @@ -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; } Added: cfe/trunk/test/Driver/armv8.1m.main.s URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/armv8.1m.main.s?rev=362096&view=auto ============================================================================== --- cfe/trunk/test/Driver/armv8.1m.main.s (added) +++ cfe/trunk/test/Driver/armv8.1m.main.s Thu May 30 07:22:26 2019 @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits