Index: mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp =================================================================== --- mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp +++ mlir/lib/Dialect/SPIRV/Serialization/Deserializer.cpp @@ -1558,10 +1558,10 @@ if (operands.size() < 2) { return emitError( unknownLoc, - "OpLoopMerge must specify merge target and selection control"); + "OpSelectionMerge must specify merge target and selection control"); } - if (static_cast(spirv::LoopControl::None) != operands[1]) { + if (static_cast(spirv::SelectionControl::None) != operands[1]) { return emitError(unknownLoc, "unimplmented OpSelectionMerge selection control: ") << operands[2]; Index: mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp =================================================================== --- mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp +++ mlir/lib/Dialect/SPIRV/Serialization/Serializer.cpp @@ -1448,13 +1448,13 @@ auto mergeID = getBlockID(mergeBlock); // Emit the selection header block, which dominates all other blocks, first. - // We need to emit an OpSelectionMerge instruction before the loop header + // We need to emit an OpSelectionMerge instruction before the selection header // block's terminator. auto emitSelectionMerge = [&]() { - // TODO(antiagainst): properly support loop control here + // TODO(antiagainst): properly support selection control here encodeInstructionInto( functionBody, spirv::Opcode::OpSelectionMerge, - {mergeID, static_cast(spirv::LoopControl::None)}); + {mergeID, static_cast(spirv::SelectionControl::None)}); }; // For structured selection, we cannot have blocks in the selection construct // branching to the selection header block. Entering the selection (and