1 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \
2 ; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s
3 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \
4 ; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s
6 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false \
7 ; RUN: -filetype=obj -o %t.o < %s
8 ; RUN: llvm-readobj --section-headers --file-header %t.o | \
9 ; RUN: FileCheck --check-prefixes=OBJ,OBJ32 %s
10 ; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYMS,SYMS32 %s
11 ; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s
13 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false \
14 ; RUN: -filetype=obj -o %t64.o < %s
15 ; RUN: llvm-readobj --section-headers --file-header %t64.o | \
16 ; RUN: FileCheck --check-prefixes=OBJ,OBJ64 %s
17 ; RUN: llvm-readobj --syms %t64.o | FileCheck --check-prefixes=SYMS,SYMS64 %s
19 @const_ivar = constant i32 35, align 4
20 @const_llvar = constant i64 36, align 8
21 @const_svar = constant i16 37, align 2
22 @const_fvar = constant float 8.000000e+02, align 4
23 @const_dvar = constant double 9.000000e+02, align 8
24 @const_over_aligned = constant double 9.000000e+02, align 32
25 @const_chrarray = constant [4 x i8] c"abcd", align 1
26 @const_dblarr = constant [4 x double] [double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00], align 8
28 ; CHECK: .csect .rodata[RO],5
29 ; CHECK-NEXT: .globl const_ivar
30 ; CHECK-NEXT: .align 2
31 ; CHECK-NEXT: const_ivar:
32 ; CHECK-NEXT: .vbyte 4, 35
33 ; CHECK-NEXT: .globl const_llvar
34 ; CHECK-NEXT: .align 3
35 ; CHECK-NEXT: const_llvar:
36 ; CHECK32-NEXT: .vbyte 4, 0
37 ; CHECK32-NEXT: .vbyte 4, 36
38 ; CHECK64-NEXT: .vbyte 8, 36
39 ; CHECK-NEXT: .globl const_svar
40 ; CHECK-NEXT: .align 1
41 ; CHECK-NEXT: const_svar:
42 ; CHECK-NEXT: .vbyte 2, 37
43 ; CHECK-NEXT: .globl const_fvar
44 ; CHECK-NEXT: .align 2
45 ; CHECK-NEXT: const_fvar:
46 ; CHECK-NEXT: .vbyte 4, 0x44480000
47 ; CHECK-NEXT: .globl const_dvar
48 ; CHECK-NEXT: .align 3
49 ; CHECK-NEXT: const_dvar:
50 ; CHECK32-NEXT: .vbyte 4, 1082925056
51 ; CHECK32-NEXT: .vbyte 4, 0
52 ; CHECK64-NEXT: .vbyte 8, 0x408c200000000000
53 ; CHECK-NEXT: .globl const_over_aligned
54 ; CHECK-NEXT: .align 5
55 ; CHECK-NEXT: const_over_aligned:
56 ; CHECK32-NEXT: .vbyte 4, 1082925056
57 ; CHECK32-NEXT: .vbyte 4, 0
58 ; CHECK64-NEXT: .vbyte 8, 0x408c200000000000
59 ; CHECK-NEXT: .globl const_chrarray
60 ; CHECK-NEXT: const_chrarray:
61 ; CHECK-NEXT: .byte "abcd"
62 ; CHECK-NEXT: .globl const_dblarr
63 ; CHECK-NEXT: .align 3
64 ; CHECK-NEXT: const_dblarr:
65 ; CHECK32-NEXT: .vbyte 4, 1072693248
66 ; CHECK32-NEXT: .vbyte 4, 0
67 ; CHECK64-NEXT: .vbyte 8, 0x3ff0000000000000
68 ; CHECK32-NEXT: .vbyte 4, 1073741824
69 ; CHECK32-NEXT: .vbyte 4, 0
70 ; CHECK64-NEXT: .vbyte 8, 0x4000000000000000
71 ; CHECK32-NEXT: .vbyte 4, 1074266112
72 ; CHECK32-NEXT: .vbyte 4, 0
73 ; CHECK64-NEXT: .vbyte 8, 0x4008000000000000
74 ; CHECK32-NEXT: .vbyte 4, 1074790400
75 ; CHECK32-NEXT: .vbyte 4, 0
76 ; CHECK64-NEXT: .vbyte 8, 0x4010000000000000
79 ; OBJ32-NEXT: Magic: 0x1DF
80 ; OBJ64-NEXT: Magic: 0x1F7
81 ; OBJ-NEXT: NumberOfSections: 1
82 ; OBJ-NEXT: TimeStamp: None (0x0)
83 ; OBJ32-NEXT: SymbolTableOffset: 0x8C
84 ; OBJ64-NEXT: SymbolTableOffset: 0xB0
85 ; OBJ-NEXT: SymbolTableEntries: 23
86 ; OBJ-NEXT: OptionalHeaderSize: 0x0
87 ; OBJ-NEXT: Flags: 0x0
93 ; OBJ-NEXT: Name: .text
94 ; OBJ-NEXT: PhysicalAddress: 0x0
95 ; OBJ-NEXT: VirtualAddress: 0x0
96 ; OBJ32-NEXT: Size: 0x50
97 ; OBJ32-NEXT: RawDataOffset: 0x3C
98 ; OBJ64-NEXT: Size: 0x50
99 ; OBJ64-NEXT: RawDataOffset: 0x60
100 ; OBJ-NEXT: RelocationPointer: 0x0
101 ; OBJ-NEXT: LineNumberPointer: 0x0
102 ; OBJ-NEXT: NumberOfRelocations: 0
103 ; OBJ-NEXT: NumberOfLineNumbers: 0
104 ; OBJ-NEXT: Type: STYP_TEXT (0x20)
109 ; SYMS: Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .rodata
110 ; SYMS-NEXT: Value (RelocatableAddress): 0x0
111 ; SYMS-NEXT: Section: .text
112 ; SYMS-NEXT: Type: 0x0
113 ; SYMS-NEXT: StorageClass: C_HIDEXT (0x6B)
114 ; SYMS-NEXT: NumberOfAuxEntries: 1
115 ; SYMS-NEXT: CSECT Auxiliary Entry {
116 ; SYMS-NEXT: Index: [[#INDX+1]]
117 ; SYMS-NEXT: SectionLen: 80
118 ; SYMS-NEXT: ParameterHashIndex: 0x0
119 ; SYMS-NEXT: TypeChkSectNum: 0x0
120 ; SYMS-NEXT: SymbolAlignmentLog2: 5
121 ; SYMS-NEXT: SymbolType: XTY_SD (0x1)
122 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
123 ; SYMS32-NEXT: StabInfoIndex: 0x0
124 ; SYMS32-NEXT: StabSectNum: 0x0
125 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
130 ; SYMS-NEXT: Index: [[#INDX+2]]
131 ; SYMS-NEXT: Name: const_ivar
132 ; SYMS-NEXT: Value (RelocatableAddress): 0x0
133 ; SYMS-NEXT: Section: .text
134 ; SYMS-NEXT: Type: 0x0
135 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
136 ; SYMS-NEXT: NumberOfAuxEntries: 1
137 ; SYMS-NEXT: CSECT Auxiliary Entry {
138 ; SYMS-NEXT: Index: [[#INDX+3]]
139 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
140 ; SYMS-NEXT: ParameterHashIndex: 0x0
141 ; SYMS-NEXT: TypeChkSectNum: 0x0
142 ; SYMS-NEXT: SymbolAlignmentLog2: 0
143 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
144 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
145 ; SYMS32-NEXT: StabInfoIndex: 0x0
146 ; SYMS32-NEXT: StabSectNum: 0x0
147 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
152 ; SYMS-NEXT: Index: [[#INDX+4]]
153 ; SYMS-NEXT: Name: const_llvar
154 ; SYMS-NEXT: Value (RelocatableAddress): 0x8
155 ; SYMS-NEXT: Section: .text
156 ; SYMS-NEXT: Type: 0x0
157 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
158 ; SYMS-NEXT: NumberOfAuxEntries: 1
159 ; SYMS-NEXT: CSECT Auxiliary Entry {
160 ; SYMS-NEXT: Index: [[#INDX+5]]
161 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
162 ; SYMS-NEXT: ParameterHashIndex: 0x0
163 ; SYMS-NEXT: TypeChkSectNum: 0x0
164 ; SYMS-NEXT: SymbolAlignmentLog2: 0
165 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
166 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
167 ; SYMS32-NEXT: StabInfoIndex: 0x0
168 ; SYMS32-NEXT: StabSectNum: 0x0
169 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
174 ; SYMS-NEXT: Index: [[#INDX+6]]
175 ; SYMS-NEXT: Name: const_svar
176 ; SYMS-NEXT: Value (RelocatableAddress): 0x10
177 ; SYMS-NEXT: Section: .text
178 ; SYMS-NEXT: Type: 0x0
179 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
180 ; SYMS-NEXT: NumberOfAuxEntries: 1
181 ; SYMS-NEXT: CSECT Auxiliary Entry {
182 ; SYMS-NEXT: Index: [[#INDX+7]]
183 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
184 ; SYMS-NEXT: ParameterHashIndex: 0x0
185 ; SYMS-NEXT: TypeChkSectNum: 0x0
186 ; SYMS-NEXT: SymbolAlignmentLog2: 0
187 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
188 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
189 ; SYMS32-NEXT: StabInfoIndex: 0x0
190 ; SYMS32-NEXT: StabSectNum: 0x0
191 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
196 ; SYMS-NEXT: Index: [[#INDX+8]]
197 ; SYMS-NEXT: Name: const_fvar
198 ; SYMS-NEXT: Value (RelocatableAddress): 0x14
199 ; SYMS-NEXT: Section: .text
200 ; SYMS-NEXT: Type: 0x0
201 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
202 ; SYMS-NEXT: NumberOfAuxEntries: 1
203 ; SYMS-NEXT: CSECT Auxiliary Entry {
204 ; SYMS-NEXT: Index: [[#INDX+9]]
205 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
206 ; SYMS-NEXT: ParameterHashIndex: 0x0
207 ; SYMS-NEXT: TypeChkSectNum: 0x0
208 ; SYMS-NEXT: SymbolAlignmentLog2: 0
209 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
210 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
211 ; SYMS32-NEXT: StabInfoIndex: 0x0
212 ; SYMS32-NEXT: StabSectNum: 0x0
213 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
218 ; SYMS-NEXT: Index: [[#INDX+10]]
219 ; SYMS-NEXT: Name: const_dvar
220 ; SYMS-NEXT: Value (RelocatableAddress): 0x18
221 ; SYMS-NEXT: Section: .text
222 ; SYMS-NEXT: Type: 0x0
223 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
224 ; SYMS-NEXT: NumberOfAuxEntries: 1
225 ; SYMS-NEXT: CSECT Auxiliary Entry {
226 ; SYMS-NEXT: Index: [[#INDX+11]]
227 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
228 ; SYMS-NEXT: ParameterHashIndex: 0x0
229 ; SYMS-NEXT: TypeChkSectNum: 0x0
230 ; SYMS-NEXT: SymbolAlignmentLog2: 0
231 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
232 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
233 ; SYMS32-NEXT: StabInfoIndex: 0x0
234 ; SYMS32-NEXT: StabSectNum: 0x0
235 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
240 ; SYMS-NEXT: Index: [[#INDX+12]]
241 ; SYMS-NEXT: Name: const_over_aligned
242 ; SYMS-NEXT: Value (RelocatableAddress): 0x20
243 ; SYMS-NEXT: Section: .text
244 ; SYMS-NEXT: Type: 0x0
245 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
246 ; SYMS-NEXT: NumberOfAuxEntries: 1
247 ; SYMS-NEXT: CSECT Auxiliary Entry {
248 ; SYMS-NEXT: Index: [[#INDX+13]]
249 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
250 ; SYMS-NEXT: ParameterHashIndex: 0x0
251 ; SYMS-NEXT: TypeChkSectNum: 0x0
252 ; SYMS-NEXT: SymbolAlignmentLog2: 0
253 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
254 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
255 ; SYMS32-NEXT: StabInfoIndex: 0x0
256 ; SYMS32-NEXT: StabSectNum: 0x0
257 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
262 ; SYMS-NEXT: Index: [[#INDX+14]]
263 ; SYMS-NEXT: Name: const_chrarray
264 ; SYMS-NEXT: Value (RelocatableAddress): 0x28
265 ; SYMS-NEXT: Section: .text
266 ; SYMS-NEXT: Type: 0x0
267 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
268 ; SYMS-NEXT: NumberOfAuxEntries: 1
269 ; SYMS-NEXT: CSECT Auxiliary Entry {
270 ; SYMS-NEXT: Index: [[#INDX+15]]
271 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
272 ; SYMS-NEXT: ParameterHashIndex: 0x0
273 ; SYMS-NEXT: TypeChkSectNum: 0x0
274 ; SYMS-NEXT: SymbolAlignmentLog2: 0
275 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
276 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
277 ; SYMS32-NEXT: StabInfoIndex: 0x0
278 ; SYMS32-NEXT: StabSectNum: 0x0
279 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
284 ; SYMS-NEXT: Index: [[#INDX+16]]
285 ; SYMS-NEXT: Name: const_dblarr
286 ; SYMS-NEXT: Value (RelocatableAddress): 0x30
287 ; SYMS-NEXT: Section: .text
288 ; SYMS-NEXT: Type: 0x0
289 ; SYMS-NEXT: StorageClass: C_EXT (0x2)
290 ; SYMS-NEXT: NumberOfAuxEntries: 1
291 ; SYMS-NEXT: CSECT Auxiliary Entry {
292 ; SYMS-NEXT: Index: [[#INDX+17]]
293 ; SYMS-NEXT: ContainingCsectSymbolIndex: [[#INDX]]
294 ; SYMS-NEXT: ParameterHashIndex: 0x0
295 ; SYMS-NEXT: TypeChkSectNum: 0x0
296 ; SYMS-NEXT: SymbolAlignmentLog2: 0
297 ; SYMS-NEXT: SymbolType: XTY_LD (0x2)
298 ; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1)
299 ; SYMS32-NEXT: StabInfoIndex: 0x0
300 ; SYMS32-NEXT: StabSectNum: 0x0
301 ; SYMS64-NEXT: Auxiliary Type: AUX_CSECT (0xFB)
306 ; DIS: Disassembly of section .text:
307 ; DIS: 00000000 <const_ivar>:
308 ; DIS-NEXT: 0: 00 00 00 23
309 ; DIS-NEXT: 4: 00 00 00 00
311 ; DIS: 00000008 <const_llvar>:
312 ; DIS-NEXT: 8: 00 00 00 00
313 ; DIS-NEXT: c: 00 00 00 24
315 ; DIS: 00000010 <const_svar>:
316 ; DIS-NEXT: 10: 00 25 00 00
318 ; DIS: 00000014 <const_fvar>:
319 ; DIS-NEXT: 14: 44 48 00 00
321 ; DIS: 00000018 <const_dvar>:
322 ; DIS-NEXT: 18: 40 8c 20 00
323 ; DIS-NEXT: 1c: 00 00 00 00
325 ; DIS: 00000020 <const_over_aligned>:
326 ; DIS-NEXT: 20: 40 8c 20 00
327 ; DIS-NEXT: 24: 00 00 00 00
329 ; DIS: 00000028 <const_chrarray>:
330 ; DIS-NEXT: 28: 61 62 63 64
331 ; DIS-NEXT: 2c: 00 00 00 00
333 ; DIS: 00000030 <const_dblarr>:
334 ; DIS-NEXT: 30: 3f f0 00 00
335 ; DIS-NEXT: 34: 00 00 00 00
336 ; DIS-NEXT: 38: 40 00 00 00
337 ; DIS-NEXT: 3c: 00 00 00 00
338 ; DIS-NEXT: 40: 40 08 00 00
339 ; DIS-NEXT: 44: 00 00 00 00
340 ; DIS-NEXT: 48: 40 10 00 00
341 ; DIS-NEXT: 4c: 00 00 00 00