338 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() { ret void }5 define amdgpu_ps void @tbuffer_store2() { ret void }6 define amdgpu_ps void @flat_store() { ret void }7 define amdgpu_ps void @global_store() { ret void }8 define amdgpu_ps void @buffer_store_format() { ret void }9 define amdgpu_ps void @ds_write_b32() { ret void }10 define amdgpu_ps void @global_store_dword() { ret void }11 define amdgpu_ps void @multiple_basic_blocks1() { ret void }12 define amdgpu_ps void @multiple_basic_blocks2() { ret void }13 define amdgpu_ps void @multiple_basic_blocks3() { ret void }14 define amdgpu_ps void @recursive_loop() { ret void }15 define amdgpu_ps void @recursive_loop_vmem() { ret void }16 define amdgpu_ps void @image_store() { ret void }17 define amdgpu_ps void @scratch_store() { ret void }18 define amdgpu_ps void @buffer_atomic() { ret void }19 define amdgpu_ps void @flat_atomic() { ret void }20 define amdgpu_ps void @global_atomic() { ret void }21 define amdgpu_ps void @image_atomic() { ret void }22 define amdgpu_ps void @global_store_optnone() noinline optnone { ret void }23...24 25---26name: tbuffer_store127body: |28 bb.0:29 ; CHECK-LABEL: name: tbuffer_store130 ; CHECK-NOT: S_SENDMSG 331 ; CHECK-NOT: S_ALLOC_VGPR32 ; CHECK: S_ENDPGM 033 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 $exec34 S_ENDPGM 035...36 37---38name: tbuffer_store239body: |40 bb.0:41 ; CHECK-LABEL: name: tbuffer_store242 ; CHECK-NOT: S_SENDMSG 343 ; CHECK-NOT: S_ALLOC_VGPR44 ; CHECK: S_ENDPGM 045 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)46 S_ENDPGM 047...48 49---50name: flat_store51body: |52 bb.0:53 ; CHECK-LABEL: name: flat_store54 ; CHECK-NOT: S_SENDMSG 355 ; CHECK-NOT: S_ALLOC_VGPR56 ; CHECK: S_ENDPGM 057 FLAT_STORE_DWORDX4 $vgpr49_vgpr50, $vgpr26_vgpr27_vgpr28_vgpr29, 0, 0, implicit $exec, implicit $flat_scr58 S_ENDPGM 059...60 61---62name: global_store63body: |64 bb.0:65 ; CHECK-LABEL: name: global_store66 ; CHECK-NOT: S_SENDMSG 367 ; CHECK-NOT: S_ALLOC_VGPR68 ; CHECK: S_ENDPGM 069 GLOBAL_STORE_DWORD undef renamable $vgpr0_vgpr1, killed renamable $vgpr1, 0, 4, implicit $exec70 S_WAIT_STORECNT 071 S_ENDPGM 072...73 74---75name: buffer_store_format76body: |77 bb.0:78 ; CHECK-LABEL: name: buffer_store_format79 ; CHECK-NOT: S_SENDMSG 380 ; CHECK-NOT: S_ALLOC_VGPR81 ; CHECK: S_ENDPGM 082 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 $exec83 S_ENDPGM 084...85 86---87name: ds_write_b3288body: |89 bb.0:90 ; CHECK-LABEL: name: ds_write_b3291 ; CHECK-NOT: S_SENDMSG 392 ; CHECK-NOT: S_ALLOC_VGPR93 ; CHECK: S_ENDPGM 094 renamable $vgpr0 = IMPLICIT_DEF95 renamable $vgpr1 = IMPLICIT_DEF96 DS_WRITE_B32 killed renamable $vgpr0, killed renamable $vgpr1, 12, 0, implicit $exec, implicit $m097 S_ENDPGM 098 99...100---101name: global_store_dword102body: |103 bb.0:104 liveins: $vgpr0, $sgpr0_sgpr1105 106 ; CHECK-LABEL: name: global_store_dword107 ; CHECK-NOT: S_SENDMSG 3108 ; CHECK-NOT: S_ALLOC_VGPR109 ; CHECK: S_ENDPGM 0110 renamable $vgpr0 = V_MAD_I32_I24_e64 killed $vgpr1, killed $vgpr0, killed $sgpr2, 0, implicit $exec111 GLOBAL_STORE_DWORD_SADDR killed renamable $vgpr2, killed renamable $vgpr0, killed renamable $sgpr0_sgpr1, 0, 0, implicit $exec112 S_ENDPGM 0113...114 115---116name: multiple_basic_blocks1117body: |118 ; CHECK-LABEL: name: multiple_basic_blocks1119 ; CHECK-NOT: S_SENDMSG 3120 ; CHECK-NOT: S_ALLOC_VGPR121 ; CHECK: S_ENDPGM 0122 bb.0:123 successors: %bb.1124 125 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec126 S_BRANCH %bb.1127 128 bb.1:129 successors: %bb.1, %bb.2130 131 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec132 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc133 S_CBRANCH_SCC1 %bb.1, implicit killed $scc134 S_BRANCH %bb.2135 136 bb.2:137 S_ENDPGM 0138 139...140 141---142name: multiple_basic_blocks2143body: |144 ; CHECK-LABEL: name: multiple_basic_blocks2145 ; CHECK: bb.2:146 ; CHECK-NOT: S_SENDMSG 3147 ; CHECK-NOT: S_ALLOC_VGPR148 ; CHECK: S_ENDPGM 0149 bb.0:150 successors: %bb.2151 152 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec153 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec154 S_BRANCH %bb.2155 156 bb.1:157 successors: %bb.2158 159 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec160 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec161 S_BRANCH %bb.2162 163 bb.2:164 S_ENDPGM 0165...166 167---168name: multiple_basic_blocks3169body: |170 ; CHECK-LABEL: name: multiple_basic_blocks3171 ; CHECK: bb.4:172 ; CHECK-NOT: S_SENDMSG 3173 ; CHECK-NOT: S_ALLOC_VGPR174 ; CHECK: S_ENDPGM 0175 bb.0:176 successors: %bb.2177 178 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec179 TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec180 S_BRANCH %bb.2181 182 bb.1:183 successors: %bb.2184 185 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec186 S_BRANCH %bb.2187 188 bb.2:189 successors: %bb.4190 191 S_BRANCH %bb.4192 193 bb.3:194 successors: %bb.4195 196 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec197 S_BRANCH %bb.4198 199 bb.4:200 S_ENDPGM 0201...202 203---204name: recursive_loop205body: |206 ; CHECK-LABEL: name: recursive_loop207 ; CHECK-NOT: S_SENDMSG 3208 ; CHECK-NOT: S_ALLOC_VGPR209 ; CHECK: S_ENDPGM 0210 bb.0:211 successors: %bb.1212 213 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec214 S_BRANCH %bb.1215 216 bb.1:217 successors: %bb.1, %bb.2218 219 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc220 S_CBRANCH_SCC1 %bb.1, implicit killed $scc221 S_BRANCH %bb.2222 223 bb.2:224 S_ENDPGM 0225...226 227---228name: recursive_loop_vmem229body: |230 ; CHECK-LABEL: name: recursive_loop_vmem231 ; CHECK-NOT: S_SENDMSG 3232 ; CHECK-NOT: S_ALLOC_VGPR233 ; CHECK: S_ENDPGM 0234 bb.0:235 successors: %bb.1236 237 renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec238 S_BRANCH %bb.1239 240 bb.1:241 successors: %bb.1, %bb.2242 243 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 $exec244 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc245 S_CBRANCH_SCC1 %bb.1, implicit killed $scc246 S_BRANCH %bb.2247 248 bb.2:249 S_ENDPGM 0250...251 252---253name: image_store254body: |255 bb.0:256 ; CHECK-LABEL: name: image_store257 ; CHECK-NOT: S_SENDMSG 3258 ; CHECK-NOT: S_ALLOC_VGPR259 ; CHECK: S_ENDPGM 0260 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)261 S_ENDPGM 0262...263 264---265name: scratch_store266body: |267 bb.0:268 ; CHECK-LABEL: name: scratch_store269 ; CHECK-NOT: S_SENDMSG 3270 ; CHECK-NOT: S_ALLOC_VGPR271 ; CHECK: S_ENDPGM 0272 renamable $sgpr0 = S_AND_B32 killed renamable $sgpr0, -16, implicit-def dead $scc273 SCRATCH_STORE_DWORD_SADDR killed renamable $vgpr0, killed renamable $sgpr0, 0, 0, implicit $exec, implicit $flat_scr274 S_ENDPGM 0275...276 277---278name: buffer_atomic279body: |280 bb.0:281 ; CHECK-LABEL: name: buffer_atomic282 ; CHECK-NOT: S_SENDMSG 3283 ; CHECK-NOT: S_ALLOC_VGPR284 ; CHECK: S_ENDPGM 0285 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)286 S_ENDPGM 0287...288 289---290name: flat_atomic291body: |292 bb.0:293 ; CHECK-LABEL: name: flat_atomic294 ; CHECK-NOT: S_SENDMSG 3295 ; CHECK-NOT: S_ALLOC_VGPR296 ; CHECK: S_ENDPGM 0297 renamable $vgpr0_vgpr1 = FLAT_ATOMIC_DEC_X2_RTN killed renamable $vgpr0_vgpr1, killed renamable $vgpr2_vgpr3, 40, 1, implicit $exec, implicit $flat_scr298 S_ENDPGM 0299...300 301 302---303name: global_atomic304body: |305 bb.0:306 ; CHECK-LABEL: name: global_atomic307 ; CHECK-NOT: S_SENDMSG 3308 ; CHECK-NOT: S_ALLOC_VGPR309 ; CHECK: S_ENDPGM 0310 renamable $vgpr0_vgpr1 = GLOBAL_ATOMIC_INC_X2_SADDR_RTN killed renamable $vgpr0, killed renamable $vgpr1_vgpr2, killed renamable $sgpr0_sgpr1, 40, 1, implicit $exec311 S_ENDPGM 0312...313 314---315name: image_atomic316body: |317 bb.0:318 ; CHECK-LABEL: name: image_atomic319 ; CHECK-NOT: S_SENDMSG 3320 ; CHECK-NOT: S_ALLOC_VGPR321 ; CHECK: S_ENDPGM 0322 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)323 S_ENDPGM 0324...325 326---327name: global_store_optnone328body: |329 bb.0:330 ; CHECK-LABEL: name: global_store_optnone331 ; CHECK-NOT: S_SENDMSG 3332 ; CHECK-NOT: S_ALLOC_VGPR333 ; CHECK: S_ENDPGM 0334 GLOBAL_STORE_DWORD undef renamable $vgpr0_vgpr1, killed renamable $vgpr1, 0, 4, implicit $exec335 S_WAIT_STORECNT 0336 S_ENDPGM 0337...338