xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/build-attributes-encoding.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// This tests that ARM attributes are properly encoded.
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc < %s -triple=arm-linux-gnueabi -filetype=obj -o - \
4*9880d681SAndroid Build Coastguard Worker// RUN:   | llvm-readobj -s -sd | FileCheck %s
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker// Tag_CPU_name (=5)
7*9880d681SAndroid Build Coastguard Worker.cpu cortex-a8
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker// Tag_CPU_arch (=6)
10*9880d681SAndroid Build Coastguard Worker.eabi_attribute 6, 10
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker// Tag_arch_profile (=7)
13*9880d681SAndroid Build Coastguard Worker.eabi_attribute 7, 'A'
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker// Tag_ARM_ISA_use (=8)
16*9880d681SAndroid Build Coastguard Worker.eabi_attribute 8, 1
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker// Tag_THUMB_ISA_use (=9)
19*9880d681SAndroid Build Coastguard Worker.eabi_attribute 9, 2
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker// Tag_FP_arch (=10)
22*9880d681SAndroid Build Coastguard Worker.fpu vfpv3
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker// Tag_Advanced_SIMD_arch (=12)
25*9880d681SAndroid Build Coastguard Worker.eabi_attribute 12, 2
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker// Tag_ABI_FP_denormal (=20)
28*9880d681SAndroid Build Coastguard Worker.eabi_attribute 20, 1
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker// Tag_ABI_FP_exceptions (=21)
31*9880d681SAndroid Build Coastguard Worker.eabi_attribute 21, 1
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker// Tag_ABI_FP_number_model (=23)
34*9880d681SAndroid Build Coastguard Worker.eabi_attribute 23, 1
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker// Tag_ABI_align_needed (=24)
37*9880d681SAndroid Build Coastguard Worker.eabi_attribute 24, 1
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker// Tag_ABI_align_preserved (=25)
40*9880d681SAndroid Build Coastguard Worker.eabi_attribute 25, 1
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker// Tag_ABI_HardFP_use (=27)
43*9880d681SAndroid Build Coastguard Worker.eabi_attribute 27, 0
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker// Tag_ABI_VFP_args (=28)
46*9880d681SAndroid Build Coastguard Worker.eabi_attribute 28, 1
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker// Tag_FP_HP_extension (=36)
49*9880d681SAndroid Build Coastguard Worker.eabi_attribute 36, 1
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker// Tag_MPextension_use (=42)
52*9880d681SAndroid Build Coastguard Worker.eabi_attribute 42, 1
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker// Tag_DIV_use (=44)
55*9880d681SAndroid Build Coastguard Worker.eabi_attribute 44, 2
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker// Tag_DSP_extension (=46)
58*9880d681SAndroid Build Coastguard Worker.eabi_attribute 46, 1
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker// Tag_Virtualization_use (=68)
61*9880d681SAndroid Build Coastguard Worker.eabi_attribute 68, 3
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker// Check that values > 128 are encoded properly
64*9880d681SAndroid Build Coastguard Worker.eabi_attribute 110, 160
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker// Check that tags > 128 are encoded properly
67*9880d681SAndroid Build Coastguard Worker.eabi_attribute 129, "1"
68*9880d681SAndroid Build Coastguard Worker.eabi_attribute 250, 1
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker// CHECK:        Section {
71*9880d681SAndroid Build Coastguard Worker// CHECK:          Name: .ARM.attributes
72*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Type: SHT_ARM_ATTRIBUTES
73*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Flags [ (0x0)
74*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     ]
75*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Address: 0x0
76*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Offset: 0x34
77*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Size: 73
78*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Link: 0
79*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     Info: 0
80*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     AddressAlignment: 1
81*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     EntrySize: 0
82*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     SectionData (
83*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:       0000: 41480000 00616561 62690001 3E000000
84*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:       0010: 05636F72 7465782D 61380006 0A074108
85*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:       0020: 0109020A 030C0214 01150117 01180119
86*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:       0030: 011B001C 0124012A 012C022E 0144036E
87*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:       0040: A0018101 3100FA01 01
88*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT:     )
89