diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index d691c21..6860e15 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -42,10 +42,14 @@
     case SpvOpIAdd:
     case SpvOpFAdd:
       return ast::BinaryOp::kAdd;
+    case SpvOpISub:
     case SpvOpFSub:
       return ast::BinaryOp::kSubtract;
+    case SpvOpIMul:
     case SpvOpFMul:
       return ast::BinaryOp::kMultiply;
+    case SpvOpUDiv:
+    case SpvOpSDiv:
     case SpvOpFDiv:
       return ast::BinaryOp::kDivide;
     case SpvOpShiftLeftLogical:
diff --git a/src/reader/spirv/function_arithmetic_test.cc b/src/reader/spirv/function_arithmetic_test.cc
index 665274b..7f1e62c 100644
--- a/src/reader/spirv/function_arithmetic_test.cc
+++ b/src/reader/spirv/function_arithmetic_test.cc
@@ -201,6 +201,43 @@
                    AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
+    SpvParserTest_ISub,
+    SpvBinaryTest,
+    ::testing::Values(
+        // Both uint
+        BinaryData{"uint", "uint_10", "OpISub", "uint_20", "__u32",
+                   "ScalarConstructor{10}", "subtract",
+                   "ScalarConstructor{20}"},
+        // Both int
+        BinaryData{"int", "int_30", "OpISub", "int_40", "__i32",
+                   "ScalarConstructor{30}", "subtract",
+                   "ScalarConstructor{40}"},
+        // Mixed, returning uint
+        BinaryData{"uint", "int_30", "OpISub", "uint_10", "__u32",
+                   "ScalarConstructor{30}", "subtract",
+                   "ScalarConstructor{10}"},
+        // Mixed, returning int
+        BinaryData{"int", "int_30", "OpISub", "uint_10", "__i32",
+                   "ScalarConstructor{30}", "subtract",
+                   "ScalarConstructor{10}"},
+        // Both v2uint
+        BinaryData{"v2uint", "v2uint_10_20", "OpISub", "v2uint_20_10",
+                   "__vec_2__u32", AstFor("v2uint_10_20"), "subtract",
+                   AstFor("v2uint_20_10")},
+        // Both v2int
+        BinaryData{"v2int", "v2int_30_40", "OpISub", "v2int_40_30",
+                   "__vec_2__i32", AstFor("v2int_30_40"), "subtract",
+                   AstFor("v2int_40_30")},
+        // Mixed, returning v2uint
+        BinaryData{"v2uint", "v2int_30_40", "OpISub", "v2uint_10_20",
+                   "__vec_2__u32", AstFor("v2int_30_40"), "subtract",
+                   AstFor("v2uint_10_20")},
+        // Mixed, returning v2int
+        BinaryData{"v2int", "v2int_40_30", "OpISub", "v2uint_20_10",
+                   "__vec_2__i32", AstFor("v2int_40_30"), "subtract",
+                   AstFor("v2uint_20_10")}));
+
+INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FSub,
     SpvBinaryTest,
     ::testing::Values(
@@ -214,6 +251,43 @@
                    AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
+    SpvParserTest_IMul,
+    SpvBinaryTest,
+    ::testing::Values(
+        // Both uint
+        BinaryData{"uint", "uint_10", "OpIMul", "uint_20", "__u32",
+                   "ScalarConstructor{10}", "multiply",
+                   "ScalarConstructor{20}"},
+        // Both int
+        BinaryData{"int", "int_30", "OpIMul", "int_40", "__i32",
+                   "ScalarConstructor{30}", "multiply",
+                   "ScalarConstructor{40}"},
+        // Mixed, returning uint
+        BinaryData{"uint", "int_30", "OpIMul", "uint_10", "__u32",
+                   "ScalarConstructor{30}", "multiply",
+                   "ScalarConstructor{10}"},
+        // Mixed, returning int
+        BinaryData{"int", "int_30", "OpIMul", "uint_10", "__i32",
+                   "ScalarConstructor{30}", "multiply",
+                   "ScalarConstructor{10}"},
+        // Both v2uint
+        BinaryData{"v2uint", "v2uint_10_20", "OpIMul", "v2uint_20_10",
+                   "__vec_2__u32", AstFor("v2uint_10_20"), "multiply",
+                   AstFor("v2uint_20_10")},
+        // Both v2int
+        BinaryData{"v2int", "v2int_30_40", "OpIMul", "v2int_40_30",
+                   "__vec_2__i32", AstFor("v2int_30_40"), "multiply",
+                   AstFor("v2int_40_30")},
+        // Mixed, returning v2uint
+        BinaryData{"v2uint", "v2int_30_40", "OpIMul", "v2uint_10_20",
+                   "__vec_2__u32", AstFor("v2int_30_40"), "multiply",
+                   AstFor("v2uint_10_20")},
+        // Mixed, returning v2int
+        BinaryData{"v2int", "v2int_40_30", "OpIMul", "v2uint_20_10",
+                   "__vec_2__i32", AstFor("v2int_40_30"), "multiply",
+                   AstFor("v2uint_20_10")}));
+
+INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FMul,
     SpvBinaryTest,
     ::testing::Values(
@@ -227,6 +301,30 @@
                    AstFor("v2float_60_50")}));
 
 INSTANTIATE_TEST_SUITE_P(
+    SpvParserTest_UDiv,
+    SpvBinaryTest,
+    ::testing::Values(
+        // Both uint
+        BinaryData{"uint", "uint_10", "OpUDiv", "uint_20", "__u32",
+                   "ScalarConstructor{10}", "divide", "ScalarConstructor{20}"},
+        // Both v2uint
+        BinaryData{"v2uint", "v2uint_10_20", "OpUDiv", "v2uint_20_10",
+                   "__vec_2__u32", AstFor("v2uint_10_20"), "divide",
+                   AstFor("v2uint_20_10")}));
+
+INSTANTIATE_TEST_SUITE_P(
+    SpvParserTest_SDiv,
+    SpvBinaryTest,
+    ::testing::Values(
+        // Both int
+        BinaryData{"int", "int_30", "OpSDiv", "int_40", "__i32",
+                   "ScalarConstructor{30}", "divide", "ScalarConstructor{40}"},
+        // Both v2int
+        BinaryData{"v2int", "v2int_30_40", "OpSDiv", "v2int_40_30",
+                   "__vec_2__i32", AstFor("v2int_30_40"), "divide",
+                   AstFor("v2int_40_30")}));
+
+INSTANTIATE_TEST_SUITE_P(
     SpvParserTest_FDiv,
     SpvBinaryTest,
     ::testing::Values(
