55 lines · plain
1; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; CHECK-DAG: OpName %[[#GetScope:]] "_Z8getScopev"5; CHECK-DAG: %[[#Long:]] = OpTypeInt 32 06; CHECK-DAG: %[[#WrkGrpConst2:]] = OpConstant %[[#Long]] 27; CHECK-DAG: %[[#ScopeAllSvmDevices:]] = OpConstantNull %[[#Long]]8; CHECK-DAG: %[[#InvocationConst4:]] = OpConstant %[[#Long]] 49; CHECK-DAG: %[[#Const8:]] = OpConstant %[[#Long]] 810; CHECK-DAG: %[[#Const16:]] = OpConstant %[[#Long]] 1611; CHECK-DAG: %[[#Const3:]] = OpConstant %[[#Long]] 312; CHECK-DAG: %[[#Const912:]] = OpConstant %[[#Long]] 91213; CHECK: OpMemoryBarrier %[[#ScopeAllSvmDevices]] %[[#WrkGrpConst2]]14; CHECK: OpMemoryBarrier %[[#ScopeAllSvmDevices]] %[[#InvocationConst4]]15; CHECK: OpMemoryBarrier %[[#ScopeAllSvmDevices]] %[[#Const8]]16; CHECK: OpMemoryBarrier %[[#InvocationConst4]] %[[#Const16]]17; CHECK: OpMemoryBarrier %[[#WrkGrpConst2]] %[[#InvocationConst4]]18; CHECK: OpFunctionEnd19; CHECK: %[[#ScopeId:]] = OpFunctionCall %[[#Long]] %[[#GetScope]]20; CHECK: OpControlBarrier %[[#Const3]] %[[#ScopeId:]] %[[#Const912]]21 22define spir_kernel void @fence_test_kernel1(ptr addrspace(1) noalias %s.ascast) {23 fence acquire24 ret void25}26 27define spir_kernel void @fence_test_kernel2(ptr addrspace(1) noalias %s.ascast) {28 fence release29 ret void30}31 32define spir_kernel void @fence_test_kernel3(ptr addrspace(1) noalias %s.ascast) {33 fence acq_rel34 ret void35}36 37define spir_kernel void @fence_test_kernel4(ptr addrspace(1) noalias %s.ascast) {38 fence syncscope("singlethread") seq_cst39 ret void40}41 42define spir_kernel void @fence_test_kernel5(ptr addrspace(1) noalias %s.ascast) {43 fence syncscope("workgroup") release44 ret void45}46 47define spir_func void @barrier_test1() {48 %scope = call noundef i32 @_Z8getScopev()49 call void @_Z22__spirv_ControlBarrieriii(i32 noundef 3, i32 noundef %scope, i32 noundef 912)50 ret void51}52 53declare spir_func void @_Z22__spirv_ControlBarrieriii(i32 noundef, i32 noundef, i32 noundef)54declare spir_func i32 @_Z8getScopev()55