[spirv-reader] Add FSub

Bug: tint:3
Change-Id: I6e79e19bf5feb9e0223d770f718a0d0bd9b5b147
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/19501
Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index 64256a0..d035867 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -42,6 +42,8 @@
     case SpvOpIAdd:
     case SpvOpFAdd:
       return ast::BinaryOp::kAdd;
+    case SpvOpFSub:
+      return ast::BinaryOp::kSubtract;
     default:
       break;
   }
diff --git a/src/reader/spirv/function_arithmetic_test.cc b/src/reader/spirv/function_arithmetic_test.cc
index 487dea3..25e948f 100644
--- a/src/reader/spirv/function_arithmetic_test.cc
+++ b/src/reader/spirv/function_arithmetic_test.cc
@@ -200,6 +200,20 @@
                    "__vec_2__f32", AstFor("v2float_50_60"), "add",
                    AstFor("v2float_60_50")}));
 
+INSTANTIATE_TEST_SUITE_P(
+    SpvParserTest_FSub,
+    SpvBinaryTest,
+    ::testing::Values(
+        // Scalar float
+        BinaryData{"float", "float_50", "OpFSub", "float_60", "__f32",
+                   "ScalarConstructor{50.000000}", "subtract",
+                   "ScalarConstructor{60.000000}"},
+        // Vector float
+        BinaryData{"v2float", "v2float_50_60", "OpFSub", "v2float_60_50",
+                   "__vec_2__f32", AstFor("v2float_50_60"), "subtract",
+                   AstFor("v2float_60_50")}));
+
+
 }  // namespace
 }  // namespace spirv
 }  // namespace reader