1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/CodeGen/AMDGPU/barrier-elimination.ll
Stanislav Mekhanoshin ebf08bfb48 [AMDGPU] Eliminate barrier if workgroup size is not greater than wavefront size
If a workgroup size is known to be not greater than wavefront size
the s_barrier instruction is not needed since all threads are guarantied
to come to the same point at the same time.

Differential Revision: https://reviews.llvm.org/D31731

llvm-svn: 299659
2017-04-06 16:48:30 +00:00

31 lines
809 B
LLVM

; RUN: llc -march=amdgcn < %s | FileCheck %s
; CHECK-LABEL: {{^}}unknown_wgs:
; CHECK: s_barrier
define amdgpu_kernel void @unknown_wgs() {
tail call void @llvm.amdgcn.s.barrier() #0
ret void
}
; CHECK-LABEL: {{^}}flat_wgs_attr_32_128:
; CHECK: s_barrier
define amdgpu_kernel void @flat_wgs_attr_32_128() #1 {
tail call void @llvm.amdgcn.s.barrier() #0
ret void
}
; CHECK-LABEL: {{^}}flat_wgs_attr_32_64:
; CHECK: :
; CHECK-NEXT: ; wave barrier
; CHECK-NEXT: s_endpgm
define amdgpu_kernel void @flat_wgs_attr_32_64() #2 {
tail call void @llvm.amdgcn.s.barrier() #0
ret void
}
declare void @llvm.amdgcn.s.barrier() #0
attributes #0 = { convergent nounwind }
attributes #1 = { nounwind "amdgpu-flat-work-group-size"="32,128" }
attributes #2 = { nounwind "amdgpu-flat-work-group-size"="32,64" }