diff --git a/include/sirit/sirit.h b/include/sirit/sirit.h index f314c11..bdd42c6 100644 --- a/include/sirit/sirit.h +++ b/include/sirit/sirit.h @@ -672,6 +672,12 @@ public: /// Floating-point multiplication of Operand 1 and Operand 2. Id OpFMul(Id result_type, Id operand_1, Id operand_2); + /// Full signed interger multiplication of Operand 1 and Operand 2. + Id OpSMulExtended(Id result_type, Id operand_1, Id operand_2); + + /// Full unsigned interger multiplication of Operand 1 and Operand 2. + Id OpUMulExtended(Id result_type, Id operand_1, Id operand_2); + /// Unsigned-integer division of Operand 1 divided by Operand 2. Id OpUDiv(Id result_type, Id operand_1, Id operand_2); diff --git a/src/instructions/arithmetic.cpp b/src/instructions/arithmetic.cpp index ab62177..04963e1 100644 --- a/src/instructions/arithmetic.cpp +++ b/src/instructions/arithmetic.cpp @@ -30,6 +30,8 @@ DEFINE_BINARY(OpFAdd, spv::Op::OpFAdd) DEFINE_BINARY(OpISub, spv::Op::OpISub) DEFINE_BINARY(OpFSub, spv::Op::OpFSub) DEFINE_BINARY(OpIMul, spv::Op::OpIMul) +DEFINE_BINARY(OpUMulExtended, spv::Op::OpUMulExtended) +DEFINE_BINARY(OpSMulExtended, spv::Op::OpSMulExtended) DEFINE_BINARY(OpFMul, spv::Op::OpFMul) DEFINE_BINARY(OpUDiv, spv::Op::OpUDiv) DEFINE_BINARY(OpSDiv, spv::Op::OpSDiv)