[spirv-reader] Add LogicalEqual LogicalNotEqual
Bug: tint:3
Change-Id: I4925ccf555ea7d0dadcafeb539317a00b1a4b92f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/20242
Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/src/reader/spirv/function.cc b/src/reader/spirv/function.cc
index 5dd261a..e779227 100644
--- a/src/reader/spirv/function.cc
+++ b/src/reader/spirv/function.cc
@@ -91,9 +91,11 @@
return ast::BinaryOp::kShiftRight;
case SpvOpShiftRightArithmetic:
return ast::BinaryOp::kShiftRightArith;
+ case SpvOpLogicalEqual:
case SpvOpIEqual:
case SpvOpFOrdEqual:
return ast::BinaryOp::kEqual;
+ case SpvOpLogicalNotEqual:
case SpvOpINotEqual:
case SpvOpFOrdNotEqual:
return ast::BinaryOp::kNotEqual;
diff --git a/src/reader/spirv/function_logical_test.cc b/src/reader/spirv/function_logical_test.cc
index 5778396..001a551 100644
--- a/src/reader/spirv/function_logical_test.cc
+++ b/src/reader/spirv/function_logical_test.cc
@@ -189,7 +189,6 @@
<< ToString(fe.ast_body());
}
-
struct BinaryData {
const std::string res_type;
const std::string lhs;
@@ -322,13 +321,33 @@
AstFor("v2bool_t_f"), "logical_or",
AstFor("v2bool_f_t")}));
+INSTANTIATE_TEST_SUITE_P(
+ SpvParserTest_LogicalEqual,
+ SpvBinaryLogicalTest,
+ ::testing::Values(BinaryData{"bool", "true", "OpLogicalEqual", "false",
+ "__bool", "ScalarConstructor{true}", "equal",
+ "ScalarConstructor{false}"},
+ BinaryData{"v2bool", "v2bool_t_f", "OpLogicalEqual",
+ "v2bool_f_t", "__vec_2__bool",
+ AstFor("v2bool_t_f"), "equal",
+ AstFor("v2bool_f_t")}));
+
+INSTANTIATE_TEST_SUITE_P(
+ SpvParserTest_LogicalNotEqual,
+ SpvBinaryLogicalTest,
+ ::testing::Values(BinaryData{"bool", "true", "OpLogicalNotEqual", "false",
+ "__bool", "ScalarConstructor{true}",
+ "not_equal", "ScalarConstructor{false}"},
+ BinaryData{"v2bool", "v2bool_t_f", "OpLogicalNotEqual",
+ "v2bool_f_t", "__vec_2__bool",
+ AstFor("v2bool_t_f"), "not_equal",
+ AstFor("v2bool_f_t")}));
+
// TODO(dneto): OpAny
// TODO(dneto): OpAll
// TODO(dneto): OpIsNan
// TODO(dneto): OpIsInf
// TODO(dneto): Kernel-guarded instructions.
-// TODO(dneto): OpLogicalEqual
-// TODO(dneto): OpLogicalNotEqual
// TODO(dneto): OpSelect
// TODO(dneto): OpUGreaterThan
// TODO(dneto): OpSGreaterThan