aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/PowerPC/aix-xcoff-explicit-section.ll
blob: a28c2f2eefea28892875ee2e5d213cb03e773a13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \
; RUN:     -xcoff-traceback-table=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \
; RUN:     -xcoff-traceback-table=false < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \
; RUN:     -xcoff-traceback-table=false -filetype=obj -o %t.o < %s
; RUN: llvm-objdump -D --symbol-description %t.o | FileCheck --check-prefix=CHECKOBJ %s
; RUN: llvm-readobj -s %t.o | FileCheck --check-prefix=CHECKSYM %s

@ext_const = constant i32 1, section ".ext_const_sec", align 4
@ext_var = global i32 1, section ".ext_var_sec", align 4
@ext_zvar = global i32 0, section ".ext_zvar_sec", align 4

define dso_local signext i32 @ext_fun() section ".ext_fun_sec" {
entry:
  %0 = load i32, ptr @ext_const, align 4
  %1 = load i32, ptr @ext_var, align 4
  %add = add nsw i32 %0, %1
  %2 = load i32, ptr @ext_zvar, align 4
  %add1 = add nsw i32 %add, %2
  ret i32 %add1
}

; CHECK:              .globl  ext_fun[DS]                     # -- Begin function ext_fun
; CHECK-NEXT:         .globl  .ext_fun
; CHECK-NEXT:         .align  4
; CHECK-NEXT:         .csect ext_fun[DS]
; CHECK:              .csect .ext_fun_sec[PR],5
; CHECK-NEXT: .ext_fun:
; CHECK:              .csect .ext_const_sec[RO],2
; CHECK-NEXT:         .globl  ext_const
; CHECK-NEXT:         .align  2
; CHECK-NEXT: ext_const:
; CHECK-NEXT:         .vbyte  4, 1                            # 0x1
; CHECK-NEXT:         .csect .ext_var_sec[RW],2
; CHECK-NEXT:         .globl  ext_var
; CHECK-NEXT:         .align  2
; CHECK-NEXT: ext_var:
; CHECK-NEXT:         .vbyte  4, 1                            # 0x1
; CHECK-NEXT:         .csect .ext_zvar_sec[RW],2
; CHECK-NEXT:         .globl  ext_zvar
; CHECK-NEXT:         .align  2
; CHECK-NEXT: ext_zvar:
; CHECK-NEXT:         .vbyte  4, 0                            # 0x0
; CHECK-NEXT:         .toc
; CHECK-NEXT: L..C0:
; CHECK-NEXT:         .tc ext_var[TC],ext_var
; CHECK-NEXT: L..C1:
; CHECK-NEXT:         .tc ext_zvar[TC],ext_zvar

; CHECKOBJ:        00000000 (idx: [[#INDX:]]) .ext_fun:
; CHECKOBJ-NEXT:          0: 80 62 00 00   lwz 3, 0(2)
; CHECKOBJ-NEXT:          4: 80 82 00 04   lwz 4, 4(2)
; CHECKOBJ-NEXT:          8: 80 63 00 00   lwz 3, 0(3)
; CHECKOBJ-NEXT:          c: 80 84 00 00   lwz 4, 0(4)
; CHECKOBJ-NEXT:         10: 7c 63 22 14   add 3, 3, 4
; CHECKOBJ-NEXT:         14: 38 63 00 01   addi 3, 3, 1
; CHECKOBJ-NEXT:         18: 4e 80 00 20   blr
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   0000001c (idx: [[#INDX+4]]) ext_const:
; CHECKOBJ-NEXT:         1c: 00 00 00 01   <unknown>
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   Disassembly of section .data:
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   00000020 (idx: [[#INDX+8]]) ext_var:
; CHECKOBJ-NEXT:         20: 00 00 00 01   <unknown>
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   00000024 (idx: [[#INDX+12]]) ext_zvar:
; CHECKOBJ-NEXT:         24: 00 00 00 00   <unknown>
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   00000028 (idx: [[#INDX+14]]) ext_fun[DS]:
; CHECKOBJ-NEXT:         28: 00 00 00 00   <unknown>
; CHECKOBJ-NEXT:         2c: 00 00 00 34   <unknown>
; CHECKOBJ-NEXT:         30: 00 00 00 00   <unknown>
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   00000034 (idx: [[#INDX+18]]) ext_var[TC]:
; CHECKOBJ-NEXT:         34: 00 00 00 20   <unknown>
; CHECKOBJ-EMPTY:
; CHECKOBJ-NEXT:   00000038 (idx: [[#INDX+20]]) ext_zvar[TC]:
; CHECKOBJ-NEXT:         38: 00 00 00 24   <unknown>

; CHECKSYM:       Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .ext_fun_sec
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x0
; CHECKSYM-NEXT:      Section: .text
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_HIDEXT (0x6B)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+1]]
; CHECKSYM-NEXT:        SectionLen: 28
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 5
; CHECKSYM-NEXT:        SymbolType: XTY_SD (0x1)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_PR (0x0)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+2]]
; CHECKSYM-NEXT:      Name: .ext_fun
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x0
; CHECKSYM-NEXT:      Section: .text
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_EXT (0x2)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+3]]
; CHECKSYM-NEXT:        ContainingCsectSymbolIndex: [[#INDX]]
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 0
; CHECKSYM-NEXT:        SymbolType: XTY_LD (0x2)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_PR (0x0)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+4]]
; CHECKSYM-NEXT:      Name: .ext_const_sec
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x1C
; CHECKSYM-NEXT:      Section: .text
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_HIDEXT (0x6B)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+5]]
; CHECKSYM-NEXT:        SectionLen: 4
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 2
; CHECKSYM-NEXT:        SymbolType: XTY_SD (0x1)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RO (0x1)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+6]]
; CHECKSYM-NEXT:      Name: ext_const
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x1C
; CHECKSYM-NEXT:      Section: .text
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_EXT (0x2)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+7]]
; CHECKSYM-NEXT:        ContainingCsectSymbolIndex: [[#INDX+4]]
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 0
; CHECKSYM-NEXT:        SymbolType: XTY_LD (0x2)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RO (0x1)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+8]]
; CHECKSYM-NEXT:      Name: .ext_var_sec
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x20
; CHECKSYM-NEXT:      Section: .data
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_HIDEXT (0x6B)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+9]]
; CHECKSYM-NEXT:        SectionLen: 4
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 2
; CHECKSYM-NEXT:        SymbolType: XTY_SD (0x1)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RW (0x5)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+10]]
; CHECKSYM-NEXT:      Name: ext_var
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x20
; CHECKSYM-NEXT:      Section: .data
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_EXT (0x2)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+11]]
; CHECKSYM-NEXT:        ContainingCsectSymbolIndex: [[#INDX+8]]
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 0
; CHECKSYM-NEXT:        SymbolType: XTY_LD (0x2)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RW (0x5)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+12]]
; CHECKSYM-NEXT:      Name: .ext_zvar_sec
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x24
; CHECKSYM-NEXT:      Section: .data
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_HIDEXT (0x6B)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+13]]
; CHECKSYM-NEXT:        SectionLen: 4
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 2
; CHECKSYM-NEXT:        SymbolType: XTY_SD (0x1)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RW (0x5)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+14]]
; CHECKSYM-NEXT:      Name: ext_zvar
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x24
; CHECKSYM-NEXT:      Section: .data
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_EXT (0x2)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+15]]
; CHECKSYM-NEXT:        ContainingCsectSymbolIndex: [[#INDX+12]]
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 0
; CHECKSYM-NEXT:        SymbolType: XTY_LD (0x2)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_RW (0x5)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }
; CHECKSYM-NEXT:    Symbol {
; CHECKSYM-NEXT:      Index: [[#INDX+16]]
; CHECKSYM-NEXT:      Name: ext_fun
; CHECKSYM-NEXT:      Value (RelocatableAddress): 0x28
; CHECKSYM-NEXT:      Section: .data
; CHECKSYM-NEXT:      Type: 0x0
; CHECKSYM-NEXT:      StorageClass: C_EXT (0x2)
; CHECKSYM-NEXT:      NumberOfAuxEntries: 1
; CHECKSYM-NEXT:      CSECT Auxiliary Entry {
; CHECKSYM-NEXT:        Index: [[#INDX+17]]
; CHECKSYM-NEXT:        SectionLen: 12
; CHECKSYM-NEXT:        ParameterHashIndex: 0x0
; CHECKSYM-NEXT:        TypeChkSectNum: 0x0
; CHECKSYM-NEXT:        SymbolAlignmentLog2: 2
; CHECKSYM-NEXT:        SymbolType: XTY_SD (0x1)
; CHECKSYM-NEXT:        StorageMappingClass: XMC_DS (0xA)
; CHECKSYM-NEXT:        StabInfoIndex: 0x0
; CHECKSYM-NEXT:        StabSectNum: 0x0
; CHECKSYM-NEXT:      }
; CHECKSYM-NEXT:    }