• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llc -verify-machineinstrs -march=amdgcn -run-pass si-shrink-instructions -o - %s | FileCheck -check-prefix=GCN %s
2# Check that add with carry out isn't incorrectly reduced to e32 when
3# the carry out is a virtual register.
4
5# TODO: We should run this test until the end of codegen to make sure
6# that the post-RA run does manage to shrink it, but right now the
7# resume crashes
8
9...
10# GCN-LABEL: name: shrink_add_vop3{{$}}
11# GCN: %29:vgpr_32, %9:sreg_64_xexec = V_ADD_I32_e64 %19, %17, implicit $exec
12# GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
13name:            shrink_add_vop3
14alignment:       0
15exposesReturnsTwice: false
16legalized:       false
17regBankSelected: false
18selected:        false
19tracksRegLiveness: true
20registers:
21  - { id: 0, class: sgpr_64 }
22  - { id: 1, class: sreg_32_xm0 }
23  - { id: 2, class: sgpr_32 }
24  - { id: 3, class: vgpr_32 }
25  - { id: 4, class: sreg_64_xexec }
26  - { id: 5, class: sreg_64_xexec }
27  - { id: 6, class: sreg_32 }
28  - { id: 7, class: sreg_32 }
29  - { id: 8, class: sreg_32_xm0 }
30  - { id: 9, class: sreg_64_xexec }
31  - { id: 10, class: sreg_32_xm0 }
32  - { id: 11, class: sreg_32_xm0 }
33  - { id: 12, class: sgpr_64 }
34  - { id: 13, class: sgpr_128 }
35  - { id: 14, class: sreg_32_xm0 }
36  - { id: 15, class: sreg_64 }
37  - { id: 16, class: sgpr_128 }
38  - { id: 17, class: vgpr_32 }
39  - { id: 18, class: vreg_64 }
40  - { id: 19, class: vgpr_32 }
41  - { id: 20, class: vreg_64 }
42  - { id: 21, class: sreg_32_xm0 }
43  - { id: 22, class: sreg_32 }
44  - { id: 23, class: sreg_32 }
45  - { id: 24, class: vgpr_32 }
46  - { id: 25, class: vreg_64 }
47  - { id: 26, class: vgpr_32 }
48  - { id: 27, class: vreg_64 }
49  - { id: 28, class: vreg_64 }
50  - { id: 29, class: vgpr_32 }
51liveins:
52  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
53  - { reg: '$vgpr0', virtual-reg: '%3' }
54frameInfo:
55  isFrameAddressTaken: false
56  isReturnAddressTaken: false
57  hasStackMap:     false
58  hasPatchPoint:   false
59  stackSize:       0
60  offsetAdjustment: 0
61  maxAlignment:    0
62  adjustsStack:    false
63  hasCalls:        false
64  maxCallFrameSize: 0
65  hasOpaqueSPAdjustment: false
66  hasVAStart:      false
67  hasMustTailInVarArgFunc: false
68body:             |
69  bb.0:
70    liveins: $sgpr0_sgpr1, $vgpr0
71
72    %3 = COPY $vgpr0
73    %0 = COPY $sgpr0_sgpr1
74    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
75    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
76    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
77    %27 = REG_SEQUENCE %3, 1, %26, 2
78    %10 = S_MOV_B32 61440
79    %11 = S_MOV_B32 0
80    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
81    %13 = REG_SEQUENCE killed %5, 17, %12, 18
82    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
83    %16 = REG_SEQUENCE killed %4, 17, %12, 18
84    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
85    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
86    %29, %9 = V_ADD_I32_e64 %19, %17, implicit $exec
87    %24 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
88    BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
89    S_ENDPGM
90
91...
92---
93# GCN-LABEL: name: shrink_sub_vop3{{$}}
94# GCN: %29:vgpr_32, %9:sreg_64_xexec = V_SUB_I32_e64 %19, %17, implicit $exec
95# GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
96
97name:            shrink_sub_vop3
98alignment:       0
99exposesReturnsTwice: false
100legalized:       false
101regBankSelected: false
102selected:        false
103tracksRegLiveness: true
104registers:
105  - { id: 0, class: sgpr_64 }
106  - { id: 1, class: sreg_32_xm0 }
107  - { id: 2, class: sgpr_32 }
108  - { id: 3, class: vgpr_32 }
109  - { id: 4, class: sreg_64_xexec }
110  - { id: 5, class: sreg_64_xexec }
111  - { id: 6, class: sreg_32 }
112  - { id: 7, class: sreg_32 }
113  - { id: 8, class: sreg_32_xm0 }
114  - { id: 9, class: sreg_64_xexec }
115  - { id: 10, class: sreg_32_xm0 }
116  - { id: 11, class: sreg_32_xm0 }
117  - { id: 12, class: sgpr_64 }
118  - { id: 13, class: sgpr_128 }
119  - { id: 14, class: sreg_32_xm0 }
120  - { id: 15, class: sreg_64 }
121  - { id: 16, class: sgpr_128 }
122  - { id: 17, class: vgpr_32 }
123  - { id: 18, class: vreg_64 }
124  - { id: 19, class: vgpr_32 }
125  - { id: 20, class: vreg_64 }
126  - { id: 21, class: sreg_32_xm0 }
127  - { id: 22, class: sreg_32 }
128  - { id: 23, class: sreg_32 }
129  - { id: 24, class: vgpr_32 }
130  - { id: 25, class: vreg_64 }
131  - { id: 26, class: vgpr_32 }
132  - { id: 27, class: vreg_64 }
133  - { id: 28, class: vreg_64 }
134  - { id: 29, class: vgpr_32 }
135liveins:
136  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
137  - { reg: '$vgpr0', virtual-reg: '%3' }
138frameInfo:
139  isFrameAddressTaken: false
140  isReturnAddressTaken: false
141  hasStackMap:     false
142  hasPatchPoint:   false
143  stackSize:       0
144  offsetAdjustment: 0
145  maxAlignment:    0
146  adjustsStack:    false
147  hasCalls:        false
148  maxCallFrameSize: 0
149  hasOpaqueSPAdjustment: false
150  hasVAStart:      false
151  hasMustTailInVarArgFunc: false
152body:             |
153  bb.0:
154    liveins: $sgpr0_sgpr1, $vgpr0
155
156    %3 = COPY $vgpr0
157    %0 = COPY $sgpr0_sgpr1
158    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
159    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
160    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
161    %27 = REG_SEQUENCE %3, 1, %26, 2
162    %10 = S_MOV_B32 61440
163    %11 = S_MOV_B32 0
164    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
165    %13 = REG_SEQUENCE killed %5, 17, %12, 18
166    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
167    %16 = REG_SEQUENCE killed %4, 17, %12, 18
168    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
169    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
170    %29, %9 = V_SUB_I32_e64 %19, %17, implicit $exec
171    %24 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
172    BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
173    S_ENDPGM
174
175...
176---
177# GCN-LABEL: name: shrink_subrev_vop3{{$}}
178# GCN: %29:vgpr_32, %9:sreg_64_xexec = V_SUBREV_I32_e64 %19, %17, implicit $exec
179# GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
180
181name:            shrink_subrev_vop3
182alignment:       0
183exposesReturnsTwice: false
184legalized:       false
185regBankSelected: false
186selected:        false
187tracksRegLiveness: true
188registers:
189  - { id: 0, class: sgpr_64 }
190  - { id: 1, class: sreg_32_xm0 }
191  - { id: 2, class: sgpr_32 }
192  - { id: 3, class: vgpr_32 }
193  - { id: 4, class: sreg_64_xexec }
194  - { id: 5, class: sreg_64_xexec }
195  - { id: 6, class: sreg_32 }
196  - { id: 7, class: sreg_32 }
197  - { id: 8, class: sreg_32_xm0 }
198  - { id: 9, class: sreg_64_xexec }
199  - { id: 10, class: sreg_32_xm0 }
200  - { id: 11, class: sreg_32_xm0 }
201  - { id: 12, class: sgpr_64 }
202  - { id: 13, class: sgpr_128 }
203  - { id: 14, class: sreg_32_xm0 }
204  - { id: 15, class: sreg_64 }
205  - { id: 16, class: sgpr_128 }
206  - { id: 17, class: vgpr_32 }
207  - { id: 18, class: vreg_64 }
208  - { id: 19, class: vgpr_32 }
209  - { id: 20, class: vreg_64 }
210  - { id: 21, class: sreg_32_xm0 }
211  - { id: 22, class: sreg_32 }
212  - { id: 23, class: sreg_32 }
213  - { id: 24, class: vgpr_32 }
214  - { id: 25, class: vreg_64 }
215  - { id: 26, class: vgpr_32 }
216  - { id: 27, class: vreg_64 }
217  - { id: 28, class: vreg_64 }
218  - { id: 29, class: vgpr_32 }
219liveins:
220  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
221  - { reg: '$vgpr0', virtual-reg: '%3' }
222frameInfo:
223  isFrameAddressTaken: false
224  isReturnAddressTaken: false
225  hasStackMap:     false
226  hasPatchPoint:   false
227  stackSize:       0
228  offsetAdjustment: 0
229  maxAlignment:    0
230  adjustsStack:    false
231  hasCalls:        false
232  maxCallFrameSize: 0
233  hasOpaqueSPAdjustment: false
234  hasVAStart:      false
235  hasMustTailInVarArgFunc: false
236body:             |
237  bb.0:
238    liveins: $sgpr0_sgpr1, $vgpr0
239
240    %3 = COPY $vgpr0
241    %0 = COPY $sgpr0_sgpr1
242    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
243    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
244    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
245    %27 = REG_SEQUENCE %3, 1, %26, 2
246    %10 = S_MOV_B32 61440
247    %11 = S_MOV_B32 0
248    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
249    %13 = REG_SEQUENCE killed %5, 17, %12, 18
250    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
251    %16 = REG_SEQUENCE killed %4, 17, %12, 18
252    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
253    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
254    %29, %9 = V_SUBREV_I32_e64 %19, %17, implicit $exec
255    %24 = V_CNDMASK_B32_e64 0, 1, killed %9, implicit $exec
256    BUFFER_STORE_DWORD_ADDR64 %29, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
257    S_ENDPGM
258
259...
260---
261# GCN-LABEL: name: check_addc_src2_vop3{{$}}
262# GCN: %29:vgpr_32, $vcc = V_ADDC_U32_e64 %19, %17, %9, implicit $exec
263# GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
264name: check_addc_src2_vop3
265alignment:       0
266exposesReturnsTwice: false
267legalized:       false
268regBankSelected: false
269selected:        false
270tracksRegLiveness: true
271registers:
272  - { id: 0, class: sgpr_64 }
273  - { id: 1, class: sreg_32_xm0 }
274  - { id: 2, class: sgpr_32 }
275  - { id: 3, class: vgpr_32 }
276  - { id: 4, class: sreg_64_xexec }
277  - { id: 5, class: sreg_64_xexec }
278  - { id: 6, class: sreg_32 }
279  - { id: 7, class: sreg_32 }
280  - { id: 8, class: sreg_32_xm0 }
281  - { id: 9, class: sreg_64_xexec }
282  - { id: 10, class: sreg_32_xm0 }
283  - { id: 11, class: sreg_32_xm0 }
284  - { id: 12, class: sgpr_64 }
285  - { id: 13, class: sgpr_128 }
286  - { id: 14, class: sreg_32_xm0 }
287  - { id: 15, class: sreg_64 }
288  - { id: 16, class: sgpr_128 }
289  - { id: 17, class: vgpr_32 }
290  - { id: 18, class: vreg_64 }
291  - { id: 19, class: vgpr_32 }
292  - { id: 20, class: vreg_64 }
293  - { id: 21, class: sreg_32_xm0 }
294  - { id: 22, class: sreg_32 }
295  - { id: 23, class: sreg_32 }
296  - { id: 24, class: vgpr_32 }
297  - { id: 25, class: vreg_64 }
298  - { id: 26, class: vgpr_32 }
299  - { id: 27, class: vreg_64 }
300  - { id: 28, class: vreg_64 }
301  - { id: 29, class: vgpr_32 }
302liveins:
303  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
304  - { reg: '$vgpr0', virtual-reg: '%3' }
305frameInfo:
306  isFrameAddressTaken: false
307  isReturnAddressTaken: false
308  hasStackMap:     false
309  hasPatchPoint:   false
310  stackSize:       0
311  offsetAdjustment: 0
312  maxAlignment:    0
313  adjustsStack:    false
314  hasCalls:        false
315  maxCallFrameSize: 0
316  hasOpaqueSPAdjustment: false
317  hasVAStart:      false
318  hasMustTailInVarArgFunc: false
319body:             |
320  bb.0:
321    liveins: $sgpr0_sgpr1, $vgpr0
322
323    %3 = COPY $vgpr0
324    %0 = COPY $sgpr0_sgpr1
325    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
326    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
327    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
328    %27 = REG_SEQUENCE %3, 1, %26, 2
329    %10 = S_MOV_B32 61440
330    %11 = S_MOV_B32 0
331    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
332    %13 = REG_SEQUENCE killed %5, 17, %12, 18
333    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
334    %16 = REG_SEQUENCE killed %4, 17, %12, 18
335    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
336    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
337    %9 = S_MOV_B64 0
338    %29, $vcc = V_ADDC_U32_e64 %19, %17, %9, implicit $exec
339    %24 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
340    BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
341    S_ENDPGM
342
343...
344---
345# GCN-LABEL: name: shrink_addc_vop3{{$}}
346# GCN: %29:vgpr_32 = V_ADDC_U32_e32 %19, %17, implicit-def $vcc, implicit $vcc, implicit $exec
347# GCN %24 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
348
349name:            shrink_addc_vop3
350alignment:       0
351exposesReturnsTwice: false
352legalized:       false
353regBankSelected: false
354selected:        false
355tracksRegLiveness: true
356registers:
357  - { id: 0, class: sgpr_64 }
358  - { id: 1, class: sreg_32_xm0 }
359  - { id: 2, class: sgpr_32 }
360  - { id: 3, class: vgpr_32 }
361  - { id: 4, class: sreg_64_xexec }
362  - { id: 5, class: sreg_64_xexec }
363  - { id: 6, class: sreg_32 }
364  - { id: 7, class: sreg_32 }
365  - { id: 8, class: sreg_32_xm0 }
366  - { id: 9, class: sreg_64 }
367  - { id: 10, class: sreg_32_xm0 }
368  - { id: 11, class: sreg_32_xm0 }
369  - { id: 12, class: sgpr_64 }
370  - { id: 13, class: sgpr_128 }
371  - { id: 14, class: sreg_32_xm0 }
372  - { id: 15, class: sreg_64 }
373  - { id: 16, class: sgpr_128 }
374  - { id: 17, class: vgpr_32 }
375  - { id: 18, class: vreg_64 }
376  - { id: 19, class: vgpr_32 }
377  - { id: 20, class: vreg_64 }
378  - { id: 21, class: sreg_32_xm0 }
379  - { id: 22, class: sreg_32 }
380  - { id: 23, class: sreg_32 }
381  - { id: 24, class: vgpr_32 }
382  - { id: 25, class: vreg_64 }
383  - { id: 26, class: vgpr_32 }
384  - { id: 27, class: vreg_64 }
385  - { id: 28, class: vreg_64 }
386  - { id: 29, class: vgpr_32 }
387liveins:
388  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
389  - { reg: '$vgpr0', virtual-reg: '%3' }
390frameInfo:
391  isFrameAddressTaken: false
392  isReturnAddressTaken: false
393  hasStackMap:     false
394  hasPatchPoint:   false
395  stackSize:       0
396  offsetAdjustment: 0
397  maxAlignment:    0
398  adjustsStack:    false
399  hasCalls:        false
400  maxCallFrameSize: 0
401  hasOpaqueSPAdjustment: false
402  hasVAStart:      false
403  hasMustTailInVarArgFunc: false
404body:             |
405  bb.0:
406    liveins: $sgpr0_sgpr1, $vgpr0
407
408    %3 = COPY $vgpr0
409    %0 = COPY $sgpr0_sgpr1
410    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
411    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
412    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
413    %27 = REG_SEQUENCE %3, 1, %26, 2
414    %10 = S_MOV_B32 61440
415    %11 = S_MOV_B32 0
416    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
417    %13 = REG_SEQUENCE killed %5, 17, %12, 18
418    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
419    %16 = REG_SEQUENCE killed %4, 17, %12, 18
420    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
421    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
422    $vcc = S_MOV_B64 0
423    %29, $vcc = V_ADDC_U32_e64 %19, %17, $vcc, implicit $exec
424    %24 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
425    BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
426    S_ENDPGM
427
428...
429
430---
431# GCN-LABEL: name: shrink_addc_undef_vcc{{$}}
432# GCN: %29:vgpr_32 = V_ADDC_U32_e32 %19, %17, implicit-def $vcc, implicit undef $vcc, implicit $exec
433# GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
434name:            shrink_addc_undef_vcc
435alignment:       0
436exposesReturnsTwice: false
437legalized:       false
438regBankSelected: false
439selected:        false
440tracksRegLiveness: true
441registers:
442  - { id: 0, class: sgpr_64 }
443  - { id: 1, class: sreg_32_xm0 }
444  - { id: 2, class: sgpr_32 }
445  - { id: 3, class: vgpr_32 }
446  - { id: 4, class: sreg_64_xexec }
447  - { id: 5, class: sreg_64_xexec }
448  - { id: 6, class: sreg_32 }
449  - { id: 7, class: sreg_32 }
450  - { id: 8, class: sreg_32_xm0 }
451  - { id: 9, class: sreg_64 }
452  - { id: 10, class: sreg_32_xm0 }
453  - { id: 11, class: sreg_32_xm0 }
454  - { id: 12, class: sgpr_64 }
455  - { id: 13, class: sgpr_128 }
456  - { id: 14, class: sreg_32_xm0 }
457  - { id: 15, class: sreg_64 }
458  - { id: 16, class: sgpr_128 }
459  - { id: 17, class: vgpr_32 }
460  - { id: 18, class: vreg_64 }
461  - { id: 19, class: vgpr_32 }
462  - { id: 20, class: vreg_64 }
463  - { id: 21, class: sreg_32_xm0 }
464  - { id: 22, class: sreg_32 }
465  - { id: 23, class: sreg_32 }
466  - { id: 24, class: vgpr_32 }
467  - { id: 25, class: vreg_64 }
468  - { id: 26, class: vgpr_32 }
469  - { id: 27, class: vreg_64 }
470  - { id: 28, class: vreg_64 }
471  - { id: 29, class: vgpr_32 }
472liveins:
473  - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
474  - { reg: '$vgpr0', virtual-reg: '%3' }
475frameInfo:
476  isFrameAddressTaken: false
477  isReturnAddressTaken: false
478  hasStackMap:     false
479  hasPatchPoint:   false
480  stackSize:       0
481  offsetAdjustment: 0
482  maxAlignment:    0
483  adjustsStack:    false
484  hasCalls:        false
485  maxCallFrameSize: 0
486  hasOpaqueSPAdjustment: false
487  hasVAStart:      false
488  hasMustTailInVarArgFunc: false
489body:             |
490  bb.0:
491    liveins: $sgpr0_sgpr1, $vgpr0
492
493    %3 = COPY $vgpr0
494    %0 = COPY $sgpr0_sgpr1
495    %4 = S_LOAD_DWORDX2_IMM %0, 9, 0
496    %5 = S_LOAD_DWORDX2_IMM %0, 11, 0
497    %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
498    %27 = REG_SEQUENCE %3, 1, %26, 2
499    %10 = S_MOV_B32 61440
500    %11 = S_MOV_B32 0
501    %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
502    %13 = REG_SEQUENCE killed %5, 17, %12, 18
503    %28 = V_LSHL_B64 killed %27, 2, implicit $exec
504    %16 = REG_SEQUENCE killed %4, 17, %12, 18
505    %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, implicit $exec
506    %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, implicit $exec
507    %29, $vcc = V_ADDC_U32_e64 %19, %17, undef $vcc, implicit $exec
508    %24 = V_CNDMASK_B32_e64 0, 1, killed $vcc, implicit $exec
509    BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, implicit $exec
510    S_ENDPGM
511
512...
513