Skip to content

Commit 3097ab0

Browse files
authored
[ARM][MC] Add support for Armv8.1-M Mainline to '.arch' asm directive (llvm#135184)
Armv8.1-M Mainline architecture is supported by Clang's driver & LLVM's ARM backend, but MC would report an 'Unknown Arch: armv8.1-m.main' error when processing '.arch armv8.1-m.main' assembler directives.
1 parent 396e2ef commit 3097ab0

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,7 @@ void ARMTargetELFStreamer::emitArchDefaultAttributes() {
911911

912912
case ARM::ArchKind::ARMV8MBaseline:
913913
case ARM::ArchKind::ARMV8MMainline:
914+
case ARM::ArchKind::ARMV8_1MMainline:
914915
S.setAttributeItem(THUMB_ISA_use, AllowThumbDerived, false);
915916
S.setAttributeItem(CPU_arch_profile, MicroControllerProfile, false);
916917
break;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@ Test the .arch directive for armv8.1-m.main
2+
3+
@ This test case will check the default .ARM.attributes value for the
4+
@ armv8.1-m.main architecture.
5+
6+
@ RUN: llvm-mc -triple arm-eabi -filetype asm %s \
7+
@ RUN: | FileCheck %s -check-prefix CHECK-ASM
8+
@ RUN: llvm-mc -triple arm-eabi -filetype obj %s \
9+
@ RUN: | llvm-readobj --arch-specific - | FileCheck %s -check-prefix CHECK-ATTR
10+
11+
.syntax unified
12+
.arch armv8.1-m.main
13+
14+
@ CHECK-ASM: .arch armv8.1-m.main
15+
16+
@ CHECK-ATTR: FileAttributes {
17+
@ CHECK-ATTR: Attribute {
18+
@ CHECK-ATTR: TagName: CPU_name
19+
@ CHECK-ATTR: Value: 8.1-M.Mainline
20+
@ CHECK-ATTR: }
21+
@ CHECK-ATTR: Attribute {
22+
@ CHECK-ATTR: TagName: CPU_arch
23+
@ CHECK-ATTR: Description: ARM v8.1-M Mainline
24+
@ CHECK-ATTR: }
25+
@ CHECK-ATTR: Attribute {
26+
@ CHECK-ATTR: TagName: CPU_arch_profile
27+
@ CHECK-ATTR: Description: Microcontroller
28+
@ CHECK-ATTR: }
29+
@ CHECK-ATTR: Attribute {
30+
@ CHECK-ATTR: TagName: THUMB_ISA_use
31+
@ CHECK-ATTR: Description: Permitted
32+
@ CHECK-ATTR: }
33+
@ CHECK-ATTR: }
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@ Test the .arch directive for armv8.1-m.main
2+
3+
@ This test case will check the default .ARM.attributes value for the
4+
@ armv8.1-m.main architecture when using the armv8.1m.main alias.
5+
6+
@ RUN: llvm-mc -triple arm-eabi -filetype asm %s \
7+
@ RUN: | FileCheck %s -check-prefix CHECK-ASM
8+
@ RUN: llvm-mc -triple arm-eabi -filetype obj %s \
9+
@ RUN: | llvm-readobj --arch-specific - | FileCheck %s -check-prefix CHECK-ATTR
10+
11+
.syntax unified
12+
.arch armv8.1m.main
13+
14+
@ CHECK-ASM: .arch armv8.1-m.main
15+
16+
@ CHECK-ATTR: FileAttributes {
17+
@ CHECK-ATTR: Attribute {
18+
@ CHECK-ATTR: TagName: CPU_name
19+
@ CHECK-ATTR: Value: 8.1-M.Mainline
20+
@ CHECK-ATTR: }
21+
@ CHECK-ATTR: Attribute {
22+
@ CHECK-ATTR: TagName: CPU_arch
23+
@ CHECK-ATTR: Description: ARM v8.1-M Mainline
24+
@ CHECK-ATTR: }
25+
@ CHECK-ATTR: Attribute {
26+
@ CHECK-ATTR: TagName: CPU_arch_profile
27+
@ CHECK-ATTR: Description: Microcontroller
28+
@ CHECK-ATTR: }
29+
@ CHECK-ATTR: Attribute {
30+
@ CHECK-ATTR: TagName: THUMB_ISA_use
31+
@ CHECK-ATTR: Description: Permitted
32+
@ CHECK-ATTR: }
33+
@ CHECK-ATTR: }

0 commit comments

Comments
 (0)