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