; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-vulkan-unknown %s -o - | FileCheck %s ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-unknown %s -o - -filetype=obj | spirv-val %} ; Test lowering to spir-v backend define noundef i32 @wave_prefix_count_bits(i1 noundef %expr) { entry: ; CHECK: %[[UINT:.*]] = OpTypeInt 32 0 ; CHECK: %[[UINT4:.*]] = OpTypeVector %[[UINT]] 4 ; CHECK: %[[UINT3:.*]] = OpConstant %[[UINT]] 3 ; CHECK: %[[INPUTREG:.*]] = OpFunctionParameter ; CHECK: %[[BALLOTRESULT:.*]] = OpGroupNonUniformBallot %[[UINT4]] %[[UINT3]] %[[INPUTREG]] ; CHECK: %[[RET:.*]] = OpGroupNonUniformBallotBitCount %[[UINT]] %[[UINT3]] ExclusiveScan %[[BALLOTRESULT]] %ret = call i32 @llvm.spv.subgroup.prefix.bit.count(i1 %expr) ; CHECK: OpReturnValue %[[RET]] ret i32 %ret }