xref: /llvm-project/llvm/test/CodeGen/ARM/build-attributes-encoding.s (revision ba9caf91708abb052e22982d2665abb50e9759cb)
1// This tests that ARM attributes are properly encoded.
2
3// RUN: llvm-mc < %s -triple=arm-linux-gnueabi -filetype=obj -o - \
4// RUN:   | llvm-readobj -S --sd - | FileCheck %s
5
6// Tag_CPU_name (=5)
7.cpu cortex-a8
8
9// Tag_CPU_arch (=6)
10.eabi_attribute 6, 10
11
12// Tag_arch_profile (=7)
13.eabi_attribute 7, 'A'
14
15// Tag_ARM_ISA_use (=8)
16.eabi_attribute 8, 1
17
18// Tag_THUMB_ISA_use (=9)
19.eabi_attribute 9, 2
20
21// Tag_FP_arch (=10)
22.fpu vfpv3
23
24// Tag_Advanced_SIMD_arch (=12)
25.eabi_attribute 12, 2
26
27// Tag_ABI_FP_denormal (=20)
28.eabi_attribute 20, 1
29
30// Tag_ABI_FP_exceptions (=21)
31.eabi_attribute 21, 1
32
33// Tag_ABI_FP_number_model (=23)
34.eabi_attribute 23, 1
35
36// Tag_ABI_align_needed (=24)
37.eabi_attribute 24, 1
38
39// Tag_ABI_align_preserved (=25)
40.eabi_attribute 25, 1
41
42// Tag_ABI_HardFP_use (=27)
43.eabi_attribute 27, 0
44
45// Tag_ABI_VFP_args (=28)
46.eabi_attribute 28, 1
47
48// Tag_FP_HP_extension (=36)
49.eabi_attribute 36, 1
50
51// Tag_MPextension_use (=42)
52.eabi_attribute 42, 1
53
54// Tag_DIV_use (=44)
55.eabi_attribute 44, 2
56
57// Tag_DSP_extension (=46)
58.eabi_attribute 46, 1
59
60// Tag_PAC_extension (=50)
61.eabi_attribute 50, 0
62
63// Tag_BTI_extension (=52)
64.eabi_attribute 52, 0
65
66// Tag_also_compatible_with (=65)
67.eabi_attribute 65, "\006\017"
68
69// Tag_BTI_use (=74)
70.eabi_attribute 74, 0
71
72// Tag_PACRET_use (=76)
73.eabi_attribute 76, 0
74
75// Tag_Virtualization_use (=68)
76.eabi_attribute 68, 3
77
78// Check that values > 128 are encoded properly
79.eabi_attribute 110, 160
80
81// Check that tags > 128 are encoded properly
82.eabi_attribute 129, "1"
83.eabi_attribute 250, 1
84
85// CHECK:       Section {
86// CHECK:         Name: .ARM.attributes (7)
87// CHECK-NEXT:    Type: SHT_ARM_ATTRIBUTES (0x70000003)
88// CHECK-NEXT:    Flags [ (0x0)
89// CHECK-NEXT:    ]
90// CHECK-NEXT:    Address: 0x0
91// CHECK-NEXT:    Offset: 0x34
92// CHECK-NEXT:    Size: 85
93// CHECK-NEXT:    Link: 0
94// CHECK-NEXT:    Info: 0
95// CHECK-NEXT:    AddressAlignment: 1
96// CHECK-NEXT:    EntrySize: 0
97// CHECK-NEXT:    SectionData (
98// CHECK-NEXT:      0000: 41540000 00616561 62690001 4A000000  |AT...aeabi..J...|
99// CHECK-NEXT:      0010: 05636F72 7465782D 61380006 0A074108  |.cortex-a8....A.|
100// CHECK-NEXT:      0020: 0109020A 030C0214 01150117 01180119  |................|
101// CHECK-NEXT:      0030: 011B001C 0124012A 012C022E 01320034  |.....$.*.,...2.4|
102// CHECK-NEXT:      0040: 0041060F 0044034A 004C006E A0018101  |.A...D.J.L.n....|
103// CHECK-NEXT:      0050: 3100FA01 01                          |1....|
104// CHECK-NEXT:    )
105