blob: e2f1f9b01af2809b5dcaadd6de9982f67b1581ad [file] [log] [blame]
Charlie Turnerabaec9d2014-11-03 14:52:00 +00001@ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s
Logan Chien8cbb80d2013-10-28 17:51:12 +00002@ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \
Charlie Turnerabaec9d2014-11-03 14:52:00 +00003@ RUN: | llvm-readobj -arm-attributes | FileCheck %s --check-prefix=CHECK-OBJ
Logan Chien8cbb80d2013-10-28 17:51:12 +00004
Charlie Turner34ec84e2014-11-04 09:07:40 +00005 .syntax unified
6 .thumb
Logan Chien8cbb80d2013-10-28 17:51:12 +00007
Charlie Turnerabaec9d2014-11-03 14:52:00 +00008 .eabi_attribute Tag_CPU_raw_name, "Cortex-A9"
9@ CHECK: .eabi_attribute 4, "Cortex-A9"
Charlie Turner34ec84e2014-11-04 09:07:40 +000010@ CHECK-OBJ: Tag: 4
11@ CHECK-OBJ-NEXT: TagName: CPU_raw_name
12@ CHECK-OBJ-NEXT: Value: CORTEX-A9
Charlie Turnerabaec9d2014-11-03 14:52:00 +000013 .eabi_attribute Tag_CPU_name, "cortex-a9"
14@ CHECK: .cpu cortex-a9
Charlie Turner34ec84e2014-11-04 09:07:40 +000015@ CHECK-OBJ: Tag: 5
16@ CHECK-OBJ-NEXT: TagName: CPU_name
17@ CHECK-OBJ-NEXT: Value: CORTEX-A9
Charlie Turnerabaec9d2014-11-03 14:52:00 +000018 .eabi_attribute Tag_CPU_arch, 10
19@ CHECK: .eabi_attribute 6, 10
20@ CHECK-OBJ: Tag: 6
21@ CHECK-OBJ-NEXT: Value: 10
22@ CHECK-OBJ-NEXT: TagName: CPU_arch
23@ CHECK-OBJ-NEXT: Description: ARM v7
24 .eabi_attribute Tag_CPU_arch_profile, 'A'
25@ CHECK: .eabi_attribute 7, 65
26@ CHECK-OBJ: Tag: 7
27@ CHECK-OBJ-NEXT: Value: 65
28@ CHECK-OBJ-NEXT: TagName: CPU_arch_profile
29@ CHECK-OBJ-NEXT: Description: Application
30 .eabi_attribute Tag_ARM_ISA_use, 0
31@ CHECK: .eabi_attribute 8, 0
32@ CHECK-OBJ: Tag: 8
33@ CHECK-OBJ-NEXT: Value: 0
34@ CHECK-OBJ-NEXT: TagName: ARM_ISA_use
35@ CHECK-OBJ-NEXT: Description: Not Permitted
36 .eabi_attribute Tag_THUMB_ISA_use, 2
37@ CHECK: .eabi_attribute 9, 2
38@ CHECK-OBJ: Tag: 9
39@ CHECK-OBJ-NEXT: Value: 2
40@ CHECK-OBJ-NEXT: TagName: THUMB_ISA_use
41@ CHECK-OBJ-NEXT: Description: Thumb-2
42 .eabi_attribute Tag_FP_arch, 3
43@ CHECK: .eabi_attribute 10, 3
44@ CHECK-OBJ: Tag: 10
45@ CHECK-OBJ-NEXT: Value: 3
46@ CHECK-OBJ-NEXT: TagName: FP_arch
47@ CHECK-OBJ-NEXT: Description: VFPv3
48 .eabi_attribute Tag_WMMX_arch, 0
49@ CHECK: .eabi_attribute 11, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +000050@ CHECK-OBJ: Tag: 11
51@ CHECK-OBJ-NEXT: Value: 0
52@ CHECK-OBJ-NEXT: TagName: WMMX_arch
53@ CHECK-OBJ-NEXT: Description: Not Permitted
Charlie Turnerabaec9d2014-11-03 14:52:00 +000054 .eabi_attribute Tag_Advanced_SIMD_arch, 1
55@ CHECK: .eabi_attribute 12, 1
56@ CHECK-OBJ: Tag: 12
57@ CHECK-OBJ-NEXT: Value: 1
58@ CHECK-OBJ-NEXT: TagName: Advanced_SIMD_arch
59@ CHECK-OBJ-NEXT: Description: NEONv1
60 .eabi_attribute Tag_PCS_config, 2
61@ CHECK: .eabi_attribute 13, 2
Charlie Turner34ec84e2014-11-04 09:07:40 +000062@ CHECK-OBJ: Tag: 13
63@ CHECK-OBJ-NEXT: Value: 2
64@ CHECK-OBJ-NEXT: TagName: PCS_config
65@ CHECK-OBJ-NEXT: Description: Linux Application
Charlie Turnerabaec9d2014-11-03 14:52:00 +000066 .eabi_attribute Tag_ABI_PCS_R9_use, 0
67@ CHECK: .eabi_attribute 14, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +000068@ CHECK-OBJ: Tag: 14
69@ CHECK-OBJ-NEXT: Value: 0
70@ CHECK-OBJ-NEXT: TagName: ABI_PCS_R9_use
71@ CHECK-OBJ-NEXT: Description: v6
Charlie Turnerabaec9d2014-11-03 14:52:00 +000072 .eabi_attribute Tag_ABI_PCS_RW_data, 0
73@ CHECK: .eabi_attribute 15, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +000074@ CHECK-OBJ: Tag: 15
75@ CHECK-OBJ-NEXT: Value: 0
76@ CHECK-OBJ-NEXT: TagName: ABI_PCS_RW_data
77@ CHECK-OBJ-NEXT: Description: Absolute
Charlie Turnerabaec9d2014-11-03 14:52:00 +000078 .eabi_attribute Tag_ABI_PCS_RO_data, 0
79@ CHECK: .eabi_attribute 16, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +000080@ CHECK-OBJ: Tag: 16
81@ CHECK-OBJ-NEXT: Value: 0
82@ CHECK-OBJ-NEXT: TagName: ABI_PCS_RO_data
83@ CHECK-OBJ-NEXT: Description: Absolute
Charlie Turnerabaec9d2014-11-03 14:52:00 +000084 .eabi_attribute Tag_ABI_PCS_GOT_use, 0
85@ CHECK: .eabi_attribute 17, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +000086@ CHECK-OBJ: Tag: 17
87@ CHECK-OBJ-NEXT: Value: 0
88@ CHECK-OBJ-NEXT: TagName: ABI_PCS_GOT_use
89@ CHECK-OBJ-NEXT: Description: Not Permitted
Charlie Turnerabaec9d2014-11-03 14:52:00 +000090 .eabi_attribute Tag_ABI_PCS_wchar_t, 4
91@ CHECK: .eabi_attribute 18, 4
Charlie Turner34ec84e2014-11-04 09:07:40 +000092@ CHECK-OBJ: Tag: 18
93@ CHECK-OBJ-NEXT: Value: 4
94@ CHECK-OBJ-NEXT: TagName: ABI_PCS_wchar_t
95@ CHECK-OBJ-NEXT: Description: 4-byte
Charlie Turnerabaec9d2014-11-03 14:52:00 +000096 .eabi_attribute Tag_ABI_FP_rounding, 1
97@ CHECK: .eabi_attribute 19, 1
Charlie Turner34ec84e2014-11-04 09:07:40 +000098@ CHECK-OBJ: Tag: 19
99@ CHECK-OBJ-NEXT: Value: 1
100@ CHECK-OBJ-NEXT: TagName: ABI_FP_rounding
101@ CHECK-OBJ-NEXT: Description: Runtime
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000102 .eabi_attribute Tag_ABI_FP_denormal, 2
103@ CHECK: .eabi_attribute 20, 2
104@ CHECK-OBJ: Tag: 20
105@ CHECK-OBJ-NEXT: Value: 2
106@ CHECK-OBJ-NEXT: TagName: ABI_FP_denormal
107@ CHECK-OBJ-NEXT: Description: Sign Only
108 .eabi_attribute Tag_ABI_FP_exceptions, 1
109@ CHECK: .eabi_attribute 21, 1
110@ CHECK-OBJ: Tag: 21
111@ CHECK-OBJ-NEXT: Value: 1
112@ CHECK-OBJ-NEXT: TagName: ABI_FP_exceptions
113@ CHECK-OBJ-NEXT: Description: IEEE-754
114 .eabi_attribute Tag_ABI_FP_user_exceptions, 1
115@ CHECK: .eabi_attribute 22, 1
Charlie Turner34ec84e2014-11-04 09:07:40 +0000116@ CHECK-OBJ: Tag: 22
117@ CHECK-OBJ-NEXT: Value: 1
118@ CHECK-OBJ-NEXT: TagName: ABI_FP_user_exceptions
119@ CHECK-OBJ-NEXT: Description: IEEE-754
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000120 .eabi_attribute Tag_ABI_FP_number_model, 3
121@ CHECK: .eabi_attribute 23, 3
122@ CHECK-OBJ: Tag: 23
123@ CHECK-OBJ-NEXT: Value: 3
124@ CHECK-OBJ-NEXT: TagName: ABI_FP_number_model
125@ CHECK-OBJ-NEXT: Description: IEEE-754
126 .eabi_attribute Tag_ABI_align_needed, 1
127@ CHECK: .eabi_attribute 24, 1
128@ CHECK-OBJ: Tag: 24
129@ CHECK-OBJ-NEXT: Value: 1
130@ CHECK-OBJ-NEXT: TagName: ABI_align_needed
131@ CHECK-OBJ-NEXT: Description: 8-byte alignment
132 .eabi_attribute Tag_ABI_align_preserved, 2
133@ CHECK: .eabi_attribute 25, 2
134@ CHECK-OBJ: Tag: 25
135@ CHECK-OBJ-NEXT: Value: 2
136@ CHECK-OBJ-NEXT: TagName: ABI_align_preserved
137@ CHECK-OBJ-NEXT: Description: 8-byte data and code alignment
138 .eabi_attribute Tag_ABI_enum_size, 3
139@ CHECK: .eabi_attribute 26, 3
Charlie Turner34ec84e2014-11-04 09:07:40 +0000140@ CHECK-OBJ: Tag: 26
141@ CHECK-OBJ-NEXT: Value: 3
142@ CHECK-OBJ-NEXT: TagName: ABI_enum_size
143@ CHECK-OBJ-NEXT: Description: External Int32
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000144 .eabi_attribute Tag_ABI_HardFP_use, 0
145@ CHECK: .eabi_attribute 27, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000146@ CHECK-OBJ: Tag: 27
147@ CHECK-OBJ-NEXT: Value: 0
148@ CHECK-OBJ-NEXT: TagName: ABI_HardFP_use
149@ CHECK-OBJ-NEXT: Description: Tag_FP_arch
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000150 .eabi_attribute Tag_ABI_VFP_args, 1
151@ CHECK: .eabi_attribute 28, 1
Charlie Turner34ec84e2014-11-04 09:07:40 +0000152@ CHECK-OBJ: Tag: 28
153@ CHECK-OBJ-NEXT: Value: 1
154@ CHECK-OBJ-NEXT: TagName: ABI_VFP_args
155@ CHECK-OBJ-NEXT: Description: AAPCS VFP
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000156 .eabi_attribute Tag_ABI_WMMX_args, 0
157@ CHECK: .eabi_attribute 29, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000158@ CHECK-OBJ: Tag: 29
159@ CHECK-OBJ-NEXT: Value: 0
160@ CHECK-OBJ-NEXT: TagName: ABI_WMMX_args
161@ CHECK-OBJ-NEXT: Description: AAPCS
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000162 .eabi_attribute Tag_ABI_FP_optimization_goals, 1
163@ CHECK: .eabi_attribute 31, 1
Charlie Turner34ec84e2014-11-04 09:07:40 +0000164@ CHECK-OBJ: Tag: 31
165@ CHECK-OBJ-NEXT: Value: 1
166@ CHECK-OBJ-NEXT: TagName: ABI_FP_optimization_goals
167@ CHECK-OBJ-NEXT: Description: Speed
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000168 .eabi_attribute Tag_compatibility, 1
169@ CHECK: .eabi_attribute 32, 1
170 .eabi_attribute Tag_compatibility, 1, "aeabi"
171@ CHECK: .eabi_attribute 32, 1, "aeabi"
Charlie Turner34ec84e2014-11-04 09:07:40 +0000172@ CHECK-OBJ: Tag: 32
173@ CHECK-OBJ-NEXT: Value: 1, AEABI
174@ CHECK-OBJ-NEXT: TagName: compatibility
175@ CHECK-OBJ-NEXT: Description: AEABI Conformant
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000176 .eabi_attribute Tag_CPU_unaligned_access, 0
177@ CHECK: .eabi_attribute 34, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000178@ CHECK-OBJ: Tag: 34
179@ CHECK-OBJ-NEXT: Value: 0
180@ CHECK-OBJ-NEXT: TagName: CPU_unaligned_access
181@ CHECK-OBJ-NEXT: Description: Not Permitted
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000182 .eabi_attribute Tag_FP_HP_extension, 0
183@ CHECK: .eabi_attribute 36, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000184@ CHECK-OBJ: Tag: 36
185@ CHECK-OBJ-NEXT: Value: 0
186@ CHECK-OBJ-NEXT: TagName: FP_HP_extension
187@ CHECK-OBJ-NEXT: Description: If Available
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000188 .eabi_attribute Tag_ABI_FP_16bit_format, 0
189@ CHECK: .eabi_attribute 38, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000190@ CHECK-OBJ: Tag: 38
191@ CHECK-OBJ-NEXT: Value: 0
192@ CHECK-OBJ-NEXT: TagName: ABI_FP_16bit_format
193@ CHECK-OBJ-NEXT: Description: Not Permitte
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000194 .eabi_attribute Tag_MPextension_use, 0
195@ CHECK: .eabi_attribute 42, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000196@ CHECK-OBJ: Tag: 42
197@ CHECK-OBJ-NEXT: Value: 0
198@ CHECK-OBJ-NEXT: TagName: MPextension_use
199@ CHECK-OBJ-NEXT: Description: Not Permitted
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000200 .eabi_attribute Tag_DIV_use, 0
201@ CHECK: .eabi_attribute 44, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000202@ CHECK-OBJ: Tag: 44
203@ CHECK-OBJ-NEXT: Value: 0
204@ CHECK-OBJ-NEXT: TagName: DIV_use
205@ CHECK-OBJ-NEXT: Description: If Available
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000206 .eabi_attribute Tag_nodefaults, 0
207@ CHECK: .eabi_attribute 64, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000208@ CHECK-OBJ: Tag: 64
209@ CHECK-OBJ-NEXT: Value: 0
210@ CHECK-OBJ-NEXT: TagName: nodefaults
211@ CHECK-OBJ-NEXT: Description: Unspecified Tags UNDEFINED
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000212 .eabi_attribute Tag_also_compatible_with, "gnu"
213@ CHECK: .eabi_attribute 65, "gnu"
Charlie Turner34ec84e2014-11-04 09:07:40 +0000214@ CHECK-OBJ: Tag: 65
215@ CHECK-OBJ-NEXT: TagName: also_compatible_with
216@ CHECK-OBJ-NEXT: Value: GNU
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000217 .eabi_attribute Tag_T2EE_use, 0
218@ CHECK: .eabi_attribute 66, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000219@ CHECK-OBJ: Tag: 66
220@ CHECK-OBJ-NEXT: Value: 0
221@ CHECK-OBJ-NEXT: TagName: T2EE_use
222@ CHECK-OBJ-NEXT: Description: Not Permitted
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000223 .eabi_attribute Tag_conformance, "2.09"
224@ CHECK: .eabi_attribute 67, "2.09"
Charlie Turner34ec84e2014-11-04 09:07:40 +0000225@ CHECK-OBJ: Tag: 67
226@ CHECK-OBJ-NEXT: TagName: conformance
227@ CHECK-OBJ-NEXT: Value: 2.09
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000228 .eabi_attribute Tag_Virtualization_use, 0
229@ CHECK: .eabi_attribute 68, 0
Charlie Turner34ec84e2014-11-04 09:07:40 +0000230@ CHECK-OBJ: Tag: 68
231@ CHECK-OBJ-NEXT: Value: 0
232@ CHECK-OBJ-NEXT: TagName: Virtualization_use
233@ CHECK-OBJ-NEXT: Description: Not Permitted
Logan Chien8cbb80d2013-10-28 17:51:12 +0000234
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000235@ ===--- Compatibility Checks ---===
Logan Chien8cbb80d2013-10-28 17:51:12 +0000236
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000237 .eabi_attribute Tag_ABI_align8_needed, 1
238@ CHECK: .eabi_attribute 24, 1
239 .eabi_attribute Tag_ABI_align8_preserved, 2
240@ CHECK: .eabi_attribute 25, 2
Logan Chien8cbb80d2013-10-28 17:51:12 +0000241
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000242@ ===--- GNU AS Compatibility Checks ---===
Logan Chien8cbb80d2013-10-28 17:51:12 +0000243
Charlie Turnerabaec9d2014-11-03 14:52:00 +0000244 .eabi_attribute 2 * 2 + 1, "cortex-a9"
245@ CHECK: .cpu cortex-a9
246 .eabi_attribute 2 * 2 + 2, 5 * 2
247@ CHECK: .eabi_attribute 6, 10