comparison llvm/test/CodeGen/AMDGPU/llvm.amdgcn.s.barrier.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents 79ff65ed7e25
children
comparison
equal deleted inserted replaced
237:c80f45b162ad 252:1f2b6ac9f198
2 ; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT0 %s 2 ; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT0 %s
3 ; RUN: llc -march=amdgcn -mattr=+auto-waitcnt-before-barrier -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT1 %s 3 ; RUN: llc -march=amdgcn -mattr=+auto-waitcnt-before-barrier -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT1 %s
4 ; RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT2 %s 4 ; RUN: llc -march=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT2 %s
5 ; RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=+auto-waitcnt-before-barrier -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT3 %s 5 ; RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=+auto-waitcnt-before-barrier -verify-machineinstrs < %s | FileCheck --check-prefix=VARIANT3 %s
6 6
7 define amdgpu_kernel void @test_barrier(i32 addrspace(1)* %out, i32 %size) #0 { 7 define amdgpu_kernel void @test_barrier(ptr addrspace(1) %out, i32 %size) #0 {
8 ; VARIANT0-LABEL: test_barrier: 8 ; VARIANT0-LABEL: test_barrier:
9 ; VARIANT0: ; %bb.0: ; %entry 9 ; VARIANT0: ; %bb.0: ; %entry
10 ; VARIANT0-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x9 10 ; VARIANT0-NEXT: s_load_dwordx2 s[4:5], s[0:1], 0x9
11 ; VARIANT0-NEXT: s_load_dword s0, s[0:1], 0xb 11 ; VARIANT0-NEXT: s_load_dword s0, s[0:1], 0xb
12 ; VARIANT0-NEXT: s_mov_b32 s7, 0xf000 12 ; VARIANT0-NEXT: s_mov_b32 s7, 0xf000
85 ; VARIANT3-NEXT: s_waitcnt vmcnt(0) 85 ; VARIANT3-NEXT: s_waitcnt vmcnt(0)
86 ; VARIANT3-NEXT: global_store_dword v2, v0, s[2:3] 86 ; VARIANT3-NEXT: global_store_dword v2, v0, s[2:3]
87 ; VARIANT3-NEXT: s_endpgm 87 ; VARIANT3-NEXT: s_endpgm
88 entry: 88 entry:
89 %tmp = call i32 @llvm.amdgcn.workitem.id.x() 89 %tmp = call i32 @llvm.amdgcn.workitem.id.x()
90 %tmp1 = getelementptr i32, i32 addrspace(1)* %out, i32 %tmp 90 %tmp1 = getelementptr i32, ptr addrspace(1) %out, i32 %tmp
91 store i32 %tmp, i32 addrspace(1)* %tmp1 91 store i32 %tmp, ptr addrspace(1) %tmp1
92 call void @llvm.amdgcn.s.barrier() 92 call void @llvm.amdgcn.s.barrier()
93 %tmp3 = sub i32 %size, 1 93 %tmp3 = sub i32 %size, 1
94 %tmp4 = sub i32 %tmp3, %tmp 94 %tmp4 = sub i32 %tmp3, %tmp
95 %tmp5 = getelementptr i32, i32 addrspace(1)* %out, i32 %tmp4 95 %tmp5 = getelementptr i32, ptr addrspace(1) %out, i32 %tmp4
96 %tmp6 = load i32, i32 addrspace(1)* %tmp5 96 %tmp6 = load i32, ptr addrspace(1) %tmp5
97 store i32 %tmp6, i32 addrspace(1)* %tmp1 97 store i32 %tmp6, ptr addrspace(1) %tmp1
98 ret void 98 ret void
99 } 99 }
100 100
101 declare void @llvm.amdgcn.s.barrier() #1 101 declare void @llvm.amdgcn.s.barrier() #1
102 declare i32 @llvm.amdgcn.workitem.id.x() #2 102 declare i32 @llvm.amdgcn.workitem.id.x() #2