reader/spirv: Optimize MakeNullValue()
Constructing a null vector, matrix or array does not need to provide an explicit list of null elements. `T()` is a more efficient and readable equivalent.
Fuzzers like to generate enormous pathological composite types, which has been triggering OOM failures.
Bug: oss-fuzz:38095
Bug: oss-fuzz:39235
Bug: oss-fuzz:39246
Bug: oss-fuzz:39874
Change-Id: I910bb04bdd0e80532c09fc038be895ec37d3d380
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/75426
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/reader/spirv/function_misc_test.cc b/src/reader/spirv/function_misc_test.cc
index 45cd5de..2165b92 100644
--- a/src/reader/spirv/function_misc_test.cc
+++ b/src/reader/spirv/function_misc_test.cc
@@ -105,10 +105,10 @@
EXPECT_TRUE(fe.EmitBody()) << p->error();
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr(R"(let x_14 : vec2<bool> = vec2<bool>(false, false);
-let x_11 : vec2<u32> = vec2<u32>(0u, 0u);
-let x_12 : vec2<i32> = vec2<i32>(0, 0);
-let x_13 : vec2<f32> = vec2<f32>(0.0, 0.0);
+ HasSubstr(R"(let x_14 : vec2<bool> = vec2<bool>();
+let x_11 : vec2<u32> = vec2<u32>();
+let x_12 : vec2<i32> = vec2<i32>();
+let x_13 : vec2<f32> = vec2<f32>();
)"));
}
@@ -161,9 +161,9 @@
EXPECT_TRUE(fe.EmitBody()) << p->error();
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr(R"(let x_11 : vec2<u32> = vec2<u32>(0u, 0u);
-let x_12 : vec2<i32> = vec2<i32>(0, 0);
-let x_13 : vec2<f32> = vec2<f32>(0.0, 0.0);
+ HasSubstr(R"(let x_11 : vec2<u32> = vec2<u32>();
+let x_12 : vec2<i32> = vec2<i32>();
+let x_13 : vec2<f32> = vec2<f32>();
)"));
}
@@ -185,9 +185,7 @@
EXPECT_TRUE(fe.EmitBody()) << p->error();
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr("let x_11 : mat2x2<f32> = mat2x2<f32>("
- "vec2<f32>(0.0, 0.0), "
- "vec2<f32>(0.0, 0.0));"));
+ HasSubstr("let x_11 : mat2x2<f32> = mat2x2<f32>();"));
}
TEST_F(SpvParserTestMiscInstruction, OpUndef_InFunction_Array) {
@@ -209,7 +207,7 @@
EXPECT_TRUE(fe.EmitBody()) << p->error();
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr("let x_11 : array<u32, 2u> = array<u32, 2u>(0u, 0u);"));
+ HasSubstr("let x_11 : array<u32, 2u> = array<u32, 2u>();"));
}
TEST_F(SpvParserTestMiscInstruction, OpUndef_InFunction_Struct) {
diff --git a/src/reader/spirv/function_var_test.cc b/src/reader/spirv/function_var_test.cc
index 15f6349..9e09f66 100644
--- a/src/reader/spirv/function_var_test.cc
+++ b/src/reader/spirv/function_var_test.cc
@@ -340,7 +340,7 @@
auto ast_body = fe.ast_body();
EXPECT_THAT(
test::ToString(p->program(), ast_body),
- HasSubstr("var x_200 : array<u32, 2u> = array<u32, 2u>(0u, 0u);"));
+ HasSubstr("var x_200 : array<u32, 2u> = array<u32, 2u>();"));
}
TEST_F(SpvParserFunctionVarTest,
@@ -368,7 +368,7 @@
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr("var x_200 : Arr = Arr(0u, 0u);"));
+ HasSubstr("var x_200 : Arr = [[stride(16)]] array<u32, 2u>();"));
}
TEST_F(SpvParserFunctionVarTest, EmitFunctionVariables_StructInitializer) {
@@ -412,7 +412,7 @@
auto ast_body = fe.ast_body();
EXPECT_THAT(test::ToString(p->program(), ast_body),
- HasSubstr("var x_200 : S = S(0u, 0.0, array<u32, 2u>(0u, 0u));"));
+ HasSubstr("var x_200 : S = S(0u, 0.0, array<u32, 2u>());"));
}
TEST_F(SpvParserFunctionVarTest,
@@ -1525,7 +1525,7 @@
const auto* expected = R"(var x_200 : vec2<i32>;
if (true) {
- x_200 = vec2<i32>(0, 0);
+ x_200 = vec2<i32>();
x_200.x = 0;
} else {
return;
@@ -1568,7 +1568,7 @@
const auto got = test::ToString(p->program(), ast_body);
const auto* expected = R"(var x_200 : vec2<i32>;
if (true) {
- x_200 = vec2<i32>(0, 0);
+ x_200 = vec2<i32>();
x_200[1] = 3;
} else {
return;
diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index 4f28c19..92e57d1 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -2001,37 +2001,8 @@
if (type->Is<F32>()) {
return create<ast::FloatLiteralExpression>(Source{}, 0.0f);
}
- if (type->Is<Alias>()) {
- // TODO(amaiorano): No type constructor for TypeName (yet?)
- ast::ExpressionList ast_components;
- return builder_.Construct(Source{}, original_type->Build(builder_),
- std::move(ast_components));
- }
- if (auto* vec_ty = type->As<Vector>()) {
- ast::ExpressionList ast_components;
- for (size_t i = 0; i < vec_ty->size; ++i) {
- ast_components.emplace_back(MakeNullValue(vec_ty->type));
- }
- return builder_.Construct(Source{}, type->Build(builder_),
- std::move(ast_components));
- }
- if (auto* mat_ty = type->As<Matrix>()) {
- // Matrix components are columns
- auto* column_ty = ty_.Vector(mat_ty->type, mat_ty->rows);
- ast::ExpressionList ast_components;
- for (size_t i = 0; i < mat_ty->columns; ++i) {
- ast_components.emplace_back(MakeNullValue(column_ty));
- }
- return builder_.Construct(Source{}, type->Build(builder_),
- std::move(ast_components));
- }
- if (auto* arr_ty = type->As<Array>()) {
- ast::ExpressionList ast_components;
- for (size_t i = 0; i < arr_ty->size; ++i) {
- ast_components.emplace_back(MakeNullValue(arr_ty->type));
- }
- return builder_.Construct(Source{}, original_type->Build(builder_),
- std::move(ast_components));
+ if (type->IsAnyOf<Vector, Matrix, Array>()) {
+ return builder_.Construct(Source{}, type->Build(builder_));
}
if (auto* struct_ty = type->As<Struct>()) {
ast::ExpressionList ast_components;
diff --git a/src/reader/spirv/parser_impl_handle_test.cc b/src/reader/spirv/parser_impl_handle_test.cc
index ef2eeb0..a5f0cba 100644
--- a/src/reader/spirv/parser_impl_handle_test.cc
+++ b/src/reader/spirv/parser_impl_handle_test.cc
@@ -3945,8 +3945,8 @@
auto ast_body = fe.ast_body();
const auto got = test::ToString(p->program(), ast_body);
auto* expect = R"(var var_1 : vec4<f32>;
-let x_22 : vec4<f32> = textureSample(x_2, x_3, vec2<f32>(0.0, 0.0));
-let x_26 : vec4<f32> = textureSample(x_2, x_3, vec2<f32>(0.0, 0.0));
+let x_22 : vec4<f32> = textureSample(x_2, x_3, vec2<f32>());
+let x_26 : vec4<f32> = textureSample(x_2, x_3, vec2<f32>());
var_1 = (x_22 + x_26);
return;
)";
diff --git a/src/reader/spirv/parser_impl_module_var_test.cc b/src/reader/spirv/parser_impl_module_var_test.cc
index a8c683c..5d93620 100644
--- a/src/reader/spirv/parser_impl_module_var_test.cc
+++ b/src/reader/spirv/parser_impl_module_var_test.cc
@@ -357,8 +357,7 @@
EXPECT_TRUE(p->BuildAndParseInternalModule());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(module_str,
- HasSubstr("gl_Position = vec4<f32>(0.0, 0.0, 0.0, 0.0);"))
+ EXPECT_THAT(module_str, HasSubstr("gl_Position = vec4<f32>();"))
<< module_str;
}
@@ -402,8 +401,7 @@
EXPECT_TRUE(p->BuildAndParseInternalModule());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(module_str,
- HasSubstr("gl_Position = vec4<f32>(0.0, 0.0, 0.0, 0.0);"))
+ EXPECT_THAT(module_str, HasSubstr("gl_Position = vec4<f32>();"))
<< module_str;
}
@@ -998,9 +996,8 @@
ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(
- module_str,
- HasSubstr("var<private> x_200 : vec2<bool> = vec2<bool>(false, false);"));
+ EXPECT_THAT(module_str,
+ HasSubstr("var<private> x_200 : vec2<bool> = vec2<bool>();"));
}
TEST_F(SpvModuleScopeVarParserTest, VectorBoolUndefInitializer) {
@@ -1012,9 +1009,8 @@
ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(
- module_str,
- HasSubstr("var<private> x_200 : vec2<bool> = vec2<bool>(false, false);"));
+ EXPECT_THAT(module_str,
+ HasSubstr("var<private> x_200 : vec2<bool> = vec2<bool>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1030,7 +1026,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : vec2<u32> = vec2<u32>(0u, 0u);"));
+ HasSubstr("var<private> x_200 : vec2<u32> = vec2<u32>();"));
}
TEST_F(SpvModuleScopeVarParserTest, VectorUintUndefInitializer) {
@@ -1043,7 +1039,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : vec2<u32> = vec2<u32>(0u, 0u);"));
+ HasSubstr("var<private> x_200 : vec2<u32> = vec2<u32>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1059,7 +1055,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : vec2<i32> = vec2<i32>(0, 0);"));
+ HasSubstr("var<private> x_200 : vec2<i32> = vec2<i32>();"));
}
TEST_F(SpvModuleScopeVarParserTest, VectorIntUndefInitializer) {
@@ -1072,7 +1068,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : vec2<i32> = vec2<i32>(0, 0);"));
+ HasSubstr("var<private> x_200 : vec2<i32> = vec2<i32>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1087,9 +1083,8 @@
ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(
- module_str,
- HasSubstr("var<private> x_200 : vec2<f32> = vec2<f32>(0.0, 0.0);"));
+ EXPECT_THAT(module_str,
+ HasSubstr("var<private> x_200 : vec2<f32> = vec2<f32>();"));
}
TEST_F(SpvModuleScopeVarParserTest, VectorFloatUndefInitializer) {
@@ -1101,9 +1096,8 @@
ASSERT_TRUE(p->BuildAndParseInternalModuleExceptFunctions());
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
- EXPECT_THAT(
- module_str,
- HasSubstr("var<private> x_200 : vec2<f32> = vec2<f32>(0.0, 0.0);"));
+ EXPECT_THAT(module_str,
+ HasSubstr("var<private> x_200 : vec2<f32> = vec2<f32>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1141,10 +1135,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : mat3x2<f32> = mat3x2<f32>("
- "vec2<f32>(0.0, 0.0), "
- "vec2<f32>(0.0, 0.0), "
- "vec2<f32>(0.0, 0.0));"));
+ HasSubstr("var<private> x_200 : mat3x2<f32> = mat3x2<f32>();"));
}
TEST_F(SpvModuleScopeVarParserTest, MatrixUndefInitializer) {
@@ -1157,10 +1148,7 @@
EXPECT_TRUE(p->error().empty());
const auto module_str = test::ToString(p->program());
EXPECT_THAT(module_str,
- HasSubstr("var<private> x_200 : mat3x2<f32> = mat3x2<f32>("
- "vec2<f32>(0.0, 0.0), "
- "vec2<f32>(0.0, 0.0), "
- "vec2<f32>(0.0, 0.0));"));
+ HasSubstr("var<private> x_200 : mat3x2<f32> = mat3x2<f32>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1193,8 +1181,7 @@
const auto module_str = test::ToString(p->program());
EXPECT_THAT(
module_str,
- HasSubstr(
- "var<private> x_200 : array<u32, 2u> = array<u32, 2u>(0u, 0u);"));
+ HasSubstr("var<private> x_200 : array<u32, 2u> = array<u32, 2u>();"));
}
TEST_F(SpvModuleScopeVarParserTest, ArrayUndefInitializer) {
@@ -1208,8 +1195,7 @@
const auto module_str = test::ToString(p->program());
EXPECT_THAT(
module_str,
- HasSubstr(
- "var<private> x_200 : array<u32, 2u> = array<u32, 2u>(0u, 0u);"));
+ HasSubstr("var<private> x_200 : array<u32, 2u> = array<u32, 2u>();"));
// This example module emits ok, but is not valid SPIR-V in the first place.
p->DeliberatelyInvalidSpirv();
@@ -1245,7 +1231,7 @@
const auto module_str = test::ToString(p->program());
EXPECT_THAT(
module_str,
- HasSubstr("var<private> x_200 : S = S(0u, 0.0, array<u32, 2u>(0u, 0u));"))
+ HasSubstr("var<private> x_200 : S = S(0u, 0.0, array<u32, 2u>());"))
<< module_str;
}
@@ -1262,7 +1248,7 @@
const auto module_str = test::ToString(p->program());
EXPECT_THAT(
module_str,
- HasSubstr("var<private> x_200 : S = S(0u, 0.0, array<u32, 2u>(0u, 0u));"))
+ HasSubstr("var<private> x_200 : S = S(0u, 0.0, array<u32, 2u>());"))
<< module_str;
// This example module emits ok, but is not valid SPIR-V in the first place.
@@ -3967,7 +3953,7 @@
EXPECT_TRUE(p->error().empty());
const auto got = test::ToString(p->program());
const std::string expected =
- R"(var<private> x_1 : array<u32, 1u> = array<u32, 1u>(0u);
+ R"(var<private> x_1 : array<u32, 1u> = array<u32, 1u>();
fn main_1() {
return;
@@ -4013,7 +3999,7 @@
EXPECT_TRUE(p->error().empty());
const auto got = test::ToString(p->program());
const std::string expected =
- R"(var<private> x_1 : array<i32, 1u> = array<i32, 1u>(0);
+ R"(var<private> x_1 : array<i32, 1u> = array<i32, 1u>();
fn main_1() {
return;
diff --git a/test/access/var/matrix.spvasm.expected.hlsl b/test/access/var/matrix.spvasm.expected.hlsl
index 6f7cb68..4770aea 100644
--- a/test/access/var/matrix.spvasm.expected.hlsl
+++ b/test/access/var/matrix.spvasm.expected.hlsl
@@ -1,5 +1,5 @@
void main_1() {
- float3x3 m = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
+ float3x3 m = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
const float3 x_15 = m[1];
const float x_16 = x_15.y;
return;
diff --git a/test/access/var/matrix.spvasm.expected.msl b/test/access/var/matrix.spvasm.expected.msl
index ae11058..818eb61 100644
--- a/test/access/var/matrix.spvasm.expected.msl
+++ b/test/access/var/matrix.spvasm.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
void main_1() {
- float3x3 m = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
+ float3x3 m = float3x3();
float3 const x_15 = m[1];
float const x_16 = x_15[1];
return;
diff --git a/test/access/var/matrix.spvasm.expected.spvasm b/test/access/var/matrix.spvasm.expected.spvasm
index 299c71c..faa7c9e 100644
--- a/test/access/var/matrix.spvasm.expected.spvasm
+++ b/test/access/var/matrix.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 23
+; Bound: 20
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -15,25 +15,22 @@
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %float_0 = OpConstant %float 0
- %9 = OpConstantComposite %v3float %float_0 %float_0 %float_0
- %10 = OpConstantComposite %mat3v3float %9 %9 %9
+ %8 = OpConstantNull %mat3v3float
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
- %13 = OpConstantNull %mat3v3float
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
%_ptr_Function_v3float = OpTypePointer Function %v3float
%main_1 = OpFunction %void None %1
%4 = OpLabel
- %m = OpVariable %_ptr_Function_mat3v3float Function %13
- OpStore %m %10
- %17 = OpAccessChain %_ptr_Function_v3float %m %int_1
- %18 = OpLoad %v3float %17
- %19 = OpCompositeExtract %float %18 1
+ %m = OpVariable %_ptr_Function_mat3v3float Function %8
+ OpStore %m %8
+ %14 = OpAccessChain %_ptr_Function_v3float %m %int_1
+ %15 = OpLoad %v3float %14
+ %16 = OpCompositeExtract %float %15 1
OpReturn
OpFunctionEnd
%main = OpFunction %void None %1
- %21 = OpLabel
- %22 = OpFunctionCall %void %main_1
+ %18 = OpLabel
+ %19 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
diff --git a/test/access/var/matrix.spvasm.expected.wgsl b/test/access/var/matrix.spvasm.expected.wgsl
index 080a67b..527abf6 100644
--- a/test/access/var/matrix.spvasm.expected.wgsl
+++ b/test/access/var/matrix.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
fn main_1() {
- var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+ var m : mat3x3<f32> = mat3x3<f32>();
let x_15 : vec3<f32> = m[1];
let x_16 : f32 = x_15.y;
return;
diff --git a/test/access/var/vector.spvasm.expected.msl b/test/access/var/vector.spvasm.expected.msl
index a6963f9..2f18abf 100644
--- a/test/access/var/vector.spvasm.expected.msl
+++ b/test/access/var/vector.spvasm.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
void main_1() {
- float3 v = float3(0.0f, 0.0f, 0.0f);
+ float3 v = float3();
float const x_14 = v[1];
float3 const x_16 = v;
float2 const x_17 = float2(x_16[0], x_16[2]);
diff --git a/test/access/var/vector.spvasm.expected.spvasm b/test/access/var/vector.spvasm.expected.spvasm
index de0f9d0..1ecdce9 100644
--- a/test/access/var/vector.spvasm.expected.spvasm
+++ b/test/access/var/vector.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 28
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -14,33 +14,31 @@
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
- %float_0 = OpConstant %float 0
- %8 = OpConstantComposite %v3float %float_0 %float_0 %float_0
+ %7 = OpConstantNull %v3float
%_ptr_Function_v3float = OpTypePointer Function %v3float
- %11 = OpConstantNull %v3float
%uint = OpTypeInt 32 0
%uint_1 = OpConstant %uint 1
%_ptr_Function_float = OpTypePointer Function %float
%v2float = OpTypeVector %float 2
%main_1 = OpFunction %void None %1
%4 = OpLabel
- %v = OpVariable %_ptr_Function_v3float Function %11
- OpStore %v %8
- %15 = OpAccessChain %_ptr_Function_float %v %uint_1
- %16 = OpLoad %float %15
- %17 = OpLoad %v3float %v
- %19 = OpCompositeExtract %float %17 0
- %20 = OpCompositeExtract %float %17 2
- %21 = OpCompositeConstruct %v2float %19 %20
- %22 = OpLoad %v3float %v
- %23 = OpCompositeExtract %float %22 0
- %24 = OpCompositeExtract %float %22 2
- %25 = OpCompositeExtract %float %22 1
- %26 = OpCompositeConstruct %v3float %23 %24 %25
+ %v = OpVariable %_ptr_Function_v3float Function %7
+ OpStore %v %7
+ %13 = OpAccessChain %_ptr_Function_float %v %uint_1
+ %14 = OpLoad %float %13
+ %15 = OpLoad %v3float %v
+ %17 = OpCompositeExtract %float %15 0
+ %18 = OpCompositeExtract %float %15 2
+ %19 = OpCompositeConstruct %v2float %17 %18
+ %20 = OpLoad %v3float %v
+ %21 = OpCompositeExtract %float %20 0
+ %22 = OpCompositeExtract %float %20 2
+ %23 = OpCompositeExtract %float %20 1
+ %24 = OpCompositeConstruct %v3float %21 %22 %23
OpReturn
OpFunctionEnd
%main = OpFunction %void None %1
- %28 = OpLabel
- %29 = OpFunctionCall %void %main_1
+ %26 = OpLabel
+ %27 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
diff --git a/test/access/var/vector.spvasm.expected.wgsl b/test/access/var/vector.spvasm.expected.wgsl
index c904348..3a3bfdf 100644
--- a/test/access/var/vector.spvasm.expected.wgsl
+++ b/test/access/var/vector.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
fn main_1() {
- var v : vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
+ var v : vec3<f32> = vec3<f32>();
let x_14 : f32 = v.y;
let x_16 : vec3<f32> = v;
let x_17 : vec2<f32> = vec2<f32>(x_16.x, x_16.z);
diff --git a/test/bug/tint/749.spvasm.expected.msl b/test/bug/tint/749.spvasm.expected.msl
index ff56ca2..c0772d1 100644
--- a/test/bug/tint/749.spvasm.expected.msl
+++ b/test/bug/tint/749.spvasm.expected.msl
@@ -843,7 +843,7 @@
QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42};
*(tint_symbol_84) = tint_symbol_43;
*(tint_symbol_84) = x_756;
- float2 const x_446 = float2(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[0]);
+ float2 const x_446 = float2(float2()[0], float2()[0]);
int const x_757 = i_2;
i_2 = 0;
i_2 = x_757;
@@ -857,7 +857,7 @@
float2 const x_759 = uv;
uv = float2(0.0f, 0.0f);
uv = x_759;
- float2 const x_447 = float2(float2(0.0f, 0.0f)[1], float2(0.0f, 0.0f)[1]);
+ float2 const x_447 = float2(float2()[1], float2()[1]);
float2 const x_760 = uv;
uv = float2(0.0f, 0.0f);
uv = x_760;
@@ -956,7 +956,7 @@
int const x_781 = (*(tint_symbol_84)).numbers.arr[0u];
(*(tint_symbol_84)).numbers.arr[0u] = 0;
(*(tint_symbol_84)).numbers.arr[0u] = x_781;
- float3 const x_456 = float3(float2(0.0f, 0.0f)[1], x_448[1], x_448[1]);
+ float3 const x_456 = float3(float2()[1], x_448[1], x_448[1]);
float const x_782 = uv[0];
uv[0] = 0.0f;
uv[0] = x_782;
@@ -975,7 +975,7 @@
QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62};
*(tint_symbol_84) = tint_symbol_63;
*(tint_symbol_84) = x_785;
- float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2(0.0f, 0.0f)[1]);
+ float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2()[1]);
int const x_786 = i_2;
i_2 = 0;
i_2 = x_786;
@@ -1015,7 +1015,7 @@
float const x_796 = uv[0];
uv[0] = 0.0f;
uv[0] = x_796;
- float2 const x_461 = float2(float2(0.0f, 0.0f)[1], float2(0.0f, 0.0f)[1]);
+ float2 const x_461 = float2(float2()[1], float2()[1]);
float const x_797 = uv[0];
uv[0] = 0.0f;
uv[0] = x_797;
@@ -1059,7 +1059,7 @@
int const x_808 = i_2;
i_2 = 0;
i_2 = x_808;
- float2 const x_466 = float2(x_455[1], float2(0.0f, 0.0f)[1]);
+ float2 const x_466 = float2(x_455[1], float2()[1]);
int const x_809 = i_2;
i_2 = 0;
i_2 = x_809;
@@ -1113,7 +1113,7 @@
int const x_822 = (*(tint_symbol_84)).numbers.arr[0u];
(*(tint_symbol_84)).numbers.arr[0u] = 0;
(*(tint_symbol_84)).numbers.arr[0u] = x_822;
- float2 const x_470 = float2(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[1]);
+ float2 const x_470 = float2(float2()[0], float2()[1]);
float const x_823 = color[2];
color[2] = 0.0f;
color[2] = x_823;
@@ -1155,7 +1155,7 @@
color[0] = x_832;
float2 const x_476 = float2(x_451[2], x_460[1]);
color[1] = (x_257 + float(x_254));
- float3 const x_477 = float3(float2(0.0f, 0.0f)[0], x_472[0], float2(0.0f, 0.0f)[1]);
+ float3 const x_477 = float3(float2()[0], x_472[0], float2()[1]);
float const x_833 = uv[0];
uv[0] = 0.0f;
uv[0] = x_833;
@@ -1170,14 +1170,14 @@
int const x_836 = i_2;
i_2 = 0;
i_2 = x_836;
- float3 const x_479 = float3(float2(0.0f, 0.0f)[1], x_454[1], float2(0.0f, 0.0f)[0]);
+ float3 const x_479 = float3(float2()[1], x_454[1], float2()[0]);
int const x_837 = (*(tint_symbol_84)).numbers.arr[0u];
(*(tint_symbol_84)).numbers.arr[0u] = 0;
(*(tint_symbol_84)).numbers.arr[0u] = x_837;
float const x_838 = color[1];
color[1] = 0.0f;
color[1] = x_838;
- float3 const x_480 = float3(x_446[0], x_446[0], float2(0.0f, 0.0f)[1]);
+ float3 const x_480 = float3(x_446[0], x_446[0], float2()[1]);
float const x_839 = uv[0];
uv[0] = 0.0f;
uv[0] = x_839;
@@ -1384,7 +1384,7 @@
float const x_891 = color[1];
color[1] = 0.0f;
color[1] = x_891;
- float2 const x_504 = float2(x_453[1], float2(0.0f, 0.0f)[0]);
+ float2 const x_504 = float2(x_453[1], float2()[0]);
float const x_892 = color[0];
color[0] = 0.0f;
color[0] = x_892;
@@ -1487,7 +1487,7 @@
float const x_918 = uv[0];
uv[0] = 0.0f;
uv[0] = x_918;
- float3 const x_517 = float3(float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[0], float2(0.0f, 0.0f)[1]);
+ float3 const x_517 = float3(float2()[0], float2()[0], float2()[1]);
color[0] = (float(x_317) + x_320);
float const x_919 = color[0];
color[0] = 0.0f;
diff --git a/test/bug/tint/749.spvasm.expected.spvasm b/test/bug/tint/749.spvasm.expected.spvasm
index 96f878d..5f5c422 100644
--- a/test/bug/tint/749.spvasm.expected.spvasm
+++ b/test/bug/tint/749.spvasm.expected.spvasm
@@ -1325,8 +1325,8 @@
%893 = OpLoad %QuicksortObject %obj
OpStore %obj %103
OpStore %obj %893
- %894 = OpCompositeExtract %float %876 0
- %895 = OpCompositeExtract %float %876 0
+ %894 = OpCompositeExtract %float %168 0
+ %895 = OpCompositeExtract %float %168 0
%896 = OpCompositeConstruct %v2float %894 %895
%897 = OpLoad %int %i_2
OpStore %i_2 %int_0
@@ -1339,8 +1339,8 @@
%901 = OpLoad %v2float %uv
OpStore %uv %876
OpStore %uv %901
- %902 = OpCompositeExtract %float %876 1
- %903 = OpCompositeExtract %float %876 1
+ %902 = OpCompositeExtract %float %168 1
+ %903 = OpCompositeExtract %float %168 1
%904 = OpCompositeConstruct %v2float %902 %903
%905 = OpLoad %v2float %uv
OpStore %uv %876
@@ -1473,7 +1473,7 @@
OpStore %988 %int_0
%989 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_0
OpStore %989 %987
- %990 = OpCompositeExtract %float %876 1
+ %990 = OpCompositeExtract %float %168 1
%991 = OpCompositeExtract %float %912 1
%992 = OpCompositeExtract %float %912 1
%993 = OpCompositeConstruct %v3float %990 %991 %992
@@ -1498,7 +1498,7 @@
OpStore %obj %103
OpStore %obj %1005
%1006 = OpCompositeExtract %float %38 2
- %1007 = OpCompositeExtract %float %876 1
+ %1007 = OpCompositeExtract %float %168 1
%1008 = OpCompositeConstruct %v2float %1006 %1007
%1009 = OpLoad %int %i_2
OpStore %i_2 %int_0
@@ -1572,8 +1572,8 @@
OpStore %1054 %float_0
%1055 = OpAccessChain %_ptr_Function_float %uv %uint_0
OpStore %1055 %1053
- %1056 = OpCompositeExtract %float %876 1
- %1057 = OpCompositeExtract %float %876 1
+ %1056 = OpCompositeExtract %float %168 1
+ %1057 = OpCompositeExtract %float %168 1
%1058 = OpCompositeConstruct %v2float %1056 %1057
%1059 = OpAccessChain %_ptr_Function_float %uv %uint_0
%1060 = OpLoad %float %1059
@@ -1666,7 +1666,7 @@
OpStore %i_2 %int_0
OpStore %i_2 %1125
%1126 = OpCompositeExtract %float %975 1
- %1127 = OpCompositeExtract %float %876 1
+ %1127 = OpCompositeExtract %float %168 1
%1128 = OpCompositeConstruct %v2float %1126 %1127
%1129 = OpLoad %int %i_2
OpStore %i_2 %int_0
@@ -1764,8 +1764,8 @@
OpStore %1193 %int_0
%1194 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_0
OpStore %1194 %1192
- %1195 = OpCompositeExtract %float %876 0
- %1196 = OpCompositeExtract %float %876 1
+ %1195 = OpCompositeExtract %float %168 0
+ %1196 = OpCompositeExtract %float %168 1
%1197 = OpCompositeConstruct %v2float %1195 %1196
%1198 = OpAccessChain %_ptr_Function_float %color %uint_2
%1199 = OpLoad %float %1198
@@ -1855,9 +1855,9 @@
%1261 = OpConvertSToF %float %1219
%1262 = OpFAdd %float %1241 %1261
OpStore %1260 %1262
- %1263 = OpCompositeExtract %float %876 0
+ %1263 = OpCompositeExtract %float %168 0
%1264 = OpCompositeExtract %float %1216 0
- %1265 = OpCompositeExtract %float %876 1
+ %1265 = OpCompositeExtract %float %168 1
%1266 = OpCompositeConstruct %v3float %1263 %1264 %1265
%1267 = OpAccessChain %_ptr_Function_float %uv %uint_0
%1268 = OpLoad %float %1267
@@ -1885,9 +1885,9 @@
%1284 = OpLoad %int %i_2
OpStore %i_2 %int_0
OpStore %i_2 %1284
- %1285 = OpCompositeExtract %float %876 1
+ %1285 = OpCompositeExtract %float %168 1
%1286 = OpCompositeExtract %float %970 1
- %1287 = OpCompositeExtract %float %876 0
+ %1287 = OpCompositeExtract %float %168 0
%1288 = OpCompositeConstruct %v3float %1285 %1286 %1287
%1289 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_0
%1290 = OpLoad %int %1289
@@ -1903,7 +1903,7 @@
OpStore %1296 %1294
%1297 = OpCompositeExtract %float %896 0
%1298 = OpCompositeExtract %float %896 0
- %1299 = OpCompositeExtract %float %876 1
+ %1299 = OpCompositeExtract %float %168 1
%1300 = OpCompositeConstruct %v3float %1297 %1298 %1299
%1301 = OpAccessChain %_ptr_Function_float %uv %uint_0
%1302 = OpLoad %float %1301
@@ -2308,7 +2308,7 @@
%1588 = OpAccessChain %_ptr_Function_float %color %uint_1
OpStore %1588 %1586
%1589 = OpCompositeExtract %float %962 1
- %1590 = OpCompositeExtract %float %876 0
+ %1590 = OpCompositeExtract %float %168 0
%1591 = OpCompositeConstruct %v2float %1589 %1590
%1592 = OpAccessChain %_ptr_Function_float %color %uint_0
%1593 = OpLoad %float %1592
@@ -2517,9 +2517,9 @@
OpStore %1743 %float_0
%1744 = OpAccessChain %_ptr_Function_float %uv %uint_0
OpStore %1744 %1742
- %1745 = OpCompositeExtract %float %876 0
- %1746 = OpCompositeExtract %float %876 0
- %1747 = OpCompositeExtract %float %876 1
+ %1745 = OpCompositeExtract %float %168 0
+ %1746 = OpCompositeExtract %float %168 0
+ %1747 = OpCompositeExtract %float %168 1
%1748 = OpCompositeConstruct %v3float %1745 %1746 %1747
%1749 = OpAccessChain %_ptr_Function_float %color %uint_0
%1750 = OpConvertSToF %float %1714
diff --git a/test/bug/tint/749.spvasm.expected.wgsl b/test/bug/tint/749.spvasm.expected.wgsl
index 9839d72..741a6ca 100644
--- a/test/bug/tint/749.spvasm.expected.wgsl
+++ b/test/bug/tint/749.spvasm.expected.wgsl
@@ -800,7 +800,7 @@
let x_756 : QuicksortObject = obj;
obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
obj = x_756;
- let x_446 : vec2<f32> = vec2<f32>(vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).x);
+ let x_446 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().x);
let x_757 : i32 = i_2;
i_2 = 0;
i_2 = x_757;
@@ -812,7 +812,7 @@
let x_759 : vec2<f32> = uv;
uv = vec2<f32>(0.0, 0.0);
uv = x_759;
- let x_447 : vec2<f32> = vec2<f32>(vec2<f32>(0.0, 0.0).y, vec2<f32>(0.0, 0.0).y);
+ let x_447 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
let x_760 : vec2<f32> = uv;
uv = vec2<f32>(0.0, 0.0);
uv = x_760;
@@ -898,7 +898,7 @@
let x_781 : i32 = *(x_200);
*(x_200) = 0;
*(x_200) = x_781;
- let x_456 : vec3<f32> = vec3<f32>(vec2<f32>(0.0, 0.0).y, x_448.y, x_448.y);
+ let x_456 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_448.y, x_448.y);
let x_782 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_782;
@@ -913,7 +913,7 @@
let x_785 : QuicksortObject = obj;
obj = QuicksortObject(array<i32, 10u>(0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
obj = x_785;
- let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0, 2.0, 3.0).z, vec2<f32>(0.0, 0.0).y);
+ let x_458 : vec2<f32> = vec2<f32>(vec3<f32>(1.0, 2.0, 3.0).z, vec2<f32>().y);
let x_786 : i32 = i_2;
i_2 = 0;
i_2 = x_786;
@@ -953,7 +953,7 @@
let x_796 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_796;
- let x_461 : vec2<f32> = vec2<f32>(vec2<f32>(0.0, 0.0).y, vec2<f32>(0.0, 0.0).y);
+ let x_461 : vec2<f32> = vec2<f32>(vec2<f32>().y, vec2<f32>().y);
let x_797 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_797;
@@ -998,7 +998,7 @@
let x_808 : i32 = i_2;
i_2 = 0;
i_2 = x_808;
- let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>(0.0, 0.0).y);
+ let x_466 : vec2<f32> = vec2<f32>(x_455.y, vec2<f32>().y);
let x_809 : i32 = i_2;
i_2 = 0;
i_2 = x_809;
@@ -1050,7 +1050,7 @@
let x_822 : i32 = *(x_200);
*(x_200) = 0;
*(x_200) = x_822;
- let x_470 : vec2<f32> = vec2<f32>(vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).y);
+ let x_470 : vec2<f32> = vec2<f32>(vec2<f32>().x, vec2<f32>().y);
let x_823 : f32 = color.z;
color.z = 0.0;
color.z = x_823;
@@ -1093,7 +1093,7 @@
color.x = x_832;
let x_476 : vec2<f32> = vec2<f32>(x_451.z, x_460.y);
color.y = (x_257 + f32(x_254));
- let x_477 : vec3<f32> = vec3<f32>(vec2<f32>(0.0, 0.0).x, x_472.x, vec2<f32>(0.0, 0.0).y);
+ let x_477 : vec3<f32> = vec3<f32>(vec2<f32>().x, x_472.x, vec2<f32>().y);
let x_833 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_833;
@@ -1108,14 +1108,14 @@
let x_836 : i32 = i_2;
i_2 = 0;
i_2 = x_836;
- let x_479 : vec3<f32> = vec3<f32>(vec2<f32>(0.0, 0.0).y, x_454.y, vec2<f32>(0.0, 0.0).x);
+ let x_479 : vec3<f32> = vec3<f32>(vec2<f32>().y, x_454.y, vec2<f32>().x);
let x_837 : i32 = *(x_200);
*(x_200) = 0;
*(x_200) = x_837;
let x_838 : f32 = color.y;
color.y = 0.0;
color.y = x_838;
- let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>(0.0, 0.0).y);
+ let x_480 : vec3<f32> = vec3<f32>(x_446.x, x_446.x, vec2<f32>().y);
let x_839 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_839;
@@ -1318,7 +1318,7 @@
let x_891 : f32 = color.y;
color.y = 0.0;
color.y = x_891;
- let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>(0.0, 0.0).x);
+ let x_504 : vec2<f32> = vec2<f32>(x_453.y, vec2<f32>().x);
let x_892 : f32 = color.x;
color.x = 0.0;
color.x = x_892;
@@ -1419,7 +1419,7 @@
let x_918 : f32 = uv.x;
uv.x = 0.0;
uv.x = x_918;
- let x_517 : vec3<f32> = vec3<f32>(vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).x, vec2<f32>(0.0, 0.0).y);
+ let x_517 : vec3<f32> = vec3<f32>(vec2<f32>().x, vec2<f32>().x, vec2<f32>().y);
color.x = (f32(x_317) + x_320);
let x_919 : f32 = color.x;
color.x = 0.0;
diff --git a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.msl b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.msl
index ab54f6f..f615d7a 100644
--- a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.msl
+++ b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.msl
@@ -9,7 +9,7 @@
};
void textureDimensions_f60bdb(depth2d_ms<float, access::read> tint_symbol_5) {
- int2 res = int2(0, 0);
+ int2 res = int2();
int2 const x_16 = int2(int2(tint_symbol_5.get_width(), tint_symbol_5.get_height()));
res = x_16;
return;
@@ -22,7 +22,7 @@
void vertex_main_1(depth2d_ms<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
textureDimensions_f60bdb(tint_symbol_7);
- tint_symbol_2(float4(0.0f, 0.0f, 0.0f, 0.0f), tint_symbol_8);
+ tint_symbol_2(float4(), tint_symbol_8);
return;
}
@@ -33,7 +33,7 @@
}
vertex tint_symbol_3 vertex_main(depth2d_ms<float, access::read> tint_symbol_11 [[texture(0)]]) {
- thread float4 tint_symbol_12 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+ thread float4 tint_symbol_12 = float4();
vertex_main_out const inner_result = vertex_main_inner(tint_symbol_11, &(tint_symbol_12));
tint_symbol_3 wrapper_result = {};
wrapper_result.tint_symbol_1_1 = inner_result.tint_symbol_1_1;
diff --git a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.spvasm b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.spvasm
index 3e9f5e3..da6327a 100644
--- a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.spvasm
+++ b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 62
+; Bound: 58
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
@@ -44,75 +44,71 @@
%11 = OpTypeImage %float 2D 1 0 1 1 Unknown
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
- %float_0 = OpConstant %float 0
- %13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%_ptr_Private_v4float = OpTypePointer Private %v4float
-%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %13
+%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %5
%void = OpTypeVoid
- %16 = OpTypeFunction %void
+ %14 = OpTypeFunction %void
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
- %int_0 = OpConstant %int 0
- %23 = OpConstantComposite %v2int %int_0 %int_0
+ %20 = OpConstantNull %v2int
%_ptr_Function_v2int = OpTypePointer Function %v2int
- %26 = OpConstantNull %v2int
- %30 = OpTypeFunction %void %v4float
+ %26 = OpTypeFunction %void %v4float
%vertex_main_out = OpTypeStruct %v4float
- %38 = OpTypeFunction %vertex_main_out
+ %34 = OpTypeFunction %vertex_main_out
%float_1 = OpConstant %float 1
-%textureDimensions_f60bdb = OpFunction %void None %16
- %19 = OpLabel
- %res = OpVariable %_ptr_Function_v2int Function %26
- OpStore %res %23
- %29 = OpLoad %11 %arg_0
- %28 = OpImageQuerySize %v2int %29
- OpStore %res %28
+%textureDimensions_f60bdb = OpFunction %void None %14
+ %17 = OpLabel
+ %res = OpVariable %_ptr_Function_v2int Function %20
+ OpStore %res %20
+ %25 = OpLoad %11 %arg_0
+ %24 = OpImageQuerySize %v2int %25
+ OpStore %res %24
OpReturn
OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %30
+%tint_symbol_2 = OpFunction %void None %26
%tint_symbol = OpFunctionParameter %v4float
- %33 = OpLabel
+ %29 = OpLabel
OpStore %tint_symbol_1 %tint_symbol
OpReturn
OpFunctionEnd
-%vertex_main_1 = OpFunction %void None %16
- %35 = OpLabel
- %36 = OpFunctionCall %void %textureDimensions_f60bdb
- %37 = OpFunctionCall %void %tint_symbol_2 %13
+%vertex_main_1 = OpFunction %void None %14
+ %31 = OpLabel
+ %32 = OpFunctionCall %void %textureDimensions_f60bdb
+ %33 = OpFunctionCall %void %tint_symbol_2 %5
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %vertex_main_out None %38
- %41 = OpLabel
- %42 = OpFunctionCall %void %vertex_main_1
- %43 = OpLoad %v4float %tint_symbol_1
- %44 = OpCompositeConstruct %vertex_main_out %43
- OpReturnValue %44
+%vertex_main_inner = OpFunction %vertex_main_out None %34
+ %37 = OpLabel
+ %38 = OpFunctionCall %void %vertex_main_1
+ %39 = OpLoad %v4float %tint_symbol_1
+ %40 = OpCompositeConstruct %vertex_main_out %39
+ OpReturnValue %40
OpFunctionEnd
-%vertex_main = OpFunction %void None %16
- %46 = OpLabel
- %47 = OpFunctionCall %vertex_main_out %vertex_main_inner
- %48 = OpCompositeExtract %v4float %47 0
- OpStore %tint_symbol_1_1_1 %48
+%vertex_main = OpFunction %void None %14
+ %42 = OpLabel
+ %43 = OpFunctionCall %vertex_main_out %vertex_main_inner
+ %44 = OpCompositeExtract %v4float %43 0
+ OpStore %tint_symbol_1_1_1 %44
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main_1 = OpFunction %void None %16
- %51 = OpLabel
- %52 = OpFunctionCall %void %textureDimensions_f60bdb
+%fragment_main_1 = OpFunction %void None %14
+ %47 = OpLabel
+ %48 = OpFunctionCall %void %textureDimensions_f60bdb
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %16
- %54 = OpLabel
- %55 = OpFunctionCall %void %fragment_main_1
+%fragment_main = OpFunction %void None %14
+ %50 = OpLabel
+ %51 = OpFunctionCall %void %fragment_main_1
OpReturn
OpFunctionEnd
-%compute_main_1 = OpFunction %void None %16
- %57 = OpLabel
- %58 = OpFunctionCall %void %textureDimensions_f60bdb
+%compute_main_1 = OpFunction %void None %14
+ %53 = OpLabel
+ %54 = OpFunctionCall %void %textureDimensions_f60bdb
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %16
- %60 = OpLabel
- %61 = OpFunctionCall %void %compute_main_1
+%compute_main = OpFunction %void None %14
+ %56 = OpLabel
+ %57 = OpFunctionCall %void %compute_main_1
OpReturn
OpFunctionEnd
diff --git a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
index f7fbc92..0dbdb01 100644
--- a/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureDimensions/depth_ms.spvasm.expected.wgsl
@@ -1,9 +1,9 @@
[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
-var<private> tint_symbol_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
fn textureDimensions_f60bdb() {
- var res : vec2<i32> = vec2<i32>(0, 0);
+ var res : vec2<i32> = vec2<i32>();
let x_16 : vec2<i32> = vec2<i32>(textureDimensions(arg_0));
res = x_16;
return;
@@ -16,7 +16,7 @@
fn vertex_main_1() {
textureDimensions_f60bdb();
- tint_symbol_2(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+ tint_symbol_2(vec4<f32>());
return;
}
diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl
index 0923cc4..acbe9b1 100644
--- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl
+++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.msl
@@ -10,7 +10,7 @@
void textureLoad_6273b1(depth2d_ms<float, access::read> tint_symbol_5) {
float res = 0.0f;
- float4 const x_17 = float4(tint_symbol_5.read(uint2(int2(0, 0)), 1), 0.0f, 0.0f, 0.0f);
+ float4 const x_17 = float4(tint_symbol_5.read(uint2(int2()), 1), 0.0f, 0.0f, 0.0f);
res = x_17[0];
return;
}
@@ -22,7 +22,7 @@
void vertex_main_1(depth2d_ms<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
textureLoad_6273b1(tint_symbol_7);
- tint_symbol_2(float4(0.0f, 0.0f, 0.0f, 0.0f), tint_symbol_8);
+ tint_symbol_2(float4(), tint_symbol_8);
return;
}
@@ -33,7 +33,7 @@
}
vertex tint_symbol_3 vertex_main(depth2d_ms<float, access::read> tint_symbol_11 [[texture(0)]]) {
- thread float4 tint_symbol_12 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+ thread float4 tint_symbol_12 = float4();
vertex_main_out const inner_result = vertex_main_inner(tint_symbol_11, &(tint_symbol_12));
tint_symbol_3 wrapper_result = {};
wrapper_result.tint_symbol_1_1 = inner_result.tint_symbol_1_1;
diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.spvasm b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.spvasm
index 94ddf71..f03287e 100644
--- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.spvasm
+++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 64
+; Bound: 62
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -43,78 +43,76 @@
%11 = OpTypeImage %float 2D 1 0 1 1 Unknown
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
- %float_0 = OpConstant %float 0
- %13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%_ptr_Private_v4float = OpTypePointer Private %v4float
-%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %13
+%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %5
%void = OpTypeVoid
- %16 = OpTypeFunction %void
+ %14 = OpTypeFunction %void
+ %float_0 = OpConstant %float 0
%_ptr_Function_float = OpTypePointer Function %float
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
- %int_0 = OpConstant %int 0
- %28 = OpConstantComposite %v2int %int_0 %int_0
+ %26 = OpConstantNull %v2int
%int_1 = OpConstant %int 1
- %32 = OpTypeFunction %void %v4float
+ %30 = OpTypeFunction %void %v4float
%vertex_main_out = OpTypeStruct %v4float
- %40 = OpTypeFunction %vertex_main_out
+ %38 = OpTypeFunction %vertex_main_out
%float_1 = OpConstant %float 1
-%textureLoad_6273b1 = OpFunction %void None %16
- %19 = OpLabel
+%textureLoad_6273b1 = OpFunction %void None %14
+ %17 = OpLabel
%res = OpVariable %_ptr_Function_float Function %8
OpStore %res %float_0
- %24 = OpLoad %11 %arg_0
- %23 = OpImageFetch %v4float %24 %28 Sample %int_1
- %22 = OpCompositeExtract %float %23 0
- %30 = OpCompositeConstruct %v4float %22 %float_0 %float_0 %float_0
- %31 = OpCompositeExtract %float %30 0
- OpStore %res %31
+ %23 = OpLoad %11 %arg_0
+ %22 = OpImageFetch %v4float %23 %26 Sample %int_1
+ %21 = OpCompositeExtract %float %22 0
+ %28 = OpCompositeConstruct %v4float %21 %float_0 %float_0 %float_0
+ %29 = OpCompositeExtract %float %28 0
+ OpStore %res %29
OpReturn
OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %32
+%tint_symbol_2 = OpFunction %void None %30
%tint_symbol = OpFunctionParameter %v4float
- %35 = OpLabel
+ %33 = OpLabel
OpStore %tint_symbol_1 %tint_symbol
OpReturn
OpFunctionEnd
-%vertex_main_1 = OpFunction %void None %16
- %37 = OpLabel
- %38 = OpFunctionCall %void %textureLoad_6273b1
- %39 = OpFunctionCall %void %tint_symbol_2 %13
+%vertex_main_1 = OpFunction %void None %14
+ %35 = OpLabel
+ %36 = OpFunctionCall %void %textureLoad_6273b1
+ %37 = OpFunctionCall %void %tint_symbol_2 %5
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %vertex_main_out None %40
- %43 = OpLabel
- %44 = OpFunctionCall %void %vertex_main_1
- %45 = OpLoad %v4float %tint_symbol_1
- %46 = OpCompositeConstruct %vertex_main_out %45
- OpReturnValue %46
+%vertex_main_inner = OpFunction %vertex_main_out None %38
+ %41 = OpLabel
+ %42 = OpFunctionCall %void %vertex_main_1
+ %43 = OpLoad %v4float %tint_symbol_1
+ %44 = OpCompositeConstruct %vertex_main_out %43
+ OpReturnValue %44
OpFunctionEnd
-%vertex_main = OpFunction %void None %16
- %48 = OpLabel
- %49 = OpFunctionCall %vertex_main_out %vertex_main_inner
- %50 = OpCompositeExtract %v4float %49 0
- OpStore %tint_symbol_1_1_1 %50
+%vertex_main = OpFunction %void None %14
+ %46 = OpLabel
+ %47 = OpFunctionCall %vertex_main_out %vertex_main_inner
+ %48 = OpCompositeExtract %v4float %47 0
+ OpStore %tint_symbol_1_1_1 %48
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main_1 = OpFunction %void None %16
- %53 = OpLabel
- %54 = OpFunctionCall %void %textureLoad_6273b1
+%fragment_main_1 = OpFunction %void None %14
+ %51 = OpLabel
+ %52 = OpFunctionCall %void %textureLoad_6273b1
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %16
- %56 = OpLabel
- %57 = OpFunctionCall %void %fragment_main_1
+%fragment_main = OpFunction %void None %14
+ %54 = OpLabel
+ %55 = OpFunctionCall %void %fragment_main_1
OpReturn
OpFunctionEnd
-%compute_main_1 = OpFunction %void None %16
- %59 = OpLabel
- %60 = OpFunctionCall %void %textureLoad_6273b1
+%compute_main_1 = OpFunction %void None %14
+ %57 = OpLabel
+ %58 = OpFunctionCall %void %textureLoad_6273b1
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %16
- %62 = OpLabel
- %63 = OpFunctionCall %void %compute_main_1
+%compute_main = OpFunction %void None %14
+ %60 = OpLabel
+ %61 = OpFunctionCall %void %compute_main_1
OpReturn
OpFunctionEnd
diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
index d78aed2..c308490 100644
--- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.wgsl
@@ -1,10 +1,10 @@
[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
-var<private> tint_symbol_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
fn textureLoad_6273b1() {
var res : f32 = 0.0;
- let x_17 : vec4<f32> = vec4<f32>(textureLoad(arg_0, vec2<i32>(0, 0), 1), 0.0, 0.0, 0.0);
+ let x_17 : vec4<f32> = vec4<f32>(textureLoad(arg_0, vec2<i32>(), 1), 0.0, 0.0, 0.0);
res = x_17.x;
return;
}
@@ -16,7 +16,7 @@
fn vertex_main_1() {
textureLoad_6273b1();
- tint_symbol_2(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+ tint_symbol_2(vec4<f32>());
return;
}
diff --git a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.msl b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.msl
index a91182b..6f38d37 100644
--- a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.msl
+++ b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.msl
@@ -22,7 +22,7 @@
void vertex_main_1(depth2d_ms<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
textureNumSamples_a3c8a0(tint_symbol_7);
- tint_symbol_2(float4(0.0f, 0.0f, 0.0f, 0.0f), tint_symbol_8);
+ tint_symbol_2(float4(), tint_symbol_8);
return;
}
@@ -33,7 +33,7 @@
}
vertex tint_symbol_3 vertex_main(depth2d_ms<float, access::read> tint_symbol_11 [[texture(0)]]) {
- thread float4 tint_symbol_12 = float4(0.0f, 0.0f, 0.0f, 0.0f);
+ thread float4 tint_symbol_12 = float4();
vertex_main_out const inner_result = vertex_main_inner(tint_symbol_11, &(tint_symbol_12));
tint_symbol_3 wrapper_result = {};
wrapper_result.tint_symbol_1_1 = inner_result.tint_symbol_1_1;
diff --git a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.spvasm b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.spvasm
index 14bc9db..cf053b2 100644
--- a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.spvasm
+++ b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 59
+; Bound: 57
; Schema: 0
OpCapability Shader
OpCapability ImageQuery
@@ -44,73 +44,71 @@
%11 = OpTypeImage %float 2D 1 0 1 1 Unknown
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
- %float_0 = OpConstant %float 0
- %13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%_ptr_Private_v4float = OpTypePointer Private %v4float
-%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %13
+%tint_symbol_1 = OpVariable %_ptr_Private_v4float Private %5
%void = OpTypeVoid
- %16 = OpTypeFunction %void
+ %14 = OpTypeFunction %void
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Function_int = OpTypePointer Function %int
- %24 = OpConstantNull %int
- %27 = OpTypeFunction %void %v4float
+ %22 = OpConstantNull %int
+ %25 = OpTypeFunction %void %v4float
%vertex_main_out = OpTypeStruct %v4float
- %35 = OpTypeFunction %vertex_main_out
+ %33 = OpTypeFunction %vertex_main_out
%float_1 = OpConstant %float 1
-%textureNumSamples_a3c8a0 = OpFunction %void None %16
- %19 = OpLabel
- %res = OpVariable %_ptr_Function_int Function %24
+%textureNumSamples_a3c8a0 = OpFunction %void None %14
+ %17 = OpLabel
+ %res = OpVariable %_ptr_Function_int Function %22
OpStore %res %int_0
- %26 = OpLoad %11 %arg_0
- %25 = OpImageQuerySamples %int %26
- OpStore %res %25
+ %24 = OpLoad %11 %arg_0
+ %23 = OpImageQuerySamples %int %24
+ OpStore %res %23
OpReturn
OpFunctionEnd
-%tint_symbol_2 = OpFunction %void None %27
+%tint_symbol_2 = OpFunction %void None %25
%tint_symbol = OpFunctionParameter %v4float
- %30 = OpLabel
+ %28 = OpLabel
OpStore %tint_symbol_1 %tint_symbol
OpReturn
OpFunctionEnd
-%vertex_main_1 = OpFunction %void None %16
- %32 = OpLabel
- %33 = OpFunctionCall %void %textureNumSamples_a3c8a0
- %34 = OpFunctionCall %void %tint_symbol_2 %13
+%vertex_main_1 = OpFunction %void None %14
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %textureNumSamples_a3c8a0
+ %32 = OpFunctionCall %void %tint_symbol_2 %5
OpReturn
OpFunctionEnd
-%vertex_main_inner = OpFunction %vertex_main_out None %35
- %38 = OpLabel
- %39 = OpFunctionCall %void %vertex_main_1
- %40 = OpLoad %v4float %tint_symbol_1
- %41 = OpCompositeConstruct %vertex_main_out %40
- OpReturnValue %41
+%vertex_main_inner = OpFunction %vertex_main_out None %33
+ %36 = OpLabel
+ %37 = OpFunctionCall %void %vertex_main_1
+ %38 = OpLoad %v4float %tint_symbol_1
+ %39 = OpCompositeConstruct %vertex_main_out %38
+ OpReturnValue %39
OpFunctionEnd
-%vertex_main = OpFunction %void None %16
- %43 = OpLabel
- %44 = OpFunctionCall %vertex_main_out %vertex_main_inner
- %45 = OpCompositeExtract %v4float %44 0
- OpStore %tint_symbol_1_1_1 %45
+%vertex_main = OpFunction %void None %14
+ %41 = OpLabel
+ %42 = OpFunctionCall %vertex_main_out %vertex_main_inner
+ %43 = OpCompositeExtract %v4float %42 0
+ OpStore %tint_symbol_1_1_1 %43
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd
-%fragment_main_1 = OpFunction %void None %16
- %48 = OpLabel
- %49 = OpFunctionCall %void %textureNumSamples_a3c8a0
+%fragment_main_1 = OpFunction %void None %14
+ %46 = OpLabel
+ %47 = OpFunctionCall %void %textureNumSamples_a3c8a0
OpReturn
OpFunctionEnd
-%fragment_main = OpFunction %void None %16
- %51 = OpLabel
- %52 = OpFunctionCall %void %fragment_main_1
+%fragment_main = OpFunction %void None %14
+ %49 = OpLabel
+ %50 = OpFunctionCall %void %fragment_main_1
OpReturn
OpFunctionEnd
-%compute_main_1 = OpFunction %void None %16
- %54 = OpLabel
- %55 = OpFunctionCall %void %textureNumSamples_a3c8a0
+%compute_main_1 = OpFunction %void None %14
+ %52 = OpLabel
+ %53 = OpFunctionCall %void %textureNumSamples_a3c8a0
OpReturn
OpFunctionEnd
-%compute_main = OpFunction %void None %16
- %57 = OpLabel
- %58 = OpFunctionCall %void %compute_main_1
+%compute_main = OpFunction %void None %14
+ %55 = OpLabel
+ %56 = OpFunctionCall %void %compute_main_1
OpReturn
OpFunctionEnd
diff --git a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
index 8666466..ac6cc99 100644
--- a/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
+++ b/test/intrinsics/textureNumSamples/depth_ms.spvasm.expected.wgsl
@@ -1,6 +1,6 @@
[[group(1), binding(0)]] var arg_0 : texture_depth_multisampled_2d;
-var<private> tint_symbol_1 : vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
+var<private> tint_symbol_1 : vec4<f32> = vec4<f32>();
fn textureNumSamples_a3c8a0() {
var res : i32 = 0;
@@ -16,7 +16,7 @@
fn vertex_main_1() {
textureNumSamples_a3c8a0();
- tint_symbol_2(vec4<f32>(0.0, 0.0, 0.0, 0.0));
+ tint_symbol_2(vec4<f32>());
return;
}
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.hlsl b/test/ptr_ref/access/matrix.spvasm.expected.hlsl
index 0dfd7df..b5e352e 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.hlsl
+++ b/test/ptr_ref/access/matrix.spvasm.expected.hlsl
@@ -1,5 +1,5 @@
void main_1() {
- float3x3 m = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
+ float3x3 m = float3x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
m[1] = float3(5.0f, 5.0f, 5.0f);
return;
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.msl b/test/ptr_ref/access/matrix.spvasm.expected.msl
index 355f903..e301589 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.msl
+++ b/test/ptr_ref/access/matrix.spvasm.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
void main_1() {
- float3x3 m = float3x3(float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f));
+ float3x3 m = float3x3();
m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
m[1] = float3(5.0f, 5.0f, 5.0f);
return;
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.spvasm b/test/ptr_ref/access/matrix.spvasm.expected.spvasm
index 7f83834..9e864df 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.spvasm
+++ b/test/ptr_ref/access/matrix.spvasm.expected.spvasm
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 32
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@@ -15,39 +15,36 @@
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
- %float_0 = OpConstant %float 0
- %9 = OpConstantComposite %v3float %float_0 %float_0 %float_0
- %10 = OpConstantComposite %mat3v3float %9 %9 %9
+ %8 = OpConstantNull %mat3v3float
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
- %13 = OpConstantNull %mat3v3float
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
- %17 = OpConstantComposite %v3float %float_1 %float_2 %float_3
+ %14 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%float_4 = OpConstant %float 4
%float_5 = OpConstant %float 5
%float_6 = OpConstant %float 6
- %21 = OpConstantComposite %v3float %float_4 %float_5 %float_6
+ %18 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%float_7 = OpConstant %float 7
%float_8 = OpConstant %float 8
%float_9 = OpConstant %float 9
- %25 = OpConstantComposite %v3float %float_7 %float_8 %float_9
- %26 = OpConstantComposite %mat3v3float %17 %21 %25
+ %22 = OpConstantComposite %v3float %float_7 %float_8 %float_9
+ %23 = OpConstantComposite %mat3v3float %14 %18 %22
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
%_ptr_Function_v3float = OpTypePointer Function %v3float
- %31 = OpConstantComposite %v3float %float_5 %float_5 %float_5
+ %28 = OpConstantComposite %v3float %float_5 %float_5 %float_5
%main_1 = OpFunction %void None %1
%4 = OpLabel
- %m = OpVariable %_ptr_Function_mat3v3float Function %13
- OpStore %m %10
- OpStore %m %26
- %30 = OpAccessChain %_ptr_Function_v3float %m %int_1
- OpStore %30 %31
+ %m = OpVariable %_ptr_Function_mat3v3float Function %8
+ OpStore %m %8
+ OpStore %m %23
+ %27 = OpAccessChain %_ptr_Function_v3float %m %int_1
+ OpStore %27 %28
OpReturn
OpFunctionEnd
%main = OpFunction %void None %1
- %33 = OpLabel
- %34 = OpFunctionCall %void %main_1
+ %30 = OpLabel
+ %31 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.wgsl b/test/ptr_ref/access/matrix.spvasm.expected.wgsl
index 57e94a5..54e50e7 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.wgsl
+++ b/test/ptr_ref/access/matrix.spvasm.expected.wgsl
@@ -1,5 +1,5 @@
fn main_1() {
- var m : mat3x3<f32> = mat3x3<f32>(vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0), vec3<f32>(0.0, 0.0, 0.0));
+ var m : mat3x3<f32> = mat3x3<f32>();
m = mat3x3<f32>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(4.0, 5.0, 6.0), vec3<f32>(7.0, 8.0, 9.0));
m[1] = vec3<f32>(5.0, 5.0, 5.0);
return;