diff options
-rw-r--r-- | src/sksl/SkSLSPIRVCodeGenerator.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp index 1cbd1274fc..00ab25cf0a 100644 --- a/src/sksl/SkSLSPIRVCodeGenerator.cpp +++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp @@ -2188,6 +2188,9 @@ SpvId SPIRVCodeGenerator::writeBinaryExpression(const BinaryExpression& b, Outpu case Token::SLASH: return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFDiv, SpvOpSDiv, SpvOpUDiv, SpvOpUndef, out); + case Token::PERCENT: + return this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFMod, + SpvOpSMod, SpvOpUMod, SpvOpUndef, out); case Token::PLUSEQ: { SpvId result = this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFAdd, SpvOpIAdd, SpvOpIAdd, SpvOpUndef, out); @@ -2226,6 +2229,13 @@ SpvId SPIRVCodeGenerator::writeBinaryExpression(const BinaryExpression& b, Outpu lvalue->store(result, out); return result; } + case Token::PERCENTEQ: { + SpvId result = this->writeBinaryOperation(resultType, *operandType, lhs, rhs, SpvOpFMod, + SpvOpSMod, SpvOpUMod, SpvOpUndef, out); + ASSERT(lvalue); + lvalue->store(result, out); + return result; + } default: // FIXME: missing support for some operators (bitwise, &&=, ||=, shift...) ABORT("unsupported binary expression: %s", b.description().c_str()); |