diff options
author | Logan Chien <tzuhsiang.chien@gmail.com> | 2013-10-28 17:51:12 +0000 |
---|---|---|
committer | Logan Chien <tzuhsiang.chien@gmail.com> | 2013-10-28 17:51:12 +0000 |
commit | 23125d02d929758e1b0dbb30b13f1deff7a5ea4b (patch) | |
tree | 4c77dc2e41386fde9ae2f6529488c71689c50616 /test | |
parent | 790b973f80c8fd41f0908536409538336242f74d (diff) | |
download | external_llvm-23125d02d929758e1b0dbb30b13f1deff7a5ea4b.zip external_llvm-23125d02d929758e1b0dbb30b13f1deff7a5ea4b.tar.gz external_llvm-23125d02d929758e1b0dbb30b13f1deff7a5ea4b.tar.bz2 |
[arm] Implement eabi_attribute, cpu, and fpu directives.
This commit allows the ARM integrated assembler to parse
and assemble the code with .eabi_attribute, .cpu, and
.fpu directives.
To implement the feature, this commit moves the code from
AttrEmitter to ARMTargetStreamers, and several new test
cases related to cortex-m4, cortex-r5, and cortex-a15 are
added.
Besides, this commit also change the Subtarget->isFPOnlySP()
to Subtarget->hasD16() to match the usage of .fpu directive.
This commit changes the test cases:
* Several .eabi_attribute directives in
2010-09-29-mc-asm-header-test.ll are removed because the .fpu
directive already cover the functionality.
* In the Cortex-A15 test case, the value for
Tag_Advanced_SIMD_arch has be changed from 1 to 2,
which is more precise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193524 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll | 33 | ||||
-rw-r--r-- | test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll | 264 | ||||
-rw-r--r-- | test/MC/ARM/directive-cpu.s | 26 | ||||
-rw-r--r-- | test/MC/ARM/directive-eabi_attribute.s | 56 | ||||
-rw-r--r-- | test/MC/ARM/directive-fpu-multiple.s | 26 | ||||
-rw-r--r-- | test/MC/ARM/directive-fpu.s | 26 |
6 files changed, 393 insertions, 38 deletions
diff --git a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll index e9e9def..925d0cd 100644 --- a/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll +++ b/test/CodeGen/ARM/2010-09-29-mc-asm-header-test.ll @@ -1,3 +1,6 @@ +; This tests that MC/asm header conversion is smooth and that the +; build attributes are correct + ; RUN: llc < %s -mtriple=armv6-linux-gnueabi | FileCheck %s --check-prefix=V6 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi | FileCheck %s --check-prefix=V6M ; RUN: llc < %s -mtriple=armv6-linux-gnueabi -mcpu=arm1156t2f-s | FileCheck %s --check-prefix=ARM1156T2F-S @@ -10,13 +13,12 @@ ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mattr=-crypto | FileCheck %s --check-prefix=V8-FPARMv8-NEON ; RUN: llc < %s -mtriple=armv8-linux-gnueabi | FileCheck %s --check-prefix=V8-FPARMv8-NEON-CRYPTO ; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 | FileCheck %s --check-prefix=CORTEX-A9 +; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 | FileCheck %s --check-prefix=CORTEX-A15 ; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 | FileCheck %s --check-prefix=CORTEX-M0 ; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 | FileCheck %s --check-prefix=CORTEX-M4 ; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 | FileCheck %s --check-prefix=CORTEX-R5 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a53 | FileCheck %s --check-prefix=CORTEX-A53 ; RUN: llc < %s -mtriple=armv8-linux-gnueabi -mcpu=cortex-a57 | FileCheck %s --check-prefix=CORTEX-A57 -; This tests that MC/asm header conversion is smooth and that build attributes are correct -; ; V6: .eabi_attribute 6, 6 ; V6: .eabi_attribute 8, 1 @@ -34,7 +36,6 @@ ; ARM1156T2F-S: .eabi_attribute 6, 8 ; ARM1156T2F-S: .eabi_attribute 8, 1 ; ARM1156T2F-S: .eabi_attribute 9, 2 -; ARM1156T2F-S: .eabi_attribute 10, 2 ; ARM1156T2F-S: .fpu vfpv2 ; ARM1156T2F-S: .eabi_attribute 20, 1 ; ARM1156T2F-S: .eabi_attribute 21, 1 @@ -66,7 +67,6 @@ ; V8-FPARMv8: .syntax unified ; V8-FPARMv8: .eabi_attribute 6, 14 -; V8-FPARMv8: .eabi_attribute 10, 7 ; V8-FPARMv8: .fpu fp-armv8 ; V8-NEON: .syntax unified @@ -77,13 +77,11 @@ ; V8-FPARMv8-NEON: .syntax unified ; V8-FPARMv8-NEON: .eabi_attribute 6, 14 ; V8-FPARMv8-NEON: .fpu neon-fp-armv8 -; V8-FPARMv8-NEON: .eabi_attribute 10, 7 ; V8-FPARMv8-NEON: .eabi_attribute 12, 3 ; V8-FPARMv8-NEON-CRYPTO: .syntax unified ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 6, 14 ; V8-FPARMv8-NEON-CRYPTO: .fpu crypto-neon-fp-armv8 -; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 10, 7 ; V8-FPARMv8-NEON-CRYPTO: .eabi_attribute 12, 3 ; CORTEX-A9: .cpu cortex-a9 @@ -92,14 +90,25 @@ ; CORTEX-A9: .eabi_attribute 8, 1 ; CORTEX-A9: .eabi_attribute 9, 2 ; CORTEX-A9: .fpu neon -; CORTEX-A9: .eabi_attribute 10, 3 -; CORTEX-A9: .eabi_attribute 12, 1 ; CORTEX-A9: .eabi_attribute 20, 1 ; CORTEX-A9: .eabi_attribute 21, 1 ; CORTEX-A9: .eabi_attribute 23, 3 ; CORTEX-A9: .eabi_attribute 24, 1 ; CORTEX-A9: .eabi_attribute 25, 1 +; CORTEX-A15: .cpu cortex-a15 +; CORTEX-A15: .eabi_attribute 6, 10 +; CORTEX-A15: .eabi_attribute 7, 65 +; CORTEX-A15: .eabi_attribute 8, 1 +; CORTEX-A15: .eabi_attribute 9, 2 +; CORTEX-A15: .fpu neon-vfpv4 +; CORTEX-A15: .eabi_attribute 20, 1 +; CORTEX-A15: .eabi_attribute 21, 1 +; CORTEX-A15: .eabi_attribute 23, 3 +; CORTEX-A15: .eabi_attribute 24, 1 +; CORTEX-A15: .eabi_attribute 25, 1 +; CORTEX-A15: .eabi_attribute 44, 2 + ; CORTEX-M0: .cpu cortex-m0 ; CORTEX-M0: .eabi_attribute 6, 12 ; CORTEX-M0: .eabi_attribute 7, 77 @@ -113,8 +122,7 @@ ; CORTEX-M4: .eabi_attribute 7, 77 ; CORTEX-M4: .eabi_attribute 8, 0 ; CORTEX-M4: .eabi_attribute 9, 2 -; CORTEX-M4: .eabi_attribute 10, 6 -; CORTEX-M4: .fpu vfpv4 +; CORTEX-M4: .fpu vfpv4-d16 ; CORTEX-M4: .eabi_attribute 20, 1 ; CORTEX-M4: .eabi_attribute 21, 1 ; CORTEX-M4: .eabi_attribute 23, 3 @@ -127,8 +135,7 @@ ; CORTEX-R5: .eabi_attribute 7, 82 ; CORTEX-R5: .eabi_attribute 8, 1 ; CORTEX-R5: .eabi_attribute 9, 2 -; CORTEX-R5: .eabi_attribute 10, 4 -; CORTEX-R5: .fpu vfpv3 +; CORTEX-R5: .fpu vfpv3-d16 ; CORTEX-R5: .eabi_attribute 20, 1 ; CORTEX-R5: .eabi_attribute 21, 1 ; CORTEX-R5: .eabi_attribute 23, 3 @@ -142,7 +149,6 @@ ; CORTEX-A53: .eabi_attribute 8, 1 ; CORTEX-A53: .eabi_attribute 9, 2 ; CORTEX-A53: .fpu crypto-neon-fp-armv8 -; CORTEX-A53: .eabi_attribute 10, 7 ; CORTEX-A53: .eabi_attribute 12, 3 ; CORTEX-A53: .eabi_attribute 24, 1 ; CORTEX-A53: .eabi_attribute 25, 1 @@ -154,7 +160,6 @@ ; CORTEX-A57: .eabi_attribute 8, 1 ; CORTEX-A57: .eabi_attribute 9, 2 ; CORTEX-A57: .fpu crypto-neon-fp-armv8 -; CORTEX-A57: .eabi_attribute 10, 7 ; CORTEX-A57: .eabi_attribute 12, 3 ; CORTEX-A57: .eabi_attribute 24, 1 ; CORTEX-A57: .eabi_attribute 25, 1 diff --git a/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll b/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll index 0924691..4efccab 100644 --- a/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll +++ b/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll @@ -1,13 +1,36 @@ -; RUN: llc %s -mtriple=arm-linux-gnueabi -filetype=obj -o - | \ -; RUN: llvm-readobj -s -sd | FileCheck -check-prefix=BASIC %s -; RUN: llc %s -mtriple=armv7-linux-gnueabi -march=arm -mcpu=cortex-a8 \ -; RUN: -mattr=-neon,-vfp3,+vfp2 \ -; RUN: -arm-reserve-r9 -filetype=obj -o - | \ -; RUN: llvm-readobj -s -sd | FileCheck -check-prefix=CORTEXA8 %s +; This tests that the expected ARM attributes are emitted. +; RUN: llc < %s -mtriple=arm-linux-gnueabi -filetype=obj -o - \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=BASIC +; RUN: llc < %s -mtriple=armv7-linux-gnueabi -march=arm -mcpu=cortex-a8 \ +; RUN: -mattr=-neon,-vfp3,+vfp2 -arm-reserve-r9 -filetype=obj -o - \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-A8 +; RUN: llc < %s -mtriple=armv7-linux-gnueabi -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=V7 +; RUN: llc < %s -mtriple=armv8-linux-gnueabi -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=V8 +; RUN: llc < %s -mtriple=thumbv8-linux-gnueabi -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=Vt8 +; RUN: llc < %s -mtriple=armv8-linux-gnueabi \ +; RUN: -mattr=-neon,-crypto -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=V8-FPARMv8 +; RUN: llc < %s -mtriple=armv8-linux-gnueabi \ +; RUN: -mattr=-fp-armv8,-crypto -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=V8-NEON +; RUN: llc < %s -mtriple=armv8-linux-gnueabi \ +; RUN: -mattr=-crypto -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=V8-FPARMv8-NEON +; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a9 -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-A9 +; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a15 -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-A15 +; RUN: llc < %s -mtriple=thumbv6m-linux-gnueabi -mcpu=cortex-m0 -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-M0 +; RUN: llc < %s -mtriple=thumbv7m-linux-gnueabi -mcpu=cortex-m4 -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-M4 +; RUN: llc < %s -mtriple=armv7r-linux-gnueabi -mcpu=cortex-r5 -filetype=obj \ +; RUN: | llvm-readobj -s -sd | FileCheck %s --check-prefix=CORTEX-R5 -; This tests that the extpected ARM attributes are emitted. -; ; BASIC: Section { ; BASIC: Name: .ARM.attributes ; BASIC-NEXT: Type: SHT_ARM_ATTRIBUTES @@ -25,22 +48,215 @@ ; BASIC-NEXT: 0010: 06010801 14011501 17031801 1901 ; BASIC-NEXT: ) -; CORTEXA8: Name: .ARM.attributes -; CORTEXA8-NEXT: Type: SHT_ARM_ATTRIBUTES -; CORTEXA8-NEXT: Flags [ (0x0) -; CORTEXA8-NEXT: ] -; CORTEXA8-NEXT: Address: 0x0 -; CORTEXA8-NEXT: Offset: 0x3C -; CORTEXA8-NEXT: Size: 47 -; CORTEXA8-NEXT: Link: 0 -; CORTEXA8-NEXT: Info: 0 -; CORTEXA8-NEXT: AddressAlignment: 1 -; CORTEXA8-NEXT: EntrySize: 0 -; CORTEXA8-NEXT: SectionData ( -; CORTEXA8-NEXT: 0000: 412E0000 00616561 62690001 24000000 -; CORTEXA8-NEXT: 0010: 05434F52 5445582D 41380006 0A074108 -; CORTEXA8-NEXT: 0020: 0109020A 02140115 01170318 011901 -; CORTEXA8-NEXT: ) +; CORTEX-A8: Name: .ARM.attributes +; CORTEX-A8-NEXT: Type: SHT_ARM_ATTRIBUTES +; CORTEX-A8-NEXT: Flags [ (0x0) +; CORTEX-A8-NEXT: ] +; CORTEX-A8-NEXT: Address: 0x0 +; CORTEX-A8-NEXT: Offset: 0x3C +; CORTEX-A8-NEXT: Size: 47 +; CORTEX-A8-NEXT: Link: 0 +; CORTEX-A8-NEXT: Info: 0 +; CORTEX-A8-NEXT: AddressAlignment: 1 +; CORTEX-A8-NEXT: EntrySize: 0 +; CORTEX-A8-NEXT: SectionData ( +; CORTEX-A8-NEXT: 0000: 412E0000 00616561 62690001 24000000 +; CORTEX-A8-NEXT: 0010: 05434F52 5445582D 41380006 0A074108 +; CORTEX-A8-NEXT: 0020: 0109020A 02140115 01170318 011901 +; CORTEX-A8-NEXT: ) + +; V7: Name: .ARM.attributes +; V7-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; V7-NEXT: Flags [ (0x0) +; V7-NEXT: ] +; V7-NEXT: Address: 0x0 +; V7-NEXT: Offset: 0x3C +; V7-NEXT: Size: 36 +; V7-NEXT: Link: 0 +; V7-NEXT: Info: 0 +; V7-NEXT: AddressAlignment: 1 +; V7-NEXT: EntrySize: 0 +; V7-NEXT: SectionData ( +; V7-NEXT: 0000: 41230000 00616561 62690001 19000000 +; V7-NEXT: 0010: 060A0801 09020A03 0C011401 15011703 +; V7-NEXT: 0020: 18011901 +; V7-NEXT: ) + +; V8: Name: .ARM.attributes +; V8-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; V8-NEXT: Flags [ (0x0) +; V8-NEXT: ] +; V8-NEXT: Address: 0x0 +; V8-NEXT: Offset: 0x3C +; V8-NEXT: Size: 38 +; V8-NEXT: Link: 0 +; V8-NEXT: Info: 0 +; V8-NEXT: AddressAlignment: 1 +; V8-NEXT: EntrySize: 0 +; V8-NEXT: SectionData ( +; V8-NEXT: 0000: 41250000 00616561 62690001 1B000000 +; V8-NEXT: 0010: 060E0801 09020A07 0C031401 15011703 +; V8-NEXT: 0020: 18011901 2C02 +; V8-NEXT: ) + +; Vt8: Name: .ARM.attributes +; Vt8-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; Vt8-NEXT: Flags [ (0x0) +; Vt8-NEXT: ] +; Vt8-NEXT: Address: 0x0 +; Vt8-NEXT: Offset: 0x38 +; Vt8-NEXT: Size: 38 +; Vt8-NEXT: Link: 0 +; Vt8-NEXT: Info: 0 +; Vt8-NEXT: AddressAlignment: 1 +; Vt8-NEXT: EntrySize: 0 +; Vt8-NEXT: SectionData ( +; Vt8-NEXT: 0000: 41250000 00616561 62690001 1B000000 +; Vt8-NEXT: 0010: 060E0801 09020A07 0C031401 15011703 +; Vt8-NEXT: 0020: 18011901 2C02 +; Vt8-NEXT: ) + + +; V8-FPARMv8: Name: .ARM.attributes +; V8-FPARMv8-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; V8-FPARMv8-NEXT: Flags [ (0x0) +; V8-FPARMv8-NEXT: ] +; V8-FPARMv8-NEXT: Address: 0x0 +; V8-FPARMv8-NEXT: Offset: 0x3C +; V8-FPARMv8-NEXT: Size: 36 +; V8-FPARMv8-NEXT: Link: 0 +; V8-FPARMv8-NEXT: Info: 0 +; V8-FPARMv8-NEXT: AddressAlignment: 1 +; V8-FPARMv8-NEXT: EntrySize: 0 +; V8-FPARMv8-NEXT: SectionData ( +; V8-FPARMv8-NEXT: 0000: 41230000 00616561 62690001 19000000 +; V8-FPARMv8-NEXT: 0010: 060E0801 09020A07 14011501 17031801 +; V8-FPARMv8-NEXT: 0020: 19012C02 +; V8-FPARMv8-NEXT: ) + + +; V8-NEON: Name: .ARM.attributes +; V8-NEON-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; V8-NEON-NEXT: Flags [ (0x0) +; V8-NEON-NEXT: ] +; V8-NEON-NEXT: Address: 0x0 +; V8-NEON-NEXT: Offset: 0x3C +; V8-NEON-NEXT: Size: 38 +; V8-NEON-NEXT: Link: 0 +; V8-NEON-NEXT: Info: 0 +; V8-NEON-NEXT: AddressAlignment: 1 +; V8-NEON-NEXT: EntrySize: 0 +; V8-NEON-NEXT: SectionData ( +; V8-NEON-NEXT: 0000: 41250000 00616561 62690001 1B000000 +; V8-NEON-NEXT: 0010: 060E0801 09020A05 0C031401 15011703 +; V8-NEON-NEXT: 0020: 18011901 2C02 +; V8-NEON-NEXT: ) + +; V8-FPARMv8-NEON: Name: .ARM.attributes +; V8-FPARMv8-NEON-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; V8-FPARMv8-NEON-NEXT: Flags [ (0x0) +; V8-FPARMv8-NEON-NEXT: ] +; V8-FPARMv8-NEON-NEXT: Address: 0x0 +; V8-FPARMv8-NEON-NEXT: Offset: 0x3C +; V8-FPARMv8-NEON-NEXT: Size: 38 +; V8-FPARMv8-NEON-NEXT: Link: 0 +; V8-FPARMv8-NEON-NEXT: Info: 0 +; V8-FPARMv8-NEON-NEXT: AddressAlignment: 1 +; V8-FPARMv8-NEON-NEXT: EntrySize: 0 +; V8-FPARMv8-NEON-NEXT: SectionData ( +; V8-FPARMv8-NEON-NEXT: 0000: 41250000 00616561 62690001 1B000000 +; V8-FPARMv8-NEON-NEXT: 0010: 060E0801 09020A07 0C031401 15011703 +; V8-FPARMv8-NEON-NEXT: 0020: 18011901 2C02 +; V8-FPARMv8-NEON-NEXT: ) + +; CORTEX-A9: Name: .ARM.attributes +; CORTEX-A9-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; CORTEX-A9-NEXT: Flags [ (0x0) +; CORTEX-A9-NEXT: ] +; CORTEX-A9-NEXT: Address: 0x0 +; CORTEX-A9-NEXT: Offset: 0x3C +; CORTEX-A9-NEXT: Size: 49 +; CORTEX-A9-NEXT: Link: 0 +; CORTEX-A9-NEXT: Info: 0 +; CORTEX-A9-NEXT: AddressAlignment: 1 +; CORTEX-A9-NEXT: EntrySize: 0 +; CORTEX-A9-NEXT: SectionData ( +; CORTEX-A9-NEXT: 0000: 41300000 00616561 62690001 26000000 +; CORTEX-A9-NEXT: 0010: 05434F52 5445582D 41390006 0A074108 +; CORTEX-A9-NEXT: 0020: 0109020A 030C0114 01150117 03180119 +; CORTEX-A9-NEXT: 0030: 01 +; CORTEX-A9-NEXT: ) + +; CORTEX-A15: Name: .ARM.attributes +; CORTEX-A15-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; CORTEX-A15-NEXT: Flags [ (0x0) +; CORTEX-A15-NEXT: ] +; CORTEX-A15-NEXT: Address: 0x0 +; CORTEX-A15-NEXT: Offset: 0x3C +; CORTEX-A15-NEXT: Size: 52 +; CORTEX-A15-NEXT: Link: 0 +; CORTEX-A15-NEXT: Info: 0 +; CORTEX-A15-NEXT: AddressAlignment: 1 +; CORTEX-A15-NEXT: EntrySize: 0 +; CORTEX-A15-NEXT: SectionData ( +; CORTEX-A15-NEXT: 0000: 41330000 00616561 62690001 29000000 +; CORTEX-A15-NEXT: 0010: 05434F52 5445582D 41313500 060A0741 +; CORTEX-A15-NEXT: 0020: 08010902 0A050C02 14011501 17031801 +; CORTEX-A15-NEXT: 0030: 19012C02 +; CORTEX-A15-NEXT: ) + +; CORTEX-M0: Name: .ARM.attributes +; CORTEX-M0-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; CORTEX-M0-NEXT: Flags [ (0x0) +; CORTEX-M0-NEXT: ] +; CORTEX-M0-NEXT: Address: 0x0 +; CORTEX-M0-NEXT: Offset: 0x38 +; CORTEX-M0-NEXT: Size: 45 +; CORTEX-M0-NEXT: Link: 0 +; CORTEX-M0-NEXT: Info: 0 +; CORTEX-M0-NEXT: AddressAlignment: 1 +; CORTEX-M0-NEXT: EntrySize: 0 +; CORTEX-M0-NEXT: SectionData ( +; CORTEX-M0-NEXT: 0000: 412C0000 00616561 62690001 22000000 +; CORTEX-M0-NEXT: 0010: 05434F52 5445582D 4D300006 0C074D08 +; CORTEX-M0-NEXT: 0020: 00090114 01150117 03180119 01 +; CORTEX-M0-NEXT: ) + +; CORTEX-M4: Name: .ARM.attributes +; CORTEX-M4-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; CORTEX-M4-NEXT: Flags [ (0x0) +; CORTEX-M4-NEXT: ] +; CORTEX-M4-NEXT: Address: 0x0 +; CORTEX-M4-NEXT: Offset: 0x38 +; CORTEX-M4-NEXT: Size: 49 +; CORTEX-M4-NEXT: Link: 0 +; CORTEX-M4-NEXT: Info: 0 +; CORTEX-M4-NEXT: AddressAlignment: 1 +; CORTEX-M4-NEXT: EntrySize: 0 +; CORTEX-M4-NEXT: SectionData ( +; CORTEX-M4-NEXT: 0000: 41300000 00616561 62690001 26000000 +; CORTEX-M4-NEXT: 0010: 05434F52 5445582D 4D340006 0D074D08 +; CORTEX-M4-NEXT: 0020: 0009020A 06140115 01170318 0119012C +; CORTEX-M4-NEXT: 0030: 00 +; CORTEX-M4-NEXT: ) + +; CORTEX-R5: Name: .ARM.attributes +; CORTEX-R5-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +; CORTEX-R5-NEXT: Flags [ (0x0) +; CORTEX-R5-NEXT: ] +; CORTEX-R5-NEXT: Address: 0x0 +; CORTEX-R5-NEXT: Offset: 0x3C +; CORTEX-R5-NEXT: Size: 49 +; CORTEX-R5-NEXT: Link: 0 +; CORTEX-R5-NEXT: Info: 0 +; CORTEX-R5-NEXT: AddressAlignment: 1 +; CORTEX-R5-NEXT: EntrySize: 0 +; CORTEX-R5-NEXT: SectionData ( +; CORTEX-R5-NEXT: 0000: 41300000 00616561 62690001 26000000 +; CORTEX-R5-NEXT: 0010: 05434F52 5445582D 52350006 0A075208 +; CORTEX-R5-NEXT: 0020: 0109020A 04140115 01170318 0119012C +; CORTEX-R5-NEXT: 0030: 02 +; CORTEX-R5-NEXT: ) define i32 @f(i64 %z) { ret i32 0 diff --git a/test/MC/ARM/directive-cpu.s b/test/MC/ARM/directive-cpu.s new file mode 100644 index 0000000..952dd93 --- /dev/null +++ b/test/MC/ARM/directive-cpu.s @@ -0,0 +1,26 @@ +@ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \ +@ RUN: | llvm-readobj -s -sd | FileCheck %s + +@ CHECK: Name: .ARM.attribute +@ CHECK: SectionData ( + +@ <format-version> +@ CHECK: 41 + +@ <section-length> +@ CHECK: 1A0000 00 + +@ <vendor-name> "aeabi\0" +@ CHECK: 616561 626900 + +@ <file-tag> +@ CHECK: 01 + +@ <size> +@ CHECK: 10000000 + + .cpu cortex-a8 +@ CHECK: 05 +@ CHECK: 434F52 5445582D 413800 + +@ CHECK: ) diff --git a/test/MC/ARM/directive-eabi_attribute.s b/test/MC/ARM/directive-eabi_attribute.s new file mode 100644 index 0000000..c060b80 --- /dev/null +++ b/test/MC/ARM/directive-eabi_attribute.s @@ -0,0 +1,56 @@ +@ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \ +@ RUN: | llvm-readobj -s -sd | FileCheck %s + +@ CHECK: Name: .ARM.attribute +@ CHECK: SectionData ( + +@ <format-version> +@ CHECK: 41 + +@ <section-length> +@ CHECK: 250000 00 + +@ <vendor-name> "aeabi\0" +@ CHECK: 616561 626900 + +@ <file-tag> +@ CHECK: 01 + +@ <size> +@ CHECK: 1B000000 + +@ <attribute>* + + .eabi_attribute 6, 10 +@ CHECK: 060A + + .eabi_attribute 7, 65 +@ CHECK: 0741 + + .eabi_attribute 8, 1 +@ CHECK: 0801 + + .eabi_attribute 9, 2 +@ CHECK: 0902 + + .eabi_attribute 10, 3 +@ CHECK: 0A03 + + .eabi_attribute 12, 1 +@ CHECK: 0C01 + + .eabi_attribute 20, 1 +@ CHECK: 1401 + + .eabi_attribute 21, 1 +@ CHECK: 1501 + + .eabi_attribute 23, 3 +@ CHECK: 1703 + + .eabi_attribute 24, 1 +@ CHECK: 1801 + + .eabi_attribute 25, 1 +@ CHECK: 1901 +@ CHECK: ) diff --git a/test/MC/ARM/directive-fpu-multiple.s b/test/MC/ARM/directive-fpu-multiple.s new file mode 100644 index 0000000..6a93f24 --- /dev/null +++ b/test/MC/ARM/directive-fpu-multiple.s @@ -0,0 +1,26 @@ +@ Check multiple .fpu directives. + +@ The later .fpu directive should overwrite the earlier one. +@ See also: directive-fpu-multiple2.s. + +@ RUN: llvm-mc < %s -triple arm-unknown-linux-gnueabi -filetype=obj \ +@ RUN: | llvm-readobj -s -sd | FileCheck %s + + .fpu neon + .fpu vfpv4 + +@ CHECK: Name: .ARM.attributes +@ CHECK-NEXT: Type: SHT_ARM_ATTRIBUTES (0x70000003) +@ CHECK-NEXT: Flags [ (0x0) +@ CHECK-NEXT: ] +@ CHECK-NEXT: Address: 0x0 +@ CHECK-NEXT: Offset: 0x34 +@ CHECK-NEXT: Size: 18 +@ CHECK-NEXT: Link: 0 +@ CHECK-NEXT: Info: 0 +@ CHECK-NEXT: AddressAlignment: 1 +@ CHECK-NEXT: EntrySize: 0 +@ CHECK-NEXT: SectionData ( +@ CHECK-NEXT: 0000: 41110000 00616561 62690001 07000000 +@ CHECK-NEXT: 0010: 0A05 +@ CHECK-NEXT: ) diff --git a/test/MC/ARM/directive-fpu.s b/test/MC/ARM/directive-fpu.s new file mode 100644 index 0000000..24e159c --- /dev/null +++ b/test/MC/ARM/directive-fpu.s @@ -0,0 +1,26 @@ +@ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \ +@ RUN: | llvm-readobj -s -sd | FileCheck %s + +@ CHECK: Name: .ARM.attribute +@ CHECK: SectionData ( + +@ <format-version> +@ CHECK: 41 + +@ <section-length> +@ CHECK: 130000 00 + +@ <vendor-name> "aeabi\0" +@ CHECK: 616561 626900 + +@ <file-tag> +@ CHECK: 01 + +@ <size> +@ CHECK: 09000000 + + .fpu neon +@ CHECK: 0A03 +@ CHECK: 0C01 + +@ CHECK: ) |