use crate::spirv;
pub fn is_location_debug(opcode: spirv::Op) -> bool {
matches!(opcode, spirv::Op::Line | spirv::Op::NoLine)
}
pub fn is_variable(opcode: spirv::Op) -> bool {
opcode == spirv::Op::Variable
}
pub fn is_return(opcode: spirv::Op) -> bool {
matches!(opcode, spirv::Op::Return | spirv::Op::ReturnValue)
}
pub fn is_abort(opcode: spirv::Op) -> bool {
matches!(
opcode,
spirv::Op::Kill
| spirv::Op::TerminateInvocation
| spirv::Op::TerminateRayKHR
| spirv::Op::IgnoreIntersectionKHR
| spirv::Op::EmitMeshTasksEXT
| spirv::Op::Unreachable
)
}
pub fn is_return_or_abort(opcode: spirv::Op) -> bool {
is_return(opcode) || is_abort(opcode)
}
pub fn is_branch(opcode: spirv::Op) -> bool {
matches!(
opcode,
spirv::Op::Branch | spirv::Op::BranchConditional | spirv::Op::Switch
)
}
pub fn is_block_terminator(opcode: spirv::Op) -> bool {
is_branch(opcode) || is_return_or_abort(opcode)
}