mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-21 02:39:11 +00:00
wgsl: Separate struct members with commas
Use of semicolons is still supported, but deprecated. Also updates the parsing methods for structures to better match the WGSL grammar. Bug: tint:1475 Change-Id: I7675ba42c13f91080b0ac173c352e0092021f80b Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/84380 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: James Price <jrprice@google.com>
This commit is contained in:
committed by
Tint LUCI CQ
parent
444e051faa
commit
3b671cb377
@@ -37,7 +37,7 @@ TEST_F(AddSpirvBlockAttributeTest, EmptyModule) {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Noop_UsedForPrivateVar) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
var<private> p : S;
|
||||
@@ -58,7 +58,7 @@ TEST_F(AddSpirvBlockAttributeTest, Noop_UsedForShaderIO) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
@location(0)
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@stage(fragment)
|
||||
@@ -86,7 +86,7 @@ fn main() {
|
||||
auto* expect = R"(
|
||||
@internal(spirv_block)
|
||||
struct u_block {
|
||||
inner : f32;
|
||||
inner : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : u_block;
|
||||
@@ -115,7 +115,7 @@ fn main() {
|
||||
auto* expect = R"(
|
||||
@internal(spirv_block)
|
||||
struct u_block {
|
||||
inner : array<vec4<f32>, 4u>;
|
||||
inner : array<vec4<f32>, 4u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : u_block;
|
||||
@@ -148,7 +148,7 @@ type Numbers = array<vec4<f32>, 4u>;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u_block {
|
||||
inner : array<vec4<f32>, 4u>;
|
||||
inner : array<vec4<f32>, 4u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : u_block;
|
||||
@@ -167,7 +167,7 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, BasicStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -181,7 +181,7 @@ fn main() {
|
||||
auto* expect = R"(
|
||||
@internal(spirv_block)
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : S;
|
||||
@@ -200,11 +200,11 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerNotBuffer) {
|
||||
auto* src = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -217,12 +217,12 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@internal(spirv_block)
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : Outer;
|
||||
@@ -241,11 +241,11 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Nested_OuterBuffer_InnerBuffer) {
|
||||
auto* src = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -262,19 +262,19 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@internal(spirv_block)
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u0 : Outer;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u1_block {
|
||||
inner : Inner;
|
||||
inner : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<uniform> u1 : u1_block;
|
||||
@@ -294,11 +294,11 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Nested_OuterNotBuffer_InnerBuffer) {
|
||||
auto* src = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
};
|
||||
|
||||
var<private> p : Outer;
|
||||
@@ -314,18 +314,18 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
struct Outer {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
}
|
||||
|
||||
var<private> p : Outer;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u_block {
|
||||
inner : Inner;
|
||||
inner : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<uniform> u : u_block;
|
||||
@@ -345,11 +345,11 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Nested_InnerUsedForMultipleBuffers) {
|
||||
auto* src = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
struct S {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -370,19 +370,19 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@internal(spirv_block)
|
||||
struct S {
|
||||
i : Inner;
|
||||
i : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u0 : S;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u1_block {
|
||||
inner : Inner;
|
||||
inner : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<uniform> u1 : u1_block;
|
||||
@@ -405,7 +405,7 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, StructInArray) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -419,12 +419,12 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u_block {
|
||||
inner : S;
|
||||
inner : S,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u : u_block;
|
||||
@@ -444,7 +444,7 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, StructInArray_MultipleBuffers) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -462,12 +462,12 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u0_block {
|
||||
inner : S;
|
||||
inner : S,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> u0 : u0_block;
|
||||
@@ -490,13 +490,13 @@ fn main() {
|
||||
TEST_F(AddSpirvBlockAttributeTest, Aliases_Nested_OuterBuffer_InnerBuffer) {
|
||||
auto* src = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
type MyInner = Inner;
|
||||
|
||||
struct Outer {
|
||||
i : MyInner;
|
||||
i : MyInner,
|
||||
};
|
||||
|
||||
type MyOuter = Outer;
|
||||
@@ -515,14 +515,14 @@ fn main() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
type MyInner = Inner;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct Outer {
|
||||
i : MyInner;
|
||||
i : MyInner,
|
||||
}
|
||||
|
||||
type MyOuter = Outer;
|
||||
@@ -531,7 +531,7 @@ type MyOuter = Outer;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u1_block {
|
||||
inner : Inner;
|
||||
inner : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<uniform> u1 : u1_block;
|
||||
@@ -568,11 +568,11 @@ var<uniform> u0 : MyOuter;
|
||||
type MyOuter = Outer;
|
||||
|
||||
struct Outer {
|
||||
i : MyInner;
|
||||
i : MyInner,
|
||||
};
|
||||
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -584,7 +584,7 @@ fn main() {
|
||||
|
||||
@internal(spirv_block)
|
||||
struct u1_block {
|
||||
inner : Inner;
|
||||
inner : Inner,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<uniform> u1 : u1_block;
|
||||
@@ -597,11 +597,11 @@ type MyOuter = Outer;
|
||||
|
||||
@internal(spirv_block)
|
||||
struct Outer {
|
||||
i : MyInner;
|
||||
i : MyInner,
|
||||
}
|
||||
|
||||
struct Inner {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
)";
|
||||
|
||||
|
||||
@@ -35,8 +35,8 @@ TEST_F(ArrayLengthFromUniformTest, ShouldRunEmptyModule) {
|
||||
TEST_F(ArrayLengthFromUniformTest, ShouldRunNoArrayLength) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -52,8 +52,8 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, ShouldRunWithArrayLength) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -70,8 +70,8 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, Error_MissingTransformData) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -103,7 +103,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 1u>;
|
||||
buffer_size : array<vec4<u32>, 1u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -132,8 +132,8 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, BasicInStruct) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -146,14 +146,14 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 1u>;
|
||||
buffer_size : array<vec4<u32>, 1u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -180,16 +180,16 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, MultipleStorageBuffers) {
|
||||
auto* src = R"(
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
};
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
};
|
||||
struct SB4 {
|
||||
x : i32;
|
||||
arr4 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr4 : array<vec4<f32>>,
|
||||
};
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -211,24 +211,24 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 2u>;
|
||||
buffer_size : array<vec4<u32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
}
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
struct SB4 {
|
||||
x : i32;
|
||||
arr4 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr4 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -272,16 +272,16 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, MultipleUnusedStorageBuffers) {
|
||||
auto* src = R"(
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
};
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
};
|
||||
struct SB4 {
|
||||
x : i32;
|
||||
arr4 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr4 : array<vec4<f32>>,
|
||||
};
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -300,24 +300,24 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 1u>;
|
||||
buffer_size : array<vec4<u32>, 1u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
}
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
struct SB4 {
|
||||
x : i32;
|
||||
arr4 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr4 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -358,8 +358,8 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, NoArrayLengthCalls) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -385,13 +385,13 @@ fn main() {
|
||||
TEST_F(ArrayLengthFromUniformTest, MissingBindingPointToIndexMapping) {
|
||||
auto* src = R"(
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
};
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
};
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -408,19 +408,19 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 1u>;
|
||||
buffer_size : array<vec4<u32>, 1u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
}
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb1 : SB1;
|
||||
@@ -458,14 +458,14 @@ fn main() {
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
buffer_size : array<vec4<u32>, 1u>;
|
||||
buffer_size : array<vec4<u32>, 1u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -478,8 +478,8 @@ fn main() {
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
)";
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ TEST_F(BindingRemapperTest, ShouldRunAccessControlRemappings) {
|
||||
TEST_F(BindingRemapperTest, NoRemappings) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -93,7 +93,7 @@ fn f() {
|
||||
TEST_F(BindingRemapperTest, RemapBindingPoints) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -107,7 +107,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@group(1) @binding(2) var<storage, read> a : S;
|
||||
@@ -135,7 +135,7 @@ fn f() {
|
||||
TEST_F(BindingRemapperTest, RemapAccessControls) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -151,7 +151,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@group(2) @binding(1) var<storage, write> a : S;
|
||||
@@ -181,7 +181,7 @@ fn f() {
|
||||
TEST_F(BindingRemapperTest, RemapAll) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -195,7 +195,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@group(4) @binding(5) var<storage, write> a : S;
|
||||
@@ -225,7 +225,7 @@ fn f() {
|
||||
TEST_F(BindingRemapperTest, BindingCollisionsSameEntryPoint) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
};
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -244,7 +244,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
}
|
||||
|
||||
@internal(disable_validation__binding_point_collision) @group(1) @binding(1) var<storage, read> a : S;
|
||||
@@ -277,7 +277,7 @@ fn f() {
|
||||
TEST_F(BindingRemapperTest, BindingCollisionsDifferentEntryPoints) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
};
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
@@ -301,7 +301,7 @@ fn f2() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
}
|
||||
|
||||
@group(1) @binding(1) var<storage, read> a : S;
|
||||
@@ -339,7 +339,7 @@ fn f2() {
|
||||
TEST_F(BindingRemapperTest, NoData) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@group(2) @binding(1) var<storage, read> a : S;
|
||||
|
||||
@@ -33,8 +33,8 @@ TEST_F(CalculateArrayLengthTest, ShouldRunEmptyModule) {
|
||||
TEST_F(CalculateArrayLengthTest, ShouldRunNoArrayLength) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -50,8 +50,8 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, ShouldRunWithArrayLength) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -98,8 +98,8 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, BasicInStruct) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -115,8 +115,8 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -138,7 +138,7 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, ArrayOfStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> arr : array<S>;
|
||||
@@ -153,7 +153,7 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<S>, result : ptr<function, u32>)
|
||||
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> arr : array<S>;
|
||||
@@ -175,7 +175,7 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, ArrayOfArrayOfStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
|
||||
@@ -190,7 +190,7 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<array<S, 4u>>, result : ptr<function, u32>)
|
||||
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> arr : array<array<S, 4>>;
|
||||
@@ -246,8 +246,8 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, InSameBlock_Struct) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -265,8 +265,8 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -290,8 +290,8 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, Nested) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -313,8 +313,8 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb : SB;
|
||||
@@ -345,13 +345,13 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, MultipleStorageBuffers) {
|
||||
auto* src = R"(
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
};
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb1 : SB1;
|
||||
@@ -380,13 +380,13 @@ fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_par
|
||||
fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : array<i32>, result : ptr<function, u32>)
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
}
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> sb1 : SB1;
|
||||
@@ -421,8 +421,8 @@ fn main() {
|
||||
TEST_F(CalculateArrayLengthTest, Shadowing) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> a : SB;
|
||||
@@ -444,8 +444,8 @@ fn main() {
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, result : ptr<function, u32>)
|
||||
|
||||
struct SB {
|
||||
x : i32;
|
||||
arr : array<i32>;
|
||||
x : i32,
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> a : SB;
|
||||
@@ -485,15 +485,15 @@ fn main() {
|
||||
@group(0) @binding(0) var<storage, read> sb1 : SB1;
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(1) var<storage, read> sb2 : SB2;
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
};
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb3 : array<i32>;
|
||||
@@ -529,15 +529,15 @@ fn main() {
|
||||
@group(0) @binding(0) var<storage, read> sb1 : SB1;
|
||||
|
||||
struct SB1 {
|
||||
x : i32;
|
||||
arr1 : array<i32>;
|
||||
x : i32,
|
||||
arr1 : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var<storage, read> sb2 : SB2;
|
||||
|
||||
struct SB2 {
|
||||
x : i32;
|
||||
arr2 : array<vec4<f32>>;
|
||||
x : i32,
|
||||
arr2 : array<vec4<f32>>,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var<storage, read> sb3 : array<i32>;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -129,7 +129,7 @@ TEST_F(DecomposeStridedArrayTest, PrivateStridedArray) {
|
||||
auto* expect = R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
var<private> arr : array<strided_arr, 4>;
|
||||
@@ -149,7 +149,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, ReadUniformStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(32) array<f32, 4>;
|
||||
// a : @stride(32) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<uniform> s : S;
|
||||
//
|
||||
@@ -177,11 +177,11 @@ TEST_F(DecomposeStridedArrayTest, ReadUniformStridedArray) {
|
||||
auto* expect = R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : array<strided_arr, 4>;
|
||||
a : array<strided_arr, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> s : S;
|
||||
@@ -201,7 +201,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, ReadUniformDefaultStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(16) array<vec4<f32>, 4>;
|
||||
// a : @stride(16) array<vec4<f32>, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<uniform> s : S;
|
||||
//
|
||||
@@ -232,7 +232,7 @@ TEST_F(DecomposeStridedArrayTest, ReadUniformDefaultStridedArray) {
|
||||
auto* expect =
|
||||
R"(
|
||||
struct S {
|
||||
a : array<vec4<f32>, 4>;
|
||||
a : array<vec4<f32>, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> s : S;
|
||||
@@ -252,7 +252,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, ReadStorageStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(32) array<f32, 4>;
|
||||
// a : @stride(32) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage> s : S;
|
||||
//
|
||||
@@ -280,11 +280,11 @@ TEST_F(DecomposeStridedArrayTest, ReadStorageStridedArray) {
|
||||
auto* expect = R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : array<strided_arr, 4>;
|
||||
a : array<strided_arr, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage> s : S;
|
||||
@@ -304,7 +304,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, ReadStorageDefaultStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(4) array<f32, 4>;
|
||||
// a : @stride(4) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage> s : S;
|
||||
//
|
||||
@@ -331,7 +331,7 @@ TEST_F(DecomposeStridedArrayTest, ReadStorageDefaultStridedArray) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
a : array<f32, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage> s : S;
|
||||
@@ -351,7 +351,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, WriteStorageStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(32) array<f32, 4>;
|
||||
// a : @stride(32) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -383,11 +383,11 @@ TEST_F(DecomposeStridedArrayTest, WriteStorageStridedArray) {
|
||||
R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : array<strided_arr, 4>;
|
||||
a : array<strided_arr, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -408,7 +408,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, WriteStorageDefaultStridedArray) {
|
||||
// struct S {
|
||||
// a : @stride(4) array<f32, 4>;
|
||||
// a : @stride(4) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -439,7 +439,7 @@ TEST_F(DecomposeStridedArrayTest, WriteStorageDefaultStridedArray) {
|
||||
auto* expect =
|
||||
R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
a : array<f32, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -460,7 +460,7 @@ fn f() {
|
||||
|
||||
TEST_F(DecomposeStridedArrayTest, ReadWriteViaPointerLets) {
|
||||
// struct S {
|
||||
// a : @stride(32) array<f32, 4>;
|
||||
// a : @stride(32) array<f32, 4>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -498,11 +498,11 @@ TEST_F(DecomposeStridedArrayTest, ReadWriteViaPointerLets) {
|
||||
R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : array<strided_arr, 4>;
|
||||
a : array<strided_arr, 4>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -525,7 +525,7 @@ fn f() {
|
||||
TEST_F(DecomposeStridedArrayTest, PrivateAliasedStridedArray) {
|
||||
// type ARR = @stride(32) array<f32, 4>;
|
||||
// struct S {
|
||||
// a : ARR;
|
||||
// a : ARR,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -563,13 +563,13 @@ TEST_F(DecomposeStridedArrayTest, PrivateAliasedStridedArray) {
|
||||
auto* expect = R"(
|
||||
struct strided_arr {
|
||||
@size(32)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
type ARR = array<strided_arr, 4>;
|
||||
|
||||
struct S {
|
||||
a : ARR;
|
||||
a : ARR,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -594,7 +594,7 @@ TEST_F(DecomposeStridedArrayTest, PrivateNestedStridedArray) {
|
||||
// type ARR_A = @stride(8) array<f32, 2>;
|
||||
// type ARR_B = @stride(128) array<@stride(16) array<ARR_A, 3>, 4>;
|
||||
// struct S {
|
||||
// a : ARR_B;
|
||||
// a : ARR_B,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -659,20 +659,20 @@ TEST_F(DecomposeStridedArrayTest, PrivateNestedStridedArray) {
|
||||
R"(
|
||||
struct strided_arr {
|
||||
@size(8)
|
||||
el : f32;
|
||||
el : f32,
|
||||
}
|
||||
|
||||
type ARR_A = array<strided_arr, 2>;
|
||||
|
||||
struct strided_arr_1 {
|
||||
@size(128)
|
||||
el : array<ARR_A, 3>;
|
||||
el : array<ARR_A, 3>,
|
||||
}
|
||||
|
||||
type ARR_B = array<strided_arr_1, 4>;
|
||||
|
||||
struct S {
|
||||
a : ARR_B;
|
||||
a : ARR_B,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
|
||||
@@ -58,7 +58,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
||||
// struct S {
|
||||
// @offset(16) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<uniform> s : S;
|
||||
//
|
||||
@@ -93,8 +93,8 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(16)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> s : S;
|
||||
@@ -119,7 +119,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
||||
// struct S {
|
||||
// @offset(16) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<uniform> s : S;
|
||||
//
|
||||
@@ -154,8 +154,8 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformColumn) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(16)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> s : S;
|
||||
@@ -176,7 +176,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
||||
// struct S {
|
||||
// @offset(16) @stride(8)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<uniform> s : S;
|
||||
//
|
||||
@@ -211,9 +211,9 @@ TEST_F(DecomposeStridedMatrixTest, ReadUniformMatrix_DefaultStride) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(16)
|
||||
padding : u32;
|
||||
padding : u32,
|
||||
@stride(8) @internal(disable_validation__ignore_stride)
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<uniform> s : S;
|
||||
@@ -234,7 +234,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -269,8 +269,8 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageMatrix) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -295,7 +295,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
||||
// struct S {
|
||||
// @offset(16) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -330,8 +330,8 @@ TEST_F(DecomposeStridedMatrixTest, ReadStorageColumn) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(16)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -352,7 +352,7 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -388,8 +388,8 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageMatrix) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -414,7 +414,7 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -449,8 +449,8 @@ TEST_F(DecomposeStridedMatrixTest, WriteStorageColumn) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -471,7 +471,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// @group(0) @binding(0) var<storage, read_write> s : S;
|
||||
//
|
||||
@@ -521,8 +521,8 @@ TEST_F(DecomposeStridedMatrixTest, ReadWriteViaPointerLets) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
m : @stride(32) array<vec2<f32>, 2u>;
|
||||
padding : u32,
|
||||
m : @stride(32) array<vec2<f32>, 2u>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -555,7 +555,7 @@ TEST_F(DecomposeStridedMatrixTest, ReadPrivateMatrix) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// var<private> s : S;
|
||||
//
|
||||
@@ -589,9 +589,9 @@ TEST_F(DecomposeStridedMatrixTest, ReadPrivateMatrix) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
padding : u32,
|
||||
@stride(32) @internal(disable_validation__ignore_stride)
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
var<private> s : S;
|
||||
@@ -612,7 +612,7 @@ TEST_F(DecomposeStridedMatrixTest, WritePrivateMatrix) {
|
||||
// struct S {
|
||||
// @offset(8) @stride(32)
|
||||
// @internal(ignore_stride_attribute)
|
||||
// m : mat2x2<f32>;
|
||||
// m : mat2x2<f32>,
|
||||
// };
|
||||
// var<private> s : S;
|
||||
//
|
||||
@@ -647,9 +647,9 @@ TEST_F(DecomposeStridedMatrixTest, WritePrivateMatrix) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
@size(8)
|
||||
padding : u32;
|
||||
padding : u32,
|
||||
@stride(32) @internal(disable_validation__ignore_stride)
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
var<private> s : S;
|
||||
|
||||
@@ -108,7 +108,7 @@ fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32>
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_vertex_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -154,7 +154,7 @@ fn test(vert_idx : u32) -> u32 {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_vertex_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -200,7 +200,7 @@ fn entry(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f32
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_instance_index : u32;
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -246,7 +246,7 @@ fn test(inst_idx : u32) -> u32 {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_instance_index : u32;
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(7) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -284,8 +284,8 @@ fn test(instance_idx : u32, vert_idx : u32) -> u32 {
|
||||
}
|
||||
|
||||
struct Inputs {
|
||||
@builtin(instance_index) instance_idx : u32;
|
||||
@builtin(vertex_index) vert_idx : u32;
|
||||
@builtin(instance_index) instance_idx : u32,
|
||||
@builtin(vertex_index) vert_idx : u32,
|
||||
};
|
||||
|
||||
@stage(vertex)
|
||||
@@ -297,8 +297,8 @@ fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_instance_index : u32;
|
||||
first_vertex_index : u32,
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -309,9 +309,9 @@ fn test(instance_idx : u32, vert_idx : u32) -> u32 {
|
||||
|
||||
struct Inputs {
|
||||
@builtin(instance_index)
|
||||
instance_idx : u32;
|
||||
instance_idx : u32,
|
||||
@builtin(vertex_index)
|
||||
vert_idx : u32;
|
||||
vert_idx : u32,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -345,8 +345,8 @@ fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
}
|
||||
|
||||
struct Inputs {
|
||||
@builtin(instance_index) instance_idx : u32;
|
||||
@builtin(vertex_index) vert_idx : u32;
|
||||
@builtin(instance_index) instance_idx : u32,
|
||||
@builtin(vertex_index) vert_idx : u32,
|
||||
};
|
||||
|
||||
fn test(instance_idx : u32, vert_idx : u32) -> u32 {
|
||||
@@ -356,8 +356,8 @@ fn test(instance_idx : u32, vert_idx : u32) -> u32 {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_instance_index : u32;
|
||||
first_vertex_index : u32,
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -370,9 +370,9 @@ fn entry(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
|
||||
struct Inputs {
|
||||
@builtin(instance_index)
|
||||
instance_idx : u32;
|
||||
instance_idx : u32,
|
||||
@builtin(vertex_index)
|
||||
vert_idx : u32;
|
||||
vert_idx : u32,
|
||||
}
|
||||
|
||||
fn test(instance_idx : u32, vert_idx : u32) -> u32 {
|
||||
@@ -414,7 +414,7 @@ fn entry(@builtin(vertex_index) vert_idx : u32) -> @builtin(position) vec4<f32>
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_vertex_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -468,7 +468,7 @@ fn func1(vert_idx : u32) -> u32 {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_vertex_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -530,8 +530,8 @@ fn entry_c(@builtin(instance_index) inst_idx : u32) -> @builtin(position) vec4<f
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_instance_index : u32;
|
||||
first_vertex_index : u32,
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
@@ -601,8 +601,8 @@ fn func(i : u32) -> u32 {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol {
|
||||
first_vertex_index : u32;
|
||||
first_instance_index : u32;
|
||||
first_vertex_index : u32,
|
||||
first_instance_index : u32,
|
||||
}
|
||||
|
||||
@binding(1) @group(2) var<uniform> tint_symbol_1 : tint_symbol;
|
||||
|
||||
@@ -35,15 +35,15 @@ TEST_F(LocalizeStructArrayAssignmentTest, EmptyModule) {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, StructArray) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -58,15 +58,15 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -101,15 +101,15 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -129,15 +129,15 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -149,19 +149,19 @@ struct Uniforms {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, StructStructArray) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a : array<InnerS, 8>;
|
||||
a : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
s2 : S1;
|
||||
s2 : S1,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -176,19 +176,19 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a : array<InnerS, 8>;
|
||||
a : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
s2 : S1;
|
||||
s2 : S1,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -223,19 +223,19 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct OuterS {
|
||||
s2 : S1;
|
||||
s2 : S1,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a : array<InnerS, 8>;
|
||||
a : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -255,19 +255,19 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct OuterS {
|
||||
s2 : S1;
|
||||
s2 : S1,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a : array<InnerS, 8>;
|
||||
a : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -279,16 +279,16 @@ struct Uniforms {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, StructArrayArray) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<array<InnerS, 8>, 8>;
|
||||
a1 : array<array<InnerS, 8>, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -303,16 +303,16 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<array<InnerS, 8>, 8>;
|
||||
a1 : array<array<InnerS, 8>, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -338,19 +338,19 @@ fn main() {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStruct) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
s2 : InnerS;
|
||||
s2 : InnerS,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -365,19 +365,19 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
s2 : InnerS;
|
||||
s2 : InnerS,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -403,20 +403,20 @@ fn main() {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, StructArrayStructArray) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -431,20 +431,20 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -473,20 +473,20 @@ fn main() {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, IndexingWithSideEffectFunc) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
};
|
||||
|
||||
var<private> nextIndex : u32;
|
||||
@@ -507,20 +507,20 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
}
|
||||
|
||||
var<private> nextIndex : u32;
|
||||
@@ -566,8 +566,8 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
};
|
||||
|
||||
var<private> nextIndex : u32;
|
||||
@@ -577,15 +577,15 @@ fn getNextIndex() -> u32 {
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -608,8 +608,8 @@ fn main() {
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
j : u32;
|
||||
i : u32,
|
||||
j : u32,
|
||||
}
|
||||
|
||||
var<private> nextIndex : u32;
|
||||
@@ -620,15 +620,15 @@ fn getNextIndex() -> u32 {
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<S1, 8>;
|
||||
a1 : array<S1, 8>,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a2 : array<InnerS, 8>;
|
||||
a2 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -640,13 +640,13 @@ struct InnerS {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerArg) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
};
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
@@ -664,15 +664,15 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -713,16 +713,16 @@ fn f(p : ptr<function, OuterS>) {
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -744,17 +744,17 @@ fn f(p : ptr<function, OuterS>) {
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -766,15 +766,15 @@ struct Uniforms {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, ViaPointerVar) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
};
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
};
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
};
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -794,15 +794,15 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct InnerS {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<InnerS, 8>;
|
||||
a1 : array<InnerS, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
@@ -833,11 +833,11 @@ fn main() {
|
||||
TEST_F(LocalizeStructArrayAssignmentTest, VectorAssignment) {
|
||||
auto* src = R"(
|
||||
struct Uniforms {
|
||||
i : u32;
|
||||
i : u32,
|
||||
}
|
||||
|
||||
struct OuterS {
|
||||
a1 : array<u32, 8>;
|
||||
a1 : array<u32, 8>,
|
||||
}
|
||||
|
||||
@group(1) @binding(4) var<uniform> uniforms : Uniforms;
|
||||
|
||||
@@ -387,7 +387,7 @@ fn bar(p : ptr<private, f32>) {
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -404,7 +404,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -431,7 +431,7 @@ fn main() {
|
||||
@group(0) @binding(1) var<storage> s : S;
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
)";
|
||||
@@ -444,7 +444,7 @@ fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_paramete
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -466,7 +466,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_1 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -493,7 +493,7 @@ var<storage> buffer : array<f32>;
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_1 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -524,7 +524,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
fn foo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<storage, array<f32>>) {
|
||||
@@ -559,7 +559,7 @@ fn foo() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_1 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -592,7 +592,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_1 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
type myarray = array<f32>;
|
||||
@@ -623,7 +623,7 @@ type myarray = array<f32>;
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_1 {
|
||||
arr : array<f32>;
|
||||
arr : array<f32>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -642,7 +642,7 @@ type myarray = array<f32>;
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffer_ArrayOfStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -656,11 +656,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
struct tint_symbol_1 {
|
||||
arr : array<S>;
|
||||
arr : array<S>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -684,17 +684,17 @@ fn main() {
|
||||
@group(0) @binding(0) var<storage> buffer : array<S>;
|
||||
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
f : f32;
|
||||
f : f32,
|
||||
}
|
||||
|
||||
struct tint_symbol_1 {
|
||||
arr : array<S>;
|
||||
arr : array<S>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -711,7 +711,7 @@ fn main(@group(0) @binding(0) @internal(disable_validation__entry_point_paramete
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -742,7 +742,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
fn no_uses() {
|
||||
@@ -794,7 +794,7 @@ fn bar(a : f32, b : f32) {
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
@group(0) @binding(0)
|
||||
@@ -825,7 +825,7 @@ fn bar(a : f32, b : f32, @internal(disable_validation__ignore_storage_class) @in
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -978,7 +978,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -996,10 +996,10 @@ fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, NestedMatrix) {
|
||||
auto* src = R"(
|
||||
struct S1 {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
};
|
||||
struct S2 {
|
||||
s : S1;
|
||||
s : S1,
|
||||
};
|
||||
var<workgroup> m : array<S2, 4>;
|
||||
|
||||
@@ -1011,15 +1011,15 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S1 {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
s : S1;
|
||||
s : S1,
|
||||
}
|
||||
|
||||
struct tint_symbol_2 {
|
||||
m : array<S2, 4u>;
|
||||
m : array<S2, 4u>,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -1039,7 +1039,7 @@ fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, DuplicateThreadgroupArgumentTypes) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
};
|
||||
|
||||
var<workgroup> a : S;
|
||||
@@ -1055,12 +1055,12 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
struct tint_symbol_3 {
|
||||
a : S;
|
||||
b : S;
|
||||
a : S,
|
||||
b : S,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -1092,18 +1092,18 @@ var<workgroup> a : S;
|
||||
var<workgroup> b : S;
|
||||
|
||||
struct S {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
m : mat2x2<f32>;
|
||||
m : mat2x2<f32>,
|
||||
}
|
||||
|
||||
struct tint_symbol_3 {
|
||||
a : S;
|
||||
b : S;
|
||||
a : S,
|
||||
b : S,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -1123,7 +1123,7 @@ fn main(@internal(disable_validation__entry_point_parameter) tint_symbol_1 : ptr
|
||||
TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
};
|
||||
|
||||
var<private> p : f32;
|
||||
@@ -1144,7 +1144,7 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
a : f32,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
|
||||
@@ -108,11 +108,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -151,11 +151,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -193,11 +193,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -249,11 +249,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -304,11 +304,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -357,11 +357,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(1) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -412,11 +412,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -483,11 +483,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -556,11 +556,11 @@ fn main(@builtin(position) coord : vec4<f32>) -> @location(0) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(4) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -640,11 +640,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -707,11 +707,11 @@ fn f(t : texture_external, s : sampler) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -773,11 +773,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -841,11 +841,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -919,11 +919,11 @@ fn f(t : texture_external, s : sampler, t2 : texture_external) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(3) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -997,11 +997,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -1072,11 +1072,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -1135,11 +1135,11 @@ fn f(ext_tex : texture_external) -> vec2<i32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
fn f(ext_tex : texture_2d<f32>, ext_tex_plane_1 : texture_2d<f32>, ext_tex_params : ExternalTextureParams) -> vec2<i32> {
|
||||
@@ -1174,11 +1174,11 @@ fn main() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
@@ -1243,11 +1243,11 @@ type ET = texture_external;
|
||||
|
||||
auto* expect = R"(
|
||||
struct ExternalTextureParams {
|
||||
numPlanes : u32;
|
||||
vr : f32;
|
||||
ug : f32;
|
||||
vg : f32;
|
||||
ub : f32;
|
||||
numPlanes : u32,
|
||||
vr : f32,
|
||||
ug : f32,
|
||||
vg : f32,
|
||||
ub : f32,
|
||||
}
|
||||
|
||||
@group(0) @binding(2) var ext_tex_plane_1 : texture_2d<f32>;
|
||||
|
||||
@@ -74,7 +74,7 @@ fn main(@builtin(num_workgroups) num_wgs : vec3<u32>) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
|
||||
@@ -103,7 +103,7 @@ fn main() {
|
||||
TEST_F(NumWorkgroupsFromUniformTest, StructOnlyMember) {
|
||||
auto* src = R"(
|
||||
struct Builtins {
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
};
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -116,13 +116,13 @@ fn main(in : Builtins) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
|
||||
|
||||
struct Builtins {
|
||||
num_wgs : vec3<u32>;
|
||||
num_wgs : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main_inner(in : Builtins) {
|
||||
@@ -156,13 +156,13 @@ fn main(in : Builtins) {
|
||||
}
|
||||
|
||||
struct Builtins {
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
|
||||
@@ -179,7 +179,7 @@ fn main() {
|
||||
}
|
||||
|
||||
struct Builtins {
|
||||
num_wgs : vec3<u32>;
|
||||
num_wgs : vec3<u32>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -195,9 +195,9 @@ struct Builtins {
|
||||
TEST_F(NumWorkgroupsFromUniformTest, StructMultipleMembers) {
|
||||
auto* src = R"(
|
||||
struct Builtins {
|
||||
@builtin(global_invocation_id) gid : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(workgroup_id) wgid : vec3<u32>;
|
||||
@builtin(global_invocation_id) gid : vec3<u32>,
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
@builtin(workgroup_id) wgid : vec3<u32>,
|
||||
};
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -210,22 +210,22 @@ fn main(in : Builtins) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
|
||||
|
||||
struct Builtins {
|
||||
gid : vec3<u32>;
|
||||
num_wgs : vec3<u32>;
|
||||
wgid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
num_wgs : vec3<u32>,
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
struct tint_symbol_1 {
|
||||
@builtin(global_invocation_id)
|
||||
gid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
@builtin(workgroup_id)
|
||||
wgid : vec3<u32>;
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main_inner(in : Builtins) {
|
||||
@@ -259,25 +259,25 @@ fn main(in : Builtins) {
|
||||
}
|
||||
|
||||
struct Builtins {
|
||||
@builtin(global_invocation_id) gid : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(workgroup_id) wgid : vec3<u32>;
|
||||
@builtin(global_invocation_id) gid : vec3<u32>,
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
@builtin(workgroup_id) wgid : vec3<u32>,
|
||||
};
|
||||
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_2 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_3 : tint_symbol_2;
|
||||
|
||||
struct tint_symbol_1 {
|
||||
@builtin(global_invocation_id)
|
||||
gid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
@builtin(workgroup_id)
|
||||
wgid : vec3<u32>;
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main_inner(in : Builtins) {
|
||||
@@ -292,9 +292,9 @@ fn main(tint_symbol : tint_symbol_1) {
|
||||
}
|
||||
|
||||
struct Builtins {
|
||||
gid : vec3<u32>;
|
||||
num_wgs : vec3<u32>;
|
||||
wgid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
num_wgs : vec3<u32>,
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -310,13 +310,13 @@ struct Builtins {
|
||||
TEST_F(NumWorkgroupsFromUniformTest, MultipleEntryPoints) {
|
||||
auto* src = R"(
|
||||
struct Builtins1 {
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
};
|
||||
|
||||
struct Builtins2 {
|
||||
@builtin(global_invocation_id) gid : vec3<u32>;
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>;
|
||||
@builtin(workgroup_id) wgid : vec3<u32>;
|
||||
@builtin(global_invocation_id) gid : vec3<u32>,
|
||||
@builtin(num_workgroups) num_wgs : vec3<u32>,
|
||||
@builtin(workgroup_id) wgid : vec3<u32>,
|
||||
};
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -343,19 +343,19 @@ fn main3(@builtin(num_workgroups) num_wgs : vec3<u32>) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct tint_symbol_6 {
|
||||
num_workgroups : vec3<u32>;
|
||||
num_workgroups : vec3<u32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(30) var<uniform> tint_symbol_7 : tint_symbol_6;
|
||||
|
||||
struct Builtins1 {
|
||||
num_wgs : vec3<u32>;
|
||||
num_wgs : vec3<u32>,
|
||||
}
|
||||
|
||||
struct Builtins2 {
|
||||
gid : vec3<u32>;
|
||||
num_wgs : vec3<u32>;
|
||||
wgid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
num_wgs : vec3<u32>,
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main1_inner(in : Builtins1) {
|
||||
@@ -371,9 +371,9 @@ fn main1() {
|
||||
|
||||
struct tint_symbol_3 {
|
||||
@builtin(global_invocation_id)
|
||||
gid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
@builtin(workgroup_id)
|
||||
wgid : vec3<u32>;
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main2_inner(in : Builtins2) {
|
||||
@@ -411,8 +411,8 @@ fn main3() {
|
||||
TEST_F(NumWorkgroupsFromUniformTest, NoUsages) {
|
||||
auto* src = R"(
|
||||
struct Builtins {
|
||||
@builtin(global_invocation_id) gid : vec3<u32>;
|
||||
@builtin(workgroup_id) wgid : vec3<u32>;
|
||||
@builtin(global_invocation_id) gid : vec3<u32>,
|
||||
@builtin(workgroup_id) wgid : vec3<u32>,
|
||||
};
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -422,15 +422,15 @@ fn main(in : Builtins) {
|
||||
|
||||
auto* expect = R"(
|
||||
struct Builtins {
|
||||
gid : vec3<u32>;
|
||||
wgid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
struct tint_symbol_1 {
|
||||
@builtin(global_invocation_id)
|
||||
gid : vec3<u32>;
|
||||
gid : vec3<u32>,
|
||||
@builtin(workgroup_id)
|
||||
wgid : vec3<u32>;
|
||||
wgid : vec3<u32>,
|
||||
}
|
||||
|
||||
fn main_inner(in : Builtins) {
|
||||
|
||||
@@ -62,9 +62,9 @@ fn f() {
|
||||
TEST_F(PromoteInitializersToConstVarTest, BasicStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
};
|
||||
|
||||
fn f() {
|
||||
@@ -74,9 +74,9 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -98,9 +98,9 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -111,9 +111,9 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -152,9 +152,9 @@ fn f() {
|
||||
TEST_F(PromoteInitializersToConstVarTest, StructInForLoopInit) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
};
|
||||
|
||||
fn f() {
|
||||
@@ -167,9 +167,9 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -197,9 +197,9 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -213,9 +213,9 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : vec3<f32>;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : vec3<f32>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -443,17 +443,17 @@ fn f() {
|
||||
TEST_F(PromoteInitializersToConstVarTest, StructNested) {
|
||||
auto* src = R"(
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
};
|
||||
|
||||
struct S2 {
|
||||
a : i32;
|
||||
b : S1;
|
||||
c : i32;
|
||||
a : i32,
|
||||
b : S1,
|
||||
c : i32,
|
||||
};
|
||||
|
||||
struct S3 {
|
||||
a : S2;
|
||||
a : S2,
|
||||
};
|
||||
|
||||
fn f() {
|
||||
@@ -463,17 +463,17 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
a : i32;
|
||||
b : S1;
|
||||
c : i32;
|
||||
a : i32,
|
||||
b : S1,
|
||||
c : i32,
|
||||
}
|
||||
|
||||
struct S3 {
|
||||
a : S2;
|
||||
a : S2,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -493,11 +493,11 @@ fn f() {
|
||||
TEST_F(PromoteInitializersToConstVarTest, Mixed) {
|
||||
auto* src = R"(
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
};
|
||||
|
||||
struct S2 {
|
||||
a : array<S1, 3u>;
|
||||
a : array<S1, 3u>,
|
||||
};
|
||||
|
||||
fn f() {
|
||||
@@ -507,11 +507,11 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
a : array<S1, 3u>;
|
||||
a : array<S1, 3u>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -537,11 +537,11 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
a : array<S1, 3u>;
|
||||
a : array<S1, 3u>,
|
||||
};
|
||||
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -556,11 +556,11 @@ fn f() {
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
a : array<S1, 3u>;
|
||||
a : array<S1, 3u>,
|
||||
}
|
||||
|
||||
struct S1 {
|
||||
a : i32;
|
||||
a : i32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -573,9 +573,9 @@ struct S1 {
|
||||
TEST_F(PromoteInitializersToConstVarTest, NoChangeOnVarDecl) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : i32;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : i32,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -606,9 +606,9 @@ fn f() {
|
||||
let module_str : S = S(1, 2.0, 3);
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
b : f32;
|
||||
c : i32;
|
||||
a : i32,
|
||||
b : f32,
|
||||
c : i32,
|
||||
}
|
||||
|
||||
let module_arr : array<f32, 4u> = array<f32, 4u>(0.0, 1.0, 2.0, 3.0);
|
||||
|
||||
@@ -444,7 +444,7 @@ fn main() {
|
||||
TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_WithSE) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
a : atomic<i32>;
|
||||
a : atomic<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
@@ -457,7 +457,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct SB {
|
||||
a : atomic<i32>;
|
||||
a : atomic<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
@@ -478,7 +478,7 @@ fn f() {
|
||||
TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_NoSEAndVar) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
a : atomic<i32>;
|
||||
a : atomic<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
@@ -500,7 +500,7 @@ fn f() {
|
||||
TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_Builtins_NoSEAndSE) {
|
||||
auto* src = R"(
|
||||
struct SB {
|
||||
a : atomic<i32>;
|
||||
a : atomic<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
@@ -517,7 +517,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct SB {
|
||||
a : atomic<i32>;
|
||||
a : atomic<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
@@ -728,7 +728,7 @@ TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_InMemberAccessor) {
|
||||
auto* src = R"(
|
||||
|
||||
struct S {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -743,7 +743,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
v : i32;
|
||||
v : i32,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -2002,7 +2002,7 @@ TEST_F(PromoteSideEffectsToDeclTest, Binary_Logical_InMemberAccessor) {
|
||||
auto* src = R"(
|
||||
|
||||
struct S {
|
||||
v : bool;
|
||||
v : bool,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -2017,7 +2017,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
v : bool;
|
||||
v : bool,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -2961,9 +2961,9 @@ fn a(i : i32) -> i32 {
|
||||
}
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
z : i32;
|
||||
x : i32,
|
||||
y : i32,
|
||||
z : i32,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -2977,9 +2977,9 @@ fn a(i : i32) -> i32 {
|
||||
}
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
z : i32;
|
||||
x : i32,
|
||||
y : i32,
|
||||
z : i32,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -3091,8 +3091,8 @@ fn f() {
|
||||
TEST_F(PromoteSideEffectsToDeclTest, MemberAccessor_Struct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
x : i32,
|
||||
y : i32,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -3106,8 +3106,8 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
x : i32,
|
||||
y : i32,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -3130,9 +3130,9 @@ fn f() {
|
||||
TEST_F(PromoteSideEffectsToDeclTest, MemberAccessor_Struct_Mixed) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
arr : array<i32, 10>;
|
||||
x : i32,
|
||||
y : i32,
|
||||
arr : array<i32, 10>,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
@@ -3155,9 +3155,9 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : i32;
|
||||
arr : array<i32, 10>;
|
||||
x : i32,
|
||||
y : i32,
|
||||
arr : array<i32, 10>,
|
||||
}
|
||||
|
||||
fn a(i : i32) -> S {
|
||||
|
||||
@@ -295,7 +295,7 @@ fn xor(a : u32, b : u32) -> u32 {
|
||||
TEST_F(RemovePhoniesTest, ForLoop) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
arr : array<i32>;
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -324,7 +324,7 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
arr : array<i32>;
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -383,7 +383,7 @@ fn z() -> i32 {
|
||||
}
|
||||
|
||||
struct S {
|
||||
arr : array<i32>;
|
||||
arr : array<i32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
@@ -415,7 +415,7 @@ fn z() -> i32 {
|
||||
}
|
||||
|
||||
struct S {
|
||||
arr : array<i32>;
|
||||
arr : array<i32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> s : S;
|
||||
|
||||
@@ -323,8 +323,8 @@ var<private> a : array<f32, 3>;
|
||||
TEST_F(RobustnessTest, DISABLED_LargeArrays_Idx) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : array<f32, 0x7fffffff>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 0x7fffffff>,
|
||||
b : array<f32>,
|
||||
};
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
|
||||
@@ -361,8 +361,8 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 2147483647>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 2147483647>,
|
||||
b : array<f32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1093,8 +1093,8 @@ TEST_F(RobustnessTest, DISABLED_Matrix_Row_Constant_Id_Clamps) {
|
||||
TEST_F(RobustnessTest, RuntimeArray_Clamps) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
};
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
|
||||
@@ -1105,8 +1105,8 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1130,8 +1130,8 @@ fn f() {
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
};
|
||||
)";
|
||||
|
||||
@@ -1143,8 +1143,8 @@ fn f() {
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -1387,8 +1387,8 @@ TEST_F(RobustnessTest, DISABLED_Shadowed_Variable) {
|
||||
TEST_F(RobustnessTest, DontRenameSymbols) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
};
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1404,8 +1404,8 @@ fn f() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : f32;
|
||||
b : array<f32>;
|
||||
a : f32,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1426,14 +1426,14 @@ fn f() {
|
||||
|
||||
const char* kOmitSourceShader = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 4>,
|
||||
b : array<f32>,
|
||||
};
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
|
||||
type UArr = array<vec4<f32>, 4>;
|
||||
struct U {
|
||||
a : UArr;
|
||||
a : UArr,
|
||||
};
|
||||
@group(1) @binding(0) var<uniform> u : U;
|
||||
|
||||
@@ -1484,8 +1484,8 @@ fn f() {
|
||||
TEST_F(RobustnessTest, OmitNone) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 4>,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1493,7 +1493,7 @@ struct S {
|
||||
type UArr = array<vec4<f32>, 4>;
|
||||
|
||||
struct U {
|
||||
a : UArr;
|
||||
a : UArr,
|
||||
}
|
||||
|
||||
@group(1) @binding(0) var<uniform> u : U;
|
||||
@@ -1547,8 +1547,8 @@ fn f() {
|
||||
TEST_F(RobustnessTest, OmitStorage) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 4>,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1556,7 +1556,7 @@ struct S {
|
||||
type UArr = array<vec4<f32>, 4>;
|
||||
|
||||
struct U {
|
||||
a : UArr;
|
||||
a : UArr,
|
||||
}
|
||||
|
||||
@group(1) @binding(0) var<uniform> u : U;
|
||||
@@ -1612,8 +1612,8 @@ fn f() {
|
||||
TEST_F(RobustnessTest, OmitUniform) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 4>,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1621,7 +1621,7 @@ struct S {
|
||||
type UArr = array<vec4<f32>, 4>;
|
||||
|
||||
struct U {
|
||||
a : UArr;
|
||||
a : UArr,
|
||||
}
|
||||
|
||||
@group(1) @binding(0) var<uniform> u : U;
|
||||
@@ -1677,8 +1677,8 @@ fn f() {
|
||||
TEST_F(RobustnessTest, OmitBoth) {
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : array<f32, 4>;
|
||||
b : array<f32>;
|
||||
a : array<f32, 4>,
|
||||
b : array<f32>,
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read> s : S;
|
||||
@@ -1686,7 +1686,7 @@ struct S {
|
||||
type UArr = array<vec4<f32>, 4>;
|
||||
|
||||
struct U {
|
||||
a : UArr;
|
||||
a : UArr,
|
||||
}
|
||||
|
||||
@group(1) @binding(0) var<uniform> u : U;
|
||||
|
||||
@@ -131,7 +131,7 @@ fn f() {
|
||||
TEST_F(SimplifyPointersTest, SavedVars) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
};
|
||||
|
||||
fn arr() {
|
||||
@@ -155,7 +155,7 @@ fn matrix() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
i : i32;
|
||||
i : i32,
|
||||
}
|
||||
|
||||
fn arr() {
|
||||
@@ -283,11 +283,11 @@ fn z() -> i32 {
|
||||
}
|
||||
|
||||
struct Inner {
|
||||
a : array<i32, 2>;
|
||||
a : array<i32, 2>,
|
||||
};
|
||||
|
||||
struct Outer {
|
||||
a : array<Inner, 2>;
|
||||
a : array<Inner, 2>,
|
||||
};
|
||||
|
||||
fn f() {
|
||||
@@ -312,11 +312,11 @@ fn z() -> i32 {
|
||||
}
|
||||
|
||||
struct Inner {
|
||||
a : array<i32, 2>;
|
||||
a : array<i32, 2>,
|
||||
}
|
||||
|
||||
struct Outer {
|
||||
a : array<Inner, 2>;
|
||||
a : array<Inner, 2>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
|
||||
@@ -117,7 +117,7 @@ type a = i32;
|
||||
TEST_F(UnshadowTest, LocalShadowsStruct) {
|
||||
auto* src = R"(
|
||||
struct a {
|
||||
m : i32;
|
||||
m : i32,
|
||||
};
|
||||
|
||||
fn X() {
|
||||
@@ -131,7 +131,7 @@ fn Y() {
|
||||
|
||||
auto* expect = R"(
|
||||
struct a {
|
||||
m : i32;
|
||||
m : i32,
|
||||
}
|
||||
|
||||
fn X() {
|
||||
@@ -159,7 +159,7 @@ fn Y() {
|
||||
}
|
||||
|
||||
struct a {
|
||||
m : i32;
|
||||
m : i32,
|
||||
};
|
||||
|
||||
)";
|
||||
@@ -174,7 +174,7 @@ fn Y() {
|
||||
}
|
||||
|
||||
struct a {
|
||||
m : i32;
|
||||
m : i32,
|
||||
}
|
||||
)";
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ fn main() -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -137,7 +137,7 @@ fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -175,7 +175,7 @@ fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -213,7 +213,7 @@ fn main(@location(0) var_a : f32) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(5) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -245,7 +245,7 @@ fn main(@builtin(vertex_index) tint_pulling_vertex_index : u32) -> @builtin(posi
|
||||
TEST_F(VertexPullingTest, OneAttribute_Struct) {
|
||||
auto* src = R"(
|
||||
struct Inputs {
|
||||
@location(0) var_a : f32;
|
||||
@location(0) var_a : f32,
|
||||
};
|
||||
|
||||
@stage(vertex)
|
||||
@@ -256,14 +256,14 @@ fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
|
||||
struct Inputs {
|
||||
@location(0)
|
||||
var_a : f32;
|
||||
var_a : f32,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -304,7 +304,7 @@ fn main(@location(0) var_a : f32,
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -350,10 +350,10 @@ fn main(@builtin(vertex_index) custom_vertex_index : u32, @builtin(instance_inde
|
||||
TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_Struct) {
|
||||
auto* src = R"(
|
||||
struct Inputs {
|
||||
@location(0) var_a : f32;
|
||||
@location(1) var_b : f32;
|
||||
@builtin(vertex_index) custom_vertex_index : u32;
|
||||
@builtin(instance_index) custom_instance_index : u32;
|
||||
@location(0) var_a : f32,
|
||||
@location(1) var_b : f32,
|
||||
@builtin(vertex_index) custom_vertex_index : u32,
|
||||
@builtin(instance_index) custom_instance_index : u32,
|
||||
};
|
||||
|
||||
@stage(vertex)
|
||||
@@ -364,7 +364,7 @@ fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -373,20 +373,20 @@ struct TintVertexData {
|
||||
|
||||
struct tint_symbol {
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
|
||||
struct Inputs {
|
||||
@location(0)
|
||||
var_a : f32;
|
||||
var_a : f32,
|
||||
@location(1)
|
||||
var_b : f32;
|
||||
var_b : f32,
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -435,16 +435,16 @@ fn main(inputs : Inputs) -> @builtin(position) vec4<f32> {
|
||||
}
|
||||
|
||||
struct Inputs {
|
||||
@location(0) var_a : f32;
|
||||
@location(1) var_b : f32;
|
||||
@builtin(vertex_index) custom_vertex_index : u32;
|
||||
@builtin(instance_index) custom_instance_index : u32;
|
||||
@location(0) var_a : f32,
|
||||
@location(1) var_b : f32,
|
||||
@builtin(vertex_index) custom_vertex_index : u32,
|
||||
@builtin(instance_index) custom_instance_index : u32,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -453,9 +453,9 @@ struct TintVertexData {
|
||||
|
||||
struct tint_symbol {
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -474,13 +474,13 @@ fn main(tint_symbol_1 : tint_symbol) -> @builtin(position) vec4<f32> {
|
||||
|
||||
struct Inputs {
|
||||
@location(0)
|
||||
var_a : f32;
|
||||
var_a : f32,
|
||||
@location(1)
|
||||
var_b : f32;
|
||||
var_b : f32,
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -509,13 +509,13 @@ struct Inputs {
|
||||
TEST_F(VertexPullingTest, ExistingVertexIndexAndInstanceIndex_SeparateStruct) {
|
||||
auto* src = R"(
|
||||
struct Inputs {
|
||||
@location(0) var_a : f32;
|
||||
@location(1) var_b : f32;
|
||||
@location(0) var_a : f32,
|
||||
@location(1) var_b : f32,
|
||||
};
|
||||
|
||||
struct Indices {
|
||||
@builtin(vertex_index) custom_vertex_index : u32;
|
||||
@builtin(instance_index) custom_instance_index : u32;
|
||||
@builtin(vertex_index) custom_vertex_index : u32,
|
||||
@builtin(instance_index) custom_instance_index : u32,
|
||||
};
|
||||
|
||||
@stage(vertex)
|
||||
@@ -526,7 +526,7 @@ fn main(inputs : Inputs, indices : Indices) -> @builtin(position) vec4<f32> {
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -535,16 +535,16 @@ struct TintVertexData {
|
||||
|
||||
struct Inputs {
|
||||
@location(0)
|
||||
var_a : f32;
|
||||
var_a : f32,
|
||||
@location(1)
|
||||
var_b : f32;
|
||||
var_b : f32,
|
||||
}
|
||||
|
||||
struct Indices {
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
|
||||
@stage(vertex)
|
||||
@@ -591,19 +591,19 @@ fn main(inputs : Inputs, indices : Indices) -> @builtin(position) vec4<f32> {
|
||||
}
|
||||
|
||||
struct Inputs {
|
||||
@location(0) var_a : f32;
|
||||
@location(1) var_b : f32;
|
||||
@location(0) var_a : f32,
|
||||
@location(1) var_b : f32,
|
||||
};
|
||||
|
||||
struct Indices {
|
||||
@builtin(vertex_index) custom_vertex_index : u32;
|
||||
@builtin(instance_index) custom_instance_index : u32;
|
||||
@builtin(vertex_index) custom_vertex_index : u32,
|
||||
@builtin(instance_index) custom_instance_index : u32,
|
||||
};
|
||||
)";
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -624,16 +624,16 @@ fn main(indices : Indices) -> @builtin(position) vec4<f32> {
|
||||
|
||||
struct Inputs {
|
||||
@location(0)
|
||||
var_a : f32;
|
||||
var_a : f32,
|
||||
@location(1)
|
||||
var_b : f32;
|
||||
var_b : f32,
|
||||
}
|
||||
|
||||
struct Indices {
|
||||
@builtin(vertex_index)
|
||||
custom_vertex_index : u32;
|
||||
custom_vertex_index : u32,
|
||||
@builtin(instance_index)
|
||||
custom_instance_index : u32;
|
||||
custom_instance_index : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -670,7 +670,7 @@ fn main(@location(0) var_a : f32,
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -715,7 +715,7 @@ fn main(@location(0) var_a : vec2<f32>,
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -771,7 +771,7 @@ fn main(@location(0) var_a : f32,
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data_1 : array<u32>;
|
||||
tint_vertex_data_1 : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0_1 : TintVertexData;
|
||||
@@ -848,7 +848,7 @@ fn main(
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -1008,7 +1008,7 @@ fn main(
|
||||
auto* expect =
|
||||
R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
@@ -1167,7 +1167,7 @@ fn main(
|
||||
|
||||
auto* expect = R"(
|
||||
struct TintVertexData {
|
||||
tint_vertex_data : array<u32>;
|
||||
tint_vertex_data : array<u32>,
|
||||
}
|
||||
|
||||
@binding(0) @group(4) var<storage, read> tint_pulling_vertex_buffer_0 : TintVertexData;
|
||||
|
||||
@@ -54,7 +54,7 @@ var<private> arr : array<i32, 4>;
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
var<private> arr : tint_array_wrapper;
|
||||
@@ -74,7 +74,7 @@ fn f() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -96,7 +96,7 @@ fn f(a : array<i32, 4>) -> i32 {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
fn f(a : tint_array_wrapper) -> i32 {
|
||||
@@ -117,7 +117,7 @@ fn f() -> array<i32, 4> {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
fn f() -> tint_array_wrapper {
|
||||
@@ -146,13 +146,13 @@ fn f() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 2u>;
|
||||
arr : array<i32, 2u>,
|
||||
}
|
||||
|
||||
type Inner = tint_array_wrapper;
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<tint_array_wrapper, 2u>;
|
||||
arr : array<tint_array_wrapper, 2u>,
|
||||
}
|
||||
|
||||
type Array = tint_array_wrapper_1;
|
||||
@@ -188,11 +188,11 @@ type Inner = array<i32, 2>;
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<i32, 2u>;
|
||||
arr : array<i32, 2u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper {
|
||||
arr : array<tint_array_wrapper_1, 2u>;
|
||||
arr : array<tint_array_wrapper_1, 2u>,
|
||||
}
|
||||
|
||||
fn f() {
|
||||
@@ -217,24 +217,24 @@ type Inner = tint_array_wrapper_1;
|
||||
TEST_F(WrapArraysInStructsTest, ArraysInStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : array<i32, 4>;
|
||||
b : array<i32, 8>;
|
||||
c : array<i32, 4>;
|
||||
a : array<i32, 4>,
|
||||
b : array<i32, 8>,
|
||||
c : array<i32, 4>,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<i32, 8u>;
|
||||
arr : array<i32, 8u>,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : tint_array_wrapper;
|
||||
b : tint_array_wrapper_1;
|
||||
c : tint_array_wrapper;
|
||||
a : tint_array_wrapper,
|
||||
b : tint_array_wrapper_1,
|
||||
c : tint_array_wrapper,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -246,28 +246,28 @@ struct S {
|
||||
TEST_F(WrapArraysInStructsTest, ArraysOfArraysInStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : array<i32, 4>;
|
||||
b : array<array<i32, 4>, 4>;
|
||||
c : array<array<array<i32, 4>, 4>, 4>;
|
||||
a : array<i32, 4>,
|
||||
b : array<array<i32, 4>, 4>,
|
||||
c : array<array<array<i32, 4>, 4>, 4>,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<tint_array_wrapper, 4u>;
|
||||
arr : array<tint_array_wrapper, 4u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_2 {
|
||||
arr : array<tint_array_wrapper_1, 4u>;
|
||||
arr : array<tint_array_wrapper_1, 4u>,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : tint_array_wrapper;
|
||||
b : tint_array_wrapper_1;
|
||||
c : tint_array_wrapper_2;
|
||||
a : tint_array_wrapper,
|
||||
b : tint_array_wrapper_1,
|
||||
c : tint_array_wrapper_2,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -279,9 +279,9 @@ struct S {
|
||||
TEST_F(WrapArraysInStructsTest, AccessArraysOfArraysInStruct) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : array<i32, 4>;
|
||||
b : array<array<i32, 4>, 4>;
|
||||
c : array<array<array<i32, 4>, 4>, 4>;
|
||||
a : array<i32, 4>,
|
||||
b : array<array<i32, 4>, 4>,
|
||||
c : array<array<array<i32, 4>, 4>, 4>,
|
||||
};
|
||||
|
||||
fn f(s : S) -> i32 {
|
||||
@@ -290,21 +290,21 @@ fn f(s : S) -> i32 {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 4u>;
|
||||
arr : array<i32, 4u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<tint_array_wrapper, 4u>;
|
||||
arr : array<tint_array_wrapper, 4u>,
|
||||
}
|
||||
|
||||
struct tint_array_wrapper_2 {
|
||||
arr : array<tint_array_wrapper_1, 4u>;
|
||||
arr : array<tint_array_wrapper_1, 4u>,
|
||||
}
|
||||
|
||||
struct S {
|
||||
a : tint_array_wrapper;
|
||||
b : tint_array_wrapper_1;
|
||||
c : tint_array_wrapper_2;
|
||||
a : tint_array_wrapper,
|
||||
b : tint_array_wrapper_1,
|
||||
c : tint_array_wrapper_2,
|
||||
}
|
||||
|
||||
fn f(s : S) -> i32 {
|
||||
@@ -338,7 +338,7 @@ fn f2() {
|
||||
type T0 = i32;
|
||||
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 1u>;
|
||||
arr : array<i32, 1u>,
|
||||
}
|
||||
|
||||
type T1 = tint_array_wrapper;
|
||||
@@ -346,7 +346,7 @@ type T1 = tint_array_wrapper;
|
||||
type T2 = i32;
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<i32, 2u>;
|
||||
arr : array<i32, 2u>,
|
||||
}
|
||||
|
||||
fn f1(a : tint_array_wrapper_1) {
|
||||
@@ -355,7 +355,7 @@ fn f1(a : tint_array_wrapper_1) {
|
||||
type T3 = i32;
|
||||
|
||||
struct tint_array_wrapper_2 {
|
||||
arr : array<i32, 3u>;
|
||||
arr : array<i32, 3u>,
|
||||
}
|
||||
|
||||
fn f2() {
|
||||
@@ -387,7 +387,7 @@ type T0 = i32;
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct tint_array_wrapper {
|
||||
arr : array<i32, 3u>;
|
||||
arr : array<i32, 3u>,
|
||||
}
|
||||
|
||||
fn f2() {
|
||||
@@ -397,7 +397,7 @@ fn f2() {
|
||||
type T3 = i32;
|
||||
|
||||
struct tint_array_wrapper_1 {
|
||||
arr : array<i32, 2u>;
|
||||
arr : array<i32, 2u>,
|
||||
}
|
||||
|
||||
fn f1(a : tint_array_wrapper_1) {
|
||||
@@ -406,7 +406,7 @@ fn f1(a : tint_array_wrapper_1) {
|
||||
type T2 = i32;
|
||||
|
||||
struct tint_array_wrapper_2 {
|
||||
arr : array<i32, 1u>;
|
||||
arr : array<i32, 1u>,
|
||||
}
|
||||
|
||||
type T1 = tint_array_wrapper_2;
|
||||
|
||||
@@ -177,7 +177,7 @@ TEST_F(ZeroInitWorkgroupMemoryTest,
|
||||
var<workgroup> v : i32;
|
||||
|
||||
struct Params {
|
||||
@builtin(local_invocation_index) local_idx : u32;
|
||||
@builtin(local_invocation_index) local_idx : u32,
|
||||
};
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -190,7 +190,7 @@ var<workgroup> v : i32;
|
||||
|
||||
struct Params {
|
||||
@builtin(local_invocation_index)
|
||||
local_idx : u32;
|
||||
local_idx : u32,
|
||||
}
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
@@ -217,7 +217,7 @@ fn f(params : Params) {
|
||||
}
|
||||
|
||||
struct Params {
|
||||
@builtin(local_invocation_index) local_idx : u32;
|
||||
@builtin(local_invocation_index) local_idx : u32,
|
||||
};
|
||||
|
||||
var<workgroup> v : i32;
|
||||
@@ -234,7 +234,7 @@ fn f(params : Params) {
|
||||
|
||||
struct Params {
|
||||
@builtin(local_invocation_index)
|
||||
local_idx : u32;
|
||||
local_idx : u32,
|
||||
}
|
||||
|
||||
var<workgroup> v : i32;
|
||||
@@ -304,8 +304,8 @@ TEST_F(ZeroInitWorkgroupMemoryTest,
|
||||
MultipleWorkgroupVar_ExistingLocalIndex_Size1) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -323,8 +323,8 @@ fn f(@builtin(local_invocation_index) local_idx : u32) {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -381,8 +381,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -418,8 +418,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -432,8 +432,8 @@ TEST_F(ZeroInitWorkgroupMemoryTest,
|
||||
MultipleWorkgroupVar_ExistingLocalIndex_Size_2_3) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -451,8 +451,8 @@ fn f(@builtin(local_invocation_index) local_idx : u32) {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -496,8 +496,8 @@ TEST_F(ZeroInitWorkgroupMemoryTest,
|
||||
MultipleWorkgroupVar_ExistingLocalIndex_Size_2_3_X) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -518,8 +518,8 @@ fn f(@builtin(local_invocation_index) local_idx : u32) {
|
||||
auto* expect =
|
||||
R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -565,9 +565,9 @@ TEST_F(ZeroInitWorkgroupMemoryTest,
|
||||
MultipleWorkgroupVar_ExistingLocalIndex_Size_5u_X_10u) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : array<array<i32, 8>, 10>;
|
||||
y : array<i32, 8>;
|
||||
z : array<array<array<i32, 8>, 10>, 20>;
|
||||
x : array<array<i32, 8>, 10>,
|
||||
y : array<i32, 8>,
|
||||
z : array<array<array<i32, 8>, 10>, 20>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -588,9 +588,9 @@ fn f(@builtin(local_invocation_index) local_idx : u32) {
|
||||
auto* expect =
|
||||
R"(
|
||||
struct S {
|
||||
x : array<array<i32, 8>, 10>;
|
||||
y : array<i32, 8>;
|
||||
z : array<array<array<i32, 8>, 10>, 20>;
|
||||
x : array<array<i32, 8>, 10>,
|
||||
y : array<i32, 8>,
|
||||
z : array<array<array<i32, 8>, 10>, 20>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -654,8 +654,8 @@ fn f(@builtin(local_invocation_index) local_idx : u32) {
|
||||
TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_InjectedLocalIndex) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -673,8 +673,8 @@ fn f(@builtin(local_invocation_id) local_invocation_id : vec3<u32>) {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -731,8 +731,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -768,8 +768,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -781,8 +781,8 @@ struct S {
|
||||
TEST_F(ZeroInitWorkgroupMemoryTest, MultipleWorkgroupVar_MultipleEntryPoints) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -810,8 +810,8 @@ fn f3() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
|
||||
var<workgroup> a : i32;
|
||||
@@ -904,8 +904,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -967,8 +967,8 @@ var<workgroup> b : S;
|
||||
var<workgroup> c : array<S, 32>;
|
||||
|
||||
struct S {
|
||||
x : i32;
|
||||
y : array<i32, 8>;
|
||||
x : i32,
|
||||
y : array<i32, 8>,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -1132,11 +1132,11 @@ var<workgroup> u : atomic<u32>;
|
||||
TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupStructOfAtomics) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
};
|
||||
|
||||
var<workgroup> w : S;
|
||||
@@ -1148,11 +1148,11 @@ fn f() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
}
|
||||
|
||||
var<workgroup> w : S;
|
||||
@@ -1186,11 +1186,11 @@ fn f() {
|
||||
var<workgroup> w : S;
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -1210,11 +1210,11 @@ fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
|
||||
var<workgroup> w : S;
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -1282,11 +1282,11 @@ var<workgroup> w : array<atomic<u32>, 4>;
|
||||
TEST_F(ZeroInitWorkgroupMemoryTest, WorkgroupArrayOfStructOfAtomics) {
|
||||
auto* src = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
};
|
||||
|
||||
var<workgroup> w : array<S, 4>;
|
||||
@@ -1298,11 +1298,11 @@ fn f() {
|
||||
)";
|
||||
auto* expect = R"(
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
}
|
||||
|
||||
var<workgroup> w : array<S, 4>;
|
||||
@@ -1338,11 +1338,11 @@ fn f() {
|
||||
var<workgroup> w : array<S, 4>;
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
};
|
||||
)";
|
||||
auto* expect = R"(
|
||||
@@ -1363,11 +1363,11 @@ fn f(@builtin(local_invocation_index) local_invocation_index : u32) {
|
||||
var<workgroup> w : array<S, 4>;
|
||||
|
||||
struct S {
|
||||
a : i32;
|
||||
i : atomic<i32>;
|
||||
b : f32;
|
||||
u : atomic<u32>;
|
||||
c : u32;
|
||||
a : i32,
|
||||
i : atomic<i32>,
|
||||
b : f32,
|
||||
u : atomic<u32>,
|
||||
c : u32,
|
||||
}
|
||||
)";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user