[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / DebugInfo / NVPTX / debug-addr-class.ll
blobe5ca8defc84e38253760a1c1ac35feb266dfb7e7
1 ; RUN: llc -mtriple=nvptx64-nvidia-cuda < %s | FileCheck %s
3 @GLOBAL = addrspace(1) externally_initialized global i32 0, align 4, !dbg !0
4 @SHARED = addrspace(3) externally_initialized global i32 undef, align 4, !dbg !6
6 define void @test(float, float*, float*, i32) !dbg !17 {
7   %5 = alloca float, align 4
8   %6 = alloca float*, align 8
9   %7 = alloca float*, align 8
10   %8 = alloca i32, align 4
11   store float %0, float* %5, align 4
12   call void @llvm.dbg.declare(metadata float* %5, metadata !22, metadata !DIExpression()), !dbg !23
13   store float* %1, float** %6, align 8
14   call void @llvm.dbg.declare(metadata float** %6, metadata !24, metadata !DIExpression()), !dbg !25
15   store float* %2, float** %7, align 8
16   call void @llvm.dbg.declare(metadata float** %7, metadata !26, metadata !DIExpression()), !dbg !27
17   store i32 %3, i32* %8, align 4
18   call void @llvm.dbg.declare(metadata i32* %8, metadata !28, metadata !DIExpression()), !dbg !29
19   %9 = load float, float* %5, align 4, !dbg !30
20   %10 = load float*, float** %6, align 8, !dbg !31
21   %11 = load i32, i32* %8, align 4, !dbg !32
22   %12 = sext i32 %11 to i64, !dbg !31
23   %13 = getelementptr inbounds float, float* %10, i64 %12, !dbg !31
24   %14 = load float, float* %13, align 4, !dbg !31
25   %15 = fmul contract float %9, %14, !dbg !33
26   %16 = load float*, float** %7, align 8, !dbg !34
27   %17 = load i32, i32* %8, align 4, !dbg !35
28   %18 = sext i32 %17 to i64, !dbg !34
29   %19 = getelementptr inbounds float, float* %16, i64 %18, !dbg !34
30   store float %15, float* %19, align 4, !dbg !36
31   store i32 0, i32* addrspacecast (i32 addrspace(1)* @GLOBAL to i32*), align 4, !dbg !37
32   store i32 0, i32* addrspacecast (i32 addrspace(3)* @SHARED to i32*), align 4, !dbg !38
33   ret void, !dbg !39
36 ; Function Attrs: nounwind readnone speculatable
37 declare void @llvm.dbg.declare(metadata, metadata, metadata)
39 !llvm.dbg.cu = !{!2}
40 !nvvm.annotations = !{!10}
41 !llvm.module.flags = !{!11, !12, !13, !14, !15}
42 !llvm.ident = !{!16}
44 !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
45 !1 = distinct !DIGlobalVariable(name: "GLOBAL", scope: !2, file: !8, line: 3, type: !9, isLocal: false, isDefinition: true)
46 !2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !3, producer: "clang version 9.0.0 (trunk 351969) (llvm/trunk 351973)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !5, nameTableKind: None)
47 !3 = !DIFile(filename: "new.cc", directory: "/tmp")
48 !4 = !{}
49 !5 = !{!0, !6}
50 !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression(DW_OP_constu, 8, DW_OP_swap, DW_OP_xderef))
51 !7 = distinct !DIGlobalVariable(name: "SHARED", scope: !2, file: !8, line: 4, type: !9, isLocal: false, isDefinition: true)
52 !8 = !DIFile(filename: "test.cu", directory: "/tmp")
53 !9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
54 !10 = !{void (float, float*, float*, i32)* @test, !"kernel", i32 1}
55 !11 = !{i32 2, !"Dwarf Version", i32 2}
56 !12 = !{i32 2, !"Debug Info Version", i32 3}
57 !13 = !{i32 1, !"wchar_size", i32 4}
58 !14 = !{i32 4, !"nvvm-reflect-ftz", i32 0}
59 !15 = !{i32 7, !"PIC Level", i32 2}
60 !16 = !{!"clang version 9.0.0 (trunk 351969) (llvm/trunk 351973)"}
61 !17 = distinct !DISubprogram(name: "test", linkageName: "test", scope: !8, file: !8, line: 6, type: !18, scopeLine: 6, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !2, retainedNodes: !4)
62 !18 = !DISubroutineType(types: !19)
63 !19 = !{null, !20, !21, !21, !9}
64 !20 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float)
65 !21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !20, size: 64)
66 !22 = !DILocalVariable(name: "a", arg: 1, scope: !17, file: !8, line: 6, type: !20)
67 !23 = !DILocation(line: 6, column: 41, scope: !17)
68 !24 = !DILocalVariable(name: "x", arg: 2, scope: !17, file: !8, line: 6, type: !21)
69 !25 = !DILocation(line: 6, column: 51, scope: !17)
70 !26 = !DILocalVariable(name: "y", arg: 3, scope: !17, file: !8, line: 6, type: !21)
71 !27 = !DILocation(line: 6, column: 61, scope: !17)
72 !28 = !DILocalVariable(name: "i", arg: 4, scope: !17, file: !8, line: 6, type: !9)
73 !29 = !DILocation(line: 6, column: 68, scope: !17)
74 !30 = !DILocation(line: 7, column: 10, scope: !17)
75 !31 = !DILocation(line: 7, column: 14, scope: !17)
76 !32 = !DILocation(line: 7, column: 16, scope: !17)
77 !33 = !DILocation(line: 7, column: 12, scope: !17)
78 !34 = !DILocation(line: 7, column: 3, scope: !17)
79 !35 = !DILocation(line: 7, column: 5, scope: !17)
80 !36 = !DILocation(line: 7, column: 8, scope: !17)
81 !37 = !DILocation(line: 8, column: 10, scope: !17)
82 !38 = !DILocation(line: 9, column: 10, scope: !17)
83 !39 = !DILocation(line: 10, column: 1, scope: !17)
85 ; CHECK: .section .debug_abbrev
86 ; CHECK-NEXT: {
87 ; CHECK-NEXT: .b8 1                                   // Abbreviation Code
88 ; CHECK-NEXT: .b8 17                                  // DW_TAG_compile_unit
89 ; CHECK-NEXT: .b8 1                                   // DW_CHILDREN_yes
90 ; CHECK-NEXT: .b8 37                                  // DW_AT_producer
91 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
92 ; CHECK-NEXT: .b8 19                                  // DW_AT_language
93 ; CHECK-NEXT: .b8 5                                   // DW_FORM_data2
94 ; CHECK-NEXT: .b8 3                                   // DW_AT_name
95 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
96 ; CHECK-NEXT: .b8 16                                  // DW_AT_stmt_list
97 ; CHECK-NEXT: .b8 6                                   // DW_FORM_data4
98 ; CHECK-NEXT: .b8 27                                  // DW_AT_comp_dir
99 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
100 ; CHECK-NEXT: .b8 17                                  // DW_AT_low_pc
101 ; CHECK-NEXT: .b8 1                                   // DW_FORM_addr
102 ; CHECK-NEXT: .b8 18                                  // DW_AT_high_pc
103 ; CHECK-NEXT: .b8 1                                   // DW_FORM_addr
104 ; CHECK-NEXT: .b8 0                                   // EOM(1)
105 ; CHECK-NEXT: .b8 0                                   // EOM(2)
106 ; CHECK-NEXT: .b8 2                                   // Abbreviation Code
107 ; CHECK-NEXT: .b8 52                                  // DW_TAG_variable
108 ; CHECK-NEXT: .b8 0                                   // DW_CHILDREN_no
109 ; CHECK-NEXT: .b8 3                                   // DW_AT_name
110 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
111 ; CHECK-NEXT: .b8 73                                  // DW_AT_type
112 ; CHECK-NEXT: .b8 19                                  // DW_FORM_ref4
113 ; CHECK-NEXT: .b8 63                                  // DW_AT_external
114 ; CHECK-NEXT: .b8 12                                  // DW_FORM_flag
115 ; CHECK-NEXT: .b8 58                                  // DW_AT_decl_file
116 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
117 ; CHECK-NEXT: .b8 59                                  // DW_AT_decl_line
118 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
119 ; CHECK-NEXT: .b8 51                                  // DW_AT_address_class
120 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
121 ; CHECK-NEXT: .b8 2                                   // DW_AT_location
122 ; CHECK-NEXT: .b8 10                                  // DW_FORM_block1
123 ; CHECK-NEXT: .b8 0                                   // EOM(1)
124 ; CHECK-NEXT: .b8 0                                   // EOM(2)
125 ; CHECK-NEXT: .b8 3                                   // Abbreviation Code
126 ; CHECK-NEXT: .b8 36                                  // DW_TAG_base_type
127 ; CHECK-NEXT: .b8 0                                   // DW_CHILDREN_no
128 ; CHECK-NEXT: .b8 3                                   // DW_AT_name
129 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
130 ; CHECK-NEXT: .b8 62                                  // DW_AT_encoding
131 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
132 ; CHECK-NEXT: .b8 11                                  // DW_AT_byte_size
133 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
134 ; CHECK-NEXT: .b8 0                                   // EOM(1)
135 ; CHECK-NEXT: .b8 0                                   // EOM(2)
136 ; CHECK-NEXT: .b8 4                                   // Abbreviation Code
137 ; CHECK-NEXT: .b8 46                                  // DW_TAG_subprogram
138 ; CHECK-NEXT: .b8 1                                   // DW_CHILDREN_yes
139 ; CHECK-NEXT: .b8 17                                  // DW_AT_low_pc
140 ; CHECK-NEXT: .b8 1                                   // DW_FORM_addr
141 ; CHECK-NEXT: .b8 18                                  // DW_AT_high_pc
142 ; CHECK-NEXT: .b8 1                                   // DW_FORM_addr
143 ; CHECK-NEXT: .b8 64                                  // DW_AT_frame_base
144 ; CHECK-NEXT: .b8 10                                  // DW_FORM_block1
145 ; CHECK-NEXT: .b8 135                                 // DW_AT_MIPS_linkage_name
146 ; CHECK-NEXT: .b8 64
147 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
148 ; CHECK-NEXT: .b8 3                                   // DW_AT_name
149 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
150 ; CHECK-NEXT: .b8 58                                  // DW_AT_decl_file
151 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
152 ; CHECK-NEXT: .b8 59                                  // DW_AT_decl_line
153 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
154 ; CHECK-NEXT: .b8 63                                  // DW_AT_external
155 ; CHECK-NEXT: .b8 12                                  // DW_FORM_flag
156 ; CHECK-NEXT: .b8 0                                   // EOM(1)
157 ; CHECK-NEXT: .b8 0                                   // EOM(2)
158 ; CHECK-NEXT: .b8 5                                   // Abbreviation Code
159 ; CHECK-NEXT: .b8 5                                   // DW_TAG_formal_parameter
160 ; CHECK-NEXT: .b8 0                                   // DW_CHILDREN_no
161 ; CHECK-NEXT: .b8 3                                   // DW_AT_name
162 ; CHECK-NEXT: .b8 8                                   // DW_FORM_string
163 ; CHECK-NEXT: .b8 58                                  // DW_AT_decl_file
164 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
165 ; CHECK-NEXT: .b8 59                                  // DW_AT_decl_line
166 ; CHECK-NEXT: .b8 11                                  // DW_FORM_data1
167 ; CHECK-NEXT: .b8 73                                  // DW_AT_type
168 ; CHECK-NEXT: .b8 19                                  // DW_FORM_ref4
169 ; CHECK-NEXT: .b8 0                                   // EOM(1)
170 ; CHECK-NEXT: .b8 0                                   // EOM(2)
171 ; CHECK-NEXT: .b8 0                                   // EOM(3)
172 ; CHECK-NEXT: }
173 ; CHECK-NEXT: .section .debug_info
174 ; CHECK-NEXT: {
175 ; CHECK-NEXT: .b32 217                                // Length of Unit
176 ; CHECK-NEXT: .b8 2                                   // DWARF version number
177 ; CHECK-NEXT: .b8 0
178 ; CHECK-NEXT: .b32 .debug_abbrev                      // Offset Into Abbrev. Section
179 ; CHECK-NEXT: .b8 8                                   // Address Size (in bytes)
180 ; CHECK-NEXT: .b8 1                                   // Abbrev [1] 0xb:0xd2 DW_TAG_compile_unit
181 ; CHECK-NEXT: .b8 99                                  // DW_AT_producer
182 ; CHECK-NEXT: .b8 108
183 ; CHECK-NEXT: .b8 97
184 ; CHECK-NEXT: .b8 110
185 ; CHECK-NEXT: .b8 103
186 ; CHECK-NEXT: .b8 32
187 ; CHECK-NEXT: .b8 118
188 ; CHECK-NEXT: .b8 101
189 ; CHECK-NEXT: .b8 114
190 ; CHECK-NEXT: .b8 115
191 ; CHECK-NEXT: .b8 105
192 ; CHECK-NEXT: .b8 111
193 ; CHECK-NEXT: .b8 110
194 ; CHECK-NEXT: .b8 32
195 ; CHECK-NEXT: .b8 57
196 ; CHECK-NEXT: .b8 46
197 ; CHECK-NEXT: .b8 48
198 ; CHECK-NEXT: .b8 46
199 ; CHECK-NEXT: .b8 48
200 ; CHECK-NEXT: .b8 32
201 ; CHECK-NEXT: .b8 40
202 ; CHECK-NEXT: .b8 116
203 ; CHECK-NEXT: .b8 114
204 ; CHECK-NEXT: .b8 117
205 ; CHECK-NEXT: .b8 110
206 ; CHECK-NEXT: .b8 107
207 ; CHECK-NEXT: .b8 32
208 ; CHECK-NEXT: .b8 51
209 ; CHECK-NEXT: .b8 53
210 ; CHECK-NEXT: .b8 49
211 ; CHECK-NEXT: .b8 57
212 ; CHECK-NEXT: .b8 54
213 ; CHECK-NEXT: .b8 57
214 ; CHECK-NEXT: .b8 41
215 ; CHECK-NEXT: .b8 32
216 ; CHECK-NEXT: .b8 40
217 ; CHECK-NEXT: .b8 108
218 ; CHECK-NEXT: .b8 108
219 ; CHECK-NEXT: .b8 118
220 ; CHECK-NEXT: .b8 109
221 ; CHECK-NEXT: .b8 47
222 ; CHECK-NEXT: .b8 116
223 ; CHECK-NEXT: .b8 114
224 ; CHECK-NEXT: .b8 117
225 ; CHECK-NEXT: .b8 110
226 ; CHECK-NEXT: .b8 107
227 ; CHECK-NEXT: .b8 32
228 ; CHECK-NEXT: .b8 51
229 ; CHECK-NEXT: .b8 53
230 ; CHECK-NEXT: .b8 49
231 ; CHECK-NEXT: .b8 57
232 ; CHECK-NEXT: .b8 55
233 ; CHECK-NEXT: .b8 51
234 ; CHECK-NEXT: .b8 41
235 ; CHECK-NEXT: .b8 0
236 ; CHECK-NEXT: .b8 4                                   // DW_AT_language
237 ; CHECK-NEXT: .b8 0
238 ; CHECK-NEXT: .b8 110                                 // DW_AT_name
239 ; CHECK-NEXT: .b8 101
240 ; CHECK-NEXT: .b8 119
241 ; CHECK-NEXT: .b8 46
242 ; CHECK-NEXT: .b8 99
243 ; CHECK-NEXT: .b8 99
244 ; CHECK-NEXT: .b8 0
245 ; CHECK-NEXT: .b32 .debug_line                        // DW_AT_stmt_list
246 ; CHECK-NEXT: .b8 47                                  // DW_AT_comp_dir
247 ; CHECK-NEXT: .b8 116
248 ; CHECK-NEXT: .b8 109
249 ; CHECK-NEXT: .b8 112
250 ; CHECK-NEXT: .b8 0
251 ; CHECK-NEXT: .b64 Lfunc_begin0                       // DW_AT_low_pc
252 ; CHECK-NEXT: .b64 Lfunc_end0                         // DW_AT_high_pc
253 ; CHECK-NEXT: .b8 2                                   // Abbrev [2] 0x65:0x1a DW_TAG_variable
254 ; CHECK-NEXT: .b8 71                                  // DW_AT_name
255 ; CHECK-NEXT: .b8 76
256 ; CHECK-NEXT: .b8 79
257 ; CHECK-NEXT: .b8 66
258 ; CHECK-NEXT: .b8 65
259 ; CHECK-NEXT: .b8 76
260 ; CHECK-NEXT: .b8 0
261 ; CHECK-NEXT: .b32 127                                // DW_AT_type
262 ; CHECK-NEXT: .b8 1                                   // DW_AT_external
263 ; CHECK-NEXT: .b8 1                                   // DW_AT_decl_file
264 ; CHECK-NEXT: .b8 3                                   // DW_AT_decl_line
265 ; CHECK-NEXT: .b8 5                                   // DW_AT_address_class
266 ; CHECK-NEXT: .b8 9                                   // DW_AT_location
267 ; CHECK-NEXT: .b8 3
268 ; CHECK-NEXT: .b64 GLOBAL
269 ; CHECK-NEXT: .b8 3                                   // Abbrev [3] 0x7f:0x7 DW_TAG_base_type
270 ; CHECK-NEXT: .b8 105                                 // DW_AT_name
271 ; CHECK-NEXT: .b8 110
272 ; CHECK-NEXT: .b8 116
273 ; CHECK-NEXT: .b8 0
274 ; CHECK-NEXT: .b8 5                                   // DW_AT_encoding
275 ; CHECK-NEXT: .b8 4                                   // DW_AT_byte_size
276 ; CHECK-NEXT: .b8 2                                   // Abbrev [2] 0x86:0x1a DW_TAG_variable
277 ; CHECK-NEXT: .b8 83                                  // DW_AT_name
278 ; CHECK-NEXT: .b8 72
279 ; CHECK-NEXT: .b8 65
280 ; CHECK-NEXT: .b8 82
281 ; CHECK-NEXT: .b8 69
282 ; CHECK-NEXT: .b8 68
283 ; CHECK-NEXT: .b8 0
284 ; CHECK-NEXT: .b32 127                                // DW_AT_type
285 ; CHECK-NEXT: .b8 1                                   // DW_AT_external
286 ; CHECK-NEXT: .b8 1                                   // DW_AT_decl_file
287 ; CHECK-NEXT: .b8 4                                   // DW_AT_decl_line
288 ; CHECK-NEXT: .b8 8                                   // DW_AT_address_class
289 ; CHECK-NEXT: .b8 9                                   // DW_AT_location
290 ; CHECK-NEXT: .b8 3
291 ; CHECK-NEXT: .b64 SHARED
292 ; CHECK-NEXT: .b8 4                                   // Abbrev [4] 0xa0:0x33 DW_TAG_subprogram
293 ; CHECK-NEXT: .b64 Lfunc_begin0                       // DW_AT_low_pc
294 ; CHECK-NEXT: .b64 Lfunc_end0                         // DW_AT_high_pc
295 ; CHECK-NEXT: .b8 1                                   // DW_AT_frame_base
296 ; CHECK-NEXT: .b8 156
297 ; CHECK-NEXT: .b8 116                                 // DW_AT_MIPS_linkage_name
298 ; CHECK-NEXT: .b8 101
299 ; CHECK-NEXT: .b8 115
300 ; CHECK-NEXT: .b8 116
301 ; CHECK-NEXT: .b8 0
302 ; CHECK-NEXT: .b8 116                                 // DW_AT_name
303 ; CHECK-NEXT: .b8 101
304 ; CHECK-NEXT: .b8 115
305 ; CHECK-NEXT: .b8 116
306 ; CHECK-NEXT: .b8 0
307 ; CHECK-NEXT: .b8 1                                   // DW_AT_decl_file
308 ; CHECK-NEXT: .b8 6                                   // DW_AT_decl_line
309 ; CHECK-NEXT: .b8 1                                   // DW_AT_external
310 ; CHECK-NEXT: .b8 5                                   // Abbrev [5] 0xc0:0x9 DW_TAG_formal_parameter
311 ; CHECK-NEXT: .b8 97                                  // DW_AT_name
312 ; CHECK-NEXT: .b8 0
313 ; CHECK-NEXT: .b8 1                                   // DW_AT_decl_file
314 ; CHECK-NEXT: .b8 6                                   // DW_AT_decl_line
315 ; CHECK-NEXT: .b32 211                                // DW_AT_type
316 ; CHECK-NEXT: .b8 5                                   // Abbrev [5] 0xc9:0x9 DW_TAG_formal_parameter
317 ; CHECK-NEXT: .b8 105                                 // DW_AT_name
318 ; CHECK-NEXT: .b8 0
319 ; CHECK-NEXT: .b8 1                                   // DW_AT_decl_file
320 ; CHECK-NEXT: .b8 6                                   // DW_AT_decl_line
321 ; CHECK-NEXT: .b32 127                                // DW_AT_type
322 ; CHECK-NEXT: .b8 0                                   // End Of Children Mark
323 ; CHECK-NEXT: .b8 3                                   // Abbrev [3] 0xd3:0x9 DW_TAG_base_type
324 ; CHECK-NEXT: .b8 102                                 // DW_AT_name
325 ; CHECK-NEXT: .b8 108
326 ; CHECK-NEXT: .b8 111
327 ; CHECK-NEXT: .b8 97
328 ; CHECK-NEXT: .b8 116
329 ; CHECK-NEXT: .b8 0
330 ; CHECK-NEXT: .b8 4                                   // DW_AT_encoding
331 ; CHECK-NEXT: .b8 4                                   // DW_AT_byte_size
332 ; CHECK-NEXT: .b8 0                                   // End Of Children Mark
333 ; CHECK-NEXT: }
334 ; CHECK-NEXT: .section .debug_macinfo
335 ; CHECK-NEXT: {
336 ; CHECK-NEXT: .b8 0                                   // End Of Macro List Mark
337 ; CHECK:      }