Merge the directive-eabi_attribute.s and directive-eabi_attribute-2.s tests.
[oota-llvm.git] / test / MC / ARM / directive-eabi_attribute.s
1 @ RUN: llvm-mc -triple armv7-elf -filetype asm -o - %s | FileCheck %s
2 @ RUN: llvm-mc < %s -triple armv7-unknown-linux-gnueabi -filetype=obj -o - \
3 @ RUN:   | llvm-readobj -arm-attributes | FileCheck %s --check-prefix=CHECK-OBJ
4
5         .syntax unified
6         .thumb
7
8 @ <format-version>
9 @ CHECK-OBJ: FormatVersion: 0x41
10
11 @ <section-length>
12 @ CHECK-OBJ: SectionLength: 122
13
14 @ <vendor-name> "aeabi\0"
15 @ CHECK-OBJ: Vendor: aeabi
16
17 @ <file-tag>
18 @ CHECK-OBJ: Tag: Tag_File (0x1)
19
20 @ <size>
21 @ CHECK-OBJ: Size: 112
22
23         .eabi_attribute Tag_CPU_raw_name, "Cortex-A9"
24 @ CHECK: .eabi_attribute 4, "Cortex-A9"
25         .eabi_attribute Tag_CPU_name, "cortex-a9"
26 @ CHECK: .cpu cortex-a9
27         .eabi_attribute Tag_CPU_arch, 10
28 @ CHECK: .eabi_attribute 6, 10
29 @ CHECK-OBJ:        Tag: 6
30 @ CHECK-OBJ-NEXT:   Value: 10
31 @ CHECK-OBJ-NEXT:   TagName: CPU_arch
32 @ CHECK-OBJ-NEXT:   Description: ARM v7
33         .eabi_attribute Tag_CPU_arch_profile, 'A'
34 @ CHECK: .eabi_attribute 7, 65
35 @ CHECK-OBJ:        Tag: 7
36 @ CHECK-OBJ-NEXT:   Value: 65
37 @ CHECK-OBJ-NEXT:   TagName: CPU_arch_profile
38 @ CHECK-OBJ-NEXT:   Description: Application
39         .eabi_attribute Tag_ARM_ISA_use, 0
40 @ CHECK: .eabi_attribute 8, 0
41 @ CHECK-OBJ:        Tag: 8
42 @ CHECK-OBJ-NEXT:   Value: 0
43 @ CHECK-OBJ-NEXT:   TagName: ARM_ISA_use
44 @ CHECK-OBJ-NEXT:   Description: Not Permitted
45         .eabi_attribute Tag_THUMB_ISA_use, 2
46 @ CHECK: .eabi_attribute 9, 2
47 @ CHECK-OBJ:        Tag: 9
48 @ CHECK-OBJ-NEXT:   Value: 2
49 @ CHECK-OBJ-NEXT:   TagName: THUMB_ISA_use
50 @ CHECK-OBJ-NEXT:   Description: Thumb-2
51         .eabi_attribute Tag_FP_arch, 3
52 @ CHECK: .eabi_attribute 10, 3
53 @ CHECK-OBJ:        Tag: 10
54 @ CHECK-OBJ-NEXT:   Value: 3
55 @ CHECK-OBJ-NEXT:   TagName: FP_arch
56 @ CHECK-OBJ-NEXT:   Description: VFPv3
57         .eabi_attribute Tag_WMMX_arch, 0
58 @ CHECK: .eabi_attribute 11, 0
59         .eabi_attribute Tag_Advanced_SIMD_arch, 1
60 @ CHECK: .eabi_attribute 12, 1
61 @ CHECK-OBJ:        Tag: 12
62 @ CHECK-OBJ-NEXT:   Value: 1
63 @ CHECK-OBJ-NEXT:   TagName: Advanced_SIMD_arch
64 @ CHECK-OBJ-NEXT:   Description: NEONv1
65         .eabi_attribute Tag_PCS_config, 2
66 @ CHECK: .eabi_attribute 13, 2
67         .eabi_attribute Tag_ABI_PCS_R9_use, 0
68 @ CHECK: .eabi_attribute 14, 0
69         .eabi_attribute Tag_ABI_PCS_RW_data, 0
70 @ CHECK: .eabi_attribute 15, 0
71         .eabi_attribute Tag_ABI_PCS_RO_data, 0
72 @ CHECK: .eabi_attribute 16, 0
73         .eabi_attribute Tag_ABI_PCS_GOT_use, 0
74 @ CHECK: .eabi_attribute 17, 0
75         .eabi_attribute Tag_ABI_PCS_wchar_t, 4
76 @ CHECK: .eabi_attribute 18, 4
77         .eabi_attribute Tag_ABI_FP_rounding, 1
78 @ CHECK: .eabi_attribute 19, 1
79         .eabi_attribute Tag_ABI_FP_denormal, 2
80 @ CHECK: .eabi_attribute 20, 2
81 @ CHECK-OBJ:        Tag: 20
82 @ CHECK-OBJ-NEXT:   Value: 2
83 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_denormal
84 @ CHECK-OBJ-NEXT:   Description: Sign Only
85         .eabi_attribute Tag_ABI_FP_exceptions, 1
86 @ CHECK: .eabi_attribute 21, 1
87 @ CHECK-OBJ:        Tag: 21
88 @ CHECK-OBJ-NEXT:   Value: 1
89 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_exceptions
90 @ CHECK-OBJ-NEXT:   Description: IEEE-754
91         .eabi_attribute Tag_ABI_FP_user_exceptions, 1
92 @ CHECK: .eabi_attribute 22, 1
93         .eabi_attribute Tag_ABI_FP_number_model, 3
94 @ CHECK: .eabi_attribute 23, 3
95 @ CHECK-OBJ:        Tag: 23
96 @ CHECK-OBJ-NEXT:   Value: 3
97 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_number_model
98 @ CHECK-OBJ-NEXT:   Description: IEEE-754
99         .eabi_attribute Tag_ABI_align_needed, 1
100 @ CHECK: .eabi_attribute 24, 1
101 @ CHECK-OBJ:        Tag: 24
102 @ CHECK-OBJ-NEXT:   Value: 1
103 @ CHECK-OBJ-NEXT:   TagName: ABI_align_needed
104 @ CHECK-OBJ-NEXT:   Description: 8-byte alignment
105         .eabi_attribute Tag_ABI_align_preserved, 2
106 @ CHECK: .eabi_attribute 25, 2
107 @ CHECK-OBJ:        Tag: 25
108 @ CHECK-OBJ-NEXT:   Value: 2
109 @ CHECK-OBJ-NEXT:   TagName: ABI_align_preserved
110 @ CHECK-OBJ-NEXT:   Description: 8-byte data and code alignment
111         .eabi_attribute Tag_ABI_enum_size, 3
112 @ CHECK: .eabi_attribute 26, 3
113         .eabi_attribute Tag_ABI_HardFP_use, 0
114 @ CHECK: .eabi_attribute 27, 0
115         .eabi_attribute Tag_ABI_VFP_args, 1
116 @ CHECK: .eabi_attribute 28, 1
117         .eabi_attribute Tag_ABI_WMMX_args, 0
118 @ CHECK: .eabi_attribute 29, 0
119         .eabi_attribute Tag_ABI_FP_optimization_goals, 1
120 @ CHECK: .eabi_attribute 31, 1
121         .eabi_attribute Tag_compatibility, 1
122 @ CHECK: .eabi_attribute 32, 1
123         .eabi_attribute Tag_compatibility, 1, "aeabi"
124 @ CHECK: .eabi_attribute 32, 1, "aeabi"
125         .eabi_attribute Tag_CPU_unaligned_access, 0
126 @ CHECK: .eabi_attribute 34, 0
127         .eabi_attribute Tag_FP_HP_extension, 0
128 @ CHECK: .eabi_attribute 36, 0
129         .eabi_attribute Tag_ABI_FP_16bit_format, 0
130 @ CHECK: .eabi_attribute 38, 0
131         .eabi_attribute Tag_MPextension_use, 0
132 @ CHECK: .eabi_attribute 42, 0
133         .eabi_attribute Tag_DIV_use, 0
134 @ CHECK: .eabi_attribute 44, 0
135         .eabi_attribute Tag_nodefaults, 0
136 @ CHECK: .eabi_attribute 64, 0
137         .eabi_attribute Tag_also_compatible_with, "gnu"
138 @ CHECK: .eabi_attribute 65, "gnu"
139         .eabi_attribute Tag_T2EE_use, 0
140 @ CHECK: .eabi_attribute 66, 0
141         .eabi_attribute Tag_conformance, "2.09"
142 @ CHECK: .eabi_attribute 67, "2.09"
143         .eabi_attribute Tag_Virtualization_use, 0
144 @ CHECK: .eabi_attribute 68, 0
145
146 @ ===--- Compatibility Checks ---===
147
148         .eabi_attribute Tag_ABI_align8_needed, 1
149 @ CHECK: .eabi_attribute 24, 1
150         .eabi_attribute Tag_ABI_align8_preserved, 2
151 @ CHECK: .eabi_attribute 25, 2
152
153 @ ===--- GNU AS Compatibility Checks ---===
154
155         .eabi_attribute 2 * 2 + 1, "cortex-a9"
156 @ CHECK: .cpu cortex-a9
157         .eabi_attribute 2 * 2 + 2, 5 * 2
158 @ CHECK: .eabi_attribute 6, 10