341 lines · plain
1# RUN: llc -march=amdgcn -mcpu=gfx1200 -run-pass=si-insert-waitcnts -verify-machineinstrs -o - %s | FileCheck %s2 3--- |4 define amdgpu_ps void @tbuffer_store1() #0 { ret void }5 define amdgpu_ps void @tbuffer_store2() #0 { ret void }6 define amdgpu_ps void @flat_store() #0 { ret void }7 define amdgpu_ps void @global_store() #0 { ret void }8 define amdgpu_ps void @buffer_store_format() #0 { ret void }9 define amdgpu_ps void @ds_write_b32() #0 { ret void }10 define amdgpu_ps void @global_store_dword() #0 { ret void }11 define amdgpu_ps void @multiple_basic_blocks1() #0 { ret void }12 define amdgpu_ps void @multiple_basic_blocks2() #0 { ret void }13 define amdgpu_ps void @multiple_basic_blocks3() #0 { ret void }14 define amdgpu_ps void @recursive_loop() #0 { ret void }15 define amdgpu_ps void @recursive_loop_vmem() #0 { ret void }16 define amdgpu_ps void @image_store() #0 { ret void }17 define amdgpu_ps void @scratch_store() #0 { ret void }18 define amdgpu_ps void @buffer_atomic() #0 { ret void }19 define amdgpu_ps void @flat_atomic() #0 { ret void }20 define amdgpu_ps void @global_atomic() #0 { ret void }21 define amdgpu_ps void @image_atomic() #0 { ret void }22 define amdgpu_ps void @global_store_optnone() #1 { ret void }23 24 attributes #0 = { "amdgpu-dynamic-vgpr-block-size" = "16" }25 attributes #1 = { "amdgpu-dynamic-vgpr-block-size" = "16" noinline optnone }26...27 28---29name: tbuffer_store130body: |31 bb.0:32 ; CHECK-LABEL: name: tbuffer_store133 ; CHECK-NOT: S_SENDMSG 334 ; CHECK: S_ALLOC_VGPR 035 ; CHECK: S_ENDPGM 036 TBUFFER_STORE_FORMAT_XYZW_OFFSET_exact killed renamable $vgpr0_vgpr1_vgpr2_vgpr3, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, killed renamable $sgpr4, 42, 117, 0, 0, implicit $exec37 S_ENDPGM 038...39 40---41name: tbuffer_store242body: |43 bb.0:44 ; CHECK-LABEL: name: tbuffer_store245 ; CHECK-NOT: S_SENDMSG 346 ; CHECK: S_ALLOC_VGPR 047 ; CHECK: S_ENDPGM 048 TBUFFER_STORE_FORMAT_XYZW_OFFEN_exact killed renamable $vgpr0_vgpr1_vgpr2_vgpr3, killed renamable $vgpr4, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 115, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 7)49 S_ENDPGM 050...51 52---53name: flat_store54body: |55 bb.0:56 ; CHECK-LABEL: name: flat_store57 ; CHECK-NOT: S_SENDMSG 358 ; CHECK: S_ALLOC_VGPR 059 ; CHECK: S_ENDPGM 060 FLAT_STORE_DWORDX4 $vgpr49_vgpr50, $vgpr26_vgpr27_vgpr28_vgpr29, 0, 0, implicit $exec, implicit $flat_scr61 S_ENDPGM 062...63 64---65name: global_store66body: |67 bb.0:68 ; CHECK-LABEL: name: global_store69 ; CHECK-NOT: S_SENDMSG 370 ; CHECK: S_ALLOC_VGPR 071 ; CHECK: S_ENDPGM 072 GLOBAL_STORE_DWORD undef renamable $vgpr0_vgpr1, killed renamable $vgpr1, 0, 4, implicit $exec73 S_WAIT_STORECNT 074 S_ENDPGM 075...76 77---78name: buffer_store_format79body: |80 bb.0:81 ; CHECK-LABEL: name: buffer_store_format82 ; CHECK-NOT: S_SENDMSG 383 ; CHECK: S_ALLOC_VGPR 084 ; CHECK: S_ENDPGM 085 BUFFER_STORE_FORMAT_D16_X_OFFEN_exact killed renamable $vgpr0, killed renamable $vgpr1, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, killed renamable $sgpr4, 0, 0, 0, implicit $exec86 S_ENDPGM 087...88 89---90name: ds_write_b3291body: |92 bb.0:93 ; CHECK-LABEL: name: ds_write_b3294 ; CHECK-NOT: S_SENDMSG 395 ; CHECK: S_ALLOC_VGPR 096 ; CHECK: S_ENDPGM 097 renamable $vgpr0 = IMPLICIT_DEF98 renamable $vgpr1 = IMPLICIT_DEF99 DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 12, 0, implicit $exec, implicit $m0100 S_ENDPGM 0101 102...103---104name: global_store_dword105body: |106 bb.0:107 liveins: $vgpr0, $sgpr0_sgpr1108 109 ; CHECK-LABEL: name: global_store_dword110 ; CHECK-NOT: S_SENDMSG 3111 ; CHECK: S_ALLOC_VGPR 0112 ; CHECK: S_ENDPGM 0113 renamable $vgpr0 = V_MAD_I32_I24_e64 killed $vgpr1, killed $vgpr0, killed $sgpr2, 0, implicit $exec114 GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr2, killed renamable $vgpr0, killed renamable $sgpr0_sgpr1, 0, 0, implicit $exec115 S_ENDPGM 0116...117 118---119name: multiple_basic_blocks1120body: |121 ; CHECK-LABEL: name: multiple_basic_blocks1122 ; CHECK-NOT: S_SENDMSG 3123 ; CHECK: S_ALLOC_VGPR 0124 ; CHECK: S_ENDPGM 0125 bb.0:126 successors: %bb.1127 128 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec129 S_BRANCH %bb.1130 131 bb.1:132 successors: %bb.1, %bb.2133 134 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec135 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc136 S_CBRANCH_SCC1 %bb.1, implicit killed $scc137 S_BRANCH %bb.2138 139 bb.2:140 S_ENDPGM 0141 142...143 144---145name: multiple_basic_blocks2146body: |147 ; CHECK-LABEL: name: multiple_basic_blocks2148 ; CHECK: bb.2:149 ; CHECK-NOT: S_SENDMSG 3150 ; CHECK: S_ALLOC_VGPR 0151 ; CHECK: S_ENDPGM 0152 bb.0:153 successors: %bb.2154 155 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec156 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec157 S_BRANCH %bb.2158 159 bb.1:160 successors: %bb.2161 162 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec163 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec164 S_BRANCH %bb.2165 166 bb.2:167 S_ENDPGM 0168...169 170---171name: multiple_basic_blocks3172body: |173 ; CHECK-LABEL: name: multiple_basic_blocks3174 ; CHECK: bb.4:175 ; CHECK-NOT: S_SENDMSG 3176 ; CHECK: S_ALLOC_VGPR 0177 ; CHECK: S_ENDPGM 0178 bb.0:179 successors: %bb.2180 181 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec182 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec183 S_BRANCH %bb.2184 185 bb.1:186 successors: %bb.2187 188 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec189 S_BRANCH %bb.2190 191 bb.2:192 successors: %bb.4193 194 S_BRANCH %bb.4195 196 bb.3:197 successors: %bb.4198 199 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec200 S_BRANCH %bb.4201 202 bb.4:203 S_ENDPGM 0204...205 206---207name: recursive_loop208body: |209 ; CHECK-LABEL: name: recursive_loop210 ; CHECK-NOT: S_SENDMSG 3211 ; CHECK: S_ALLOC_VGPR 0212 ; CHECK: S_ENDPGM 0213 bb.0:214 successors: %bb.1215 216 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec217 S_BRANCH %bb.1218 219 bb.1:220 successors: %bb.1, %bb.2221 222 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc223 S_CBRANCH_SCC1 %bb.1, implicit killed $scc224 S_BRANCH %bb.2225 226 bb.2:227 S_ENDPGM 0228...229 230---231name: recursive_loop_vmem232body: |233 ; CHECK-LABEL: name: recursive_loop_vmem234 ; CHECK-NOT: S_SENDMSG 3235 ; CHECK: S_ALLOC_VGPR 0236 ; CHECK: S_ENDPGM 0237 bb.0:238 successors: %bb.1239 240 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec241 S_BRANCH %bb.1242 243 bb.1:244 successors: %bb.1, %bb.2245 246 TBUFFER_STORE_FORMAT_XYZW_OFFEN_exact killed renamable $vgpr0_vgpr1_vgpr2_vgpr3, killed renamable $vgpr4, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 115, 0, 0, implicit $exec247 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc248 S_CBRANCH_SCC1 %bb.1, implicit killed $scc249 S_BRANCH %bb.2250 251 bb.2:252 S_ENDPGM 0253...254 255---256name: image_store257body: |258 bb.0:259 ; CHECK-LABEL: name: image_store260 ; CHECK-NOT: S_SENDMSG 3261 ; CHECK: S_ALLOC_VGPR 0262 ; CHECK: S_ENDPGM 0263 IMAGE_STORE_V2_V1_gfx11 killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 12, 0, 1, 0, 0, -1, 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s32>), addrspace 7)264 S_ENDPGM 0265...266 267---268name: scratch_store269body: |270 bb.0:271 ; CHECK-LABEL: name: scratch_store272 ; CHECK-NOT: S_SENDMSG 3273 ; CHECK: S_ALLOC_VGPR 0274 ; CHECK: S_ENDPGM 0275 renamable $sgpr0 = S_AND_B32 killed renamable $sgpr0, -16, implicit-def dead $scc276 SCRATCH_STORE_DWORD_SADDR killed renamable $vgpr0, killed renamable $sgpr0, 0, 0, implicit $exec, implicit $flat_scr277 S_ENDPGM 0278...279 280---281name: buffer_atomic282body: |283 bb.0:284 ; CHECK-LABEL: name: buffer_atomic285 ; CHECK-NOT: S_SENDMSG 3286 ; CHECK: S_ALLOC_VGPR 0287 ; CHECK: S_ENDPGM 0288 BUFFER_ATOMIC_ADD_F32_OFFEN killed renamable $vgpr0, killed renamable $vgpr2, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, implicit $exec :: (volatile dereferenceable load store (s64), align 1, addrspace 7)289 S_ENDPGM 0290...291 292---293name: flat_atomic294body: |295 bb.0:296 ; CHECK-LABEL: name: flat_atomic297 ; CHECK-NOT: S_SENDMSG 3298 ; CHECK: S_ALLOC_VGPR 0299 ; CHECK: S_ENDPGM 0300 renamable $vgpr0_vgpr1 = FLAT_ATOMIC_DEC_X2_RTN killed renamable $vgpr0_vgpr1, killed renamable $vgpr2_vgpr3, 40, 1, implicit $exec, implicit $flat_scr301 S_ENDPGM 0302...303 304 305---306name: global_atomic307body: |308 bb.0:309 ; CHECK-LABEL: name: global_atomic310 ; CHECK-NOT: S_SENDMSG 3311 ; CHECK: S_ALLOC_VGPR 0312 ; CHECK: S_ENDPGM 0313 renamable $vgpr0_vgpr1 = GLOBAL_ATOMIC_INC_X2_SADDR_RTN killed renamable $vgpr0, killed renamable $vgpr1_vgpr2, killed renamable $sgpr0_sgpr1, 40, 1, implicit $exec314 S_ENDPGM 0315...316 317---318name: image_atomic319body: |320 bb.0:321 ; CHECK-LABEL: name: image_atomic322 ; CHECK-NOT: S_SENDMSG 3323 ; CHECK: S_ALLOC_VGPR 0324 ; CHECK: S_ENDPGM 0325 renamable $vgpr0_vgpr1_vgpr2_vgpr3 = IMAGE_ATOMIC_CMPSWAP_V4_V1_gfx12 killed renamable $vgpr0_vgpr1_vgpr2_vgpr3, killed renamable $vgpr4, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, 15, 0, 1, 1, 0, 0, implicit $exec :: (volatile dereferenceable load store (s64), addrspace 7)326 S_ENDPGM 0327...328 329---330name: global_store_optnone331body: |332 bb.0:333 ; CHECK-LABEL: name: global_store_optnone334 ; CHECK-NOT: S_SENDMSG 3335 ; CHECK-NOT: S_ALLOC_VGPR336 ; CHECK: S_ENDPGM 0337 GLOBAL_STORE_DWORD undef renamable $vgpr0_vgpr1, killed renamable $vgpr1, 0, 4, implicit $exec338 S_WAIT_STORECNT 0339 S_ENDPGM 0340...341