1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=amdgcn -mcpu=bonaire -stop-after=amdgpu-remove-incompatible-functions\
3 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX7,IR %s
4 ; RUN: FileCheck --check-prefix=WARN-GFX7 %s < %t
5 ; RUN: llc -march=amdgcn -mcpu=bonaire -verify-machineinstrs < %s
7 ; RUN: llc -march=amdgcn -mcpu=fiji -stop-after=amdgpu-remove-incompatible-functions\
8 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX8,IR %s
9 ; RUN: FileCheck --check-prefix=WARN-GFX8 %s < %t
10 ; RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs < %s
12 ; RUN: llc -march=amdgcn -mcpu=gfx906 -stop-after=amdgpu-remove-incompatible-functions\
13 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX9,GFX906,IR %s
14 ; RUN: FileCheck --check-prefix=WARN-GFX906 %s < %t
15 ; RUN: llc -march=amdgcn -mcpu=gfx906 -verify-machineinstrs < %s
17 ; RUN: llc -march=amdgcn -mcpu=gfx90a -stop-after=amdgpu-remove-incompatible-functions\
18 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX9,GFX90A,IR %s
19 ; RUN: FileCheck --check-prefix=WARN-GFX90A %s < %t
20 ; RUN: llc -march=amdgcn -mcpu=gfx90a -verify-machineinstrs < %s
22 ; RUN: llc -march=amdgcn -mcpu=gfx1011 -stop-after=amdgpu-remove-incompatible-functions\
23 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX10,IR %s
24 ; RUN: FileCheck --check-prefix=WARN-GFX10 %s < %t
25 ; RUN: llc -march=amdgcn -mcpu=gfx1011 -verify-machineinstrs < %s
27 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -stop-after=amdgpu-remove-incompatible-functions\
28 ; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX11,IR %s
29 ; RUN: FileCheck --check-prefix=WARN-GFX11 %s < %t
30 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s
32 ; Note: This test checks the IR, but also has a run line to codegen the file just to check we
33 ; do not crash when trying to select those functions.
35 ; WARN-GFX7: removing function 'needs_dpp': +dpp is not supported on the current target
36 ; WARN-GFX7: removing function 'needs_16bit_insts': +16-bit-insts is not supported on the current target
37 ; WARN-GFX7: removing function 'needs_gfx8_insts': +gfx8-insts is not supported on the current target
38 ; WARN-GFX7: removing function 'needs_gfx9_insts': +gfx9-insts is not supported on the current target
39 ; WARN-GFX7: removing function 'needs_gfx10_insts': +gfx10-insts is not supported on the current target
40 ; WARN-GFX7: removing function 'needs_gfx11_insts': +gfx11-insts is not supported on the current target
41 ; WARN-GFX7: removing function 'needs_dot1_insts': +dot1-insts is not supported on the current target
42 ; WARN-GFX7: removing function 'needs_dot2_insts': +dot2-insts is not supported on the current target
43 ; WARN-GFX7: removing function 'needs_dot3_insts': +dot3-insts is not supported on the current target
44 ; WARN-GFX7: removing function 'needs_dot4_insts': +dot4-insts is not supported on the current target
45 ; WARN-GFX7: removing function 'needs_dot5_insts': +dot5-insts is not supported on the current target
46 ; WARN-GFX7: removing function 'needs_dot6_insts': +dot6-insts is not supported on the current target
47 ; WARN-GFX7: removing function 'needs_dot7_insts': +dot7-insts is not supported on the current target
48 ; WARN-GFX7: removing function 'needs_dot8_insts': +dot8-insts is not supported on the current target
49 ; WARN-GFX7-NOT: not supported
51 ; WARN-GFX8: removing function 'needs_gfx9_insts': +gfx9-insts is not supported on the current target
52 ; WARN-GFX8: removing function 'needs_gfx10_insts': +gfx10-insts is not supported on the current target
53 ; WARN-GFX8: removing function 'needs_gfx11_insts': +gfx11-insts is not supported on the current target
54 ; WARN-GFX8: removing function 'needs_dot1_insts': +dot1-insts is not supported on the current target
55 ; WARN-GFX8: removing function 'needs_dot2_insts': +dot2-insts is not supported on the current target
56 ; WARN-GFX8: removing function 'needs_dot3_insts': +dot3-insts is not supported on the current target
57 ; WARN-GFX8: removing function 'needs_dot4_insts': +dot4-insts is not supported on the current target
58 ; WARN-GFX8: removing function 'needs_dot5_insts': +dot5-insts is not supported on the current target
59 ; WARN-GFX8: removing function 'needs_dot6_insts': +dot6-insts is not supported on the current target
60 ; WARN-GFX8: removing function 'needs_dot7_insts': +dot7-insts is not supported on the current target
61 ; WARN-GFX8: removing function 'needs_dot8_insts': +dot8-insts is not supported on the current target
62 ; WARN-GFX8-NOT: not supported
64 ; WARN-GFX906: removing function 'needs_gfx10_insts': +gfx10-insts is not supported on the current target
65 ; WARN-GFX906: removing function 'needs_gfx11_insts': +gfx11-insts is not supported on the current target
66 ; WARN-GFX906: removing function 'needs_dot3_insts': +dot3-insts is not supported on the current target
67 ; WARN-GFX906: removing function 'needs_dot4_insts': +dot4-insts is not supported on the current target
68 ; WARN-GFX906: removing function 'needs_dot5_insts': +dot5-insts is not supported on the current target
69 ; WARN-GFX906: removing function 'needs_dot6_insts': +dot6-insts is not supported on the current target
70 ; WARN-GFX906: removing function 'needs_dot8_insts': +dot8-insts is not supported on the current target
71 ; WARN-GFX906-NOT: not supported
73 ; WARN-GFX90A: removing function 'needs_gfx10_insts': +gfx10-insts is not supported on the current target
74 ; WARN-GFX90A: removing function 'needs_gfx11_insts': +gfx11-insts is not supported on the current target
75 ; WARN-GFX90A: removing function 'needs_dot8_insts': +dot8-insts is not supported on the current target
76 ; WARN-GFX90A-NOT: not supported
78 ; WARN-GFX10: removing function 'needs_gfx11_insts': +gfx11-insts is not supported on the current target
79 ; WARN-GFX10: removing function 'needs_dot3_insts': +dot3-insts is not supported on the current target
80 ; WARN-GFX10: removing function 'needs_dot4_insts': +dot4-insts is not supported on the current target
81 ; WARN-GFX10: removing function 'needs_dot8_insts': +dot8-insts is not supported on the current target
82 ; WARN-GFX10-NOT: not supported
84 ; WARN-GFX11: removing function 'needs_dot1_insts': +dot1-insts is not supported on the current target
85 ; WARN-GFX11: removing function 'needs_dot2_insts': +dot2-insts is not supported on the current target
86 ; WARN-GFX11: removing function 'needs_dot3_insts': +dot3-insts is not supported on the current target
87 ; WARN-GFX11: removing function 'needs_dot4_insts': +dot4-insts is not supported on the current target
88 ; WARN-GFX11: removing function 'needs_dot6_insts': +dot6-insts is not supported on the current target
89 ; WARN-GFX11-NOT: not supported
91 ; GFX7: @GVRefs {{.*}} zeroinitializer
92 ; GFX8: @GVRefs {{.*}} [ptr @needs_dpp, ptr @needs_16bit_insts, ptr @needs_gfx8_insts, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null, ptr null]
93 ; GFX906: @GVRefs {{.*}} [ptr @needs_dpp, ptr @needs_16bit_insts, ptr @needs_gfx8_insts, ptr @needs_gfx9_insts, ptr null, ptr null, ptr @needs_dot1_insts, ptr @needs_dot2_insts, ptr null, ptr null, ptr null, ptr null, ptr @needs_dot7_insts, ptr null]
94 ; GFX90A: @GVRefs {{.*}} [ptr @needs_dpp, ptr @needs_16bit_insts, ptr @needs_gfx8_insts, ptr @needs_gfx9_insts, ptr null, ptr null, ptr @needs_dot1_insts, ptr @needs_dot2_insts, ptr @needs_dot3_insts, ptr @needs_dot4_insts, ptr @needs_dot5_insts, ptr @needs_dot6_insts, ptr @needs_dot7_insts, ptr null]
95 ; GFX10: @GVRefs {{.*}} [ptr @needs_dpp, ptr @needs_16bit_insts, ptr @needs_gfx8_insts, ptr @needs_gfx9_insts, ptr @needs_gfx10_insts, ptr null, ptr @needs_dot1_insts, ptr @needs_dot2_insts, ptr null, ptr null, ptr @needs_dot5_insts, ptr @needs_dot6_insts, ptr @needs_dot7_insts, ptr null]
96 ; GFX11: @GVRefs {{.*}} [ptr @needs_dpp, ptr @needs_16bit_insts, ptr @needs_gfx8_insts, ptr @needs_gfx9_insts, ptr @needs_gfx10_insts, ptr @needs_gfx11_insts, ptr null, ptr null, ptr null, ptr null, ptr @needs_dot5_insts, ptr null, ptr @needs_dot7_insts, ptr @needs_dot8_insts]
97 @GVRefs = internal global [14 x ptr] [
99 ptr @needs_16bit_insts,
100 ptr @needs_gfx8_insts,
101 ptr @needs_gfx9_insts,
102 ptr @needs_gfx10_insts,
103 ptr @needs_gfx11_insts,
104 ptr @needs_dot1_insts,
105 ptr @needs_dot2_insts,
106 ptr @needs_dot3_insts,
107 ptr @needs_dot4_insts,
108 ptr @needs_dot5_insts,
109 ptr @needs_dot6_insts,
110 ptr @needs_dot7_insts,
111 ptr @needs_dot8_insts
114 ; GFX7: @ConstantExpr = internal global i64 0
115 @ConstantExpr = internal global i64 ptrtoint (ptr @needs_dpp to i64)
117 define void @needs_dpp(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #0 {
118 ; GFX7-NOT: define void @needs_dpp(
119 ; GFX8: define void @needs_dpp(
120 ; GFX9: define void @needs_dpp(
121 ; GFX10: define void @needs_dpp(
122 ; GFX11: define void @needs_dpp(
124 %cmp = icmp eq i64 %a, 0
125 br i1 %cmp, label %if, label %else
128 %ld = load i64, ptr %in
132 %add = add i64 %a, %b
136 %phi = phi i64 [%ld, %if], [%add, %else]
137 store i64 %phi, ptr %out
141 define void @needs_16bit_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #1 {
142 ; GFX7-NOT: define void @needs_16bit_insts(
143 ; GFX8: define void @needs_16bit_insts(
144 ; GFX9: define void @needs_16bit_insts(
145 ; GFX10: define void @needs_16bit_insts(
146 ; GFX11: define void @needs_16bit_insts(
148 %cmp = icmp eq i64 %a, 0
149 br i1 %cmp, label %if, label %else
152 %ld = load i64, ptr %in
156 %add = add i64 %a, %b
160 %phi = phi i64 [%ld, %if], [%add, %else]
161 store i64 %phi, ptr %out
165 define void @needs_gfx8_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #2 {
166 ; GFX7-NOT: define void @needs_gfx8_insts(
167 ; GFX8: define void @needs_gfx8_insts(
168 ; GFX9: define void @needs_gfx8_insts(
169 ; GFX10: define void @needs_gfx8_insts(
170 ; GFX11: define void @needs_gfx8_insts(
172 %cmp = icmp eq i64 %a, 0
173 br i1 %cmp, label %if, label %else
176 %ld = load i64, ptr %in
180 %add = add i64 %a, %b
184 %phi = phi i64 [%ld, %if], [%add, %else]
185 store i64 %phi, ptr %out
189 define void @needs_gfx9_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #3 {
190 ; GFX7-NOT: define void @needs_gfx9_insts(
191 ; GFX8-NOT: define void @needs_gfx9_insts(
192 ; GFX9: define void @needs_gfx9_insts(
193 ; GFX10: define void @needs_gfx9_insts(
194 ; GFX11: define void @needs_gfx9_insts(
196 %cmp = icmp eq i64 %a, 0
197 br i1 %cmp, label %if, label %else
200 %ld = load i64, ptr %in
204 %add = add i64 %a, %b
208 %phi = phi i64 [%ld, %if], [%add, %else]
209 store i64 %phi, ptr %out
213 define void @needs_gfx10_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #4 {
214 ; GFX7-NOT: define void @needs_gfx10_insts(
215 ; GFX8-NOT: define void @needs_gfx10_insts(
216 ; GFX9-NOT: define void @needs_gfx10_insts(
217 ; GFX10: define void @needs_gfx10_insts(
218 ; GFX11: define void @needs_gfx10_insts(
220 %cmp = icmp eq i64 %a, 0
221 br i1 %cmp, label %if, label %else
224 %ld = load i64, ptr %in
228 %add = add i64 %a, %b
232 %phi = phi i64 [%ld, %if], [%add, %else]
233 store i64 %phi, ptr %out
237 define void @needs_gfx11_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #5 {
238 ; GFX7-NOT: define void @needs_gfx11_insts(
239 ; GFX8-NOT: define void @needs_gfx11_insts(
240 ; GFX9-NOT: define void @needs_gfx11_insts(
241 ; GFX10-NOT: define void @needs_gfx11_insts(
242 ; GFX11: define void @needs_gfx11_insts(
244 %cmp = icmp eq i64 %a, 0
245 br i1 %cmp, label %if, label %else
248 %ld = load i64, ptr %in
252 %add = add i64 %a, %b
256 %phi = phi i64 [%ld, %if], [%add, %else]
257 store i64 %phi, ptr %out
261 define void @needs_dot1_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #6 {
262 ; GFX7-NOT: define void @needs_dot1_insts(
263 ; GFX8-NOT: define void @needs_dot1_insts(
264 ; GFX9: define void @needs_dot1_insts(
265 ; GFX10: define void @needs_dot1_insts(
266 ; GFX11-NOT: define void @needs_dot1_insts(
267 %add = add i64 %a, %b
268 store i64 %add, ptr %out
272 define void @needs_dot2_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #7 {
273 ; GFX7-NOT: define void @needs_dot2_insts(
274 ; GFX8-NOT: define void @needs_dot2_insts(
275 ; GFX9: define void @needs_dot2_insts(
276 ; GFX10: define void @needs_dot2_insts(
277 ; GFX11-NOT: define void @needs_dot2_insts(
278 %add = add i64 %a, %b
279 store i64 %add, ptr %out
283 define void @needs_dot3_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #8 {
284 ; GFX7-NOT: define void @needs_dot3_insts(
285 ; GFX8-NOT: define void @needs_dot3_insts(
286 ; GFX906-NOT: define void @needs_dot3_insts(
287 ; GFX90A: define void @needs_dot3_insts(
288 ; GFX10-NOT: define void @needs_dot3_insts(
289 ; GFX11-NOT: define void @needs_dot3_insts(
290 %add = add i64 %a, %b
291 store i64 %add, ptr %out
296 define void @needs_dot4_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #9 {
297 ; GFX7-NOT: define void @needs_dot4_insts(
298 ; GFX8-NOT: define void @needs_dot4_insts(
299 ; GFX906-NOT: define void @needs_dot4_insts(
300 ; GFX90A: define void @needs_dot4_insts(
301 ; GFX10-NOT: define void @needs_dot4_insts(
302 ; GFX11-NOT: define void @needs_dot4_insts(
303 %add = add i64 %a, %b
304 store i64 %add, ptr %out
308 define void @needs_dot5_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #10 {
309 ; GFX7-NOT: define void @needs_dot5_insts(
310 ; GFX8-NOT: define void @needs_dot5_insts(
311 ; GFX906-NOT: define void @needs_dot5_insts(
312 ; GFX90A: define void @needs_dot5_insts(
313 ; GFX10: define void @needs_dot5_insts(
314 ; GFX11: define void @needs_dot5_insts(
315 %add = add i64 %a, %b
316 store i64 %add, ptr %out
320 define void @needs_dot6_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #11 {
321 ; GFX7-NOT: define void @needs_dot6_insts(
322 ; GFX8-NOT: define void @needs_dot6_insts(
323 ; GFX906-NOT: define void @needs_dot6_insts(
324 ; GFX90A: define void @needs_dot6_insts(
325 ; GFX10: define void @needs_dot6_insts(
326 ; GFX11-NOT: define void @needs_dot6_insts(
327 %add = add i64 %a, %b
328 store i64 %add, ptr %out
332 define void @needs_dot7_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #12 {
333 ; GFX7-NOT: define void @needs_dot7_insts(
334 ; GFX8-NOT: define void @needs_dot7_insts(
335 ; GFX9: define void @needs_dot7_insts(
336 ; GFX10: define void @needs_dot7_insts(
337 ; GFX11: define void @needs_dot7_insts(
338 %add = add i64 %a, %b
339 store i64 %add, ptr %out
343 define void @needs_dot8_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) #13 {
344 ; GFX7-NOT: define void @needs_dot8_insts(
345 ; GFX8-NOT: define void @needs_dot8_insts(
346 ; GFX9-NOT: define void @needs_dot8_insts(
347 ; GFX10-NOT: define void @needs_dot8_insts(
348 ; GFX11: define void @needs_dot8_insts(
349 %add = add i64 %a, %b
350 store i64 %add, ptr %out
354 ; IR: define void @caller(
355 define void @caller(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c) {
356 ; GFX7: call void null(
357 ; GFX8: call void @needs_dpp(
358 ; GFX9: call void @needs_dpp(
359 ; GFX10: call void @needs_dpp(
360 ; GFX11: call void @needs_dpp(
361 call void @needs_dpp(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
362 ; GFX7: call void null(
363 ; GFX8: call void @needs_16bit_insts(
364 ; GFX9: call void @needs_16bit_insts(
365 ; GFX10: call void @needs_16bit_insts(
366 ; GFX11: call void @needs_16bit_insts(
367 call void @needs_16bit_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
368 ; GFX7: call void null(
369 ; GFX8: call void @needs_gfx8_insts(
370 ; GFX9: call void @needs_gfx8_insts(
371 ; GFX10: call void @needs_gfx8_insts(
372 ; GFX11: call void @needs_gfx8_insts(
373 call void @needs_gfx8_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
374 ; GFX7: call void null(
375 ; GFX8: call void null(
376 ; GFX9: call void @needs_gfx9_insts(
377 ; GFX10: call void @needs_gfx9_insts(
378 ; GFX111: call void @needs_gfx9_insts(c
379 call void @needs_gfx9_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
380 ; GFX7: call void null(
381 ; GFX8: call void null(
382 ; GFX9: call void null(
383 ; GFX10: call void @needs_gfx10_insts(
384 ; GFX111: call void @needs_gfx10_insts(
385 call void @needs_gfx10_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
386 ; GFX7: call void null(
387 ; GFX8: call void null(
388 ; GFX9: call void null(
389 ; GFX10: call void null(
390 ; GFX11: call void @needs_gfx11_insts(
391 call void @needs_gfx11_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
392 ; GFX7: call void null(
393 ; GFX8: call void null(
394 ; GFX9: call void @needs_dot1_insts(
395 ; GFX10: call void @needs_dot1_insts(
396 ; GFX11: call void null(
397 call void @needs_dot1_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
398 ; GFX7: call void null(
399 ; GFX8: call void null(
400 ; GFX9: call void @needs_dot2_insts(
401 ; GFX10: call void @needs_dot2_insts(
402 ; GFX11: call void null(
403 call void @needs_dot2_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
404 ; GFX7: call void null(
405 ; GFX8: call void null(
406 ; GFX906: call void null(
407 ; GFX90A: call void @needs_dot3_insts(
408 ; GFX10: call void null(
409 ; GFX11: call void null(
410 call void @needs_dot3_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
411 ; GFX7: call void null(
412 ; GFX8: call void null(
413 ; GFX906: call void null(
414 ; GFX90A: call void @needs_dot4_insts(
415 ; GFX10: call void null(
416 ; GFX11: call void null(
417 call void @needs_dot4_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
418 ; GFX7: call void null(
419 ; GFX8: call void null(
420 ; GFX906: call void null(
421 ; GFX90A: call void @needs_dot5_insts(
422 ; GFX10: call void @needs_dot5_insts(
423 ; GFX11: call void @needs_dot5_insts(
424 call void @needs_dot5_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
425 ; GFX7: call void null(
426 ; GFX8: call void null(
427 ; GFX906: call void null(
428 ; GFX90A: call void @needs_dot6_insts(
429 ; GFX10: call void @needs_dot6_insts(
430 ; GFX11: call void null(
431 call void @needs_dot6_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
432 ; GFX7: call void null(
433 ; GFX8: call void null(
434 ; GFX9: call void @needs_dot7_insts(
435 ; GFX10: call void @needs_dot7_insts(
436 ; GFX11: call void @needs_dot7_insts(
437 call void @needs_dot7_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
438 ; GFX7: call void null(
439 ; GFX8: call void null(
440 ; GFX9: call void null(
441 ; GFX10: call void null(
442 ; GFX11: call void @needs_dot8_insts(
443 call void @needs_dot8_insts(ptr %out, ptr %in, i64 %a, i64 %b, i64 %c)
448 attributes #0 = { "target-features"="+dpp" }
449 attributes #1 = { "target-features"="+16-bit-insts" }
450 attributes #2 = { "target-features"="+gfx8-insts" }
451 attributes #3 = { "target-features"="+gfx9-insts" }
452 attributes #4 = { "target-features"="+gfx10-insts" }
453 attributes #5 = { "target-features"="+gfx11-insts" }
454 attributes #6 = { "target-features"="+dot1-insts" }
455 attributes #7 = { "target-features"="+dot2-insts" }
456 attributes #8 = { "target-features"="+dot3-insts" }
457 attributes #9 = { "target-features"="+dot4-insts" }
458 attributes #10 = { "target-features"="+dot5-insts" }
459 attributes #11 = { "target-features"="+dot6-insts" }
460 attributes #12 = { "target-features"="+dot7-insts" }
461 attributes #13 = { "target-features"="+dot8-insts" }