The wave barrier represents the discardable barrier. Its main purpose is to carry convergent attribute, thus preventing illegal CFG optimizations. All lanes in a wave come to convergence point simultaneously with SIMT, thus no special instruction is needed in the ISA. The barrier is discarded during code generation. Differential Revision: https://reviews.llvm.org/D26585 llvm-svn: 287007
17 lines
387 B
LLVM
17 lines
387 B
LLVM
; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
|
|
|
|
; GCN-LABEL: {{^}}test_wave_barrier:
|
|
; GCN-DAG: ; wave barrier
|
|
; GCN-NOT: s_barrier
|
|
|
|
define void @test_wave_barrier() #0 {
|
|
entry:
|
|
call void @llvm.amdgcn.wave.barrier() #1
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.amdgcn.wave.barrier() #1
|
|
|
|
attributes #0 = { nounwind }
|
|
attributes #1 = { convergent nounwind }
|