mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-06 13:15:59 +00:00
spirv-reader: import tests: make valid SPIR-V
Bug: tint:765 Change-Id: If6dc558a86bb64dfb7f61d237e774f41f735c732 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50442 Commit-Queue: David Neto <dneto@google.com> Reviewed-by: Alan Baker <alanbaker@google.com>
This commit is contained in:
parent
ad19a63c54
commit
a083f329a7
@ -27,34 +27,43 @@ using ::testing::HasSubstr;
|
|||||||
using ::testing::Not;
|
using ::testing::Not;
|
||||||
using ::testing::UnorderedElementsAre;
|
using ::testing::UnorderedElementsAre;
|
||||||
|
|
||||||
TEST_F(SpvParserTest, Import_NoImport) {
|
using SpvParserImportTest = SpvParserTest;
|
||||||
|
|
||||||
|
TEST_F(SpvParserImportTest, Import_NoImport) {
|
||||||
auto p = parser(test::Assemble("%1 = OpTypeVoid"));
|
auto p = parser(test::Assemble("%1 = OpTypeVoid"));
|
||||||
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
||||||
EXPECT_TRUE(p->error().empty());
|
EXPECT_TRUE(p->error().empty());
|
||||||
const auto program_ast = p->program().to_str();
|
const auto program_ast = p->program().to_str();
|
||||||
EXPECT_THAT(program_ast, Not(HasSubstr("Import")));
|
EXPECT_THAT(program_ast, Not(HasSubstr("Import")));
|
||||||
|
|
||||||
|
p->DeliberatelyInvalidSpirv();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SpvParserTest, Import_ImportGlslStd450) {
|
TEST_F(SpvParserImportTest, Import_ImportGlslStd450) {
|
||||||
auto p = parser(test::Assemble(R"(%1 = OpExtInstImport "GLSL.std.450")"));
|
auto p = parser(test::Assemble(R"(%1 = OpExtInstImport "GLSL.std.450")"));
|
||||||
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
||||||
EXPECT_TRUE(p->error().empty());
|
EXPECT_TRUE(p->error().empty());
|
||||||
EXPECT_THAT(p->glsl_std_450_imports(), ElementsAre(1));
|
EXPECT_THAT(p->glsl_std_450_imports(), ElementsAre(1));
|
||||||
|
|
||||||
|
p->DeliberatelyInvalidSpirv();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SpvParserTest, Import_NonSemantic_IgnoredImport) {
|
TEST_F(SpvParserImportTest, Import_NonSemantic_IgnoredImport) {
|
||||||
auto p = parser(test::Assemble(
|
auto p = parser(test::Assemble(
|
||||||
R"(%40 = OpExtInstImport "NonSemantic.ClspvReflection.1")"));
|
R"(%40 = OpExtInstImport "NonSemantic.ClspvReflection.1")"));
|
||||||
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
EXPECT_TRUE(p->BuildAndParseInternalModule());
|
||||||
EXPECT_TRUE(p->error().empty());
|
EXPECT_TRUE(p->error().empty());
|
||||||
|
|
||||||
|
p->DeliberatelyInvalidSpirv();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SpvParserTest, Import_NonSemantic_IgnoredExtInsts) {
|
TEST_F(SpvParserImportTest, Import_NonSemantic_IgnoredExtInsts) {
|
||||||
// This is the clspv-compiled output of this OpenCL C:
|
// This is the clspv-compiled output of this OpenCL C:
|
||||||
// kernel void foo(global int*A) { A=A; }
|
// kernel void foo(global int*A) { A=A; }
|
||||||
// It emits NonSemantic.ClspvReflection.1 extended instructions.
|
// It emits NonSemantic.ClspvReflection.1 extended instructions.
|
||||||
// But *tweaked*:
|
// But *tweaked*:
|
||||||
// - to remove gl_WorkgroupSize
|
// - to remove gl_WorkgroupSize
|
||||||
|
// - to add LocalSize execution mode
|
||||||
// - to move one of the ExtInsts into the globals-and-constants
|
// - to move one of the ExtInsts into the globals-and-constants
|
||||||
// section
|
// section
|
||||||
// - to move one of the ExtInsts into the function body.
|
// - to move one of the ExtInsts into the function body.
|
||||||
@ -65,6 +74,7 @@ TEST_F(SpvParserTest, Import_NonSemantic_IgnoredExtInsts) {
|
|||||||
%20 = OpExtInstImport "NonSemantic.ClspvReflection.1"
|
%20 = OpExtInstImport "NonSemantic.ClspvReflection.1"
|
||||||
OpMemoryModel Logical GLSL450
|
OpMemoryModel Logical GLSL450
|
||||||
OpEntryPoint GLCompute %15 "foo"
|
OpEntryPoint GLCompute %15 "foo"
|
||||||
|
OpExecutionMode %15 LocalSize 1 1 1
|
||||||
OpSource OpenCL_C 120
|
OpSource OpenCL_C 120
|
||||||
%21 = OpString "foo"
|
%21 = OpString "foo"
|
||||||
%23 = OpString "A"
|
%23 = OpString "A"
|
||||||
@ -76,6 +86,7 @@ TEST_F(SpvParserTest, Import_NonSemantic_IgnoredExtInsts) {
|
|||||||
OpDecorate %7 SpecId 0
|
OpDecorate %7 SpecId 0
|
||||||
OpDecorate %8 SpecId 1
|
OpDecorate %8 SpecId 1
|
||||||
OpDecorate %9 SpecId 2
|
OpDecorate %9 SpecId 2
|
||||||
|
%void = OpTypeVoid
|
||||||
%24 = OpExtInst %void %20 ArgumentInfo %23
|
%24 = OpExtInst %void %20 ArgumentInfo %23
|
||||||
%uint = OpTypeInt 32 0
|
%uint = OpTypeInt 32 0
|
||||||
%_runtimearr_uint = OpTypeRuntimeArray %uint
|
%_runtimearr_uint = OpTypeRuntimeArray %uint
|
||||||
@ -86,7 +97,6 @@ TEST_F(SpvParserTest, Import_NonSemantic_IgnoredExtInsts) {
|
|||||||
%7 = OpSpecConstant %uint 1
|
%7 = OpSpecConstant %uint 1
|
||||||
%8 = OpSpecConstant %uint 1
|
%8 = OpSpecConstant %uint 1
|
||||||
%9 = OpSpecConstant %uint 1
|
%9 = OpSpecConstant %uint 1
|
||||||
%void = OpTypeVoid
|
|
||||||
%14 = OpTypeFunction %void
|
%14 = OpTypeFunction %void
|
||||||
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
||||||
%uint_0 = OpConstant %uint 0
|
%uint_0 = OpConstant %uint 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user