Commit 3e6f60b3 by Chris Forbes

Implement OpIAddCarry, OpISubBorrow

Bug: b/126873455 Test: dEQP-VK.*carry* Test: dEQP-VK.*borrow* Change-Id: I2e1ec3cac30bb6abbb305a903bf457da241c8bdc Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/30969Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 90d251aa
...@@ -823,6 +823,8 @@ namespace sw ...@@ -823,6 +823,8 @@ namespace sw
case spv::OpLogicalNotEqual: case spv::OpLogicalNotEqual:
case spv::OpUMulExtended: case spv::OpUMulExtended:
case spv::OpSMulExtended: case spv::OpSMulExtended:
case spv::OpIAddCarry:
case spv::OpISubBorrow:
case spv::OpDot: case spv::OpDot:
case spv::OpConvertFToU: case spv::OpConvertFToU:
case spv::OpConvertFToS: case spv::OpConvertFToS:
...@@ -2376,6 +2378,8 @@ namespace sw ...@@ -2376,6 +2378,8 @@ namespace sw
case spv::OpLogicalNotEqual: case spv::OpLogicalNotEqual:
case spv::OpUMulExtended: case spv::OpUMulExtended:
case spv::OpSMulExtended: case spv::OpSMulExtended:
case spv::OpIAddCarry:
case spv::OpISubBorrow:
return EmitBinaryOp(insn, state); return EmitBinaryOp(insn, state);
case spv::OpDot: case spv::OpDot:
...@@ -3390,6 +3394,14 @@ namespace sw ...@@ -3390,6 +3394,14 @@ namespace sw
dst.move(i, lhs.UInt(i) * rhs.UInt(i)); dst.move(i, lhs.UInt(i) * rhs.UInt(i));
dst.move(i + lhsType.sizeInComponents, MulHigh(lhs.UInt(i), rhs.UInt(i))); dst.move(i + lhsType.sizeInComponents, MulHigh(lhs.UInt(i), rhs.UInt(i)));
break; break;
case spv::OpIAddCarry:
dst.move(i, lhs.UInt(i) + rhs.UInt(i));
dst.move(i + lhsType.sizeInComponents, CmpLT(dst.UInt(i), lhs.UInt(i)) >> 31);
break;
case spv::OpISubBorrow:
dst.move(i, lhs.UInt(i) - rhs.UInt(i));
dst.move(i + lhsType.sizeInComponents, CmpLT(lhs.UInt(i), rhs.UInt(i)) >> 31);
break;
default: default:
UNREACHABLE("%s", OpcodeName(insn.opcode()).c_str()); UNREACHABLE("%s", OpcodeName(insn.opcode()).c_str());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment