[spirv-reader] Add FOrdEqual, FOrdNotEqual
Unordered equality and inequality is not yet in WGSL
https://github.com/gpuweb/gpuweb/issues/706
Bug: tint:3
Change-Id: I45761ee490829f180110c578283bf136a185de9f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/19563
Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index ae9b9ad..d691c21 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -55,8 +55,10 @@
case SpvOpShiftRightArithmetic:
return ast::BinaryOp::kShiftRightArith;
case SpvOpIEqual:
+ case SpvOpFOrdEqual:
return ast::BinaryOp::kEqual;
case SpvOpINotEqual:
+ case SpvOpFOrdNotEqual:
return ast::BinaryOp::kNotEqual;
case SpvOpBitwiseAnd:
return ast::BinaryOp::kAnd;
diff --git a/src/reader/spirv/function_logical_test.cc b/src/reader/spirv/function_logical_test.cc
index 4973ae9..7f58959 100644
--- a/src/reader/spirv/function_logical_test.cc
+++ b/src/reader/spirv/function_logical_test.cc
@@ -196,6 +196,17 @@
AstFor("v2int_40_30")}));
INSTANTIATE_TEST_SUITE_P(
+ SpvParserTest_FOrdEqual,
+ SpvBinaryLogicalTest,
+ ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdEqual", "float_60",
+ "__bool", "ScalarConstructor{50.000000}",
+ "equal", "ScalarConstructor{60.000000}"},
+ BinaryData{"v2bool", "v2float_50_60", "OpFOrdEqual",
+ "v2float_60_50", "__vec_2__bool",
+ AstFor("v2float_50_60"), "equal",
+ AstFor("v2float_60_50")}));
+
+INSTANTIATE_TEST_SUITE_P(
SpvParserTest_INotEqual,
SpvBinaryLogicalTest,
::testing::Values(
@@ -217,6 +228,18 @@
AstFor("v2int_40_30")}));
INSTANTIATE_TEST_SUITE_P(
+ SpvParserTest_FOrdNotEqual,
+ SpvBinaryLogicalTest,
+ ::testing::Values(BinaryData{"bool", "float_50", "OpFOrdNotEqual",
+ "float_60", "__bool",
+ "ScalarConstructor{50.000000}", "not_equal",
+ "ScalarConstructor{60.000000}"},
+ BinaryData{"v2bool", "v2float_50_60", "OpFOrdNotEqual",
+ "v2float_60_50", "__vec_2__bool",
+ AstFor("v2float_50_60"), "not_equal",
+ AstFor("v2float_60_50")}));
+
+INSTANTIATE_TEST_SUITE_P(
SpvParserTest_LogicalAnd,
SpvBinaryLogicalTest,
::testing::Values(BinaryData{"bool", "true", "OpLogicalAnd", "false",