Home | History | Annotate | Download | only in ARM
      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         .eabi_attribute Tag_conformance, "2.09"
      9 @ CHECK: .eabi_attribute 67, "2.09"
     10 @ Tag_conformance should be be emitted first in a file-scope
     11 @ sub-subsection of the first public subsection of the attributes
     12 @ section. 2.3.7.4 of ABI Addenda.
     13 @ CHECK-OBJ:        Tag: 67
     14 @ CHECK-OBJ-NEXT:   TagName: conformance
     15 @ CHECK-OBJ-NEXT:   Value: 2.09
     16 	.eabi_attribute Tag_CPU_raw_name, "Cortex-A9"
     17 @ CHECK: .eabi_attribute 4, "Cortex-A9"
     18 @ CHECK-OBJ:        Tag: 4
     19 @ CHECK-OBJ-NEXT:   TagName: CPU_raw_name
     20 @ CHECK-OBJ-NEXT:   Value: Cortex-A9
     21 	.eabi_attribute Tag_CPU_name, "cortex-a9"
     22 @ CHECK: .cpu cortex-a9
     23 @ CHECK-OBJ:        Tag: 5
     24 @ CHECK-OBJ-NEXT:   TagName: CPU_name
     25 @ CHECK-OBJ-NEXT:   Value: cortex-a9
     26 	.eabi_attribute Tag_CPU_arch, 10
     27 @ CHECK: .eabi_attribute 6, 10
     28 @ CHECK-OBJ:        Tag: 6
     29 @ CHECK-OBJ-NEXT:   Value: 10
     30 @ CHECK-OBJ-NEXT:   TagName: CPU_arch
     31 @ CHECK-OBJ-NEXT:   Description: ARM v7
     32 	.eabi_attribute Tag_CPU_arch_profile, 'A'
     33 @ CHECK: .eabi_attribute 7, 65
     34 @ CHECK-OBJ:        Tag: 7
     35 @ CHECK-OBJ-NEXT:   Value: 65
     36 @ CHECK-OBJ-NEXT:   TagName: CPU_arch_profile
     37 @ CHECK-OBJ-NEXT:   Description: Application
     38 	.eabi_attribute Tag_ARM_ISA_use, 0
     39 @ CHECK: .eabi_attribute 8, 0
     40 @ CHECK-OBJ:        Tag: 8
     41 @ CHECK-OBJ-NEXT:   Value: 0
     42 @ CHECK-OBJ-NEXT:   TagName: ARM_ISA_use
     43 @ CHECK-OBJ-NEXT:   Description: Not Permitted
     44 	.eabi_attribute Tag_THUMB_ISA_use, 2
     45 @ CHECK: .eabi_attribute 9, 2
     46 @ CHECK-OBJ:        Tag: 9
     47 @ CHECK-OBJ-NEXT:   Value: 2
     48 @ CHECK-OBJ-NEXT:   TagName: THUMB_ISA_use
     49 @ CHECK-OBJ-NEXT:   Description: Thumb-2
     50 	.eabi_attribute Tag_FP_arch, 3
     51 @ CHECK: .eabi_attribute 10, 3
     52 @ CHECK-OBJ:        Tag: 10
     53 @ CHECK-OBJ-NEXT:   Value: 3
     54 @ CHECK-OBJ-NEXT:   TagName: FP_arch
     55 @ CHECK-OBJ-NEXT:   Description: VFPv3
     56 	.eabi_attribute Tag_WMMX_arch, 0
     57 @ CHECK: .eabi_attribute 11, 0
     58 @ CHECK-OBJ:        Tag: 11
     59 @ CHECK-OBJ-NEXT:   Value: 0
     60 @ CHECK-OBJ-NEXT:   TagName: WMMX_arch
     61 @ CHECK-OBJ-NEXT:   Description: Not Permitted
     62 	.eabi_attribute Tag_Advanced_SIMD_arch, 1
     63 @ CHECK: .eabi_attribute 12, 1
     64 @ CHECK-OBJ:        Tag: 12
     65 @ CHECK-OBJ-NEXT:   Value: 1
     66 @ CHECK-OBJ-NEXT:   TagName: Advanced_SIMD_arch
     67 @ CHECK-OBJ-NEXT:   Description: NEONv1
     68 	.eabi_attribute Tag_PCS_config, 2
     69 @ CHECK: .eabi_attribute 13, 2
     70 @ CHECK-OBJ:        Tag: 13
     71 @ CHECK-OBJ-NEXT:   Value: 2
     72 @ CHECK-OBJ-NEXT:   TagName: PCS_config
     73 @ CHECK-OBJ-NEXT:   Description: Linux Application
     74 	.eabi_attribute Tag_ABI_PCS_R9_use, 0
     75 @ CHECK: .eabi_attribute 14, 0
     76 @ CHECK-OBJ:        Tag: 14
     77 @ CHECK-OBJ-NEXT:   Value: 0
     78 @ CHECK-OBJ-NEXT:   TagName: ABI_PCS_R9_use
     79 @ CHECK-OBJ-NEXT:   Description: v6
     80 	.eabi_attribute Tag_ABI_PCS_RW_data, 0
     81 @ CHECK: .eabi_attribute 15, 0
     82 @ CHECK-OBJ:        Tag: 15
     83 @ CHECK-OBJ-NEXT:   Value: 0
     84 @ CHECK-OBJ-NEXT:   TagName: ABI_PCS_RW_data
     85 @ CHECK-OBJ-NEXT:   Description: Absolute
     86 	.eabi_attribute Tag_ABI_PCS_RO_data, 0
     87 @ CHECK: .eabi_attribute 16, 0
     88 @ CHECK-OBJ:        Tag: 16
     89 @ CHECK-OBJ-NEXT:   Value: 0
     90 @ CHECK-OBJ-NEXT:   TagName: ABI_PCS_RO_data
     91 @ CHECK-OBJ-NEXT:   Description: Absolute
     92 	.eabi_attribute Tag_ABI_PCS_GOT_use, 0
     93 @ CHECK: .eabi_attribute 17, 0
     94 @ CHECK-OBJ:        Tag: 17
     95 @ CHECK-OBJ-NEXT:   Value: 0
     96 @ CHECK-OBJ-NEXT:   TagName: ABI_PCS_GOT_use
     97 @ CHECK-OBJ-NEXT:   Description: Not Permitted
     98 	.eabi_attribute Tag_ABI_PCS_wchar_t, 4
     99 @ CHECK: .eabi_attribute 18, 4
    100 @ CHECK-OBJ:        Tag: 18
    101 @ CHECK-OBJ-NEXT:   Value: 4
    102 @ CHECK-OBJ-NEXT:   TagName: ABI_PCS_wchar_t
    103 @ CHECK-OBJ-NEXT:   Description: 4-byte
    104 	.eabi_attribute Tag_ABI_FP_rounding, 1
    105 @ CHECK: .eabi_attribute 19, 1
    106 @ CHECK-OBJ:        Tag: 19
    107 @ CHECK-OBJ-NEXT:   Value: 1
    108 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_rounding
    109 @ CHECK-OBJ-NEXT:   Description: Runtime
    110 	.eabi_attribute Tag_ABI_FP_denormal, 2
    111 @ CHECK: .eabi_attribute 20, 2
    112 @ CHECK-OBJ:        Tag: 20
    113 @ CHECK-OBJ-NEXT:   Value: 2
    114 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_denormal
    115 @ CHECK-OBJ-NEXT:   Description: Sign Only
    116 	.eabi_attribute Tag_ABI_FP_exceptions, 1
    117 @ CHECK: .eabi_attribute 21, 1
    118 @ CHECK-OBJ:        Tag: 21
    119 @ CHECK-OBJ-NEXT:   Value: 1
    120 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_exceptions
    121 @ CHECK-OBJ-NEXT:   Description: IEEE-754
    122 	.eabi_attribute Tag_ABI_FP_user_exceptions, 1
    123 @ CHECK: .eabi_attribute 22, 1
    124 @ CHECK-OBJ:        Tag: 22
    125 @ CHECK-OBJ-NEXT:   Value: 1
    126 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_user_exceptions
    127 @ CHECK-OBJ-NEXT:   Description: IEEE-754
    128 	.eabi_attribute Tag_ABI_FP_number_model, 3
    129 @ CHECK: .eabi_attribute 23, 3
    130 @ CHECK-OBJ:        Tag: 23
    131 @ CHECK-OBJ-NEXT:   Value: 3
    132 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_number_model
    133 @ CHECK-OBJ-NEXT:   Description: IEEE-754
    134 	.eabi_attribute Tag_ABI_align_needed, 1
    135 @ CHECK: .eabi_attribute 24, 1
    136 @ CHECK-OBJ:        Tag: 24
    137 @ CHECK-OBJ-NEXT:   Value: 1
    138 @ CHECK-OBJ-NEXT:   TagName: ABI_align_needed
    139 @ CHECK-OBJ-NEXT:   Description: 8-byte alignment
    140 	.eabi_attribute Tag_ABI_align_preserved, 2
    141 @ CHECK: .eabi_attribute 25, 2
    142 @ CHECK-OBJ:        Tag: 25
    143 @ CHECK-OBJ-NEXT:   Value: 2
    144 @ CHECK-OBJ-NEXT:   TagName: ABI_align_preserved
    145 @ CHECK-OBJ-NEXT:   Description: 8-byte data and code alignment
    146 	.eabi_attribute Tag_ABI_enum_size, 3
    147 @ CHECK: .eabi_attribute 26, 3
    148 @ CHECK-OBJ:        Tag: 26
    149 @ CHECK-OBJ-NEXT:   Value: 3
    150 @ CHECK-OBJ-NEXT:   TagName: ABI_enum_size
    151 @ CHECK-OBJ-NEXT:   Description: External Int32
    152 	.eabi_attribute Tag_ABI_HardFP_use, 0
    153 @ CHECK: .eabi_attribute 27, 0
    154 @ CHECK-OBJ:        Tag: 27
    155 @ CHECK-OBJ-NEXT:   Value: 0
    156 @ CHECK-OBJ-NEXT:   TagName: ABI_HardFP_use
    157 @ CHECK-OBJ-NEXT:   Description: Tag_FP_arch
    158 	.eabi_attribute Tag_ABI_VFP_args, 1
    159 @ CHECK: .eabi_attribute 28, 1
    160 @ CHECK-OBJ:        Tag: 28
    161 @ CHECK-OBJ-NEXT:   Value: 1
    162 @ CHECK-OBJ-NEXT:   TagName: ABI_VFP_args
    163 @ CHECK-OBJ-NEXT:   Description: AAPCS VFP
    164 	.eabi_attribute Tag_ABI_WMMX_args, 0
    165 @ CHECK: .eabi_attribute 29, 0
    166 @ CHECK-OBJ:        Tag: 29
    167 @ CHECK-OBJ-NEXT:   Value: 0
    168 @ CHECK-OBJ-NEXT:   TagName: ABI_WMMX_args
    169 @ CHECK-OBJ-NEXT:   Description: AAPCS
    170 	.eabi_attribute Tag_ABI_FP_optimization_goals, 1
    171 @ CHECK: .eabi_attribute 31, 1
    172 @ CHECK-OBJ:        Tag: 31
    173 @ CHECK-OBJ-NEXT:   Value: 1
    174 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_optimization_goals
    175 @ CHECK-OBJ-NEXT:   Description: Speed
    176 	.eabi_attribute Tag_compatibility, 1, "aeabi"
    177 @ CHECK: .eabi_attribute 32, 1, "aeabi"
    178 @ CHECK-OBJ:        Tag: 32
    179 @ CHECK-OBJ-NEXT:   Value: 1, aeabi
    180 @ CHECK-OBJ-NEXT:   TagName: compatibility
    181 @ CHECK-OBJ-NEXT:   Description: AEABI Conformant
    182 	.eabi_attribute Tag_CPU_unaligned_access, 0
    183 @ CHECK: .eabi_attribute 34, 0
    184 @ CHECK-OBJ:        Tag: 34
    185 @ CHECK-OBJ-NEXT:   Value: 0
    186 @ CHECK-OBJ-NEXT:   TagName: CPU_unaligned_access
    187 @ CHECK-OBJ-NEXT:   Description: Not Permitted
    188 	.eabi_attribute Tag_FP_HP_extension, 0
    189 @ CHECK: .eabi_attribute 36, 0
    190 @ CHECK-OBJ:        Tag: 36
    191 @ CHECK-OBJ-NEXT:   Value: 0
    192 @ CHECK-OBJ-NEXT:   TagName: FP_HP_extension
    193 @ CHECK-OBJ-NEXT:   Description: If Available
    194 	.eabi_attribute Tag_ABI_FP_16bit_format, 0
    195 @ CHECK: .eabi_attribute 38, 0
    196 @ CHECK-OBJ:        Tag: 38
    197 @ CHECK-OBJ-NEXT:   Value: 0
    198 @ CHECK-OBJ-NEXT:   TagName: ABI_FP_16bit_format
    199 @ CHECK-OBJ-NEXT:   Description: Not Permitte
    200 	.eabi_attribute Tag_MPextension_use, 0
    201 @ CHECK: .eabi_attribute 42, 0
    202 @ CHECK-OBJ:        Tag: 42
    203 @ CHECK-OBJ-NEXT:   Value: 0
    204 @ CHECK-OBJ-NEXT:   TagName: MPextension_use
    205 @ CHECK-OBJ-NEXT:   Description: Not Permitted
    206 	.eabi_attribute Tag_DIV_use, 0
    207 @ CHECK: .eabi_attribute 44, 0
    208 @ CHECK-OBJ:        Tag: 44
    209 @ CHECK-OBJ-NEXT:   Value: 0
    210 @ CHECK-OBJ-NEXT:   TagName: DIV_use
    211 @ CHECK-OBJ-NEXT:   Description: If Available
    212 	.eabi_attribute Tag_DSP_extension, 0
    213 @ CHECK: .eabi_attribute 46, 0
    214 @ CHECK-OBJ:        Tag: 46
    215 @ CHECK-OBJ-NEXT:   Value: 0
    216 @ CHECK-OBJ-NEXT:   TagName: DSP_extension
    217 @ CHECK-OBJ-NEXT:   Description: Not Permitted
    218 	.eabi_attribute Tag_nodefaults, 0
    219 @ CHECK: .eabi_attribute 64, 0
    220 @ CHECK-OBJ:        Tag: 64
    221 @ CHECK-OBJ-NEXT:   Value: 0
    222 @ CHECK-OBJ-NEXT:   TagName: nodefaults
    223 @ CHECK-OBJ-NEXT:   Description: Unspecified Tags UNDEFINED
    224 	.eabi_attribute Tag_also_compatible_with, "gnu"
    225 @ CHECK: .eabi_attribute 65, "gnu"
    226 @ CHECK-OBJ:        Tag: 65
    227 @ CHECK-OBJ-NEXT:   TagName: also_compatible_with
    228 @ CHECK-OBJ-NEXT:   Value: gnu
    229 	.eabi_attribute Tag_T2EE_use, 0
    230 @ CHECK: .eabi_attribute 66, 0
    231 @ CHECK-OBJ:        Tag: 66
    232 @ CHECK-OBJ-NEXT:   Value: 0
    233 @ CHECK-OBJ-NEXT:   TagName: T2EE_use
    234 @ CHECK-OBJ-NEXT:   Description: Not Permitted
    235 	.eabi_attribute Tag_Virtualization_use, 0
    236 @ CHECK: .eabi_attribute 68, 0
    237 @ CHECK-OBJ:        Tag: 68
    238 @ CHECK-OBJ-NEXT:   Value: 0
    239 @ CHECK-OBJ-NEXT:   TagName: Virtualization_use
    240 @ CHECK-OBJ-NEXT:   Description: Not Permitted
    241 
    242 @ ===--- Compatibility Checks ---===
    243 
    244 	.eabi_attribute Tag_ABI_align8_needed, 1
    245 @ CHECK: .eabi_attribute 24, 1
    246 	.eabi_attribute Tag_ABI_align8_preserved, 2
    247 @ CHECK: .eabi_attribute 25, 2
    248 
    249 @ ===--- GNU AS Compatibility Checks ---===
    250 
    251 	.eabi_attribute 2 * 2 + 1, "cortex-a9"
    252 @ CHECK: .cpu cortex-a9
    253 	.eabi_attribute 2 * 2 + 2, 5 * 2
    254 @ CHECK: .eabi_attribute 6, 10
    255