[spirv-reader] Add logical and, logical or

Bug: tint:3
Change-Id: Ia2bde9644a8e3cdd5871570354a380f968760711
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/19562
Reviewed-by: dan sinclair <dsinclair@google.com>
This commit is contained in:
David Neto 2020-04-15 13:58:17 +00:00 committed by dan sinclair
parent fae8368dfe
commit da0a4e9c91
2 changed files with 28 additions and 0 deletions

View File

@ -64,6 +64,10 @@ ast::BinaryOp ConvertBinaryOp(SpvOp opcode) {
return ast::BinaryOp::kOr;
case SpvOpBitwiseXor:
return ast::BinaryOp::kXor;
case SpvOpLogicalAnd:
return ast::BinaryOp::kLogicalAnd;
case SpvOpLogicalOr:
return ast::BinaryOp::kLogicalOr;
default:
break;
}

View File

@ -57,6 +57,8 @@ std::string CommonTypes() {
%v2int = OpTypeVector %int 2
%v2float = OpTypeVector %float 2
%v2bool_t_f = OpConstantComposite %v2bool %true %false
%v2bool_f_t = OpConstantComposite %v2bool %false %true
%v2uint_10_20 = OpConstantComposite %v2uint %uint_10 %uint_20
%v2uint_20_10 = OpConstantComposite %v2uint %uint_20 %uint_10
%v2int_30_40 = OpConstantComposite %v2int %int_30 %int_40
@ -214,6 +216,28 @@ INSTANTIATE_TEST_SUITE_P(
"__vec_2__bool", AstFor("v2int_30_40"), "not_equal",
AstFor("v2int_40_30")}));
INSTANTIATE_TEST_SUITE_P(
SpvParserTest_LogicalAnd,
SpvBinaryLogicalTest,
::testing::Values(BinaryData{"bool", "true", "OpLogicalAnd", "false",
"__bool", "ScalarConstructor{true}",
"logical_and", "ScalarConstructor{false}"},
BinaryData{"v2bool", "v2bool_t_f", "OpLogicalAnd",
"v2bool_f_t", "__vec_2__bool",
AstFor("v2bool_t_f"), "logical_and",
AstFor("v2bool_f_t")}));
INSTANTIATE_TEST_SUITE_P(
SpvParserTest_LogicalOr,
SpvBinaryLogicalTest,
::testing::Values(BinaryData{"bool", "true", "OpLogicalOr", "false",
"__bool", "ScalarConstructor{true}",
"logical_or", "ScalarConstructor{false}"},
BinaryData{"v2bool", "v2bool_t_f", "OpLogicalOr",
"v2bool_f_t", "__vec_2__bool",
AstFor("v2bool_t_f"), "logical_or",
AstFor("v2bool_f_t")}));
} // namespace
} // namespace spirv
} // namespace reader