[spirv-writer] Fix global constant emitting
This CL fixes the emitting of global constants to use the correct
`OpConstantComposite` call when adding to the types section. A TODO is
added to generate `OpCompositeConstruct` when we need to generate
initializers inside functions.
Bug: tint:5
Change-Id: I1bbf6c68e21b546d6a643b4c99c7d2c9317bfcbd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/18440
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc
index d0e10eb..35017b9 100644
--- a/src/writer/spirv/builder.cc
+++ b/src/writer/spirv/builder.cc
@@ -371,7 +371,9 @@
const_to_id_[str] = result.to_i();
- push_type(spv::Op::OpCompositeConstruct, ops);
+ // TODO(dsinclair) For non-global constant's this should be
+ // in the instructions and ben an OpCompositeConstruct call.
+ push_type(spv::Op::OpConstantComposite, ops);
return result.to_i();
}
diff --git a/src/writer/spirv/builder_constructor_expression_test.cc b/src/writer/spirv/builder_constructor_expression_test.cc
index 51bb271..7a5fa2f 100644
--- a/src/writer/spirv/builder_constructor_expression_test.cc
+++ b/src/writer/spirv/builder_constructor_expression_test.cc
@@ -69,7 +69,7 @@
%1 = OpTypeVector %2 3
%3 = OpConstant %2 1
%4 = OpConstant %2 3
-%5 = OpCompositeConstruct %1 %3 %3 %4
+%5 = OpConstantComposite %1 %3 %3 %4
)");
}
diff --git a/src/writer/spirv/builder_global_variable_test.cc b/src/writer/spirv/builder_global_variable_test.cc
index 3f2deac..09fed56 100644
--- a/src/writer/spirv/builder_global_variable_test.cc
+++ b/src/writer/spirv/builder_global_variable_test.cc
@@ -95,7 +95,7 @@
%1 = OpTypeVector %2 3
%3 = OpConstant %2 1
%4 = OpConstant %2 3
-%5 = OpCompositeConstruct %1 %3 %3 %4
+%5 = OpConstantComposite %1 %3 %3 %4
%7 = OpTypePointer Output %2
%6 = OpVariable %7 Output %5
)");
@@ -128,7 +128,7 @@
%1 = OpTypeVector %2 3
%3 = OpConstant %2 1
%4 = OpConstant %2 3
-%5 = OpCompositeConstruct %1 %3 %3 %4
+%5 = OpConstantComposite %1 %3 %3 %4
)");
}
diff --git a/src/writer/spirv/builder_return_test.cc b/src/writer/spirv/builder_return_test.cc
index 038bbb7..f61805b 100644
--- a/src/writer/spirv/builder_return_test.cc
+++ b/src/writer/spirv/builder_return_test.cc
@@ -67,7 +67,7 @@
%1 = OpTypeVector %2 3
%3 = OpConstant %2 1
%4 = OpConstant %2 3
-%5 = OpCompositeConstruct %1 %3 %3 %4
+%5 = OpConstantComposite %1 %3 %3 %4
)");
EXPECT_EQ(DumpInstructions(b.instructions()), R"(OpReturnValue %5
)");