• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5
6; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s
7; RUN: llvm-readobj --section-headers --file-header %t.o | \
8; RUN: FileCheck --check-prefix=OBJ %s
9; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s
10; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s
11
12; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \
13; RUN: FileCheck --check-prefix=XCOFF64 %s
14; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet.
15
16@const_ivar = constant i32 35, align 4
17@const_llvar = constant i64 36, align 8
18@const_svar = constant i16 37, align 2
19@const_fvar = constant float 8.000000e+02, align 4
20@const_dvar = constant double 9.000000e+02, align 8
21@const_over_aligned = constant double 9.000000e+02, align 32
22@const_chrarray = constant [4 x i8] c"abcd", align 1
23@const_dblarr = constant [4 x double] [double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00], align 8
24
25; CHECK:               .csect .rodata[RO],5
26; CHECK-NEXT:          .globl  const_ivar
27; CHECK-NEXT:          .align  2
28; CHECK-NEXT:  const_ivar:
29; CHECK-NEXT:          .vbyte	4, 35
30; CHECK-NEXT:          .globl  const_llvar
31; CHECK-NEXT:          .align  3
32; CHECK-NEXT:  const_llvar:
33; CHECK32-NEXT:        .vbyte	4, 0
34; CHECK32-NEXT:        .vbyte	4, 36
35; CHECK64-NEXT:        .vbyte	8, 36
36; CHECK-NEXT:          .globl  const_svar
37; CHECK-NEXT:          .align  1
38; CHECK-NEXT:  const_svar:
39; CHECK-NEXT:          .vbyte	2, 37
40; CHECK-NEXT:          .globl  const_fvar
41; CHECK-NEXT:          .align  2
42; CHECK-NEXT:  const_fvar:
43; CHECK-NEXT:          .vbyte	4, 0x44480000
44; CHECK-NEXT:          .globl  const_dvar
45; CHECK-NEXT:          .align  3
46; CHECK-NEXT:  const_dvar:
47; CHECK32-NEXT:        .vbyte	4, 1082925056
48; CHECK32-NEXT:        .vbyte	4, 0
49; CHECK64-NEXT:        .vbyte	8, 0x408c200000000000
50; CHECK-NEXT:          .globl  const_over_aligned
51; CHECK-NEXT:          .align  5
52; CHECK-NEXT:  const_over_aligned:
53; CHECK32-NEXT:        .vbyte	4, 1082925056
54; CHECK32-NEXT:        .vbyte	4, 0
55; CHECK64-NEXT:        .vbyte	8, 0x408c200000000000
56; CHECK-NEXT:          .globl  const_chrarray
57; CHECK-NEXT:  const_chrarray:
58; CHECK-NEXT:          .byte   'a,'b,'c,'d
59; CHECK-NEXT:          .globl  const_dblarr
60; CHECK-NEXT:          .align  3
61; CHECK-NEXT:  const_dblarr:
62; CHECK32-NEXT:        .vbyte	4, 1072693248
63; CHECK32-NEXT:        .vbyte	4, 0
64; CHECK64-NEXT:        .vbyte	8, 0x3ff0000000000000
65; CHECK32-NEXT:        .vbyte	4, 1073741824
66; CHECK32-NEXT:        .vbyte	4, 0
67; CHECK64-NEXT:        .vbyte	8, 0x4000000000000000
68; CHECK32-NEXT:        .vbyte	4, 1074266112
69; CHECK32-NEXT:        .vbyte	4, 0
70; CHECK64-NEXT:        .vbyte	8, 0x4008000000000000
71; CHECK32-NEXT:        .vbyte	4, 1074790400
72; CHECK32-NEXT:        .vbyte	4, 0
73; CHECK64-NEXT:        .vbyte	8, 0x4010000000000000
74
75
76; OBJ:      File: {{.*}}aix-xcoff-rodata.ll.tmp.o
77; OBJ-NEXT: Format: aixcoff-rs6000
78; OBJ-NEXT: Arch: powerpc
79; OBJ-NEXT: AddressSize: 32bit
80; OBJ-NEXT: FileHeader {
81; OBJ-NEXT:   Magic: 0x1DF
82; OBJ-NEXT:   NumberOfSections: 1
83; OBJ-NEXT:   TimeStamp: None (0x0)
84; OBJ-NEXT:   SymbolTableOffset: 0x8C
85; OBJ-NEXT:   SymbolTableEntries: 20
86; OBJ-NEXT:   OptionalHeaderSize: 0x0
87; OBJ-NEXT:   Flags: 0x0
88; OBJ-NEXT: }
89
90; OBJ:      Sections [
91; OBJ:        Section {
92; OBJ-NEXT:     Index: 1
93; OBJ-NEXT:     Name: .text
94; OBJ-NEXT:     PhysicalAddress: 0x0
95; OBJ-NEXT:     VirtualAddress: 0x0
96; OBJ-NEXT:     Size: 0x50
97; OBJ-NEXT:     RawDataOffset: 0x3C
98; OBJ-NEXT:     RelocationPointer: 0x0
99; OBJ-NEXT:     LineNumberPointer: 0x0
100; OBJ-NEXT:     NumberOfRelocations: 0
101; OBJ-NEXT:     NumberOfLineNumbers: 0
102; OBJ-NEXT:     Type: STYP_TEXT (0x20)
103; OBJ-NEXT:   }
104; OBJ-NEXT: ]
105
106
107; SYMS:       File: {{.*}}aix-xcoff-rodata.ll.tmp.o
108; SYMS-NEXT:  Format: aixcoff-rs6000
109; SYMS-NEXT:  Arch: powerpc
110; SYMS-NEXT:  AddressSize: 32bit
111; SYMS:       Symbols [
112; SYMS:        Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .rodata
113; SYMS-NEXT:     Value (RelocatableAddress): 0x0
114; SYMS-NEXT:     Section: .text
115; SYMS-NEXT:     Type: 0x0
116; SYMS-NEXT:     StorageClass: C_HIDEXT (0x6B)
117; SYMS-NEXT:     NumberOfAuxEntries: 1
118; SYMS-NEXT:     CSECT Auxiliary Entry {
119; SYMS-NEXT:       Index: [[#INDX+1]]
120; SYMS-NEXT:       SectionLen: 80
121; SYMS-NEXT:       ParameterHashIndex: 0x0
122; SYMS-NEXT:       TypeChkSectNum: 0x0
123; SYMS-NEXT:       SymbolAlignmentLog2: 5
124; SYMS-NEXT:       SymbolType: XTY_SD (0x1)
125; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
126; SYMS-NEXT:       StabInfoIndex: 0x0
127; SYMS-NEXT:       StabSectNum: 0x0
128; SYMS-NEXT:     }
129; SYMS-NEXT:   }
130
131; SYMS:        Symbol {
132; SYMS-NEXT:     Index: [[#INDX+2]]
133; SYMS-NEXT:     Name: const_ivar
134; SYMS-NEXT:     Value (RelocatableAddress): 0x0
135; SYMS-NEXT:     Section: .text
136; SYMS-NEXT:     Type: 0x0
137; SYMS-NEXT:     StorageClass: C_EXT (0x2)
138; SYMS-NEXT:     NumberOfAuxEntries: 1
139; SYMS-NEXT:     CSECT Auxiliary Entry {
140; SYMS-NEXT:       Index: [[#INDX+3]]
141; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
142; SYMS-NEXT:       ParameterHashIndex: 0x0
143; SYMS-NEXT:       TypeChkSectNum: 0x0
144; SYMS-NEXT:       SymbolAlignmentLog2: 0
145; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
146; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
147; SYMS-NEXT:       StabInfoIndex: 0x0
148; SYMS-NEXT:       StabSectNum: 0x0
149; SYMS-NEXT:     }
150; SYMS-NEXT:   }
151
152; SYMS:        Symbol {
153; SYMS-NEXT:     Index: [[#INDX+4]]
154; SYMS-NEXT:     Name: const_llvar
155; SYMS-NEXT:     Value (RelocatableAddress): 0x8
156; SYMS-NEXT:     Section: .text
157; SYMS-NEXT:     Type: 0x0
158; SYMS-NEXT:     StorageClass: C_EXT (0x2)
159; SYMS-NEXT:     NumberOfAuxEntries: 1
160; SYMS-NEXT:     CSECT Auxiliary Entry {
161; SYMS-NEXT:       Index: [[#INDX+5]]
162; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
163; SYMS-NEXT:       ParameterHashIndex: 0x0
164; SYMS-NEXT:       TypeChkSectNum: 0x0
165; SYMS-NEXT:       SymbolAlignmentLog2: 0
166; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
167; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
168; SYMS-NEXT:       StabInfoIndex: 0x0
169; SYMS-NEXT:       StabSectNum: 0x0
170; SYMS-NEXT:     }
171; SYMS-NEXT:   }
172
173; SYMS:        Symbol {
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: 2
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; SYMS-NEXT:       StabInfoIndex: 0x0
190; SYMS-NEXT:       StabSectNum: 0x0
191; SYMS-NEXT:     }
192; SYMS-NEXT:   }
193
194; SYMS:        Symbol {
195; SYMS-NEXT:     Index: [[#INDX+8]]
196; SYMS-NEXT:     Name: const_fvar
197; SYMS-NEXT:     Value (RelocatableAddress): 0x14
198; SYMS-NEXT:     Section: .text
199; SYMS-NEXT:     Type: 0x0
200; SYMS-NEXT:     StorageClass: C_EXT (0x2)
201; SYMS-NEXT:     NumberOfAuxEntries: 1
202; SYMS-NEXT:     CSECT Auxiliary Entry {
203; SYMS-NEXT:       Index: [[#INDX+9]]
204; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
205; SYMS-NEXT:       ParameterHashIndex: 0x0
206; SYMS-NEXT:       TypeChkSectNum: 0x0
207; SYMS-NEXT:       SymbolAlignmentLog2: 0
208; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
209; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
210; SYMS-NEXT:       StabInfoIndex: 0x0
211; SYMS-NEXT:       StabSectNum: 0x0
212; SYMS-NEXT:     }
213; SYMS-NEXT:   }
214
215; SYMS:        Symbol {
216; SYMS-NEXT:     Index: [[#INDX+10]]
217; SYMS-NEXT:     Name: const_dvar
218; SYMS-NEXT:     Value (RelocatableAddress): 0x18
219; SYMS-NEXT:     Section: .text
220; SYMS-NEXT:     Type: 0x0
221; SYMS-NEXT:     StorageClass: C_EXT (0x2)
222; SYMS-NEXT:     NumberOfAuxEntries: 1
223; SYMS-NEXT:     CSECT Auxiliary Entry {
224; SYMS-NEXT:       Index: [[#INDX+11]]
225; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
226; SYMS-NEXT:       ParameterHashIndex: 0x0
227; SYMS-NEXT:       TypeChkSectNum: 0x0
228; SYMS-NEXT:       SymbolAlignmentLog2: 0
229; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
230; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
231; SYMS-NEXT:       StabInfoIndex: 0x0
232; SYMS-NEXT:       StabSectNum: 0x0
233; SYMS-NEXT:     }
234; SYMS-NEXT:   }
235
236; SYMS:        Symbol {
237; SYMS-NEXT:     Index: [[#INDX+12]]
238; SYMS-NEXT:     Name: const_over_aligned
239; SYMS-NEXT:     Value (RelocatableAddress): 0x20
240; SYMS-NEXT:     Section: .text
241; SYMS-NEXT:     Type: 0x0
242; SYMS-NEXT:     StorageClass: C_EXT (0x2)
243; SYMS-NEXT:     NumberOfAuxEntries: 1
244; SYMS-NEXT:     CSECT Auxiliary Entry {
245; SYMS-NEXT:       Index: [[#INDX+13]]
246; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
247; SYMS-NEXT:       ParameterHashIndex: 0x0
248; SYMS-NEXT:       TypeChkSectNum: 0x0
249; SYMS-NEXT:       SymbolAlignmentLog2: 0
250; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
251; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
252; SYMS-NEXT:       StabInfoIndex: 0x0
253; SYMS-NEXT:       StabSectNum: 0x0
254; SYMS-NEXT:     }
255; SYMS-NEXT:   }
256
257; SYMS:        Symbol {
258; SYMS-NEXT:     Index: [[#INDX+14]]
259; SYMS-NEXT:     Name: const_chrarray
260; SYMS-NEXT:     Value (RelocatableAddress): 0x28
261; SYMS-NEXT:     Section: .text
262; SYMS-NEXT:     Type: 0x0
263; SYMS-NEXT:     StorageClass: C_EXT (0x2)
264; SYMS-NEXT:     NumberOfAuxEntries: 1
265; SYMS-NEXT:     CSECT Auxiliary Entry {
266; SYMS-NEXT:       Index: [[#INDX+15]]
267; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
268; SYMS-NEXT:       ParameterHashIndex: 0x0
269; SYMS-NEXT:       TypeChkSectNum: 0x0
270; SYMS-NEXT:       SymbolAlignmentLog2: 0
271; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
272; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
273; SYMS-NEXT:       StabInfoIndex: 0x0
274; SYMS-NEXT:       StabSectNum: 0x0
275; SYMS-NEXT:     }
276; SYMS-NEXT:   }
277
278; SYMS:        Symbol {
279; SYMS-NEXT:     Index: [[#INDX+16]]
280; SYMS-NEXT:     Name: const_dblarr
281; SYMS-NEXT:     Value (RelocatableAddress): 0x30
282; SYMS-NEXT:     Section: .text
283; SYMS-NEXT:     Type: 0x0
284; SYMS-NEXT:     StorageClass: C_EXT (0x2)
285; SYMS-NEXT:     NumberOfAuxEntries: 1
286; SYMS-NEXT:     CSECT Auxiliary Entry {
287; SYMS-NEXT:       Index: [[#INDX+17]]
288; SYMS-NEXT:       ContainingCsectSymbolIndex: 2
289; SYMS-NEXT:       ParameterHashIndex: 0x0
290; SYMS-NEXT:       TypeChkSectNum: 0x0
291; SYMS-NEXT:       SymbolAlignmentLog2: 0
292; SYMS-NEXT:       SymbolType: XTY_LD (0x2)
293; SYMS-NEXT:       StorageMappingClass: XMC_RO (0x1)
294; SYMS-NEXT:       StabInfoIndex: 0x0
295; SYMS-NEXT:       StabSectNum: 0x0
296; SYMS-NEXT:     }
297; SYMS-NEXT:   }
298; SYMS:      ]
299
300; DIS: Disassembly of section .text:
301; DIS: 00000000 <const_ivar>:
302; DIS-NEXT:        0: 00 00 00 23
303; DIS-NEXT:        4: 00 00 00 00
304
305; DIS: 00000008 <const_llvar>:
306; DIS-NEXT:        8: 00 00 00 00
307; DIS-NEXT:        c: 00 00 00 24
308
309; DIS: 00000010 <const_svar>:
310; DIS-NEXT:       10: 00 25 00 00
311
312; DIS: 00000014 <const_fvar>:
313; DIS-NEXT:       14: 44 48 00 00
314
315; DIS: 00000018 <const_dvar>:
316; DIS-NEXT:       18: 40 8c 20 00
317; DIS-NEXT:       1c: 00 00 00 00
318
319; DIS: 00000020 <const_over_aligned>:
320; DIS-NEXT:       20: 40 8c 20 00
321; DIS-NEXT:       24: 00 00 00 00
322
323; DIS: 00000028 <const_chrarray>:
324; DIS-NEXT:       28: 61 62 63 64
325; DIS-NEXT:       2c: 00 00 00 00
326
327; DIS: 00000030 <const_dblarr>:
328; DIS-NEXT:       30: 3f f0 00 00
329; DIS-NEXT:       34: 00 00 00 00
330; DIS-NEXT:       38: 40 00 00 00
331; DIS-NEXT:       3c: 00 00 00 00
332; DIS-NEXT:       40: 40 08 00 00
333; DIS-NEXT:       44: 00 00 00 00
334; DIS-NEXT:       48: 40 10 00 00
335; DIS-NEXT:       4c: 00 00 00 00
336