@@ -114,7 +114,7 @@ body: |
114114 $vgpr3 = DS_READ_B32_gfx9 $vgpr1, 0, 0, implicit $exec
115115 ...
116116
117- # Loads are not bundled due to middle deb_value
117+ # Middle dbg_value should be bundled
118118---
119119name : bundle_dbg_value_0
120120tracksRegLiveness : true
@@ -135,7 +135,7 @@ body: |
135135
136136 ...
137137
138- # Loads are not bundled due to middle deb_value
138+ # Middle dbg_value should be bundled
139139---
140140name : bundle_dbg_value_1
141141tracksRegLiveness : true
@@ -159,7 +159,7 @@ body: |
159159 DBG_VALUE $vgpr2, 0, 0
160160 ...
161161
162- # Loads are not bundled due to middle deb_value
162+ # Starting and ending dbg_values should not be in the bundle
163163---
164164name : bundle_dbg_value_2
165165tracksRegLiveness : true
@@ -183,7 +183,6 @@ body: |
183183 DBG_VALUE $vgpr2, 0, 0
184184 ...
185185
186- # Loads are not bundled due to KILL
187186---
188187name : bundle_kill
189188tracksRegLiveness : true
@@ -353,74 +352,7 @@ body: |
353352 KILL killed $vgpr3_vgpr4, killed $vgpr5_vgpr6
354353 ...
355354
356- # The 3rd and 4th loads are not bundled due to an in-between SCHED_BARRIER meta instruction.
357- # This helps SCHED_BARRIERs are honored maximally.
358- # MASK 1924 = 0b 0111 1000 0100 VALU and all VMEM, VMEM Read/Write cannot be
359- # scheduled across SCHED_BARRIER.
360-
361- ---
362- name : extra_sched_barrier_in_bundle
363- tracksRegLiveness : true
364- body : |
365- bb.0:
366- ; GCN-LABEL: name: extra_sched_barrier_in_bundle
367- ; GCN: renamable $sgpr0_sgpr1 = IMPLICIT_DEF
368- ; GCN-NEXT: renamable $vgpr0 = IMPLICIT_DEF
369- ; GCN-NEXT: BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, implicit-def $vgpr1_hi16, implicit-def $vgpr2, implicit-def $vgpr2_lo16, implicit-def $vgpr2_hi16, implicit $sgpr0_sgpr1, implicit $vgpr0, implicit $exec {
370- ; GCN-NEXT: renamable $vgpr1 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr0_sgpr1, renamable $vgpr0, 0, 0, implicit $exec
371- ; GCN-NEXT: renamable $vgpr2 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr0_sgpr1, renamable $vgpr0, 512, 0, implicit $exec
372- ; GCN-NEXT: }
373- ; GCN-NEXT: renamable $sgpr2_sgpr3 = IMPLICIT_DEF
374- ; GCN-NEXT: renamable $vgpr10 = IMPLICIT_DEF
375- ; GCN-NEXT: renamable $vgpr1 = nsw V_MUL_LO_U32_e64 killed $vgpr1, $vgpr1, implicit $exec
376- ; GCN-NEXT: renamable $vgpr2 = nsw V_MUL_LO_U32_e64 killed $vgpr2, $vgpr2, implicit $exec
377- ; GCN-NEXT: SCHED_BARRIER 1924
378- ; GCN-NEXT: renamable $vgpr11 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, renamable $vgpr10, 0, 0, implicit $exec, implicit-def $vgpr11, implicit-def $vgpr11_lo16, implicit-def $vgpr11_hi16, implicit $sgpr2_sgpr3, implicit $vgpr10
379- ; GCN-NEXT: SCHED_BARRIER 1924
380- ; GCN-NEXT: renamable $vgpr12 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, renamable $vgpr10, 512, 0, implicit $exec, implicit-def $vgpr12, implicit-def $vgpr12_lo16, implicit-def $vgpr12_hi16, implicit $sgpr2_sgpr3, implicit $vgpr10
381- ; GCN-NEXT: renamable $sgpr4_sgpr5 = IMPLICIT_DEF
382- ; GCN-NEXT: renamable $vgpr0 = IMPLICIT_DEF
383- ; GCN-NEXT: renamable $vgpr11 = nsw V_MUL_LO_U32_e64 killed $vgpr11, $vgpr11, implicit $exec
384- ; GCN-NEXT: renamable $vgpr12 = nsw V_MUL_LO_U32_e64 killed $vgpr12, $vgpr12, implicit $exec
385- ; GCN-NEXT: BUNDLE implicit killed $vgpr10, implicit killed $vgpr11, implicit killed $sgpr2_sgpr3, implicit $exec, implicit killed $vgpr12 {
386- ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr10, killed renamable $vgpr11, renamable $sgpr2_sgpr3, 0, 0, implicit $exec
387- ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr10, killed renamable $vgpr12, killed renamable $sgpr2_sgpr3, 512, 0, implicit $exec
388- ; GCN-NEXT: }
389- ; GCN-NEXT: BUNDLE implicit killed $vgpr0, implicit killed $vgpr1, implicit killed $sgpr4_sgpr5, implicit $exec, implicit killed $vgpr2 {
390- ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, killed renamable $vgpr1, renamable $sgpr4_sgpr5, 0, 0, implicit $exec
391- ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr0, killed renamable $vgpr2, killed renamable $sgpr4_sgpr5, 512, 0, implicit $exec
392- ; GCN-NEXT: }
393- ; GCN-NEXT: S_ENDPGM 0
394- renamable $sgpr0_sgpr1 = IMPLICIT_DEF
395- renamable $vgpr0 = IMPLICIT_DEF
396- BUNDLE implicit-def $vgpr1, implicit-def $vgpr1_lo16, implicit-def $vgpr1_hi16, implicit-def $vgpr2, implicit-def $vgpr2_lo16, implicit-def $vgpr2_hi16, implicit $sgpr0_sgpr1, implicit $vgpr0, implicit $exec {
397- renamable $vgpr1 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr0_sgpr1, renamable $vgpr0, 0, 0, implicit $exec
398- renamable $vgpr2 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr0_sgpr1, renamable $vgpr0, 512, 0, implicit $exec
399- }
400- renamable $sgpr2_sgpr3 = IMPLICIT_DEF
401- renamable $vgpr10 = IMPLICIT_DEF
402- renamable $vgpr1 = nsw V_MUL_LO_U32_e64 killed $vgpr1, $vgpr1, implicit $exec
403- renamable $vgpr2 = nsw V_MUL_LO_U32_e64 killed $vgpr2, $vgpr2, implicit $exec
404- SCHED_BARRIER 1924
405- renamable $vgpr11 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, renamable $vgpr10, 0, 0, implicit $exec, implicit-def $vgpr11, implicit-def $vgpr11_lo16, implicit-def $vgpr11_hi16, implicit $sgpr2_sgpr3, implicit $vgpr10
406- SCHED_BARRIER 1924
407- renamable $vgpr12 = GLOBAL_LOAD_DWORD_SADDR renamable $sgpr2_sgpr3, renamable $vgpr10, 512, 0, implicit $exec, implicit-def $vgpr12, implicit-def $vgpr12_lo16, implicit-def $vgpr12_hi16, implicit $sgpr2_sgpr3, implicit $vgpr10
408- renamable $sgpr4_sgpr5 = IMPLICIT_DEF
409- renamable $vgpr0 = IMPLICIT_DEF
410- renamable $vgpr11 = nsw V_MUL_LO_U32_e64 killed $vgpr11, $vgpr11, implicit $exec
411- renamable $vgpr12 = nsw V_MUL_LO_U32_e64 killed $vgpr12, $vgpr12, implicit $exec
412- BUNDLE implicit killed $vgpr10, implicit killed $vgpr11, implicit killed $sgpr2_sgpr3, implicit $exec, implicit killed $vgpr12 {
413- GLOBAL_STORE_DWORD_SADDR renamable $vgpr10, killed renamable $vgpr11, renamable $sgpr2_sgpr3, 0, 0, implicit $exec
414- GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr10, killed renamable $vgpr12, killed renamable $sgpr2_sgpr3, 512, 0, implicit $exec
415- }
416- BUNDLE implicit killed $vgpr0, implicit killed $vgpr1, implicit killed $sgpr4_sgpr5, implicit $exec, implicit killed $vgpr2 {
417- GLOBAL_STORE_DWORD_SADDR renamable $vgpr0, killed renamable $vgpr1, renamable $sgpr4_sgpr5, 0, 0, implicit $exec
418- GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr0, killed renamable $vgpr2, killed renamable $sgpr4_sgpr5, 512, 0, implicit $exec
419- }
420- S_ENDPGM 0
421- ...
422-
423- # Bypass bundling if a MBB has SCHED_BARRIER
355+ # Avoid bundling if a MBB has SCHED_BARRIER
424356---
425357name : no_bundle_with_sched_barrier
426358tracksRegLiveness : true
0 commit comments