|
| 1 | +# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 |
1 | 2 | # RUN: llc -mtriple=amdgcn -mcpu=gfx803 -run-pass si-memory-legalizer %s -o - | FileCheck -check-prefix=GCN %s
|
2 | 3 |
|
3 | 4 | ---
|
4 | 5 |
|
5 |
| -# GCN-LABEL: name: multiple_mem_operands |
6 | 6 |
|
7 |
| -# GCN-LABEL: bb.3: |
8 |
| -# GCN: S_WAITCNT_soft 3952 |
9 |
| -# GCN-NEXT: BUFFER_LOAD_DWORD_OFFEN |
10 |
| -# GCN-NEXT: S_WAITCNT_soft 3952 |
11 |
| -# GCN-NEXT: BUFFER_WBINVL1_VOL |
12 | 7 |
|
13 | 8 | name: multiple_mem_operands
|
14 | 9 | body: |
|
| 10 | + ; GCN-LABEL: name: multiple_mem_operands |
| 11 | + ; GCN: bb.0.entry: |
| 12 | + ; GCN-NEXT: successors: %bb.2(0x30000000), %bb.1(0x50000000) |
| 13 | + ; GCN-NEXT: liveins: $sgpr0_sgpr1, $sgpr3 |
| 14 | + ; GCN-NEXT: {{ $}} |
| 15 | + ; GCN-NEXT: $sgpr2 = S_LOAD_DWORD_IMM $sgpr0_sgpr1, 44, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`, addrspace 4) |
| 16 | + ; GCN-NEXT: $sgpr8 = S_MOV_B32 &SCRATCH_RSRC_DWORD0, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11 |
| 17 | + ; GCN-NEXT: $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM $sgpr0_sgpr1, 36, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`, addrspace 4) |
| 18 | + ; GCN-NEXT: $sgpr9 = S_MOV_B32 &SCRATCH_RSRC_DWORD1, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11 |
| 19 | + ; GCN-NEXT: $sgpr10 = S_MOV_B32 4294967295, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11 |
| 20 | + ; GCN-NEXT: $sgpr11 = S_MOV_B32 15204352, implicit-def $sgpr8_sgpr9_sgpr10_sgpr11 |
| 21 | + ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 1, implicit $exec |
| 22 | + ; GCN-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 4, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(5) poison`, addrspace 5) |
| 23 | + ; GCN-NEXT: S_WAITCNT 127 |
| 24 | + ; GCN-NEXT: S_CMP_LG_U32 killed $sgpr2, 0, implicit-def $scc |
| 25 | + ; GCN-NEXT: S_WAITCNT 3855 |
| 26 | + ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 2, implicit $exec |
| 27 | + ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 32772, implicit $exec |
| 28 | + ; GCN-NEXT: BUFFER_STORE_DWORD_OFFEN killed $vgpr0, killed $vgpr1, $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(5) poison`, addrspace 5) |
| 29 | + ; GCN-NEXT: S_CBRANCH_SCC0 %bb.2, implicit killed $scc |
| 30 | + ; GCN-NEXT: {{ $}} |
| 31 | + ; GCN-NEXT: bb.1: |
| 32 | + ; GCN-NEXT: successors: %bb.3(0x80000000) |
| 33 | + ; GCN-NEXT: liveins: $sgpr0_sgpr1, $sgpr4_sgpr5, $sgpr3, $sgpr8_sgpr9_sgpr10_sgpr11 |
| 34 | + ; GCN-NEXT: {{ $}} |
| 35 | + ; GCN-NEXT: $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 52, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`, addrspace 4) |
| 36 | + ; GCN-NEXT: S_WAITCNT 3855 |
| 37 | + ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 32772, implicit $exec |
| 38 | + ; GCN-NEXT: S_BRANCH %bb.3 |
| 39 | + ; GCN-NEXT: {{ $}} |
| 40 | + ; GCN-NEXT: bb.2: |
| 41 | + ; GCN-NEXT: successors: %bb.3(0x80000000) |
| 42 | + ; GCN-NEXT: liveins: $sgpr0_sgpr1, $sgpr4_sgpr5, $sgpr3, $sgpr8_sgpr9_sgpr10_sgpr11 |
| 43 | + ; GCN-NEXT: {{ $}} |
| 44 | + ; GCN-NEXT: $sgpr0 = S_LOAD_DWORD_IMM killed $sgpr0_sgpr1, 48, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`, addrspace 4) |
| 45 | + ; GCN-NEXT: S_WAITCNT 3855 |
| 46 | + ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 4, implicit $exec |
| 47 | + ; GCN-NEXT: {{ $}} |
| 48 | + ; GCN-NEXT: bb.3: |
| 49 | + ; GCN-NEXT: liveins: $sgpr3, $sgpr4_sgpr5, $sgpr8_sgpr9_sgpr10_sgpr11, $vgpr0, $sgpr0 |
| 50 | + ; GCN-NEXT: {{ $}} |
| 51 | + ; GCN-NEXT: S_WAITCNT 127 |
| 52 | + ; GCN-NEXT: $sgpr0 = S_LSHL_B32 killed $sgpr0, 2, implicit-def dead $scc |
| 53 | + ; GCN-NEXT: $vgpr0 = V_ADD_CO_U32_e32 killed $sgpr0, killed $vgpr0, implicit-def dead $vcc, implicit $exec |
| 54 | + ; GCN-NEXT: S_WAITCNT_soft 3952 |
| 55 | + ; GCN-NEXT: $vgpr0 = BUFFER_LOAD_DWORD_OFFEN killed $vgpr0, killed $sgpr8_sgpr9_sgpr10_sgpr11, $sgpr3, 0, 1, 0, implicit $exec :: (load syncscope("agent-one-as") unordered (s32) from `ptr addrspace(1) poison`, addrspace 1), (load syncscope("workgroup-one-as") seq_cst (s32) from `ptr addrspace(5) poison`, addrspace 5) |
| 56 | + ; GCN-NEXT: S_WAITCNT_soft 3952 |
| 57 | + ; GCN-NEXT: BUFFER_WBINVL1_VOL implicit $exec |
| 58 | + ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr1_vgpr2, implicit $sgpr4_sgpr5 |
| 59 | + ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr5, implicit $exec, implicit $sgpr4_sgpr5, implicit $exec |
| 60 | + ; GCN-NEXT: S_WAITCNT 3952 |
| 61 | + ; GCN-NEXT: FLAT_STORE_DWORD killed $vgpr1_vgpr2, killed $vgpr0, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1) |
| 62 | + ; GCN-NEXT: S_ENDPGM 0 |
15 | 63 | bb.0.entry:
|
16 | 64 | successors: %bb.1(0x30000000), %bb.2(0x50000000)
|
17 | 65 | liveins: $sgpr0_sgpr1, $sgpr3
|
|
0 commit comments