2525 define amdgpu_cs void @with_calls() { ret void }
2626 define fastcc void @with_tail_calls() { ret void }
2727 define amdgpu_cs void @waveslot_limited() { ret void }
28+ define amdgpu_ps void @tbuffer_without_mmo_may_hit_scratch() { ret void }
29+ define amdgpu_ps void @buffer_without_mmo_may_hit_scratch() { ret void }
2830...
2931
3032---
@@ -34,15 +36,15 @@ machineFunctionInfo:
3436body : |
3537 bb.0:
3638 ; OPT-LABEL: name: tbuffer_store1
37- ; OPT: 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 $exec
39+ ; OPT: 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 $exec :: (volatile store (s32), addrspace 1)
3840 ; OPT-NEXT: S_NOP 0
3941 ; OPT-NEXT: S_SENDMSG 3, implicit $exec, implicit $m0
4042 ; OPT-NEXT: S_ENDPGM 0, implicit $vgpr97
4143 ;
4244 ; NOOPT-LABEL: name: tbuffer_store1
43- ; NOOPT: 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 $exec
45+ ; NOOPT: 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 $exec :: (volatile store (s32), addrspace 1)
4446 ; NOOPT-NEXT: S_ENDPGM 0, implicit $vgpr97
45- 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 $exec
47+ 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 $exec :: (volatile store (s32), addrspace 1)
4648 S_ENDPGM 0, implicit $vgpr97
4749 ...
4850
@@ -107,15 +109,15 @@ machineFunctionInfo:
107109body : |
108110 bb.0:
109111 ; OPT-LABEL: name: buffer_store_format
110- ; OPT: 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 $exec
112+ ; OPT: 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 $exec :: (volatile store (s32), addrspace 1)
111113 ; OPT-NEXT: S_NOP 0
112114 ; OPT-NEXT: S_SENDMSG 3, implicit $exec, implicit $m0
113115 ; OPT-NEXT: S_ENDPGM 0, implicit $vgpr97
114116 ;
115117 ; NOOPT-LABEL: name: buffer_store_format
116- ; NOOPT: 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 $exec
118+ ; NOOPT: 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 $exec :: (volatile store (s32), addrspace 1)
117119 ; NOOPT-NEXT: S_ENDPGM 0, implicit $vgpr97
118- 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 $exec
120+ 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 $exec :: (volatile store (s32), addrspace 1)
119121 S_ENDPGM 0, implicit $vgpr97
120122 ...
121123
@@ -218,15 +220,15 @@ body: |
218220 ; OPT: bb.0:
219221 ; OPT-NEXT: successors: %bb.2(0x80000000)
220222 ; OPT-NEXT: {{ $}}
221- ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
223+ ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
222224 ; OPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
223225 ; OPT-NEXT: S_BRANCH %bb.2
224226 ; OPT-NEXT: {{ $}}
225227 ; OPT-NEXT: bb.1:
226228 ; OPT-NEXT: successors: %bb.2(0x80000000)
227229 ; OPT-NEXT: {{ $}}
228230 ; OPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
229- ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
231+ ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
230232 ; OPT-NEXT: S_BRANCH %bb.2
231233 ; OPT-NEXT: {{ $}}
232234 ; OPT-NEXT: bb.2:
@@ -238,31 +240,31 @@ body: |
238240 ; NOOPT: bb.0:
239241 ; NOOPT-NEXT: successors: %bb.2(0x80000000)
240242 ; NOOPT-NEXT: {{ $}}
241- ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
243+ ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
242244 ; NOOPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
243245 ; NOOPT-NEXT: S_BRANCH %bb.2
244246 ; NOOPT-NEXT: {{ $}}
245247 ; NOOPT-NEXT: bb.1:
246248 ; NOOPT-NEXT: successors: %bb.2(0x80000000)
247249 ; NOOPT-NEXT: {{ $}}
248250 ; NOOPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
249- ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
251+ ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
250252 ; NOOPT-NEXT: S_BRANCH %bb.2
251253 ; NOOPT-NEXT: {{ $}}
252254 ; NOOPT-NEXT: bb.2:
253255 ; NOOPT-NEXT: S_ENDPGM 0, implicit $vgpr97
254256 bb.0:
255257 successors: %bb.2
256258
257- TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
259+ TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
258260 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec
259261 S_BRANCH %bb.2
260262
261263 bb.1:
262264 successors: %bb.2
263265
264266 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec
265- TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
267+ TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
266268 S_BRANCH %bb.2
267269
268270 bb.2:
@@ -281,7 +283,7 @@ body: |
281283 ; OPT-NEXT: successors: %bb.2(0x80000000)
282284 ; OPT-NEXT: {{ $}}
283285 ; OPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
284- ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
286+ ; OPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
285287 ; OPT-NEXT: S_BRANCH %bb.2
286288 ; OPT-NEXT: {{ $}}
287289 ; OPT-NEXT: bb.1:
@@ -311,7 +313,7 @@ body: |
311313 ; NOOPT-NEXT: successors: %bb.2(0x80000000)
312314 ; NOOPT-NEXT: {{ $}}
313315 ; NOOPT-NEXT: $vgpr1 = V_ADD_U32_e32 $vgpr0, $vgpr2, implicit $exec
314- ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
316+ ; NOOPT-NEXT: TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
315317 ; NOOPT-NEXT: S_BRANCH %bb.2
316318 ; NOOPT-NEXT: {{ $}}
317319 ; NOOPT-NEXT: bb.1:
@@ -337,7 +339,7 @@ body: |
337339 successors: %bb.2
338340
339341 $vgpr1 = V_ADD_U32_e32 renamable $vgpr0, renamable $vgpr2, implicit $exec
340- TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec
342+ TBUFFER_STORE_FORMAT_X_OFFSET_exact killed renamable $vgpr0, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 125, 0, 0, implicit $exec :: (volatile store (s32), addrspace 1)
341343 S_BRANCH %bb.2
342344
343345 bb.1:
@@ -408,14 +410,14 @@ body: |
408410 ; OPT: bb.0:
409411 ; OPT-NEXT: successors: %bb.1(0x80000000)
410412 ; OPT-NEXT: {{ $}}
411- ; OPT-NEXT: renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
413+ ; OPT-NEXT: renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32), addrspace 1)
412414 ; OPT-NEXT: S_BRANCH %bb.1
413415 ; OPT-NEXT: {{ $}}
414416 ; OPT-NEXT: bb.1:
415417 ; OPT-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
416418 ; OPT-NEXT: {{ $}}
417419 ; OPT-NEXT: S_WAITCNT 1015
418- ; OPT-NEXT: 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
420+ ; OPT-NEXT: 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 :: (volatile store (s32), addrspace 1)
419421 ; OPT-NEXT: S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc
420422 ; OPT-NEXT: S_CBRANCH_SCC1 %bb.1, implicit killed $scc
421423 ; OPT-NEXT: S_BRANCH %bb.2
@@ -429,14 +431,14 @@ body: |
429431 ; NOOPT: bb.0:
430432 ; NOOPT-NEXT: successors: %bb.1(0x80000000)
431433 ; NOOPT-NEXT: {{ $}}
432- ; NOOPT-NEXT: renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
434+ ; NOOPT-NEXT: renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32), addrspace 1)
433435 ; NOOPT-NEXT: S_BRANCH %bb.1
434436 ; NOOPT-NEXT: {{ $}}
435437 ; NOOPT-NEXT: bb.1:
436438 ; NOOPT-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
437439 ; NOOPT-NEXT: {{ $}}
438440 ; NOOPT-NEXT: S_WAITCNT 1015
439- ; NOOPT-NEXT: 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
441+ ; NOOPT-NEXT: 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 :: (volatile store (s32), addrspace 1)
440442 ; NOOPT-NEXT: S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc
441443 ; NOOPT-NEXT: S_CBRANCH_SCC1 %bb.1, implicit killed $scc
442444 ; NOOPT-NEXT: S_BRANCH %bb.2
@@ -446,13 +448,13 @@ body: |
446448 bb.0:
447449 successors: %bb.1
448450
449- renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec
451+ renamable $vgpr0 = BUFFER_LOAD_FORMAT_X_IDXEN killed renamable $vgpr0, renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, implicit $exec :: (volatile load (s32), addrspace 1)
450452 S_BRANCH %bb.1
451453
452454 bb.1:
453455 successors: %bb.1, %bb.2
454456
455- 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
457+ 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 :: (volatile store (s32), addrspace 1)
456458 S_CMP_LG_U32 killed renamable $sgpr3, renamable $sgpr4, implicit-def $scc
457459 S_CBRANCH_SCC1 %bb.1, implicit killed $scc
458460 S_BRANCH %bb.2
@@ -619,3 +621,29 @@ body: |
619621 GLOBAL_STORE_DWORD undef renamable $vgpr0_vgpr1, killed renamable $vgpr96, 0, 4, implicit $exec
620622 S_ENDPGM 0
621623 ...
624+
625+ ---
626+ name : tbuffer_without_mmo_may_hit_scratch
627+ machineFunctionInfo :
628+ isEntryFunction : true
629+ body : |
630+ bb.0:
631+ ; CHECK-LABEL: name: tbuffer_without_mmo_may_hit_scratch
632+ ; CHECK: 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 $exec
633+ ; CHECK-NEXT: S_ENDPGM 0, implicit $vgpr97
634+ 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 $exec
635+ S_ENDPGM 0, implicit $vgpr97
636+ ...
637+
638+ ---
639+ name : buffer_without_mmo_may_hit_scratch
640+ machineFunctionInfo :
641+ isEntryFunction : true
642+ body : |
643+ bb.0:
644+ ; CHECK-LABEL: name: buffer_without_mmo_may_hit_scratch
645+ ; CHECK: BUFFER_ATOMIC_ADD_F32_OFFEN killed renamable $vgpr0, killed renamable $vgpr2, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, implicit $exec
646+ ; CHECK-NEXT: S_ENDPGM 0, implicit $vgpr97
647+ BUFFER_ATOMIC_ADD_F32_OFFEN killed renamable $vgpr0, killed renamable $vgpr2, killed renamable $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, implicit $exec
648+ S_ENDPGM 0, implicit $vgpr97
649+ ...
0 commit comments