1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass si-insert-waitcnts -o - %s | FileCheck -check-prefix=GFX10 %s 3 4--- 5name: test_waitcnt_preexisting_vscnt_unmodified 6body: | 7 bb.0: 8 liveins: $vgpr0_vgpr1, $vgpr2 9 10 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_unmodified 11 ; GFX10: S_WAITCNT 0 12 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 13 ; GFX10: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 14 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 15 ; GFX10: S_BARRIER 16 ; GFX10: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 17 ; GFX10: S_WAITCNT 112 18 ; GFX10: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 19 ; GFX10: S_ENDPGM 0 20 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 21 S_WAITCNT_VSCNT undef $sgpr_null, 0 22 S_BARRIER 23 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 24 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 25 S_ENDPGM 0 26... 27 28--- 29name: test_waitcnt_preexisting_vscnt_needs_vscnt 30body: | 31 bb.0: 32 liveins: $vgpr0_vgpr1, $vgpr2 33 34 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_needs_vscnt 35 ; GFX10: S_WAITCNT 0 36 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 37 ; GFX10: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 38 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 39 ; GFX10: S_BARRIER 40 ; GFX10: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 41 ; GFX10: S_WAITCNT 112 42 ; GFX10: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 43 ; GFX10: S_ENDPGM 0 44 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 45 S_WAITCNT_VSCNT undef $sgpr_null, 1 46 S_BARRIER 47 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 48 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 49 S_ENDPGM 0 50... 51 52--- 53name: test_waitcnt_preexisting_vscnt_with_other_waitcnt 54body: | 55 bb.0: 56 liveins: $vgpr0_vgpr1, $vgpr2 57 58 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_with_other_waitcnt 59 ; GFX10: S_WAITCNT 0 60 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 61 ; GFX10: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 62 ; GFX10: S_WAITCNT 112 63 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 64 ; GFX10: S_BARRIER 65 ; GFX10: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 66 ; GFX10: S_WAITCNT 112 67 ; GFX10: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 68 ; GFX10: S_ENDPGM 0 69 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 70 S_WAITCNT 112 71 S_WAITCNT_VSCNT undef $sgpr_null, 0 72 S_BARRIER 73 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 74 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 75 S_ENDPGM 0 76... 77 78--- 79name: test_waitcnt_preexisting_vscnt_combined 80body: | 81 bb.0: 82 liveins: $vgpr0_vgpr1, $vgpr2 83 84 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined 85 ; GFX10: S_WAITCNT 0 86 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 87 ; GFX10: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 88 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 89 ; GFX10: S_BARRIER 90 ; GFX10: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 91 ; GFX10: S_WAITCNT 112 92 ; GFX10: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 93 ; GFX10: S_ENDPGM 0 94 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 95 S_WAITCNT_VSCNT undef $sgpr_null, 0 96 S_WAITCNT_VSCNT undef $sgpr_null, 1 97 S_WAITCNT_VSCNT undef $sgpr_null, 2 98 S_BARRIER 99 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 100 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 101 S_ENDPGM 0 102... 103 104--- 105name: test_waitcnt_preexisting_vscnt_combined_both_types 106body: | 107 bb.0: 108 liveins: $vgpr0_vgpr1, $vgpr2 109 110 ; GFX10-LABEL: name: test_waitcnt_preexisting_vscnt_combined_both_types 111 ; GFX10: S_WAITCNT 0 112 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 113 ; GFX10: GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 114 ; GFX10: S_WAITCNT 0 115 ; GFX10: S_WAITCNT_VSCNT undef $sgpr_null, 0 116 ; GFX10: S_BARRIER 117 ; GFX10: $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 118 ; GFX10: S_WAITCNT 112 119 ; GFX10: FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 120 ; GFX10: S_ENDPGM 0 121 GLOBAL_STORE_DWORD $vgpr0_vgpr1, $vgpr2, 0, 0, implicit $exec 122 S_WAITCNT 0 123 S_WAITCNT_VSCNT undef $sgpr_null, 1 124 S_WAITCNT 0 125 S_WAITCNT_VSCNT undef $sgpr_null, 2 126 S_WAITCNT 0 127 S_BARRIER 128 $vgpr0 = FLAT_LOAD_DWORD $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr 129 FLAT_STORE_DWORD $vgpr0_vgpr1, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr 130 S_ENDPGM 0 131... 132