Home | History | Annotate | Download | only in AMDGPU
      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 
     13 name:            multiple_mem_operands
     14 body:             |
     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