[spirv-reader][ir] Convert OpBitwiseOr
Add conversion for OpBitwiseOr, converting the arguments such that they
match the type of the first parameter.
Bug: 391486220
Change-Id: Ib5b01b1ac75df58557b994d994a58cbb341001de
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/226895
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/spirv/builtin_fn.cc b/src/tint/lang/spirv/builtin_fn.cc
index ebb1b3b..6bb3d17 100644
--- a/src/tint/lang/spirv/builtin_fn.cc
+++ b/src/tint/lang/spirv/builtin_fn.cc
@@ -172,6 +172,8 @@
return "convertUToF";
case BuiltinFn::kBitwiseAnd:
return "bitwiseAnd";
+ case BuiltinFn::kBitwiseOr:
+ return "bitwiseOr";
case BuiltinFn::kSdot:
return "sdot";
case BuiltinFn::kUdot:
@@ -266,6 +268,7 @@
case BuiltinFn::kConvertSToF:
case BuiltinFn::kConvertUToF:
case BuiltinFn::kBitwiseAnd:
+ case BuiltinFn::kBitwiseOr:
break;
}
return core::ir::Instruction::Accesses{};
diff --git a/src/tint/lang/spirv/builtin_fn.cc.tmpl b/src/tint/lang/spirv/builtin_fn.cc.tmpl
index 87210f2..0862f38 100644
--- a/src/tint/lang/spirv/builtin_fn.cc.tmpl
+++ b/src/tint/lang/spirv/builtin_fn.cc.tmpl
@@ -107,6 +107,7 @@
case BuiltinFn::kConvertSToF:
case BuiltinFn::kConvertUToF:
case BuiltinFn::kBitwiseAnd:
+ case BuiltinFn::kBitwiseOr:
break;
}
return core::ir::Instruction::Accesses{};
diff --git a/src/tint/lang/spirv/builtin_fn.h b/src/tint/lang/spirv/builtin_fn.h
index 43e52cc..fccebad 100644
--- a/src/tint/lang/spirv/builtin_fn.h
+++ b/src/tint/lang/spirv/builtin_fn.h
@@ -113,6 +113,7 @@
kConvertSToF,
kConvertUToF,
kBitwiseAnd,
+ kBitwiseOr,
kSdot,
kUdot,
kCooperativeMatrixLoad,
diff --git a/src/tint/lang/spirv/intrinsic/data.cc b/src/tint/lang/spirv/intrinsic/data.cc
index ac8af96..efb10fb 100644
--- a/src/tint/lang/spirv/intrinsic/data.cc
+++ b/src/tint/lang/spirv/intrinsic/data.cc
@@ -6725,30 +6725,37 @@
},
{
/* [65] */
+ /* fn bitwiseOr<R : iu32>[A : iu32, B : iu32](A, B) -> R */
+ /* fn bitwiseOr<R : iu32>[A : iu32, B : iu32, N : num](vec<N, A>, vec<N, B>) -> vec<N, R> */
+ /* num overloads */ 2,
+ /* overloads */ OverloadIndex(176),
+ },
+ {
+ /* [66] */
/* fn sdot(u32, u32, u32) -> i32 */
/* num overloads */ 1,
/* overloads */ OverloadIndex(193),
},
{
- /* [66] */
+ /* [67] */
/* fn udot(u32, u32, u32) -> u32 */
/* num overloads */ 1,
/* overloads */ OverloadIndex(194),
},
{
- /* [67] */
+ /* [68] */
/* fn cooperative_matrix_load<T : subgroup_matrix<K, S, C, R>>[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num](ptr<workgroup_or_storage, S, readable>, u32, u32, u32) -> T */
/* num overloads */ 1,
/* overloads */ OverloadIndex(195),
},
{
- /* [68] */
+ /* [69] */
/* fn cooperative_matrix_store[K : subgroup_matrix_kind, S : fiu32_f16, C : num, R : num](ptr<workgroup_or_storage, S, writable>, subgroup_matrix<K, S, C, R>, u32, u32, u32) */
/* num overloads */ 1,
/* overloads */ OverloadIndex(196),
},
{
- /* [69] */
+ /* [70] */
/* fn cooperative_matrix_mul_add[T : subgroup_matrix_elements, TR : subgroup_matrix_elements, C : num, R : num, K : num](subgroup_matrix<subgroup_matrix_kind_left, T, K, R>, subgroup_matrix<subgroup_matrix_kind_right, T, C, K>, subgroup_matrix<subgroup_matrix_kind_result, TR, C, R>, u32) -> subgroup_matrix<subgroup_matrix_kind_result, TR, C, R> */
/* num overloads */ 1,
/* overloads */ OverloadIndex(197),
diff --git a/src/tint/lang/spirv/reader/lower/builtins.cc b/src/tint/lang/spirv/reader/lower/builtins.cc
index e7c7b88..40095c3 100644
--- a/src/tint/lang/spirv/reader/lower/builtins.cc
+++ b/src/tint/lang/spirv/reader/lower/builtins.cc
@@ -158,6 +158,9 @@
case spirv::BuiltinFn::kBitwiseAnd:
BitwiseAnd(builtin);
break;
+ case spirv::BuiltinFn::kBitwiseOr:
+ BitwiseOr(builtin);
+ break;
default:
TINT_UNREACHABLE() << "unknown spirv builtin: " << builtin->Func();
}
@@ -231,6 +234,9 @@
void BitwiseAnd(spirv::ir::BuiltinCall* call) {
EmitBinaryWrappedAsFirstArg(call, core::BinaryOp::kAnd);
}
+ void BitwiseOr(spirv::ir::BuiltinCall* call) {
+ EmitBinaryWrappedAsFirstArg(call, core::BinaryOp::kOr);
+ }
void Add(spirv::ir::BuiltinCall* call) {
EmitBinaryWrappedAsFirstArg(call, core::BinaryOp::kAdd);
diff --git a/src/tint/lang/spirv/reader/lower/builtins_test.cc b/src/tint/lang/spirv/reader/lower/builtins_test.cc
index 34f4beb..b0da81d 100644
--- a/src/tint/lang/spirv/reader/lower/builtins_test.cc
+++ b/src/tint/lang/spirv/reader/lower/builtins_test.cc
@@ -38,9 +38,9 @@
using namespace tint::core::fluent_types; // NOLINT
using namespace tint::core::number_suffixes; // NOLINT
-using SpirvParser_BuiltinsTest = core::ir::transform::TransformTest;
+using SpirvReader_BuiltinsTest = core::ir::transform::TransformTest;
-TEST_F(SpirvParser_BuiltinsTest, Normalize_Scalar) {
+TEST_F(SpirvReader_BuiltinsTest, Normalize_Scalar) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -70,7 +70,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Normalize_Vector) {
+TEST_F(SpirvReader_BuiltinsTest, Normalize_Vector) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -101,7 +101,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat2x2f) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat2x2f) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -148,7 +148,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat2x2h) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat2x2h) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -195,7 +195,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat3x3f) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat3x3f) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -272,7 +272,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat3x3h) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat3x3h) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -349,7 +349,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat4x4f) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat4x4f) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -545,7 +545,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Inverse_Mat4x4h) {
+TEST_F(SpirvReader_BuiltinsTest, Inverse_Mat4x4h) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -741,7 +741,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Scalar_UnsignedArg) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Scalar_UnsignedArg) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -774,7 +774,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Scalar_UnsignedResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Scalar_UnsignedResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -807,7 +807,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Scalar_UnsignedArgAndResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Scalar_UnsignedArgAndResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -841,7 +841,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Scalar_SignedArgAndResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Scalar_SignedArgAndResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -873,7 +873,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Vector_UnsignedArg) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Vector_UnsignedArg) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -906,7 +906,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Vector_UnsignedResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Vector_UnsignedResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -939,7 +939,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Vector_UnsignedArgAndResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Vector_UnsignedArgAndResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -973,7 +973,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SSign_Vector_SignedArgAndResult) {
+TEST_F(SpirvReader_BuiltinsTest, SSign_Vector_SignedArgAndResult) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1015,10 +1015,10 @@
return out;
}
-using SpirvParser_BuiltinsTest_OneParamSigned =
+using SpirvReader_BuiltinsTest_OneParamSigned =
core::ir::transform::TransformTestWithParam<SpirvReaderParams>;
-TEST_P(SpirvParser_BuiltinsTest_OneParamSigned, UnsignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamSigned, UnsignedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1065,7 +1065,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamSigned, UnsignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamSigned, UnsignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1110,7 +1110,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamSigned, SignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamSigned, SignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1153,7 +1153,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamSigned, SignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamSigned, SignedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1199,15 +1199,15 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsTest_OneParamSigned,
+ SpirvReader_BuiltinsTest_OneParamSigned,
::testing::Values(SpirvReaderParams{spirv::BuiltinFn::kAbs, "abs", "abs"},
SpirvReaderParams{spirv::BuiltinFn::kFindSMsb,
"findSMsb", "firstLeadingBit"}));
-using SpirvParser_BuiltinsTest_OneParamUnsigned =
+using SpirvReader_BuiltinsTest_OneParamUnsigned =
core::ir::transform::TransformTestWithParam<SpirvReaderParams>;
-TEST_P(SpirvParser_BuiltinsTest_OneParamUnsigned, UnsignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamUnsigned, UnsignedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1250,7 +1250,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamUnsigned, UnsignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamUnsigned, UnsignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1295,7 +1295,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamUnsigned, SignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamUnsigned, SignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1342,7 +1342,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_OneParamUnsigned, SignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_OneParamUnsigned, SignedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1388,14 +1388,14 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsTest_OneParamUnsigned,
+ SpirvReader_BuiltinsTest_OneParamUnsigned,
::testing::Values(SpirvReaderParams{spirv::BuiltinFn::kFindUMsb,
"findUMsb", "firstLeadingBit"}));
-using SpirvParser_BuiltinsTest_TwoParamSigned =
+using SpirvReader_BuiltinsTest_TwoParamSigned =
core::ir::transform::TransformTestWithParam<SpirvReaderParams>;
-TEST_P(SpirvParser_BuiltinsTest_TwoParamSigned, UnsignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamSigned, UnsignedToUnsigned) {
auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1444,7 +1444,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamSigned, SignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamSigned, SignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1487,7 +1487,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamSigned, MixedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamSigned, MixedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1534,7 +1534,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamSigned, MixedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamSigned, MixedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1580,15 +1580,15 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsTest_TwoParamSigned,
+ SpirvReader_BuiltinsTest_TwoParamSigned,
::testing::Values(SpirvReaderParams{spirv::BuiltinFn::kSmax, "max", "max"},
SpirvReaderParams{spirv::BuiltinFn::kSmin, "min",
"min"}));
-using SpirvParser_BuiltinsTest_TwoParamUnsigned =
+using SpirvReader_BuiltinsTest_TwoParamUnsigned =
core::ir::transform::TransformTestWithParam<SpirvReaderParams>;
-TEST_P(SpirvParser_BuiltinsTest_TwoParamUnsigned, UnsignedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamUnsigned, UnsignedToUnsigned) {
auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1631,7 +1631,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamUnsigned, SignedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamUnsigned, SignedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1680,7 +1680,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamUnsigned, MixedToUnsigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamUnsigned, MixedToUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1725,7 +1725,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsTest_TwoParamUnsigned, MixedToSigned) {
+TEST_P(SpirvReader_BuiltinsTest_TwoParamUnsigned, MixedToSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -1773,12 +1773,12 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsTest_TwoParamUnsigned,
+ SpirvReader_BuiltinsTest_TwoParamUnsigned,
::testing::Values(SpirvReaderParams{spirv::BuiltinFn::kUmax, "max", "max"},
SpirvReaderParams{spirv::BuiltinFn::kUmin, "min",
"min"}));
-TEST_F(SpirvParser_BuiltinsTest, SClamp_UnsignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, SClamp_UnsignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1825,7 +1825,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SClamp_SignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, SClamp_SignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1864,7 +1864,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SClamp_MixedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, SClamp_MixedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1907,7 +1907,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, SClamp_MixedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, SClamp_MixedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1950,7 +1950,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, UClamp_UnsignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, UClamp_UnsignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -1989,7 +1989,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, UClamp_SignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, UClamp_SignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2036,7 +2036,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, UClamp_MixedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, UClamp_MixedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2079,7 +2079,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, UClamp_MixedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, UClamp_MixedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2122,7 +2122,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FindILsb_SignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, FindILsb_SignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2159,7 +2159,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FindILsb_UnsignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, FindILsb_UnsignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2196,7 +2196,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FindILsb_SignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, FindILsb_SignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2235,7 +2235,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FindILsb_UnsignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, FindILsb_UnsignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2274,7 +2274,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Refract_Scalar) {
+TEST_F(SpirvReader_BuiltinsTest, Refract_Scalar) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2309,7 +2309,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Refract_Vector) {
+TEST_F(SpirvReader_BuiltinsTest, Refract_Vector) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2342,7 +2342,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FaceForward_Scalar) {
+TEST_F(SpirvReader_BuiltinsTest, FaceForward_Scalar) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2377,7 +2377,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, FaceForward_Vector) {
+TEST_F(SpirvReader_BuiltinsTest, FaceForward_Vector) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2410,7 +2410,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Reflect_Scalar) {
+TEST_F(SpirvReader_BuiltinsTest, Reflect_Scalar) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2445,7 +2445,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Reflect_Vector) {
+TEST_F(SpirvReader_BuiltinsTest, Reflect_Vector) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2478,7 +2478,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Ldexp_ScalarSigned) {
+TEST_F(SpirvReader_BuiltinsTest, Ldexp_ScalarSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2509,7 +2509,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Ldexp_ScalarUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, Ldexp_ScalarUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2541,7 +2541,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Ldexp_VectorUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, Ldexp_VectorUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2574,7 +2574,7 @@
)";
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Ldexp_VectorSigned) {
+TEST_F(SpirvReader_BuiltinsTest, Ldexp_VectorSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2607,7 +2607,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Modf_Scalar) {
+TEST_F(SpirvReader_BuiltinsTest, Modf_Scalar) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2654,7 +2654,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Modf_Vector) {
+TEST_F(SpirvReader_BuiltinsTest, Modf_Vector) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2702,7 +2702,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Frexp_ScalarSigned) {
+TEST_F(SpirvReader_BuiltinsTest, Frexp_ScalarSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2749,7 +2749,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Frexp_ScalarUnSigned) {
+TEST_F(SpirvReader_BuiltinsTest, Frexp_ScalarUnSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2797,7 +2797,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Frexp_VectorSigned) {
+TEST_F(SpirvReader_BuiltinsTest, Frexp_VectorSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2845,7 +2845,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, Frexp_VectorUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, Frexp_VectorUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2894,7 +2894,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Scalar_UnsignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Scalar_UnsignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2926,7 +2926,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Scalar_UnsignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Scalar_UnsignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2959,7 +2959,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Scalar_SignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Scalar_SignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -2992,7 +2992,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Scalar_SignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Scalar_SignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3024,7 +3024,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Vector_UnsignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Vector_UnsignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3057,7 +3057,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Vector_UnsignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Vector_UnsignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3091,7 +3091,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Vector_SignedToUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Vector_SignedToUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3125,7 +3125,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitCount_Vector_SignedToSigned) {
+TEST_F(SpirvReader_BuiltinsTest, BitCount_Vector_SignedToSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3158,7 +3158,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_Int_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_Int_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3190,7 +3190,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_Int_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_Int_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3224,7 +3224,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_IntVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_IntVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3257,7 +3257,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_IntVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_IntVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3292,7 +3292,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_Uint_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_Uint_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3324,7 +3324,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_Uint_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_Uint_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3358,7 +3358,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_UintVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_UintVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3391,7 +3391,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_UintVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_UintVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3426,7 +3426,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldInsert_Uint_SignedOffsetAndUnsignedCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldInsert_Uint_SignedOffsetAndUnsignedCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3459,7 +3459,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_Int_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_Int_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3491,7 +3491,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_Int_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_Int_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3525,7 +3525,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_IntVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_IntVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3557,7 +3557,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_IntVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_IntVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3591,7 +3591,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_IntVector_SignedOffsetAndUnsignedCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_IntVector_SignedOffsetAndUnsignedCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3624,7 +3624,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_Uint_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_Uint_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3658,7 +3658,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_Uint_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_Uint_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3694,7 +3694,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_UintVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_UintVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3728,7 +3728,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_UintVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_UintVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3764,7 +3764,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldSExtract_UintVector_SignedOffsetAndUnsignedCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldSExtract_UintVector_SignedOffsetAndUnsignedCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3799,7 +3799,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_Uint_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_Uint_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3831,7 +3831,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_Uint_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_Uint_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3865,7 +3865,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_UintVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_UintVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3897,7 +3897,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_UintVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_UintVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3931,7 +3931,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_UintVector_UnsignedOffsetAndSignedCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_UintVector_UnsignedOffsetAndSignedCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3964,7 +3964,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_Int_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_Int_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -3998,7 +3998,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_Int_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_Int_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -4034,7 +4034,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_IntVector_UnsignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_IntVector_UnsignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -4068,7 +4068,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_IntVector_SignedOffsetAndCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_IntVector_SignedOffsetAndCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -4104,7 +4104,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitFieldUExtract_IntVector_UnsignedOffsetAndSignedCount) {
+TEST_F(SpirvReader_BuiltinsTest, BitFieldUExtract_IntVector_UnsignedOffsetAndSignedCount) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -4144,9 +4144,9 @@
std::string ir;
};
-using SpirvParser_BuiltinsMixedSignTest = core::ir::transform::TransformTestWithParam<BinaryCase>;
+using SpirvReader_BuiltinsMixedSignTest = core::ir::transform::TransformTestWithParam<BinaryCase>;
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Signed_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Signed_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4183,7 +4183,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Signed_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Signed_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4221,7 +4221,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Signed_UnsignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Signed_UnsignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4258,7 +4258,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Unsigned_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Unsigned_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4296,7 +4296,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Unsigned_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Unsigned_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4333,7 +4333,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Scalar_Unsigned_SignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Scalar_Unsigned_SignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4370,7 +4370,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Signed_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Signed_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4409,7 +4409,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Signed_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Signed_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4449,7 +4449,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Signed_UnsignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Signed_UnsignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4488,7 +4488,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Unsigned_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Unsigned_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4528,7 +4528,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Unsigned_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Unsigned_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4567,7 +4567,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsMixedSignTest, Vector_Unsigned_SignedSigned) {
+TEST_P(SpirvReader_BuiltinsMixedSignTest, Vector_Unsigned_SignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4607,7 +4607,7 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsMixedSignTest,
+ SpirvReader_BuiltinsMixedSignTest,
testing::Values(BinaryCase{spirv::BuiltinFn::kAdd, "add"},
BinaryCase{spirv::BuiltinFn::kSub, "sub"},
BinaryCase{spirv::BuiltinFn::kMul, "mul"}));
@@ -4618,10 +4618,10 @@
std::string wgsl;
};
-using SpirvParser_BuiltinsSignedTest =
+using SpirvReader_BuiltinsSignedTest =
core::ir::transform::TransformTestWithParam<SignedBinaryCase>;
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Signed_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Signed_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4658,7 +4658,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Signed_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Signed_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4695,7 +4695,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Signed_UnsignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Signed_UnsignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4733,7 +4733,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Unsigned_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Unsigned_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4771,7 +4771,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Unsigned_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Unsigned_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4809,7 +4809,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Scalar_Unsigned_SignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Scalar_Unsigned_SignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4846,7 +4846,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Signed_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Signed_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4885,7 +4885,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Signed_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Signed_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4924,7 +4924,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Signed_UnsignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Signed_UnsignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -4964,7 +4964,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Unsigned_SignedUnsigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Unsigned_SignedUnsigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -5004,7 +5004,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Unsigned_UnsignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Unsigned_UnsignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -5044,7 +5044,7 @@
EXPECT_EQ(expect, str());
}
-TEST_P(SpirvParser_BuiltinsSignedTest, Vector_Unsigned_SignedSigned) {
+TEST_P(SpirvReader_BuiltinsSignedTest, Vector_Unsigned_SignedSigned) {
auto params = GetParam();
auto* ep = b.ComputeFunction("foo");
@@ -5084,12 +5084,12 @@
}
INSTANTIATE_TEST_SUITE_P(SpirvReader,
- SpirvParser_BuiltinsSignedTest,
+ SpirvReader_BuiltinsSignedTest,
testing::Values(SignedBinaryCase{spirv::BuiltinFn::kSDiv, "s_div", "div"},
SignedBinaryCase{spirv::BuiltinFn::kSMod, "s_mod",
"mod"}));
-TEST_F(SpirvParser_BuiltinsTest, ConvertFToS_ScalarSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertFToS_ScalarSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5120,7 +5120,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertFToS_ScalarUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertFToS_ScalarUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5152,7 +5152,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertFToS_VectorSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertFToS_VectorSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5183,7 +5183,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertFToS_VectorUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertFToS_VectorUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5215,7 +5215,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertSToF_ScalarSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertSToF_ScalarSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5246,7 +5246,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertSToF_ScalarUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertSToF_ScalarUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5278,7 +5278,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertSToF_VectorSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertSToF_VectorSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5309,7 +5309,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertSToF_VectorUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertSToF_VectorUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5341,7 +5341,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertUToF_ScalarSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertUToF_ScalarSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5373,7 +5373,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertUToF_ScalarUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertUToF_ScalarUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5404,7 +5404,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertUToF_VectorSigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertUToF_VectorSigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5436,7 +5436,7 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, ConvertUToF_VectorUnsigned) {
+TEST_F(SpirvReader_BuiltinsTest, ConvertUToF_VectorUnsigned) {
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
@@ -5467,19 +5467,22 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_SignedSigned_Signed) {
+using SpirvReader_BitwiseTest = core::ir::transform::TransformTestWithParam<SpirvReaderParams>;
+
+TEST_P(SpirvReader_BitwiseTest, Scalar_SignedSigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, 1_i, 2_i);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), params.fn, Vector{ty.i32()}, 1_i, 2_i);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 1i, 2i
+ %2:i32 = spirv.)" +
+ params.spv_name + R"(<i32> 1i, 2i
ret
}
}
@@ -5487,10 +5490,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = and 1i, 2i
+ %2:i32 = )" + params.wgsl_name +
+ R"( 1i, 2i
ret
}
}
@@ -5498,19 +5502,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_SignedUnsigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_SignedUnsigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, 1_i, 8_u);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), params.fn, Vector{ty.i32()}, 1_i, 8_u);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 1i, 8u
+ %2:i32 = spirv.)" +
+ params.spv_name + R"(<i32> 1i, 8u
ret
}
}
@@ -5518,11 +5523,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:i32 = bitcast 8u
- %3:i32 = and 1i, %2
+ %3:i32 = )" + params.wgsl_name +
+ R"( 1i, %2
ret
}
}
@@ -5530,19 +5536,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_UnsignedSigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_UnsignedSigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, 8_u, 1_i);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), params.fn, Vector{ty.i32()}, 8_u, 1_i);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 8u, 1i
+ %2:i32 = spirv.)" +
+ params.spv_name + R"(<i32> 8u, 1i
ret
}
}
@@ -5550,11 +5557,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:u32 = bitcast 1i
- %3:u32 = and 8u, %2
+ %3:u32 = )" + params.wgsl_name +
+ R"( 8u, %2
%4:i32 = bitcast %3
ret
}
@@ -5563,19 +5571,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_UnsignedUnsigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_UnsignedUnsigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, 8_u, 9_u);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.i32(), params.fn, Vector{ty.i32()}, 8_u, 9_u);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 8u, 9u
+ %2:i32 = spirv.)" +
+ params.spv_name + R"(<i32> 8u, 9u
ret
}
}
@@ -5583,10 +5592,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = and 8u, 9u
+ %2:u32 = )" + params.wgsl_name +
+ R"( 8u, 9u
%3:i32 = bitcast %2
ret
}
@@ -5595,19 +5605,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_UnsignedUnsigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_UnsignedUnsigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, 8_u, 9_u);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), params.fn, Vector{ty.u32()}, 8_u, 9_u);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 8u, 9u
+ %2:u32 = spirv.)" +
+ params.spv_name + R"(<u32> 8u, 9u
ret
}
}
@@ -5615,10 +5626,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = and 8u, 9u
+ %2:u32 = )" + params.wgsl_name +
+ R"( 8u, 9u
ret
}
}
@@ -5626,19 +5638,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_UnsignedSigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_UnsignedSigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, 8_u, 1_i);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), params.fn, Vector{ty.u32()}, 8_u, 1_i);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 8u, 1i
+ %2:u32 = spirv.)" +
+ params.spv_name + R"(<u32> 8u, 1i
ret
}
}
@@ -5646,11 +5659,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:u32 = bitcast 1i
- %3:u32 = and 8u, %2
+ %3:u32 = )" + params.wgsl_name +
+ R"( 8u, %2
ret
}
}
@@ -5658,19 +5672,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_SignedUnsigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_SignedUnsigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, 1_i, 8_u);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), params.fn, Vector{ty.u32()}, 1_i, 8_u);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 1i, 8u
+ %2:u32 = spirv.)" +
+ params.spv_name + R"(<u32> 1i, 8u
ret
}
}
@@ -5678,11 +5693,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:i32 = bitcast 8u
- %3:i32 = and 1i, %2
+ %3:i32 = )" + params.wgsl_name +
+ R"( 1i, %2
%4:u32 = bitcast %3
ret
}
@@ -5691,19 +5707,20 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Scalar_SignedSigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Scalar_SignedSigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, 1_i, 2_i);
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.u32(), params.fn, Vector{ty.u32()}, 1_i, 2_i);
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 1i, 2i
+ %2:u32 = spirv.)" +
+ params.spv_name + R"(<u32> 1i, 2i
ret
}
}
@@ -5711,10 +5728,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = and 1i, 2i
+ %2:i32 = )" + params.wgsl_name +
+ R"( 1i, 2i
%3:u32 = bitcast %2
ret
}
@@ -5723,20 +5741,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_SignedSigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Vector_SignedSigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, b.Splat<vec2<i32>>(1_i),
- b.Splat<vec2<i32>>(2_i));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), params.fn, Vector{ty.i32()},
+ b.Splat<vec2<i32>>(1_i), b.Splat<vec2<i32>>(2_i));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<i32> = spirv.)" +
+ params.spv_name + R"(<i32> vec2<i32>(1i), vec2<i32>(2i)
ret
}
}
@@ -5744,10 +5763,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = and vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<i32> = )" +
+ params.wgsl_name + R"( vec2<i32>(1i), vec2<i32>(2i)
ret
}
}
@@ -5755,20 +5775,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_SignedUnsigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Vector_SignedUnsigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, b.Splat<vec2<i32>>(1_i),
- b.Splat<vec2<u32>>(8_u));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), params.fn, Vector{ty.i32()},
+ b.Splat<vec2<i32>>(1_i), b.Splat<vec2<u32>>(8_u));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<i32>(1i), vec2<u32>(8u)
+ %2:vec2<i32> = spirv.)" +
+ params.spv_name + R"(<i32> vec2<i32>(1i), vec2<u32>(8u)
ret
}
}
@@ -5776,11 +5797,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:vec2<i32> = bitcast vec2<u32>(8u)
- %3:vec2<i32> = and vec2<i32>(1i), %2
+ %3:vec2<i32> = )" +
+ params.wgsl_name + R"( vec2<i32>(1i), %2
ret
}
}
@@ -5788,20 +5810,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_UnsignedSigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Vector_UnsignedSigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, b.Splat<vec2<u32>>(8_u),
- b.Splat<vec2<i32>>(1_i));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), params.fn, Vector{ty.i32()},
+ b.Splat<vec2<u32>>(8_u), b.Splat<vec2<i32>>(1_i));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<u32>(8u), vec2<i32>(1i)
+ %2:vec2<i32> = spirv.)" +
+ params.spv_name + R"(<i32> vec2<u32>(8u), vec2<i32>(1i)
ret
}
}
@@ -5809,11 +5832,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:vec2<u32> = bitcast vec2<i32>(1i)
- %3:vec2<u32> = and vec2<u32>(8u), %2
+ %3:vec2<u32> = )" +
+ params.wgsl_name + R"( vec2<u32>(8u), %2
%4:vec2<i32> = bitcast %3
ret
}
@@ -5822,20 +5846,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_UnsignedUnsigned_Signed) {
+TEST_P(SpirvReader_BitwiseTest, Vector_UnsignedUnsigned_Signed) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.i32()}, b.Splat<vec2<u32>>(8_u),
- b.Splat<vec2<u32>>(9_u));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<i32>(), params.fn, Vector{ty.i32()},
+ b.Splat<vec2<u32>>(8_u), b.Splat<vec2<u32>>(9_u));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<i32> = spirv.)" +
+ params.spv_name + R"(<i32> vec2<u32>(8u), vec2<u32>(9u)
ret
}
}
@@ -5843,10 +5868,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = and vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<u32> = )" +
+ params.wgsl_name + R"( vec2<u32>(8u), vec2<u32>(9u)
%3:vec2<i32> = bitcast %2
ret
}
@@ -5855,20 +5881,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_UnsignedUnsigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Vector_UnsignedUnsigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, b.Splat<vec2<u32>>(8_u),
- b.Splat<vec2<u32>>(9_u));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), params.fn, Vector{ty.u32()},
+ b.Splat<vec2<u32>>(8_u), b.Splat<vec2<u32>>(9_u));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<u32> = spirv.)" +
+ params.spv_name + R"(<u32> vec2<u32>(8u), vec2<u32>(9u)
ret
}
}
@@ -5876,10 +5903,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = and vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<u32> = )" +
+ params.wgsl_name + R"( vec2<u32>(8u), vec2<u32>(9u)
ret
}
}
@@ -5887,20 +5915,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_UnsignedSigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Vector_UnsignedSigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, b.Splat<vec2<u32>>(8_u),
- b.Splat<vec2<i32>>(1_i));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), params.fn, Vector{ty.u32()},
+ b.Splat<vec2<u32>>(8_u), b.Splat<vec2<i32>>(1_i));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<u32>(8u), vec2<i32>(1i)
+ %2:vec2<u32> = spirv.)" +
+ params.spv_name + R"(<u32> vec2<u32>(8u), vec2<i32>(1i)
ret
}
}
@@ -5908,11 +5937,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:vec2<u32> = bitcast vec2<i32>(1i)
- %3:vec2<u32> = and vec2<u32>(8u), %2
+ %3:vec2<u32> = )" +
+ params.wgsl_name + R"( vec2<u32>(8u), %2
ret
}
}
@@ -5920,20 +5950,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_SignedUnsigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Vector_SignedUnsigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, b.Splat<vec2<i32>>(1_i),
- b.Splat<vec2<u32>>(8_u));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), params.fn, Vector{ty.u32()},
+ b.Splat<vec2<i32>>(1_i), b.Splat<vec2<u32>>(8_u));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<i32>(1i), vec2<u32>(8u)
+ %2:vec2<u32> = spirv.)" +
+ params.spv_name + R"(<u32> vec2<i32>(1i), vec2<u32>(8u)
ret
}
}
@@ -5941,11 +5972,12 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
%2:vec2<i32> = bitcast vec2<u32>(8u)
- %3:vec2<i32> = and vec2<i32>(1i), %2
+ %3:vec2<i32> = )" +
+ params.wgsl_name + R"( vec2<i32>(1i), %2
%4:vec2<u32> = bitcast %3
ret
}
@@ -5954,20 +5986,21 @@
EXPECT_EQ(expect, str());
}
-TEST_F(SpirvParser_BuiltinsTest, BitwiseAnd_Vector_SignedSigned_Unsigned) {
+TEST_P(SpirvReader_BitwiseTest, Vector_SignedSigned_Unsigned) {
+ auto& params = GetParam();
auto* ep = b.ComputeFunction("foo");
b.Append(ep->Block(), [&] { //
- b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), spirv::BuiltinFn::kBitwiseAnd,
- Vector{ty.u32()}, b.Splat<vec2<i32>>(1_i),
- b.Splat<vec2<i32>>(2_i));
+ b.CallExplicit<spirv::ir::BuiltinCall>(ty.vec2<u32>(), params.fn, Vector{ty.u32()},
+ b.Splat<vec2<i32>>(1_i), b.Splat<vec2<i32>>(2_i));
b.Return(ep);
});
- auto* src = R"(
+ auto src = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<u32> = spirv.)" +
+ params.spv_name + R"(<u32> vec2<i32>(1i), vec2<i32>(2i)
ret
}
}
@@ -5975,10 +6008,11 @@
EXPECT_EQ(src, str());
Run(Builtins);
- auto* expect = R"(
+ auto expect = R"(
%foo = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = and vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<i32> = )" +
+ params.wgsl_name + R"( vec2<i32>(1i), vec2<i32>(2i)
%3:vec2<u32> = bitcast %2
ret
}
@@ -5986,6 +6020,11 @@
)";
EXPECT_EQ(expect, str());
}
+INSTANTIATE_TEST_SUITE_P(
+ SpirvReader,
+ SpirvReader_BitwiseTest,
+ ::testing::Values(SpirvReaderParams{spirv::BuiltinFn::kBitwiseAnd, "bitwiseAnd", "and"},
+ SpirvReaderParams{spirv::BuiltinFn::kBitwiseOr, "bitwiseOr", "or"}));
} // namespace
} // namespace tint::spirv::reader::lower
diff --git a/src/tint/lang/spirv/reader/parser/bit_test.cc b/src/tint/lang/spirv/reader/parser/bit_test.cc
index 2e6de9b..9ff1b5e 100644
--- a/src/tint/lang/spirv/reader/parser/bit_test.cc
+++ b/src/tint/lang/spirv/reader/parser/bit_test.cc
@@ -30,7 +30,18 @@
namespace tint::spirv::reader {
namespace {
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_SignedSigned_Signed) {
+struct SpirvBitwiseParam {
+ std::string name;
+};
+[[maybe_unused]] inline std::ostream& operator<<(std::ostream& out, SpirvBitwiseParam c) {
+ out << c.name;
+ return out;
+}
+
+using SpirvParser_BitwiseTest = SpirvParserTestWithParam<SpirvBitwiseParam>;
+
+TEST_P(SpirvParser_BitwiseTest, Scalar_SignedSigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -44,21 +55,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %int %one %two
+ %1 = OpBitwise)" +
+ params.name + R"( %int %one %two
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 1i, 2i
+ %2:i32 = spirv.bitwise)" +
+ params.name + R"(<i32> 1i, 2i
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_SignedUnsigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_SignedUnsigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -75,21 +89,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %int %one %eight
+ %1 = OpBitwise)" +
+ params.name + R"( %int %one %eight
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 1i, 8u
+ %2:i32 = spirv.bitwise)" +
+ params.name + R"(<i32> 1i, 8u
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_UnsignedSigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_UnsignedSigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -106,21 +123,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %int %eight %one
+ %1 = OpBitwise)" +
+ params.name + R"( %int %eight %one
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 8u, 1i
+ %2:i32 = spirv.bitwise)" +
+ params.name + R"(<i32> 8u, 1i
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_UnsignedUnsigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_UnsignedUnsigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -137,21 +157,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %int %eight %nine
+ %1 = OpBitwise)" +
+ params.name + R"( %int %eight %nine
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:i32 = spirv.bitwiseAnd<i32> 8u, 9u
+ %2:i32 = spirv.bitwise)" +
+ params.name + R"(<i32> 8u, 9u
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_UnsignedUnsigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_UnsignedUnsigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -168,21 +191,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %uint %eight %nine
+ %1 = OpBitwise)" +
+ params.name + R"( %uint %eight %nine
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 8u, 9u
+ %2:u32 = spirv.bitwise)" +
+ params.name + R"(<u32> 8u, 9u
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_UnsignedSigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_UnsignedSigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -199,21 +225,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %uint %eight %one
+ %1 = OpBitwise)" +
+ params.name + R"( %uint %eight %one
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 8u, 1i
+ %2:u32 = spirv.bitwise)" +
+ params.name + R"(<u32> 8u, 1i
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_SignedUnsigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_SignedUnsigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -230,21 +259,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %uint %one %eight
+ %1 = OpBitwise)" +
+ params.name + R"( %uint %one %eight
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 1i, 8u
+ %2:u32 = spirv.bitwise)" +
+ params.name + R"(<u32> 1i, 8u
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Scalar_SignedSigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Scalar_SignedSigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -261,21 +293,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %uint %one %two
+ %1 = OpBitwise)" +
+ params.name + R"( %uint %one %two
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:u32 = spirv.bitwiseAnd<u32> 1i, 2i
+ %2:u32 = spirv.bitwise)" +
+ params.name + R"(<u32> 1i, 2i
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_SignedSigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Vector_SignedSigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -298,21 +333,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2int %v2one %v2two
+ %1 = OpBitwise)" +
+ params.name + R"( %v2int %v2one %v2two
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<i32> = spirv.bitwise)" +
+ params.name + R"(<i32> vec2<i32>(1i), vec2<i32>(2i)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_SignedUnsigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Vector_SignedUnsigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -335,21 +373,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2int %v2one %v2eight
+ %1 = OpBitwise)" +
+ params.name + R"( %v2int %v2one %v2eight
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<i32>(1i), vec2<u32>(8u)
+ %2:vec2<i32> = spirv.bitwise)" +
+ params.name + R"(<i32> vec2<i32>(1i), vec2<u32>(8u)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_UnsignedSigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Vector_UnsignedSigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -372,21 +413,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2int %v2eight %v2one
+ %1 = OpBitwise)" +
+ params.name + R"( %v2int %v2eight %v2one
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<u32>(8u), vec2<i32>(1i)
+ %2:vec2<i32> = spirv.bitwise)" +
+ params.name + R"(<i32> vec2<u32>(8u), vec2<i32>(1i)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_UnsignedUnsigned_Signed) {
+TEST_P(SpirvParser_BitwiseTest, Vector_UnsignedUnsigned_Signed) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -409,21 +453,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2int %v2eight %v2nine
+ %1 = OpBitwise)" +
+ params.name + R"( %v2int %v2eight %v2nine
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<i32> = spirv.bitwiseAnd<i32> vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<i32> = spirv.bitwise)" +
+ params.name + R"(<i32> vec2<u32>(8u), vec2<u32>(9u)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_UnsignedUnsigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Vector_UnsignedUnsigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -446,21 +493,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2uint %v2eight %v2nine
+ %1 = OpBitwise)" +
+ params.name + R"( %v2uint %v2eight %v2nine
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<u32>(8u), vec2<u32>(9u)
+ %2:vec2<u32> = spirv.bitwise)" +
+ params.name + R"(<u32> vec2<u32>(8u), vec2<u32>(9u)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_UnsignedSigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Vector_UnsignedSigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -483,21 +533,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2uint %v2eight %v2one
+ %1 = OpBitwise)" +
+ params.name + R"( %v2uint %v2eight %v2one
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<u32>(8u), vec2<i32>(1i)
+ %2:vec2<u32> = spirv.bitwise)" +
+ params.name + R"(<u32> vec2<u32>(8u), vec2<i32>(1i)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_SignedUnsigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Vector_SignedUnsigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -520,21 +573,24 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2uint %v2one %v2eight
+ %1 = OpBitwise)" +
+ params.name + R"( %v2uint %v2one %v2eight
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<i32>(1i), vec2<u32>(8u)
+ %2:vec2<u32> = spirv.bitwise)" +
+ params.name + R"(<u32> vec2<i32>(1i), vec2<u32>(8u)
ret
}
}
)");
}
-TEST_F(SpirvParserTest, BitwiseAnd_Vector_SignedSigned_Unsigned) {
+TEST_P(SpirvParser_BitwiseTest, Vector_SignedSigned_Unsigned) {
+ auto& params = GetParam();
EXPECT_IR(R"(
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -557,19 +613,26 @@
%main = OpFunction %void None %void_fn
%main_start = OpLabel
- %1 = OpBitwiseAnd %v2uint %v2one %v2two
+ %1 = OpBitwise)" +
+ params.name + R"( %v2uint %v2one %v2two
OpReturn
OpFunctionEnd
)",
R"(
%main = @compute @workgroup_size(1u, 1u, 1u) func():void {
$B1: {
- %2:vec2<u32> = spirv.bitwiseAnd<u32> vec2<i32>(1i), vec2<i32>(2i)
+ %2:vec2<u32> = spirv.bitwise)" +
+ params.name + R"(<u32> vec2<i32>(1i), vec2<i32>(2i)
ret
}
}
)");
}
+INSTANTIATE_TEST_SUITE_P(SpirvParser,
+ SpirvParser_BitwiseTest,
+ testing::Values(SpirvBitwiseParam{"And"}, //
+ SpirvBitwiseParam{"Or"}));
+
} // namespace
} // namespace tint::spirv::reader
diff --git a/src/tint/lang/spirv/reader/parser/parser.cc b/src/tint/lang/spirv/reader/parser/parser.cc
index 80d054f..836a058 100644
--- a/src/tint/lang/spirv/reader/parser/parser.cc
+++ b/src/tint/lang/spirv/reader/parser/parser.cc
@@ -671,6 +671,9 @@
case spv::Op::OpBitwiseAnd:
EmitSpirvExplicitBuiltinCall(inst, spirv::BuiltinFn::kBitwiseAnd);
break;
+ case spv::Op::OpBitwiseOr:
+ EmitSpirvExplicitBuiltinCall(inst, spirv::BuiltinFn::kBitwiseOr);
+ break;
case spv::Op::OpAccessChain:
case spv::Op::OpInBoundsAccessChain:
EmitAccess(inst);
diff --git a/src/tint/lang/spirv/spirv.def b/src/tint/lang/spirv/spirv.def
index c8c879b..6950e70 100644
--- a/src/tint/lang/spirv/spirv.def
+++ b/src/tint/lang/spirv/spirv.def
@@ -423,6 +423,8 @@
implicit(A: iu32, B: iu32) fn bitwiseAnd<R: iu32>(A, B) -> R
implicit(A: iu32, B: iu32, N: num) fn bitwiseAnd<R: iu32>(vec<N, A>, vec<N, B>) -> vec<N, R>
+implicit(A: iu32, B: iu32) fn bitwiseOr<R: iu32>(A, B) -> R
+implicit(A: iu32, B: iu32, N: num) fn bitwiseOr<R: iu32>(vec<N, A>, vec<N, B>) -> vec<N, R>
////////////////////////////////////////////////////////////////////////////////
// SPV_KHR_integer_dot_product instructions
diff --git a/src/tint/lang/spirv/writer/printer/printer.cc b/src/tint/lang/spirv/writer/printer/printer.cc
index e5b4f59..a1c31f4 100644
--- a/src/tint/lang/spirv/writer/printer/printer.cc
+++ b/src/tint/lang/spirv/writer/printer/printer.cc
@@ -1536,6 +1536,9 @@
case BuiltinFn::kBitwiseAnd:
op = spv::Op::OpBitwiseAnd;
break;
+ case BuiltinFn::kBitwiseOr:
+ op = spv::Op::OpBitwiseOr;
+ break;
case spirv::BuiltinFn::kNone:
TINT_ICE() << "undefined spirv ir function";
}