brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · db18d54 Raw
101 lines · plain
1# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -run-pass=none %s -o - | FileCheck --check-prefix=GCN %s2 3--- |4  ; ModuleID = '<stdin>'5  source_filename = "<stdin>"6  target datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64"7  target triple = "amdgcn-amd-amdhsa"8 9  define void @syncscopes(i32 %agent, ptr addrspace(4) %agent_out, i32 %workgroup, ptr addrspace(4) %workgroup_out, i32 %wavefront, ptr addrspace(4) %wavefront_out) #0 {10  entry:11    store atomic i32 %agent, ptr addrspace(4) %agent_out syncscope("agent") seq_cst, align 4, !nontemporal !012    store atomic i32 %workgroup, ptr addrspace(4) %workgroup_out syncscope("workgroup") seq_cst, align 4, !nontemporal !013    store atomic i32 %wavefront, ptr addrspace(4) %wavefront_out syncscope("wavefront") seq_cst, align 4, !nontemporal !014    ret void15  }16 17  ; Function Attrs: convergent nounwind18  declare { i1, i64 } @llvm.amdgcn.if(i1) #119 20  ; Function Attrs: convergent nounwind21  declare { i1, i64 } @llvm.amdgcn.else(i64) #122 23  ; Function Attrs: convergent nounwind readnone24  declare i64 @llvm.amdgcn.break(i64) #225 26  ; Function Attrs: convergent nounwind readnone27  declare i64 @llvm.amdgcn.if.break(i1, i64) #228 29  ; Function Attrs: convergent nounwind readnone30  declare i64 @llvm.amdgcn.else.break(i64, i64) #231 32  ; Function Attrs: convergent nounwind33  declare i1 @llvm.amdgcn.loop(i64) #134 35  ; Function Attrs: convergent nounwind36  declare void @llvm.amdgcn.end.cf(i64) #137 38  attributes #0 = { "target-cpu"="gfx803" }39  attributes #1 = { convergent nounwind }40  attributes #2 = { convergent nounwind readnone }41 42  !0 = !{i32 1}43 44# GCN-LABEL: name: syncscopes45# GCN: FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("agent") seq_cst (s32) into %ir.agent_out, addrspace 4)46# GCN: FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("workgroup") seq_cst (s32) into %ir.workgroup_out, addrspace 4)47# GCN: FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("wavefront") seq_cst (s32) into %ir.wavefront_out, addrspace 4)48...49---50name:            syncscopes51alignment:       152exposesReturnsTwice: false53legalized:       false54regBankSelected: false55selected:        false56tracksRegLiveness: true57liveins:58  - { reg: '$sgpr4_sgpr5' }59frameInfo:60  isFrameAddressTaken: false61  isReturnAddressTaken: false62  hasStackMap:     false63  hasPatchPoint:   false64  stackSize:       065  offsetAdjustment: 066  maxAlignment:    067  adjustsStack:    false68  hasCalls:        false69  hasOpaqueSPAdjustment: false70  hasVAStart:      false71  hasMustTailInVarArgFunc: false72body:             |73  bb.0.entry:74    liveins: $sgpr4_sgpr575 76    S_WAITCNT 077    $sgpr0_sgpr1 = S_LOAD_DWORDX2_IMM $sgpr4_sgpr5, 8, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)78    $sgpr6 = S_LOAD_DWORD_IMM $sgpr4_sgpr5, 0, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`)79    $sgpr2_sgpr3 = S_LOAD_DWORDX2_IMM $sgpr4_sgpr5, 24, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)80    $sgpr7 = S_LOAD_DWORD_IMM $sgpr4_sgpr5, 16, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`)81    $sgpr8 = S_LOAD_DWORD_IMM $sgpr4_sgpr5, 32, 0 :: (non-temporal dereferenceable invariant load (s32) from `ptr addrspace(4) poison`)82    S_WAITCNT 12783    $vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr0_sgpr184    $sgpr4_sgpr5 = S_LOAD_DWORDX2_IMM killed $sgpr4_sgpr5, 40, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)85    $vgpr1 = V_MOV_B32_e32 killed $sgpr1, implicit $exec, implicit killed $sgpr0_sgpr1, implicit $sgpr0_sgpr1, implicit $exec86    $vgpr2 = V_MOV_B32_e32 killed $sgpr6, implicit $exec, implicit $exec87    FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("agent") seq_cst (s32) into %ir.agent_out)88    S_WAITCNT 11289    $vgpr0 = V_MOV_B32_e32 $sgpr2, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr2_sgpr390    $vgpr1 = V_MOV_B32_e32 killed $sgpr3, implicit $exec, implicit killed $sgpr2_sgpr3, implicit $sgpr2_sgpr3, implicit $exec91    $vgpr2 = V_MOV_B32_e32 killed $sgpr7, implicit $exec, implicit $exec92    FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("workgroup") seq_cst (s32) into %ir.workgroup_out)93    S_WAITCNT 11294    $vgpr0 = V_MOV_B32_e32 $sgpr4, implicit $exec, implicit-def $vgpr0_vgpr1, implicit $sgpr4_sgpr595    $vgpr1 = V_MOV_B32_e32 killed $sgpr5, implicit $exec, implicit killed $sgpr4_sgpr5, implicit $sgpr4_sgpr5, implicit $exec96    $vgpr2 = V_MOV_B32_e32 killed $sgpr8, implicit $exec, implicit $exec97    FLAT_STORE_DWORD killed $vgpr0_vgpr1, killed $vgpr2, 0, 19, implicit $exec, implicit $flat_scr :: (volatile non-temporal store syncscope("wavefront") seq_cst (s32) into %ir.wavefront_out)98    S_ENDPGM 099 100...101