diff options
| author | Oliver Stannard <oliver.stannard@arm.com> | 2017-11-29 10:12:15 +0000 |
|---|---|---|
| committer | Oliver Stannard <oliver.stannard@arm.com> | 2017-11-29 10:12:15 +0000 |
| commit | 9ea2eaeb505a5bc6dc8bd45a6dce3155c87f1214 (patch) | |
| tree | 8f7b43f64a451e7f7e43ebc65065e47c1f7e7199 | |
| parent | d4df744434100b9322dc2ed049192502b0f1f5bd (diff) | |
| download | bcm5719-llvm-9ea2eaeb505a5bc6dc8bd45a6dce3155c87f1214.tar.gz bcm5719-llvm-9ea2eaeb505a5bc6dc8bd45a6dce3155c87f1214.zip | |
[ARM] Add support for armv7e-m to the .arch directive
This will allow compilation of assembly files targeting armv7e-m without having
to specify the Tag_CPU_arch attribute as a workaround.
Differential revision: https://reviews.llvm.org/D40370
Patch by Ian Tessier!
llvm-svn: 319303
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp | 1 | ||||
| -rw-r--r-- | llvm/test/CodeGen/ARM/build-attributes.ll | 3 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/directive-arch-armv7e-m.s | 33 | ||||
| -rw-r--r-- | llvm/test/MC/ARM/directive-arch-armv7em.s | 33 |
4 files changed, 70 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index 8cfa18f58b6..d465da1a7bb 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -847,6 +847,7 @@ void ARMTargetELFStreamer::emitArchDefaultAttributes() { setAttributeItem(THUMB_ISA_use, AllowThumb32, false); break; + case ARM::ArchKind::ARMV7EM: case ARM::ArchKind::ARMV7M: setAttributeItem(CPU_arch_profile, MicroControllerProfile, false); setAttributeItem(THUMB_ISA_use, AllowThumb32, false); diff --git a/llvm/test/CodeGen/ARM/build-attributes.ll b/llvm/test/CodeGen/ARM/build-attributes.ll index bef7bbe01bf..a84bc9deecd 100644 --- a/llvm/test/CodeGen/ARM/build-attributes.ll +++ b/llvm/test/CodeGen/ARM/build-attributes.ll @@ -191,6 +191,9 @@ ; ARMv7r ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=NO-STRICT-ALIGN ; RUN: llc < %s -mtriple=armv7r-none-linux-gnueabi -mcpu=cortex-r5 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN +; ARMv7em +; RUN: llc < %s -mtriple=thumbv7em-none-linux-gnueabi -mcpu=cortex-m4 | FileCheck %s --check-prefix=NO-STRICT-ALIGN +; RUN: llc < %s -mtriple=thumbv7em-none-linux-gnueabi -mcpu=cortex-m4 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN ; ARMv7m ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 | FileCheck %s --check-prefix=NO-STRICT-ALIGN ; RUN: llc < %s -mtriple=thumbv7m-none-linux-gnueabi -mcpu=cortex-m3 -mattr=+strict-align | FileCheck %s --check-prefix=STRICT-ALIGN diff --git a/llvm/test/MC/ARM/directive-arch-armv7e-m.s b/llvm/test/MC/ARM/directive-arch-armv7e-m.s new file mode 100644 index 00000000000..f7c5d67b8fe --- /dev/null +++ b/llvm/test/MC/ARM/directive-arch-armv7e-m.s @@ -0,0 +1,33 @@ +@ Test the .arch directive for armv7e-m + +@ This test case will check the default .ARM.attributes value for the +@ armv7e-m architecture. + +@ RUN: llvm-mc -triple arm-eabi -filetype asm %s \ +@ RUN: | FileCheck %s -check-prefix CHECK-ASM +@ RUN: llvm-mc -triple arm-eabi -filetype obj %s \ +@ RUN: | llvm-readobj -arm-attributes | FileCheck %s -check-prefix CHECK-ATTR + + .syntax unified + .arch armv7e-m + +@ CHECK-ASM: .arch armv7e-m + +@ CHECK-ATTR: FileAttributes { +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_name +@ CHECK-ATTR: Value: 7E-M +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_arch +@ CHECK-ATTR: Description: ARM v7 +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_arch_profile +@ CHECK-ATTR: Description: Microcontroller +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: THUMB_ISA_use +@ CHECK-ATTR: Description: Thumb-2 +@ CHECK-ATTR: } +@ CHECK-ATTR: } diff --git a/llvm/test/MC/ARM/directive-arch-armv7em.s b/llvm/test/MC/ARM/directive-arch-armv7em.s new file mode 100644 index 00000000000..f37398106de --- /dev/null +++ b/llvm/test/MC/ARM/directive-arch-armv7em.s @@ -0,0 +1,33 @@ +@ Test the .arch directive for armv7e-m + +@ This test case will check the default .ARM.attributes value for the +@ armv7e-m architecture when using the armv7em alias. + +@ RUN: llvm-mc -triple arm-eabi -filetype asm %s \ +@ RUN: | FileCheck %s -check-prefix CHECK-ASM +@ RUN: llvm-mc -triple arm-eabi -filetype obj %s \ +@ RUN: | llvm-readobj -arm-attributes | FileCheck %s -check-prefix CHECK-ATTR + + .syntax unified + .arch armv7em + +@ CHECK-ASM: .arch armv7e-m + +@ CHECK-ATTR: FileAttributes { +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_name +@ CHECK-ATTR: Value: 7E-M +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_arch +@ CHECK-ATTR: Description: ARM v7 +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: CPU_arch_profile +@ CHECK-ATTR: Description: Microcontroller +@ CHECK-ATTR: } +@ CHECK-ATTR: Attribute { +@ CHECK-ATTR: TagName: THUMB_ISA_use +@ CHECK-ATTR: Description: Thumb-2 +@ CHECK-ATTR: } +@ CHECK-ATTR: } |

