diff --git a/src/front/wgsl/lower/mod.rs b/src/front/wgsl/lower/mod.rs index 6f06a3232..fe0c4f92d 100644 --- a/src/front/wgsl/lower/mod.rs +++ b/src/front/wgsl/lower/mod.rs @@ -363,11 +363,16 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { fn const_access(&self, handle: Handle) -> Option { match self.expr_type { - ExpressionContextType::Runtime(ref ctx) => self - .module - .to_ctx() - .eval_expr_to_u32_from(handle, ctx.naga_expressions) - .ok(), + ExpressionContextType::Runtime(ref ctx) => { + if !ctx.expression_constness.is_const(handle) { + return None; + } + + self.module + .to_ctx() + .eval_expr_to_u32_from(handle, ctx.naga_expressions) + .ok() + } ExpressionContextType::Constant => self.module.to_ctx().eval_expr_to_u32(handle).ok(), } } @@ -404,6 +409,12 @@ impl<'source, 'temp, 'out> ExpressionContext<'source, 'temp, 'out> { ) -> Result> { match self.expr_type { ExpressionContextType::Runtime(ref rctx) => { + if !rctx.expression_constness.is_const(expr) { + return Err(Error::ExpectedConstExprConcreteIntegerScalar( + component_span, + )); + } + let index = self .module .to_ctx() @@ -1076,6 +1087,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> { emitter.start(ctx.naga_expressions); let value = self.expression(l.init, ctx.as_expression(block, &mut emitter))?; + ctx.expression_constness.force_non_const(value); let explicit_ty = l.ty.map(|ty| self.resolve_ast_type(ty, ctx.as_global())) diff --git a/src/proc/constant_evaluator.rs b/src/proc/constant_evaluator.rs index a95684e78..6453989b3 100644 --- a/src/proc/constant_evaluator.rs +++ b/src/proc/constant_evaluator.rs @@ -37,6 +37,11 @@ impl ExpressionConstnessTracker { } } + /// Forces the the expression to not be const + pub fn force_non_const(&mut self, value: Handle) { + self.inner.remove(value.index()); + } + fn insert(&mut self, value: Handle) { self.inner.insert(value.index()); } diff --git a/src/proc/mod.rs b/src/proc/mod.rs index bfa0d160c..481ea8902 100644 --- a/src/proc/mod.rs +++ b/src/proc/mod.rs @@ -612,7 +612,7 @@ impl GlobalCtx<'_> { self.eval_expr_to_literal_from(handle, self.const_expressions) } - pub(crate) fn eval_expr_to_literal_from( + fn eval_expr_to_literal_from( &self, handle: crate::Handle, arena: &crate::Arena, diff --git a/tests/in/const-exprs.wgsl b/tests/in/const-exprs.wgsl index 89d8976f5..49e95a275 100644 --- a/tests/in/const-exprs.wgsl +++ b/tests/in/const-exprs.wgsl @@ -13,16 +13,12 @@ fn main() { // Swizzle the value of nested Compose expressions. fn swizzle_of_compose() { - let a = vec2(1, 2); - let b = vec2(3, 4); - out = vec4(a, b).wzyx; // should assign vec4(4, 3, 2, 1); + out = vec4(vec2(1, 2), vec2(3, 4)).wzyx; // should assign vec4(4, 3, 2, 1); } // Index the value of nested Compose expressions. fn index_of_compose() { - let a = vec2(1, 2); - let b = vec2(3, 4); - out2 += vec4(a, b)[1]; // should assign 2 + out2 += vec4(vec2(1, 2), vec2(3, 4))[1]; // should assign 2 } // Index the value of Compose expressions nested three deep diff --git a/tests/out/analysis/access.info.ron b/tests/out/analysis/access.info.ron index f66a79285..80a2cb162 100644 --- a/tests/out/analysis/access.info.ron +++ b/tests/out/analysis/access.info.ron @@ -2774,7 +2774,7 @@ non_uniform_result: None, requirements: (""), ), - ref_count: 0, + ref_count: 1, assignable_global: None, ty: Value(Scalar( kind: Uint, diff --git a/tests/out/glsl/access.foo_vert.Vertex.glsl b/tests/out/glsl/access.foo_vert.Vertex.glsl index a79ff3039..edc7ce1e6 100644 --- a/tests/out/glsl/access.foo_vert.Vertex.glsl +++ b/tests/out/glsl/access.foo_vert.Vertex.glsl @@ -132,7 +132,7 @@ void main() { test_matrix_within_array_within_struct_accesses(); mat4x3 _matrix = _group_0_binding_0_vs._matrix; uvec2 arr_1[2] = _group_0_binding_0_vs.arr; - float b = _group_0_binding_0_vs._matrix[3][0]; + float b = _group_0_binding_0_vs._matrix[3u][0]; int a_1 = _group_0_binding_0_vs.data[(uint(_group_0_binding_0_vs.data.length()) - 2u)].value; ivec2 c = _group_0_binding_2_vs; float _e33 = read_from_private(foo); diff --git a/tests/out/glsl/const-exprs.main.Compute.glsl b/tests/out/glsl/const-exprs.main.Compute.glsl index 00714b34f..e75ffa650 100644 --- a/tests/out/glsl/const-exprs.main.Compute.glsl +++ b/tests/out/glsl/const-exprs.main.Compute.glsl @@ -16,17 +16,13 @@ layout(std430) buffer type_1_block_1Compute { int _group_0_binding_1_cs; }; void swizzle_of_compose() { - ivec2 a = ivec2(1, 2); - ivec2 b = ivec2(3, 4); _group_0_binding_0_cs = ivec4(4, 3, 2, 1); return; } void index_of_compose() { - ivec2 a_1 = ivec2(1, 2); - ivec2 b_1 = ivec2(3, 4); - int _e7 = _group_0_binding_1_cs; - _group_0_binding_1_cs = (_e7 + 2); + int _e2 = _group_0_binding_1_cs; + _group_0_binding_1_cs = (_e2 + 2); return; } diff --git a/tests/out/glsl/image.texture_sample.Fragment.glsl b/tests/out/glsl/image.texture_sample.Fragment.glsl index dc17cedc2..97be5a59d 100644 --- a/tests/out/glsl/image.texture_sample.Fragment.glsl +++ b/tests/out/glsl/image.texture_sample.Fragment.glsl @@ -18,74 +18,74 @@ void main() { vec4 a = vec4(0.0); vec2 tc = vec2(0.5); vec3 tc3_ = vec3(0.5); - vec4 _e8 = texture(_group_0_binding_0_fs, vec2(0.5, 0.0)); - vec4 _e9 = a; - a = (_e9 + _e8); - vec4 _e13 = texture(_group_0_binding_1_fs, vec2(tc)); - vec4 _e14 = a; - a = (_e14 + _e13); - vec4 _e18 = textureOffset(_group_0_binding_1_fs, vec2(tc), ivec2(3, 1)); - vec4 _e19 = a; - a = (_e19 + _e18); - vec4 _e23 = textureLod(_group_0_binding_1_fs, vec2(tc), 2.3); - vec4 _e24 = a; - a = (_e24 + _e23); - vec4 _e28 = textureLodOffset(_group_0_binding_1_fs, vec2(tc), 2.3, ivec2(3, 1)); - vec4 _e29 = a; - a = (_e29 + _e28); - vec4 _e34 = textureOffset(_group_0_binding_1_fs, vec2(tc), ivec2(3, 1), 2.0); - vec4 _e35 = a; - a = (_e35 + _e34); - vec4 _e40 = texture(_group_0_binding_4_fs, vec3(tc, 0u)); - vec4 _e41 = a; - a = (_e41 + _e40); - vec4 _e46 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0u), ivec2(3, 1)); - vec4 _e47 = a; - a = (_e47 + _e46); - vec4 _e52 = textureLod(_group_0_binding_4_fs, vec3(tc, 0u), 2.3); - vec4 _e53 = a; - a = (_e53 + _e52); - vec4 _e58 = textureLodOffset(_group_0_binding_4_fs, vec3(tc, 0u), 2.3, ivec2(3, 1)); - vec4 _e59 = a; - a = (_e59 + _e58); - vec4 _e65 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0u), ivec2(3, 1), 2.0); - vec4 _e66 = a; - a = (_e66 + _e65); - vec4 _e71 = texture(_group_0_binding_4_fs, vec3(tc, 0)); - vec4 _e72 = a; - a = (_e72 + _e71); - vec4 _e77 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0), ivec2(3, 1)); - vec4 _e78 = a; - a = (_e78 + _e77); - vec4 _e83 = textureLod(_group_0_binding_4_fs, vec3(tc, 0), 2.3); - vec4 _e84 = a; - a = (_e84 + _e83); - vec4 _e89 = textureLodOffset(_group_0_binding_4_fs, vec3(tc, 0), 2.3, ivec2(3, 1)); - vec4 _e90 = a; - a = (_e90 + _e89); - vec4 _e96 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0), ivec2(3, 1), 2.0); - vec4 _e97 = a; - a = (_e97 + _e96); - vec4 _e102 = texture(_group_0_binding_6_fs, vec4(tc3_, 0u)); - vec4 _e103 = a; - a = (_e103 + _e102); - vec4 _e108 = textureLod(_group_0_binding_6_fs, vec4(tc3_, 0u), 2.3); - vec4 _e109 = a; - a = (_e109 + _e108); - vec4 _e115 = texture(_group_0_binding_6_fs, vec4(tc3_, 0u), 2.0); - vec4 _e116 = a; - a = (_e116 + _e115); - vec4 _e121 = texture(_group_0_binding_6_fs, vec4(tc3_, 0)); - vec4 _e122 = a; - a = (_e122 + _e121); - vec4 _e127 = textureLod(_group_0_binding_6_fs, vec4(tc3_, 0), 2.3); - vec4 _e128 = a; - a = (_e128 + _e127); - vec4 _e134 = texture(_group_0_binding_6_fs, vec4(tc3_, 0), 2.0); - vec4 _e135 = a; - a = (_e135 + _e134); - vec4 _e137 = a; - _fs2p_location0 = _e137; + vec4 _e9 = texture(_group_0_binding_0_fs, vec2(tc.x, 0.0)); + vec4 _e10 = a; + a = (_e10 + _e9); + vec4 _e14 = texture(_group_0_binding_1_fs, vec2(tc)); + vec4 _e15 = a; + a = (_e15 + _e14); + vec4 _e19 = textureOffset(_group_0_binding_1_fs, vec2(tc), ivec2(3, 1)); + vec4 _e20 = a; + a = (_e20 + _e19); + vec4 _e24 = textureLod(_group_0_binding_1_fs, vec2(tc), 2.3); + vec4 _e25 = a; + a = (_e25 + _e24); + vec4 _e29 = textureLodOffset(_group_0_binding_1_fs, vec2(tc), 2.3, ivec2(3, 1)); + vec4 _e30 = a; + a = (_e30 + _e29); + vec4 _e35 = textureOffset(_group_0_binding_1_fs, vec2(tc), ivec2(3, 1), 2.0); + vec4 _e36 = a; + a = (_e36 + _e35); + vec4 _e41 = texture(_group_0_binding_4_fs, vec3(tc, 0u)); + vec4 _e42 = a; + a = (_e42 + _e41); + vec4 _e47 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0u), ivec2(3, 1)); + vec4 _e48 = a; + a = (_e48 + _e47); + vec4 _e53 = textureLod(_group_0_binding_4_fs, vec3(tc, 0u), 2.3); + vec4 _e54 = a; + a = (_e54 + _e53); + vec4 _e59 = textureLodOffset(_group_0_binding_4_fs, vec3(tc, 0u), 2.3, ivec2(3, 1)); + vec4 _e60 = a; + a = (_e60 + _e59); + vec4 _e66 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0u), ivec2(3, 1), 2.0); + vec4 _e67 = a; + a = (_e67 + _e66); + vec4 _e72 = texture(_group_0_binding_4_fs, vec3(tc, 0)); + vec4 _e73 = a; + a = (_e73 + _e72); + vec4 _e78 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0), ivec2(3, 1)); + vec4 _e79 = a; + a = (_e79 + _e78); + vec4 _e84 = textureLod(_group_0_binding_4_fs, vec3(tc, 0), 2.3); + vec4 _e85 = a; + a = (_e85 + _e84); + vec4 _e90 = textureLodOffset(_group_0_binding_4_fs, vec3(tc, 0), 2.3, ivec2(3, 1)); + vec4 _e91 = a; + a = (_e91 + _e90); + vec4 _e97 = textureOffset(_group_0_binding_4_fs, vec3(tc, 0), ivec2(3, 1), 2.0); + vec4 _e98 = a; + a = (_e98 + _e97); + vec4 _e103 = texture(_group_0_binding_6_fs, vec4(tc3_, 0u)); + vec4 _e104 = a; + a = (_e104 + _e103); + vec4 _e109 = textureLod(_group_0_binding_6_fs, vec4(tc3_, 0u), 2.3); + vec4 _e110 = a; + a = (_e110 + _e109); + vec4 _e116 = texture(_group_0_binding_6_fs, vec4(tc3_, 0u), 2.0); + vec4 _e117 = a; + a = (_e117 + _e116); + vec4 _e122 = texture(_group_0_binding_6_fs, vec4(tc3_, 0)); + vec4 _e123 = a; + a = (_e123 + _e122); + vec4 _e128 = textureLod(_group_0_binding_6_fs, vec4(tc3_, 0), 2.3); + vec4 _e129 = a; + a = (_e129 + _e128); + vec4 _e135 = texture(_group_0_binding_6_fs, vec4(tc3_, 0), 2.0); + vec4 _e136 = a; + a = (_e136 + _e135); + vec4 _e138 = a; + _fs2p_location0 = _e138; return; } diff --git a/tests/out/hlsl/access.hlsl b/tests/out/hlsl/access.hlsl index 6f44bdb07..a4c739d74 100644 --- a/tests/out/hlsl/access.hlsl +++ b/tests/out/hlsl/access.hlsl @@ -256,7 +256,7 @@ float4 foo_vert(uint vi : SV_VertexID) : SV_Position test_matrix_within_array_within_struct_accesses(); float4x3 _matrix = float4x3(asfloat(bar.Load3(0+0)), asfloat(bar.Load3(0+16)), asfloat(bar.Load3(0+32)), asfloat(bar.Load3(0+48))); uint2 arr_1[2] = Constructarray2_uint2_(asuint(bar.Load2(144+0)), asuint(bar.Load2(144+8))); - float b = asfloat(bar.Load(0+48+0)); + float b = asfloat(bar.Load(0+3u*16+0)); int a_1 = asint(bar.Load(0+(((NagaBufferLengthRW(bar) - 160) / 8) - 2u)*8+160)); int2 c = asint(qux.Load2(0)); const float _e33 = read_from_private(foo); diff --git a/tests/out/hlsl/const-exprs.hlsl b/tests/out/hlsl/const-exprs.hlsl index 46961977e..91b82ec56 100644 --- a/tests/out/hlsl/const-exprs.hlsl +++ b/tests/out/hlsl/const-exprs.hlsl @@ -8,18 +8,14 @@ RWByteAddressBuffer out2_ : register(u1); void swizzle_of_compose() { - int2 a = int2(1, 2); - int2 b = int2(3, 4); out_.Store4(0, asuint(int4(4, 3, 2, 1))); return; } void index_of_compose() { - int2 a_1 = int2(1, 2); - int2 b_1 = int2(3, 4); - int _expr7 = asint(out2_.Load(0)); - out2_.Store(0, asuint((_expr7 + 2))); + int _expr2 = asint(out2_.Load(0)); + out2_.Store(0, asuint((_expr2 + 2))); return; } diff --git a/tests/out/hlsl/image.hlsl b/tests/out/hlsl/image.hlsl index 05825e18c..7fbd68b10 100644 --- a/tests/out/hlsl/image.hlsl +++ b/tests/out/hlsl/image.hlsl @@ -246,74 +246,74 @@ float4 texture_sample() : SV_Target0 float2 tc = (0.5).xx; float3 tc3_ = (0.5).xxx; - float4 _expr8 = image_1d.Sample(sampler_reg, 0.5); - float4 _expr9 = a; - a = (_expr9 + _expr8); - float4 _expr13 = image_2d.Sample(sampler_reg, tc); - float4 _expr14 = a; - a = (_expr14 + _expr13); - float4 _expr18 = image_2d.Sample(sampler_reg, tc, int2(int2(3, 1))); - float4 _expr19 = a; - a = (_expr19 + _expr18); - float4 _expr23 = image_2d.SampleLevel(sampler_reg, tc, 2.3); - float4 _expr24 = a; - a = (_expr24 + _expr23); - float4 _expr28 = image_2d.SampleLevel(sampler_reg, tc, 2.3, int2(int2(3, 1))); - float4 _expr29 = a; - a = (_expr29 + _expr28); - float4 _expr34 = image_2d.SampleBias(sampler_reg, tc, 2.0, int2(int2(3, 1))); - float4 _expr35 = a; - a = (_expr35 + _expr34); - float4 _expr40 = image_2d_array.Sample(sampler_reg, float3(tc, 0u)); - float4 _expr41 = a; - a = (_expr41 + _expr40); - float4 _expr46 = image_2d_array.Sample(sampler_reg, float3(tc, 0u), int2(int2(3, 1))); - float4 _expr47 = a; - a = (_expr47 + _expr46); - float4 _expr52 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0u), 2.3); - float4 _expr53 = a; - a = (_expr53 + _expr52); - float4 _expr58 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0u), 2.3, int2(int2(3, 1))); - float4 _expr59 = a; - a = (_expr59 + _expr58); - float4 _expr65 = image_2d_array.SampleBias(sampler_reg, float3(tc, 0u), 2.0, int2(int2(3, 1))); - float4 _expr66 = a; - a = (_expr66 + _expr65); - float4 _expr71 = image_2d_array.Sample(sampler_reg, float3(tc, 0)); - float4 _expr72 = a; - a = (_expr72 + _expr71); - float4 _expr77 = image_2d_array.Sample(sampler_reg, float3(tc, 0), int2(int2(3, 1))); - float4 _expr78 = a; - a = (_expr78 + _expr77); - float4 _expr83 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0), 2.3); - float4 _expr84 = a; - a = (_expr84 + _expr83); - float4 _expr89 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0), 2.3, int2(int2(3, 1))); - float4 _expr90 = a; - a = (_expr90 + _expr89); - float4 _expr96 = image_2d_array.SampleBias(sampler_reg, float3(tc, 0), 2.0, int2(int2(3, 1))); - float4 _expr97 = a; - a = (_expr97 + _expr96); - float4 _expr102 = image_cube_array.Sample(sampler_reg, float4(tc3_, 0u)); - float4 _expr103 = a; - a = (_expr103 + _expr102); - float4 _expr108 = image_cube_array.SampleLevel(sampler_reg, float4(tc3_, 0u), 2.3); - float4 _expr109 = a; - a = (_expr109 + _expr108); - float4 _expr115 = image_cube_array.SampleBias(sampler_reg, float4(tc3_, 0u), 2.0); - float4 _expr116 = a; - a = (_expr116 + _expr115); - float4 _expr121 = image_cube_array.Sample(sampler_reg, float4(tc3_, 0)); - float4 _expr122 = a; - a = (_expr122 + _expr121); - float4 _expr127 = image_cube_array.SampleLevel(sampler_reg, float4(tc3_, 0), 2.3); - float4 _expr128 = a; - a = (_expr128 + _expr127); - float4 _expr134 = image_cube_array.SampleBias(sampler_reg, float4(tc3_, 0), 2.0); - float4 _expr135 = a; - a = (_expr135 + _expr134); - float4 _expr137 = a; - return _expr137; + float4 _expr9 = image_1d.Sample(sampler_reg, tc.x); + float4 _expr10 = a; + a = (_expr10 + _expr9); + float4 _expr14 = image_2d.Sample(sampler_reg, tc); + float4 _expr15 = a; + a = (_expr15 + _expr14); + float4 _expr19 = image_2d.Sample(sampler_reg, tc, int2(int2(3, 1))); + float4 _expr20 = a; + a = (_expr20 + _expr19); + float4 _expr24 = image_2d.SampleLevel(sampler_reg, tc, 2.3); + float4 _expr25 = a; + a = (_expr25 + _expr24); + float4 _expr29 = image_2d.SampleLevel(sampler_reg, tc, 2.3, int2(int2(3, 1))); + float4 _expr30 = a; + a = (_expr30 + _expr29); + float4 _expr35 = image_2d.SampleBias(sampler_reg, tc, 2.0, int2(int2(3, 1))); + float4 _expr36 = a; + a = (_expr36 + _expr35); + float4 _expr41 = image_2d_array.Sample(sampler_reg, float3(tc, 0u)); + float4 _expr42 = a; + a = (_expr42 + _expr41); + float4 _expr47 = image_2d_array.Sample(sampler_reg, float3(tc, 0u), int2(int2(3, 1))); + float4 _expr48 = a; + a = (_expr48 + _expr47); + float4 _expr53 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0u), 2.3); + float4 _expr54 = a; + a = (_expr54 + _expr53); + float4 _expr59 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0u), 2.3, int2(int2(3, 1))); + float4 _expr60 = a; + a = (_expr60 + _expr59); + float4 _expr66 = image_2d_array.SampleBias(sampler_reg, float3(tc, 0u), 2.0, int2(int2(3, 1))); + float4 _expr67 = a; + a = (_expr67 + _expr66); + float4 _expr72 = image_2d_array.Sample(sampler_reg, float3(tc, 0)); + float4 _expr73 = a; + a = (_expr73 + _expr72); + float4 _expr78 = image_2d_array.Sample(sampler_reg, float3(tc, 0), int2(int2(3, 1))); + float4 _expr79 = a; + a = (_expr79 + _expr78); + float4 _expr84 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0), 2.3); + float4 _expr85 = a; + a = (_expr85 + _expr84); + float4 _expr90 = image_2d_array.SampleLevel(sampler_reg, float3(tc, 0), 2.3, int2(int2(3, 1))); + float4 _expr91 = a; + a = (_expr91 + _expr90); + float4 _expr97 = image_2d_array.SampleBias(sampler_reg, float3(tc, 0), 2.0, int2(int2(3, 1))); + float4 _expr98 = a; + a = (_expr98 + _expr97); + float4 _expr103 = image_cube_array.Sample(sampler_reg, float4(tc3_, 0u)); + float4 _expr104 = a; + a = (_expr104 + _expr103); + float4 _expr109 = image_cube_array.SampleLevel(sampler_reg, float4(tc3_, 0u), 2.3); + float4 _expr110 = a; + a = (_expr110 + _expr109); + float4 _expr116 = image_cube_array.SampleBias(sampler_reg, float4(tc3_, 0u), 2.0); + float4 _expr117 = a; + a = (_expr117 + _expr116); + float4 _expr122 = image_cube_array.Sample(sampler_reg, float4(tc3_, 0)); + float4 _expr123 = a; + a = (_expr123 + _expr122); + float4 _expr128 = image_cube_array.SampleLevel(sampler_reg, float4(tc3_, 0), 2.3); + float4 _expr129 = a; + a = (_expr129 + _expr128); + float4 _expr135 = image_cube_array.SampleBias(sampler_reg, float4(tc3_, 0), 2.0); + float4 _expr136 = a; + a = (_expr136 + _expr135); + float4 _expr138 = a; + return _expr138; } float texture_sample_comparison() : SV_Target0 diff --git a/tests/out/ir/access.compact.ron b/tests/out/ir/access.compact.ron index 1c0220141..f24f830af 100644 --- a/tests/out/ir/access.compact.ron +++ b/tests/out/ir/access.compact.ron @@ -1697,9 +1697,9 @@ base: 13, index: 0, ), - AccessIndex( + Access( base: 14, - index: 3, + index: 12, ), AccessIndex( base: 15, diff --git a/tests/out/ir/access.ron b/tests/out/ir/access.ron index fcdd3b8b7..9a1820fc8 100644 --- a/tests/out/ir/access.ron +++ b/tests/out/ir/access.ron @@ -1792,9 +1792,9 @@ base: 13, index: 0, ), - AccessIndex( + Access( base: 14, - index: 3, + index: 12, ), AccessIndex( base: 15, diff --git a/tests/out/msl/access.msl b/tests/out/msl/access.msl index 3d57ebd7c..7c901c35a 100644 --- a/tests/out/msl/access.msl +++ b/tests/out/msl/access.msl @@ -180,7 +180,7 @@ vertex foo_vertOutput foo_vert( test_matrix_within_array_within_struct_accesses(nested_mat_cx2_); metal::float4x3 _matrix = bar._matrix; type_9 arr_1 = bar.arr; - float b = bar._matrix[3].x; + float b = bar._matrix[3u].x; int a_1 = bar.data[(1 + (_buffer_sizes.size1 - 160 - 8) / 8) - 2u].value; metal::int2 c = qux; float _e33 = read_from_private(foo); diff --git a/tests/out/msl/const-exprs.msl b/tests/out/msl/const-exprs.msl index 135b4ec10..5cbc23a00 100644 --- a/tests/out/msl/const-exprs.msl +++ b/tests/out/msl/const-exprs.msl @@ -12,8 +12,6 @@ constant int TEST_CONSTANT_ALIAS_ADDITION = 8; void swizzle_of_compose( device metal::int4& out ) { - metal::int2 a = metal::int2(1, 2); - metal::int2 b = metal::int2(3, 4); out = metal::int4(4, 3, 2, 1); return; } @@ -21,10 +19,8 @@ void swizzle_of_compose( void index_of_compose( device int& out2_ ) { - metal::int2 a_1 = metal::int2(1, 2); - metal::int2 b_1 = metal::int2(3, 4); - int _e7 = out2_; - out2_ = _e7 + 2; + int _e2 = out2_; + out2_ = _e2 + 2; return; } diff --git a/tests/out/msl/image.msl b/tests/out/msl/image.msl index 1612314ec..e390c2e0f 100644 --- a/tests/out/msl/image.msl +++ b/tests/out/msl/image.msl @@ -119,74 +119,74 @@ fragment texture_sampleOutput texture_sample( metal::float4 a = {}; metal::float2 tc = metal::float2(0.5); metal::float3 tc3_ = metal::float3(0.5); - metal::float4 _e8 = image_1d.sample(sampler_reg, 0.5); - metal::float4 _e9 = a; - a = _e9 + _e8; - metal::float4 _e13 = image_2d.sample(sampler_reg, tc); - metal::float4 _e14 = a; - a = _e14 + _e13; - metal::float4 _e18 = image_2d.sample(sampler_reg, tc, metal::int2(3, 1)); - metal::float4 _e19 = a; - a = _e19 + _e18; - metal::float4 _e23 = image_2d.sample(sampler_reg, tc, metal::level(2.3)); - metal::float4 _e24 = a; - a = _e24 + _e23; - metal::float4 _e28 = image_2d.sample(sampler_reg, tc, metal::level(2.3), metal::int2(3, 1)); - metal::float4 _e29 = a; - a = _e29 + _e28; - metal::float4 _e34 = image_2d.sample(sampler_reg, tc, metal::bias(2.0), metal::int2(3, 1)); - metal::float4 _e35 = a; - a = _e35 + _e34; - metal::float4 _e40 = image_2d_array.sample(sampler_reg, tc, 0u); - metal::float4 _e41 = a; - a = _e41 + _e40; - metal::float4 _e46 = image_2d_array.sample(sampler_reg, tc, 0u, metal::int2(3, 1)); - metal::float4 _e47 = a; - a = _e47 + _e46; - metal::float4 _e52 = image_2d_array.sample(sampler_reg, tc, 0u, metal::level(2.3)); - metal::float4 _e53 = a; - a = _e53 + _e52; - metal::float4 _e58 = image_2d_array.sample(sampler_reg, tc, 0u, metal::level(2.3), metal::int2(3, 1)); - metal::float4 _e59 = a; - a = _e59 + _e58; - metal::float4 _e65 = image_2d_array.sample(sampler_reg, tc, 0u, metal::bias(2.0), metal::int2(3, 1)); - metal::float4 _e66 = a; - a = _e66 + _e65; - metal::float4 _e71 = image_2d_array.sample(sampler_reg, tc, 0); - metal::float4 _e72 = a; - a = _e72 + _e71; - metal::float4 _e77 = image_2d_array.sample(sampler_reg, tc, 0, metal::int2(3, 1)); - metal::float4 _e78 = a; - a = _e78 + _e77; - metal::float4 _e83 = image_2d_array.sample(sampler_reg, tc, 0, metal::level(2.3)); - metal::float4 _e84 = a; - a = _e84 + _e83; - metal::float4 _e89 = image_2d_array.sample(sampler_reg, tc, 0, metal::level(2.3), metal::int2(3, 1)); - metal::float4 _e90 = a; - a = _e90 + _e89; - metal::float4 _e96 = image_2d_array.sample(sampler_reg, tc, 0, metal::bias(2.0), metal::int2(3, 1)); - metal::float4 _e97 = a; - a = _e97 + _e96; - metal::float4 _e102 = image_cube_array.sample(sampler_reg, tc3_, 0u); - metal::float4 _e103 = a; - a = _e103 + _e102; - metal::float4 _e108 = image_cube_array.sample(sampler_reg, tc3_, 0u, metal::level(2.3)); - metal::float4 _e109 = a; - a = _e109 + _e108; - metal::float4 _e115 = image_cube_array.sample(sampler_reg, tc3_, 0u, metal::bias(2.0)); - metal::float4 _e116 = a; - a = _e116 + _e115; - metal::float4 _e121 = image_cube_array.sample(sampler_reg, tc3_, 0); - metal::float4 _e122 = a; - a = _e122 + _e121; - metal::float4 _e127 = image_cube_array.sample(sampler_reg, tc3_, 0, metal::level(2.3)); - metal::float4 _e128 = a; - a = _e128 + _e127; - metal::float4 _e134 = image_cube_array.sample(sampler_reg, tc3_, 0, metal::bias(2.0)); - metal::float4 _e135 = a; - a = _e135 + _e134; - metal::float4 _e137 = a; - return texture_sampleOutput { _e137 }; + metal::float4 _e9 = image_1d.sample(sampler_reg, tc.x); + metal::float4 _e10 = a; + a = _e10 + _e9; + metal::float4 _e14 = image_2d.sample(sampler_reg, tc); + metal::float4 _e15 = a; + a = _e15 + _e14; + metal::float4 _e19 = image_2d.sample(sampler_reg, tc, metal::int2(3, 1)); + metal::float4 _e20 = a; + a = _e20 + _e19; + metal::float4 _e24 = image_2d.sample(sampler_reg, tc, metal::level(2.3)); + metal::float4 _e25 = a; + a = _e25 + _e24; + metal::float4 _e29 = image_2d.sample(sampler_reg, tc, metal::level(2.3), metal::int2(3, 1)); + metal::float4 _e30 = a; + a = _e30 + _e29; + metal::float4 _e35 = image_2d.sample(sampler_reg, tc, metal::bias(2.0), metal::int2(3, 1)); + metal::float4 _e36 = a; + a = _e36 + _e35; + metal::float4 _e41 = image_2d_array.sample(sampler_reg, tc, 0u); + metal::float4 _e42 = a; + a = _e42 + _e41; + metal::float4 _e47 = image_2d_array.sample(sampler_reg, tc, 0u, metal::int2(3, 1)); + metal::float4 _e48 = a; + a = _e48 + _e47; + metal::float4 _e53 = image_2d_array.sample(sampler_reg, tc, 0u, metal::level(2.3)); + metal::float4 _e54 = a; + a = _e54 + _e53; + metal::float4 _e59 = image_2d_array.sample(sampler_reg, tc, 0u, metal::level(2.3), metal::int2(3, 1)); + metal::float4 _e60 = a; + a = _e60 + _e59; + metal::float4 _e66 = image_2d_array.sample(sampler_reg, tc, 0u, metal::bias(2.0), metal::int2(3, 1)); + metal::float4 _e67 = a; + a = _e67 + _e66; + metal::float4 _e72 = image_2d_array.sample(sampler_reg, tc, 0); + metal::float4 _e73 = a; + a = _e73 + _e72; + metal::float4 _e78 = image_2d_array.sample(sampler_reg, tc, 0, metal::int2(3, 1)); + metal::float4 _e79 = a; + a = _e79 + _e78; + metal::float4 _e84 = image_2d_array.sample(sampler_reg, tc, 0, metal::level(2.3)); + metal::float4 _e85 = a; + a = _e85 + _e84; + metal::float4 _e90 = image_2d_array.sample(sampler_reg, tc, 0, metal::level(2.3), metal::int2(3, 1)); + metal::float4 _e91 = a; + a = _e91 + _e90; + metal::float4 _e97 = image_2d_array.sample(sampler_reg, tc, 0, metal::bias(2.0), metal::int2(3, 1)); + metal::float4 _e98 = a; + a = _e98 + _e97; + metal::float4 _e103 = image_cube_array.sample(sampler_reg, tc3_, 0u); + metal::float4 _e104 = a; + a = _e104 + _e103; + metal::float4 _e109 = image_cube_array.sample(sampler_reg, tc3_, 0u, metal::level(2.3)); + metal::float4 _e110 = a; + a = _e110 + _e109; + metal::float4 _e116 = image_cube_array.sample(sampler_reg, tc3_, 0u, metal::bias(2.0)); + metal::float4 _e117 = a; + a = _e117 + _e116; + metal::float4 _e122 = image_cube_array.sample(sampler_reg, tc3_, 0); + metal::float4 _e123 = a; + a = _e123 + _e122; + metal::float4 _e128 = image_cube_array.sample(sampler_reg, tc3_, 0, metal::level(2.3)); + metal::float4 _e129 = a; + a = _e129 + _e128; + metal::float4 _e135 = image_cube_array.sample(sampler_reg, tc3_, 0, metal::bias(2.0)); + metal::float4 _e136 = a; + a = _e136 + _e135; + metal::float4 _e138 = a; + return texture_sampleOutput { _e138 }; } diff --git a/tests/out/spv/const-exprs.spvasm b/tests/out/spv/const-exprs.spvasm index 0b5c91317..1f7bf5c8c 100644 --- a/tests/out/spv/const-exprs.spvasm +++ b/tests/out/spv/const-exprs.spvasm @@ -1,130 +1,127 @@ ; SPIR-V ; Version: 1.1 ; Generator: rspirv -; Bound: 85 +; Bound: 82 OpCapability Shader OpExtension "SPV_KHR_storage_buffer_storage_class" %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 -OpEntryPoint GLCompute %75 "main" -OpExecutionMode %75 LocalSize 1 1 1 -OpDecorate %8 DescriptorSet 0 -OpDecorate %8 Binding 0 -OpDecorate %9 Block -OpMemberDecorate %9 0 Offset 0 -OpDecorate %11 DescriptorSet 0 -OpDecorate %11 Binding 1 -OpDecorate %12 Block -OpMemberDecorate %12 0 Offset 0 +OpEntryPoint GLCompute %72 "main" +OpExecutionMode %72 LocalSize 1 1 1 +OpDecorate %7 DescriptorSet 0 +OpDecorate %7 Binding 0 +OpDecorate %8 Block +OpMemberDecorate %8 0 Offset 0 +OpDecorate %10 DescriptorSet 0 +OpDecorate %10 Binding 1 +OpDecorate %11 Block +OpMemberDecorate %11 0 Offset 0 %2 = OpTypeVoid %4 = OpTypeInt 32 1 %3 = OpTypeVector %4 4 -%5 = OpTypeVector %4 2 -%6 = OpConstant %4 4 -%7 = OpConstant %4 8 -%9 = OpTypeStruct %3 -%10 = OpTypePointer StorageBuffer %9 -%8 = OpVariable %10 StorageBuffer -%12 = OpTypeStruct %4 -%13 = OpTypePointer StorageBuffer %12 -%11 = OpVariable %13 StorageBuffer -%16 = OpTypeFunction %2 -%17 = OpTypePointer StorageBuffer %3 -%19 = OpTypeInt 32 0 -%18 = OpConstant %19 0 -%21 = OpConstant %4 1 -%22 = OpConstant %4 2 -%23 = OpConstantComposite %5 %21 %22 -%24 = OpConstant %4 3 -%25 = OpConstantComposite %5 %24 %6 -%26 = OpConstantComposite %3 %6 %24 %22 %21 -%30 = OpTypePointer StorageBuffer %4 -%38 = OpConstant %4 6 -%45 = OpConstant %4 30 -%46 = OpConstant %4 70 -%48 = OpTypePointer Function %4 -%50 = OpConstantNull %4 -%52 = OpConstantNull %4 -%67 = OpConstant %4 -4 -%68 = OpConstantComposite %3 %67 %67 %67 %67 -%15 = OpFunction %2 None %16 -%14 = OpLabel -%20 = OpAccessChain %17 %8 %18 -OpBranch %27 -%27 = OpLabel -OpStore %20 %26 +%5 = OpConstant %4 4 +%6 = OpConstant %4 8 +%8 = OpTypeStruct %3 +%9 = OpTypePointer StorageBuffer %8 +%7 = OpVariable %9 StorageBuffer +%11 = OpTypeStruct %4 +%12 = OpTypePointer StorageBuffer %11 +%10 = OpVariable %12 StorageBuffer +%15 = OpTypeFunction %2 +%16 = OpTypePointer StorageBuffer %3 +%18 = OpTypeInt 32 0 +%17 = OpConstant %18 0 +%20 = OpConstant %4 1 +%21 = OpConstant %4 2 +%22 = OpConstant %4 3 +%23 = OpConstantComposite %3 %5 %22 %21 %20 +%27 = OpTypePointer StorageBuffer %4 +%35 = OpConstant %4 6 +%42 = OpConstant %4 30 +%43 = OpConstant %4 70 +%45 = OpTypePointer Function %4 +%47 = OpConstantNull %4 +%49 = OpConstantNull %4 +%64 = OpConstant %4 -4 +%65 = OpConstantComposite %3 %64 %64 %64 %64 +%14 = OpFunction %2 None %15 +%13 = OpLabel +%19 = OpAccessChain %16 %7 %17 +OpBranch %24 +%24 = OpLabel +OpStore %19 %23 OpReturn OpFunctionEnd -%29 = OpFunction %2 None %16 -%28 = OpLabel -%31 = OpAccessChain %30 %11 %18 -OpBranch %32 +%26 = OpFunction %2 None %15 +%25 = OpLabel +%28 = OpAccessChain %27 %10 %17 +OpBranch %29 +%29 = OpLabel +%30 = OpLoad %4 %28 +%31 = OpIAdd %4 %30 %21 +OpStore %28 %31 +OpReturn +OpFunctionEnd +%33 = OpFunction %2 None %15 %32 = OpLabel -%33 = OpLoad %4 %31 -%34 = OpIAdd %4 %33 %22 -OpStore %31 %34 +%34 = OpAccessChain %27 %10 %17 +OpBranch %36 +%36 = OpLabel +%37 = OpLoad %4 %34 +%38 = OpIAdd %4 %37 %35 +OpStore %34 %38 OpReturn OpFunctionEnd -%36 = OpFunction %2 None %16 -%35 = OpLabel -%37 = OpAccessChain %30 %11 %18 -OpBranch %39 +%40 = OpFunction %2 None %15 %39 = OpLabel -%40 = OpLoad %4 %37 -%41 = OpIAdd %4 %40 %38 -OpStore %37 %41 +%46 = OpVariable %45 Function %47 +%50 = OpVariable %45 Function %43 +%44 = OpVariable %45 Function %42 +%48 = OpVariable %45 Function %49 +%41 = OpAccessChain %16 %7 %17 +OpBranch %51 +%51 = OpLabel +%52 = OpLoad %4 %44 +OpStore %46 %52 +%53 = OpLoad %4 %46 +OpStore %48 %53 +%54 = OpLoad %4 %44 +%55 = OpLoad %4 %46 +%56 = OpLoad %4 %48 +%57 = OpLoad %4 %50 +%58 = OpCompositeConstruct %3 %54 %55 %56 %57 +%59 = OpLoad %3 %41 +%60 = OpIAdd %3 %59 %58 +OpStore %41 %60 OpReturn OpFunctionEnd -%43 = OpFunction %2 None %16 -%42 = OpLabel -%49 = OpVariable %48 Function %50 -%53 = OpVariable %48 Function %46 -%47 = OpVariable %48 Function %45 -%51 = OpVariable %48 Function %52 -%44 = OpAccessChain %17 %8 %18 -OpBranch %54 -%54 = OpLabel -%55 = OpLoad %4 %47 -OpStore %49 %55 -%56 = OpLoad %4 %49 -OpStore %51 %56 -%57 = OpLoad %4 %47 -%58 = OpLoad %4 %49 -%59 = OpLoad %4 %51 -%60 = OpLoad %4 %53 -%61 = OpCompositeConstruct %3 %57 %58 %59 %60 -%62 = OpLoad %3 %44 -%63 = OpIAdd %3 %62 %61 -OpStore %44 %63 +%62 = OpFunction %2 None %15 +%61 = OpLabel +%63 = OpAccessChain %16 %7 %17 +OpBranch %66 +%66 = OpLabel +OpStore %63 %65 OpReturn OpFunctionEnd -%65 = OpFunction %2 None %16 -%64 = OpLabel -%66 = OpAccessChain %17 %8 %18 -OpBranch %69 -%69 = OpLabel -OpStore %66 %68 -OpReturn -OpFunctionEnd -%71 = OpFunction %2 None %16 +%68 = OpFunction %2 None %15 +%67 = OpLabel +%69 = OpAccessChain %16 %7 %17 +OpBranch %70 %70 = OpLabel -%72 = OpAccessChain %17 %8 %18 -OpBranch %73 -%73 = OpLabel -OpStore %72 %68 +OpStore %69 %65 OpReturn OpFunctionEnd -%75 = OpFunction %2 None %16 -%74 = OpLabel -%76 = OpAccessChain %17 %8 %18 -%77 = OpAccessChain %30 %11 %18 -OpBranch %78 -%78 = OpLabel -%79 = OpFunctionCall %2 %15 -%80 = OpFunctionCall %2 %29 -%81 = OpFunctionCall %2 %36 -%82 = OpFunctionCall %2 %43 -%83 = OpFunctionCall %2 %65 -%84 = OpFunctionCall %2 %71 +%72 = OpFunction %2 None %15 +%71 = OpLabel +%73 = OpAccessChain %16 %7 %17 +%74 = OpAccessChain %27 %10 %17 +OpBranch %75 +%75 = OpLabel +%76 = OpFunctionCall %2 %14 +%77 = OpFunctionCall %2 %26 +%78 = OpFunctionCall %2 %33 +%79 = OpFunctionCall %2 %40 +%80 = OpFunctionCall %2 %62 +%81 = OpFunctionCall %2 %68 OpReturn OpFunctionEnd \ No newline at end of file diff --git a/tests/out/spv/debug-symbol-terrain.spvasm b/tests/out/spv/debug-symbol-terrain.spvasm index 30ecd2f8f..36fae9d60 100644 --- a/tests/out/spv/debug-symbol-terrain.spvasm +++ b/tests/out/spv/debug-symbol-terrain.spvasm @@ -360,10 +360,10 @@ OpName %52 "x" OpName %53 "permute3" OpName %66 "v" OpName %67 "snoise2" -OpName %90 "i" -OpName %93 "i1" -OpName %95 "x12" -OpName %98 "m" +OpName %86 "i" +OpName %89 "i1" +OpName %91 "x12" +OpName %94 "m" OpName %203 "p" OpName %204 "fbm" OpName %209 "x" @@ -547,34 +547,30 @@ OpDecorate %582 Location 0 %71 = OpConstant %5 -0.57735026 %72 = OpConstant %5 0.024390243 %73 = OpConstantComposite %7 %69 %70 %71 %72 -%74 = OpConstantComposite %6 %70 %70 -%75 = OpConstantComposite %6 %69 %69 -%76 = OpConstant %5 0.0 -%77 = OpConstantComposite %6 %56 %76 -%78 = OpConstantComposite %6 %76 %56 -%79 = OpConstantComposite %7 %69 %69 %71 %71 -%80 = OpConstantComposite %6 %58 %58 -%81 = OpConstant %5 0.5 -%82 = OpConstantComposite %4 %81 %81 %81 -%83 = OpConstantComposite %4 %76 %76 %76 -%84 = OpConstant %5 2.0 -%85 = OpConstantComposite %4 %72 %72 %72 -%86 = OpConstant %5 1.7928429 -%87 = OpConstant %5 0.85373473 -%88 = OpConstantComposite %4 %86 %86 %86 -%89 = OpConstant %5 130.0 -%91 = OpTypePointer Function %6 -%92 = OpConstantNull %6 -%94 = OpConstantNull %6 -%96 = OpTypePointer Function %7 -%97 = OpConstantNull %7 -%99 = OpTypePointer Function %4 -%100 = OpConstantNull %4 -%114 = OpTypeBool -%117 = OpTypeVector %114 2 -%126 = OpTypePointer Function %5 -%127 = OpConstant %8 1 -%136 = OpConstant %8 0 +%74 = OpConstant %5 0.0 +%75 = OpConstantComposite %6 %56 %74 +%76 = OpConstantComposite %6 %74 %56 +%77 = OpConstantComposite %6 %58 %58 +%78 = OpConstant %5 0.5 +%79 = OpConstantComposite %4 %78 %78 %78 +%80 = OpConstantComposite %4 %74 %74 %74 +%81 = OpConstant %5 2.0 +%82 = OpConstant %5 1.7928429 +%83 = OpConstant %5 0.85373473 +%84 = OpConstantComposite %4 %82 %82 %82 +%85 = OpConstant %5 130.0 +%87 = OpTypePointer Function %6 +%88 = OpConstantNull %6 +%90 = OpConstantNull %6 +%92 = OpTypePointer Function %7 +%93 = OpConstantNull %7 +%95 = OpTypePointer Function %4 +%96 = OpConstantNull %4 +%112 = OpTypeBool +%115 = OpTypeVector %112 2 +%125 = OpTypePointer Function %5 +%126 = OpConstant %8 1 +%135 = OpConstant %8 0 %205 = OpConstant %8 5 %206 = OpConstant %5 0.01 %207 = OpConstant %5 100.0 @@ -585,11 +581,11 @@ OpDecorate %582 Location 0 %258 = OpTypeFunction %4 %6 %6 %271 = OpTypeFunction %14 %6 %6 %272 = OpConstant %5 0.1 -%273 = OpConstantComposite %6 %272 %76 -%274 = OpConstantComposite %6 %76 %272 +%273 = OpConstantComposite %6 %272 %74 +%274 = OpConstantComposite %6 %74 %272 %275 = OpConstant %5 -0.1 -%276 = OpConstantComposite %6 %275 %76 -%277 = OpConstantComposite %6 %76 %275 +%276 = OpConstantComposite %6 %275 %74 +%277 = OpConstantComposite %6 %74 %275 %304 = OpTypeFunction %6 %8 %10 %11 %321 = OpTypeFunction %4 %6 %322 = OpConstant %5 23.0 @@ -650,7 +646,7 @@ OpDecorate %582 Location 0 %585 = OpTypePointer Uniform %25 %587 = OpConstantComposite %4 %272 %272 %272 %588 = OpConstant %5 0.7 -%589 = OpConstantComposite %4 %81 %272 %588 +%589 = OpConstantComposite %4 %78 %272 %588 %590 = OpConstant %5 0.2 %591 = OpConstantComposite %4 %590 %590 %590 %593 = OpConstantNull %4 @@ -673,163 +669,167 @@ OpFunctionEnd %67 = OpFunction %5 None %68 %66 = OpFunctionParameter %6 %65 = OpLabel -%93 = OpVariable %91 Function %94 -%98 = OpVariable %99 Function %100 -%90 = OpVariable %91 Function %92 -%95 = OpVariable %96 Function %97 -OpBranch %101 -%101 = OpLabel +%89 = OpVariable %87 Function %90 +%94 = OpVariable %95 Function %96 +%86 = OpVariable %87 Function %88 +%91 = OpVariable %92 Function %93 +OpBranch %97 +%97 = OpLabel OpLine %3 13 13 OpLine %3 14 24 -%102 = OpDot %5 %66 %74 -%103 = OpCompositeConstruct %6 %102 %102 -%104 = OpFAdd %6 %66 %103 -%105 = OpExtInst %6 %1 Floor %104 +%98 = OpVectorShuffle %6 %73 %73 1 1 +%99 = OpDot %5 %66 %98 +%100 = OpCompositeConstruct %6 %99 %99 +%101 = OpFAdd %6 %66 %100 +%102 = OpExtInst %6 %1 Floor %101 OpLine %3 14 5 -OpStore %90 %105 +OpStore %86 %102 OpLine %3 15 14 -%106 = OpLoad %6 %90 -%107 = OpFSub %6 %66 %106 -%108 = OpLoad %6 %90 -%109 = OpDot %5 %108 %75 -%110 = OpCompositeConstruct %6 %109 %109 -%111 = OpFAdd %6 %107 %110 +%103 = OpLoad %6 %86 +%104 = OpFSub %6 %66 %103 +%105 = OpLoad %6 %86 +%106 = OpVectorShuffle %6 %73 %73 0 0 +%107 = OpDot %5 %105 %106 +%108 = OpCompositeConstruct %6 %107 %107 +%109 = OpFAdd %6 %104 %108 OpLine %3 17 32 OpLine %3 17 25 -%112 = OpCompositeExtract %5 %111 0 -%113 = OpCompositeExtract %5 %111 1 -%115 = OpFOrdLessThan %114 %112 %113 -%118 = OpCompositeConstruct %117 %115 %115 -%116 = OpSelect %6 %118 %78 %77 +%110 = OpCompositeExtract %5 %109 0 +%111 = OpCompositeExtract %5 %109 1 +%113 = OpFOrdLessThan %112 %110 %111 +%116 = OpCompositeConstruct %115 %113 %113 +%114 = OpSelect %6 %116 %76 %75 OpLine %3 17 5 -OpStore %93 %116 +OpStore %89 %114 OpLine %3 18 26 -%119 = OpVectorShuffle %7 %111 %111 0 1 0 1 -%120 = OpFAdd %7 %119 %79 -%121 = OpLoad %6 %93 +%117 = OpVectorShuffle %7 %109 %109 0 1 0 1 +%118 = OpVectorShuffle %7 %73 %73 0 0 2 2 +%119 = OpFAdd %7 %117 %118 +%120 = OpLoad %6 %89 OpLine %3 18 26 -%122 = OpCompositeConstruct %7 %121 %76 %76 -%123 = OpFSub %7 %120 %122 +%121 = OpCompositeConstruct %7 %120 %74 %74 +%122 = OpFSub %7 %119 %121 OpLine %3 18 5 -OpStore %95 %123 +OpStore %91 %122 OpLine %3 1 1 -%124 = OpLoad %6 %90 +%123 = OpLoad %6 %86 OpLine %3 19 9 -%125 = OpFRem %6 %124 %80 +%124 = OpFRem %6 %123 %77 OpLine %3 19 5 -OpStore %90 %125 +OpStore %86 %124 OpLine %3 20 31 -%128 = OpAccessChain %126 %90 %127 -%129 = OpLoad %5 %128 +%127 = OpAccessChain %125 %86 %126 +%128 = OpLoad %5 %127 OpLine %3 20 51 -%130 = OpAccessChain %126 %93 %127 -%131 = OpLoad %5 %130 +%129 = OpAccessChain %125 %89 %126 +%130 = OpLoad %5 %129 OpLine %3 20 31 -%132 = OpCompositeConstruct %4 %76 %131 %56 -%133 = OpCompositeConstruct %4 %129 %129 %129 -%134 = OpFAdd %4 %133 %132 +%131 = OpCompositeConstruct %4 %74 %130 %56 +%132 = OpCompositeConstruct %4 %128 %128 %128 +%133 = OpFAdd %4 %132 %131 OpLine %3 20 22 -%135 = OpFunctionCall %4 %53 %134 +%134 = OpFunctionCall %4 %53 %133 OpLine %3 20 22 -%137 = OpAccessChain %126 %90 %136 -%138 = OpLoad %5 %137 -%139 = OpCompositeConstruct %4 %138 %138 %138 -%140 = OpFAdd %4 %135 %139 +%136 = OpAccessChain %125 %86 %135 +%137 = OpLoad %5 %136 +%138 = OpCompositeConstruct %4 %137 %137 %137 +%139 = OpFAdd %4 %134 %138 OpLine %3 20 84 -%141 = OpAccessChain %126 %93 %136 -%142 = OpLoad %5 %141 +%140 = OpAccessChain %125 %89 %135 +%141 = OpLoad %5 %140 OpLine %3 20 22 -%143 = OpCompositeConstruct %4 %76 %142 %56 -%144 = OpFAdd %4 %140 %143 +%142 = OpCompositeConstruct %4 %74 %141 %56 +%143 = OpFAdd %4 %139 %142 OpLine %3 20 13 -%145 = OpFunctionCall %4 %53 %144 +%144 = OpFunctionCall %4 %53 %143 OpLine %3 21 28 -%146 = OpDot %5 %111 %111 -%147 = OpLoad %7 %95 -%148 = OpVectorShuffle %6 %147 %147 0 1 -%149 = OpLoad %7 %95 -%150 = OpVectorShuffle %6 %149 %149 0 1 -%151 = OpDot %5 %148 %150 -%152 = OpLoad %7 %95 -%153 = OpVectorShuffle %6 %152 %152 2 3 -%154 = OpLoad %7 %95 -%155 = OpVectorShuffle %6 %154 %154 2 3 -%156 = OpDot %5 %153 %155 -%157 = OpCompositeConstruct %4 %146 %151 %156 -%158 = OpFSub %4 %82 %157 +%145 = OpDot %5 %109 %109 +%146 = OpLoad %7 %91 +%147 = OpVectorShuffle %6 %146 %146 0 1 +%148 = OpLoad %7 %91 +%149 = OpVectorShuffle %6 %148 %148 0 1 +%150 = OpDot %5 %147 %149 +%151 = OpLoad %7 %91 +%152 = OpVectorShuffle %6 %151 %151 2 3 +%153 = OpLoad %7 %91 +%154 = OpVectorShuffle %6 %153 %153 2 3 +%155 = OpDot %5 %152 %154 +%156 = OpCompositeConstruct %4 %145 %150 %155 +%157 = OpFSub %4 %79 %156 OpLine %3 21 24 -%159 = OpExtInst %4 %1 FMax %158 %83 +%158 = OpExtInst %4 %1 FMax %157 %80 OpLine %3 21 5 -OpStore %98 %159 +OpStore %94 %158 OpLine %3 22 9 -%160 = OpLoad %4 %98 -%161 = OpLoad %4 %98 -%162 = OpFMul %4 %160 %161 +%159 = OpLoad %4 %94 +%160 = OpLoad %4 %94 +%161 = OpFMul %4 %159 %160 OpLine %3 22 5 -OpStore %98 %162 +OpStore %94 %161 OpLine %3 23 9 -%163 = OpLoad %4 %98 -%164 = OpLoad %4 %98 -%165 = OpFMul %4 %163 %164 +%162 = OpLoad %4 %94 +%163 = OpLoad %4 %94 +%164 = OpFMul %4 %162 %163 OpLine %3 23 5 -OpStore %98 %165 +OpStore %94 %164 OpLine %3 24 13 -%166 = OpFMul %4 %145 %85 +%165 = OpVectorShuffle %4 %73 %73 3 3 3 +%166 = OpFMul %4 %144 %165 %167 = OpExtInst %4 %1 Fract %166 -%168 = OpVectorTimesScalar %4 %167 %84 +%168 = OpVectorTimesScalar %4 %167 %81 OpLine %3 24 13 %169 = OpFSub %4 %168 %57 OpLine %3 25 13 %170 = OpExtInst %4 %1 FAbs %169 OpLine %3 25 13 -%171 = OpFSub %4 %170 %82 +%171 = OpFSub %4 %170 %79 OpLine %3 26 14 -%172 = OpFAdd %4 %169 %82 +%172 = OpFAdd %4 %169 %79 %173 = OpExtInst %4 %1 Floor %172 OpLine %3 27 14 %174 = OpFSub %4 %169 %173 OpLine %3 1 1 -%175 = OpLoad %4 %98 +%175 = OpLoad %4 %94 OpLine %3 28 9 %176 = OpFMul %4 %174 %174 %177 = OpFMul %4 %171 %171 %178 = OpFAdd %4 %176 %177 -%179 = OpVectorTimesScalar %4 %178 %87 -%180 = OpFSub %4 %88 %179 +%179 = OpVectorTimesScalar %4 %178 %83 +%180 = OpFSub %4 %84 %179 %181 = OpFMul %4 %175 %180 OpLine %3 28 5 -OpStore %98 %181 +OpStore %94 %181 OpLine %3 29 13 %182 = OpCompositeExtract %5 %174 0 -%183 = OpCompositeExtract %5 %111 0 +%183 = OpCompositeExtract %5 %109 0 %184 = OpFMul %5 %182 %183 %185 = OpCompositeExtract %5 %171 0 -%186 = OpCompositeExtract %5 %111 1 +%186 = OpCompositeExtract %5 %109 1 %187 = OpFMul %5 %185 %186 %188 = OpFAdd %5 %184 %187 %189 = OpVectorShuffle %6 %174 %174 1 2 -%190 = OpLoad %7 %95 +%190 = OpLoad %7 %91 %191 = OpVectorShuffle %6 %190 %190 0 2 %192 = OpFMul %6 %189 %191 %193 = OpVectorShuffle %6 %171 %171 1 2 -%194 = OpLoad %7 %95 +%194 = OpLoad %7 %91 %195 = OpVectorShuffle %6 %194 %194 1 3 %196 = OpFMul %6 %193 %195 %197 = OpFAdd %6 %192 %196 %198 = OpCompositeConstruct %4 %188 %197 OpLine %3 30 12 -%199 = OpLoad %4 %98 +%199 = OpLoad %4 %94 %200 = OpDot %5 %199 %198 -%201 = OpFMul %5 %89 %200 +%201 = OpFMul %5 %85 %200 OpReturnValue %201 OpFunctionEnd %204 = OpFunction %5 None %68 %203 = OpFunctionParameter %6 %202 = OpLabel -%211 = OpVariable %212 Function %76 -%214 = OpVariable %215 Function %136 -%209 = OpVariable %91 Function %210 -%213 = OpVariable %212 Function %81 +%211 = OpVariable %212 Function %74 +%214 = OpVariable %215 Function %135 +%209 = OpVariable %87 Function %210 +%213 = OpVariable %212 Function %78 OpBranch %216 %216 = OpLabel OpLine %3 36 13 @@ -838,9 +838,9 @@ OpLine %3 36 5 OpStore %209 %217 OpLine %3 39 17 OpLine %3 40 24 -%218 = OpExtInst %5 %1 Cos %81 +%218 = OpExtInst %5 %1 Cos %78 OpLine %3 40 14 -%219 = OpExtInst %5 %1 Sin %81 +%219 = OpExtInst %5 %1 Sin %78 %220 = OpCompositeConstruct %6 %218 %219 OpLine %3 41 15 %221 = OpCompositeExtract %5 %220 0 @@ -859,7 +859,7 @@ OpBranch %231 %231 = OpLabel OpLine %3 43 22 %233 = OpLoad %8 %214 -%234 = OpULessThan %114 %233 %205 +%234 = OpULessThan %112 %233 %205 OpLine %3 43 21 OpSelectionMerge %235 None OpBranchConditional %234 %235 %236 @@ -883,14 +883,14 @@ OpLine %3 45 13 %245 = OpLoad %6 %209 %246 = OpMatrixTimesVector %6 %228 %245 OpLine %3 45 13 -%247 = OpVectorTimesScalar %6 %246 %84 +%247 = OpVectorTimesScalar %6 %246 %81 %248 = OpFAdd %6 %247 %208 OpLine %3 45 9 OpStore %209 %248 OpLine %3 1 1 %249 = OpLoad %5 %213 OpLine %3 46 13 -%250 = OpFMul %5 %249 %81 +%250 = OpFMul %5 %249 %78 OpLine %3 46 9 OpStore %213 %250 OpBranch %238 @@ -900,7 +900,7 @@ OpBranch %232 OpLine %3 1 1 %251 = OpLoad %8 %214 OpLine %3 43 43 -%252 = OpIAdd %8 %251 %127 +%252 = OpIAdd %8 %251 %126 OpLine %3 43 39 OpStore %214 %252 OpBranch %229 @@ -968,7 +968,7 @@ OpLine %3 92 14 OpLine %3 94 14 %296 = OpFAdd %4 %293 %295 OpLine %3 94 13 -%297 = OpVectorTimesScalar %4 %296 %81 +%297 = OpVectorTimesScalar %4 %296 %78 OpLine %3 96 12 %298 = OpCompositeConstruct %14 %279 %297 OpReturnValue %298 @@ -984,12 +984,12 @@ OpLine %3 101 9 %306 = OpConvertUToF %5 %300 %307 = OpCompositeExtract %8 %301 0 OpLine %3 101 9 -%308 = OpIAdd %8 %307 %127 +%308 = OpIAdd %8 %307 %126 %309 = OpConvertUToF %5 %308 %310 = OpFRem %5 %306 %309 %311 = OpCompositeExtract %8 %301 0 OpLine %3 100 12 -%312 = OpIAdd %8 %311 %127 +%312 = OpIAdd %8 %311 %126 %313 = OpUDiv %8 %300 %312 %314 = OpConvertUToF %5 %313 %315 = OpCompositeConstruct %6 %310 %314 @@ -1005,41 +1005,41 @@ OpBranch %328 OpLine %3 270 9 %329 = OpFunctionCall %5 %67 %319 OpLine %3 270 9 -%330 = OpFMul %5 %329 %81 +%330 = OpFMul %5 %329 %78 OpLine %3 270 9 -%331 = OpFAdd %5 %330 %81 +%331 = OpFAdd %5 %330 %78 OpLine %3 271 17 %332 = OpFAdd %6 %319 %324 OpLine %3 271 9 %333 = OpFunctionCall %5 %67 %332 OpLine %3 271 9 -%334 = OpFMul %5 %333 %81 +%334 = OpFMul %5 %333 %78 OpLine %3 271 9 -%335 = OpFAdd %5 %334 %81 +%335 = OpFAdd %5 %334 %78 OpLine %3 272 17 %336 = OpFAdd %6 %319 %327 OpLine %3 272 9 %337 = OpFunctionCall %5 %67 %336 OpLine %3 272 9 -%338 = OpFMul %5 %337 %81 +%338 = OpFMul %5 %337 %78 OpLine %3 269 12 -%339 = OpFAdd %5 %338 %81 +%339 = OpFAdd %5 %338 %78 %340 = OpCompositeConstruct %4 %331 %335 %339 OpReturnValue %340 OpFunctionEnd %345 = OpFunction %2 None %346 %341 = OpLabel %344 = OpLoad %19 %342 -%348 = OpAccessChain %347 %29 %136 +%348 = OpAccessChain %347 %29 %135 OpBranch %353 %353 = OpLabel OpLine %3 111 22 %354 = OpCompositeExtract %8 %344 0 OpLine %3 113 36 -%356 = OpAccessChain %355 %348 %136 +%356 = OpAccessChain %355 %348 %135 %357 = OpLoad %10 %356 OpLine %3 113 59 -%359 = OpAccessChain %358 %348 %127 +%359 = OpAccessChain %358 %348 %126 %360 = OpLoad %11 %359 OpLine %3 113 13 %361 = OpFunctionCall %6 %303 %354 %357 %360 @@ -1050,22 +1050,22 @@ OpLine %3 115 51 OpLine %3 115 33 %367 = OpFunctionCall %14 %270 %361 %366 OpLine %3 115 5 -%368 = OpAccessChain %363 %32 %136 %354 +%368 = OpAccessChain %363 %32 %135 %354 OpStore %368 %367 OpLine %3 118 23 %369 = OpCompositeExtract %8 %344 0 OpLine %3 118 23 %370 = OpIMul %8 %369 %349 OpLine %3 120 25 -%372 = OpAccessChain %371 %348 %136 %136 +%372 = OpAccessChain %371 %348 %135 %135 %373 = OpLoad %8 %372 OpLine %3 120 25 -%374 = OpAccessChain %371 %348 %136 %127 +%374 = OpAccessChain %371 %348 %135 %126 %375 = OpLoad %8 %374 %376 = OpIMul %8 %373 %375 OpLine %3 120 9 %377 = OpIMul %8 %376 %349 -%378 = OpUGreaterThanEqual %114 %370 %377 +%378 = OpUGreaterThanEqual %112 %370 %377 OpLine %3 120 5 OpSelectionMerge %379 None OpBranchConditional %378 %380 %379 @@ -1075,60 +1075,60 @@ OpReturn OpLine %3 122 28 %381 = OpCompositeExtract %8 %344 0 OpLine %3 122 15 -%382 = OpAccessChain %371 %348 %136 %136 +%382 = OpAccessChain %371 %348 %135 %135 %383 = OpLoad %8 %382 %384 = OpUDiv %8 %381 %383 %385 = OpIAdd %8 %354 %384 OpLine %3 123 15 -%386 = OpIAdd %8 %385 %127 +%386 = OpIAdd %8 %385 %126 OpLine %3 124 15 -%387 = OpAccessChain %371 %348 %136 %136 +%387 = OpAccessChain %371 %348 %135 %135 %388 = OpLoad %8 %387 %389 = OpIAdd %8 %385 %388 OpLine %3 124 15 -%390 = OpIAdd %8 %389 %127 +%390 = OpIAdd %8 %389 %126 OpLine %3 125 15 -%391 = OpIAdd %8 %390 %127 +%391 = OpIAdd %8 %390 %126 OpLine %3 127 5 OpLine %3 127 5 -%394 = OpAccessChain %393 %34 %136 %370 +%394 = OpAccessChain %393 %34 %135 %370 OpStore %394 %385 OpLine %3 128 5 OpLine %3 128 5 -%395 = OpIAdd %8 %370 %127 +%395 = OpIAdd %8 %370 %126 OpLine %3 128 5 -%396 = OpAccessChain %393 %34 %136 %395 +%396 = OpAccessChain %393 %34 %135 %395 OpStore %396 %390 OpLine %3 129 5 OpLine %3 129 5 %397 = OpIAdd %8 %370 %350 OpLine %3 129 5 -%398 = OpAccessChain %393 %34 %136 %397 +%398 = OpAccessChain %393 %34 %135 %397 OpStore %398 %391 OpLine %3 130 5 OpLine %3 130 5 %399 = OpIAdd %8 %370 %351 OpLine %3 130 5 -%400 = OpAccessChain %393 %34 %136 %399 +%400 = OpAccessChain %393 %34 %135 %399 OpStore %400 %385 OpLine %3 131 5 OpLine %3 131 5 %401 = OpIAdd %8 %370 %352 OpLine %3 131 5 -%402 = OpAccessChain %393 %34 %136 %401 +%402 = OpAccessChain %393 %34 %135 %401 OpStore %402 %391 OpLine %3 132 5 OpLine %3 132 5 %403 = OpIAdd %8 %370 %205 OpLine %3 132 5 -%404 = OpAccessChain %393 %34 %136 %403 +%404 = OpAccessChain %393 %34 %135 %403 OpStore %404 %386 OpReturn OpFunctionEnd %415 = OpFunction %2 None %346 %405 = OpLabel %408 = OpLoad %8 %406 -%417 = OpAccessChain %416 %36 %136 +%417 = OpAccessChain %416 %36 %135 OpBranch %420 %420 = OpLabel OpLine %3 161 19 @@ -1139,7 +1139,7 @@ OpLine %3 161 13 %423 = OpUMod %8 %422 %350 %424 = OpConvertUToF %5 %423 OpLine %3 162 19 -%425 = OpIAdd %8 %408 %127 +%425 = OpIAdd %8 %408 %126 OpLine %3 162 18 %426 = OpUDiv %8 %425 %351 OpLine %3 162 13 @@ -1148,10 +1148,10 @@ OpLine %3 162 13 OpLine %3 163 14 %429 = OpCompositeConstruct %6 %424 %428 OpLine %3 165 30 -%430 = OpVectorTimesScalar %6 %429 %84 +%430 = OpVectorTimesScalar %6 %429 %81 %431 = OpFAdd %6 %419 %430 OpLine %3 165 20 -%432 = OpCompositeConstruct %7 %431 %76 %56 +%432 = OpCompositeConstruct %7 %431 %74 %56 OpLine %3 168 21 %433 = OpCompositeExtract %5 %429 0 OpLine %3 168 21 @@ -1183,13 +1183,13 @@ OpReturn OpFunctionEnd %465 = OpFunction %2 None %346 %453 = OpLabel -%468 = OpVariable %212 Function %76 -%469 = OpVariable %215 Function %136 +%468 = OpVariable %212 Function %74 +%469 = OpVariable %215 Function %135 %456 = OpLoad %8 %455 %459 = OpLoad %7 %457 %462 = OpLoad %6 %460 %454 = OpCompositeConstruct %21 %456 %459 %462 -%466 = OpAccessChain %416 %36 %136 +%466 = OpAccessChain %416 %36 %135 OpBranch %470 %470 = OpLabel OpLine %3 181 17 @@ -1226,10 +1226,10 @@ OpLine %3 182 22 OpLine %3 183 22 %495 = OpUMod %8 %490 %349 OpLine %3 185 36 -%496 = OpAccessChain %355 %466 %136 +%496 = OpAccessChain %355 %466 %135 %497 = OpLoad %10 %496 OpLine %3 185 57 -%498 = OpAccessChain %358 %466 %127 +%498 = OpAccessChain %358 %466 %126 %499 = OpLoad %11 %498 OpLine %3 185 13 %500 = OpFunctionCall %6 %303 %494 %497 %499 @@ -1287,20 +1287,20 @@ OpBranch %504 OpBranch %504 %504 = OpLabel OpLine %3 200 15 -%524 = OpAccessChain %371 %466 %136 %136 +%524 = OpAccessChain %371 %466 %135 %135 %525 = OpLoad %8 %524 %526 = OpUDiv %8 %494 %525 %527 = OpIAdd %8 %494 %526 OpLine %3 201 15 -%528 = OpIAdd %8 %527 %127 +%528 = OpIAdd %8 %527 %126 OpLine %3 202 15 -%529 = OpAccessChain %371 %466 %136 %136 +%529 = OpAccessChain %371 %466 %135 %135 %530 = OpLoad %8 %529 %531 = OpIAdd %8 %527 %530 OpLine %3 202 15 -%532 = OpIAdd %8 %531 %127 +%532 = OpIAdd %8 %531 %126 OpLine %3 203 15 -%533 = OpIAdd %8 %532 %127 +%533 = OpIAdd %8 %532 %126 OpLine %3 206 5 OpSelectionMerge %534 None OpSwitch %495 %539 0 %535 3 %535 2 %536 4 %536 1 %537 5 %538 @@ -1344,11 +1344,11 @@ OpFunctionEnd %551 = OpLoad %4 %549 %553 = OpLoad %4 %552 %548 = OpCompositeConstruct %14 %551 %553 -%560 = OpAccessChain %559 %39 %136 +%560 = OpAccessChain %559 %39 %135 OpBranch %561 %561 = OpLabel OpLine %3 254 25 -%563 = OpAccessChain %562 %560 %127 +%563 = OpAccessChain %562 %560 %126 %564 = OpLoad %23 %563 %565 = OpCompositeExtract %4 %548 0 OpLine %3 254 25 @@ -1369,30 +1369,30 @@ OpReturn OpFunctionEnd %583 = OpFunction %2 None %346 %574 = OpLabel -%592 = OpVariable %99 Function %593 +%592 = OpVariable %95 Function %593 %577 = OpLoad %7 %576 %579 = OpLoad %4 %578 %581 = OpLoad %4 %580 %575 = OpCompositeConstruct %26 %577 %579 %581 -%584 = OpAccessChain %559 %39 %136 -%586 = OpAccessChain %585 %42 %136 +%584 = OpAccessChain %559 %39 %135 +%586 = OpAccessChain %585 %42 %135 OpBranch %594 %594 = OpLabel OpLine %3 278 28 OpLine %3 278 17 %595 = OpCompositeExtract %4 %575 2 %596 = OpExtInst %4 %1 Fract %595 -%597 = OpExtInst %4 %1 SmoothStep %83 %587 %596 +%597 = OpExtInst %4 %1 SmoothStep %80 %587 %596 OpLine %3 278 5 OpStore %592 %597 OpLine %3 279 17 OpLine %3 279 13 -%598 = OpAccessChain %126 %592 %136 +%598 = OpAccessChain %125 %592 %135 %599 = OpLoad %5 %598 -%600 = OpAccessChain %126 %592 %127 +%600 = OpAccessChain %125 %592 %126 %601 = OpLoad %5 %600 %602 = OpFMul %5 %599 %601 -%603 = OpAccessChain %126 %592 %350 +%603 = OpAccessChain %125 %592 %350 %604 = OpLoad %5 %603 %605 = OpFMul %5 %602 %604 %606 = OpCompositeConstruct %4 %605 %605 %605 @@ -1400,17 +1400,17 @@ OpLine %3 279 13 OpLine %3 279 5 OpStore %592 %607 OpLine %3 282 25 -%609 = OpAccessChain %608 %586 %127 +%609 = OpAccessChain %608 %586 %126 %610 = OpLoad %4 %609 %611 = OpVectorTimesScalar %4 %610 %272 OpLine %3 284 21 -%612 = OpAccessChain %608 %586 %136 +%612 = OpAccessChain %608 %586 %135 %613 = OpLoad %4 %612 %614 = OpCompositeExtract %4 %575 2 %615 = OpFSub %4 %613 %614 %616 = OpExtInst %4 %1 Normalize %615 OpLine %3 285 20 -%618 = OpAccessChain %617 %584 %136 +%618 = OpAccessChain %617 %584 %135 %619 = OpLoad %7 %618 %620 = OpVectorShuffle %4 %619 %619 0 1 2 %621 = OpCompositeExtract %4 %575 2 @@ -1423,20 +1423,20 @@ OpLine %3 288 32 %626 = OpCompositeExtract %4 %575 1 %627 = OpDot %5 %626 %616 OpLine %3 288 28 -%628 = OpExtInst %5 %1 FMax %627 %76 +%628 = OpExtInst %5 %1 FMax %627 %74 OpLine %3 289 25 -%629 = OpAccessChain %608 %586 %127 +%629 = OpAccessChain %608 %586 %126 %630 = OpLoad %4 %629 %631 = OpVectorTimesScalar %4 %630 %628 OpLine %3 291 37 %632 = OpCompositeExtract %4 %575 1 %633 = OpDot %5 %632 %625 OpLine %3 291 33 -%634 = OpExtInst %5 %1 FMax %633 %76 +%634 = OpExtInst %5 %1 FMax %633 %74 OpLine %3 291 29 %635 = OpExtInst %5 %1 Pow %634 %323 OpLine %3 292 26 -%636 = OpAccessChain %608 %586 %127 +%636 = OpAccessChain %608 %586 %126 %637 = OpLoad %4 %636 %638 = OpVectorTimesScalar %4 %637 %635 OpLine %3 294 18 diff --git a/tests/out/spv/image.spvasm b/tests/out/spv/image.spvasm index ec35372f8..708cd65f2 100644 --- a/tests/out/spv/image.spvasm +++ b/tests/out/spv/image.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.1 ; Generator: rspirv -; Bound: 517 +; Bound: 518 OpCapability Shader OpCapability Image1D OpCapability Sampled1D @@ -14,15 +14,15 @@ OpEntryPoint GLCompute %169 "depth_load" %167 OpEntryPoint Vertex %189 "queries" %187 OpEntryPoint Vertex %241 "levels_queries" %240 OpEntryPoint Fragment %270 "texture_sample" %269 -OpEntryPoint Fragment %416 "texture_sample_comparison" %414 -OpEntryPoint Fragment %472 "gather" %471 -OpEntryPoint Fragment %506 "depth_no_comparison" %505 +OpEntryPoint Fragment %417 "texture_sample_comparison" %415 +OpEntryPoint Fragment %473 "gather" %472 +OpEntryPoint Fragment %507 "depth_no_comparison" %506 OpExecutionMode %78 LocalSize 16 1 1 OpExecutionMode %169 LocalSize 16 1 1 OpExecutionMode %270 OriginUpperLeft -OpExecutionMode %416 OriginUpperLeft -OpExecutionMode %472 OriginUpperLeft -OpExecutionMode %506 OriginUpperLeft +OpExecutionMode %417 OriginUpperLeft +OpExecutionMode %473 OriginUpperLeft +OpExecutionMode %507 OriginUpperLeft OpName %31 "image_mipmapped_src" OpName %33 "image_multisampled_src" OpName %35 "image_depth_multisampled_src" @@ -53,10 +53,10 @@ OpName %189 "queries" OpName %241 "levels_queries" OpName %270 "texture_sample" OpName %284 "a" -OpName %416 "texture_sample_comparison" -OpName %421 "a" -OpName %472 "gather" -OpName %506 "depth_no_comparison" +OpName %417 "texture_sample_comparison" +OpName %422 "a" +OpName %473 "gather" +OpName %507 "depth_no_comparison" OpDecorate %31 DescriptorSet 0 OpDecorate %31 Binding 0 OpDecorate %33 DescriptorSet 0 @@ -109,9 +109,9 @@ OpDecorate %167 BuiltIn LocalInvocationId OpDecorate %187 BuiltIn Position OpDecorate %240 BuiltIn Position OpDecorate %269 Location 0 -OpDecorate %414 Location 0 -OpDecorate %471 Location 0 -OpDecorate %505 Location 0 +OpDecorate %415 Location 0 +OpDecorate %472 Location 0 +OpDecorate %506 Location 0 %2 = OpTypeVoid %4 = OpTypeInt 32 0 %3 = OpTypeImage %4 2D 0 0 0 1 Unknown @@ -209,25 +209,25 @@ OpDecorate %505 Location 0 %283 = OpConstant %14 0 %285 = OpTypePointer Function %23 %286 = OpConstantNull %23 -%288 = OpTypeSampledImage %15 -%293 = OpTypeSampledImage %16 -%314 = OpTypeSampledImage %18 -%375 = OpTypeSampledImage %20 -%415 = OpTypePointer Output %7 -%414 = OpVariable %415 Output -%422 = OpTypePointer Function %7 -%423 = OpConstantNull %7 -%425 = OpTypeSampledImage %25 -%430 = OpTypeSampledImage %26 -%443 = OpTypeSampledImage %27 -%450 = OpConstant %7 0.0 -%471 = OpVariable %188 Output -%482 = OpConstant %4 1 -%485 = OpConstant %4 3 -%490 = OpTypeSampledImage %3 -%493 = OpTypeVector %14 4 -%494 = OpTypeSampledImage %17 -%505 = OpVariable %188 Output +%289 = OpTypeSampledImage %15 +%294 = OpTypeSampledImage %16 +%315 = OpTypeSampledImage %18 +%376 = OpTypeSampledImage %20 +%416 = OpTypePointer Output %7 +%415 = OpVariable %416 Output +%423 = OpTypePointer Function %7 +%424 = OpConstantNull %7 +%426 = OpTypeSampledImage %25 +%431 = OpTypeSampledImage %26 +%444 = OpTypeSampledImage %27 +%451 = OpConstant %7 0.0 +%472 = OpVariable %188 Output +%483 = OpConstant %4 1 +%486 = OpConstant %4 3 +%491 = OpTypeSampledImage %3 +%494 = OpTypeVector %14 4 +%495 = OpTypeSampledImage %17 +%506 = OpVariable %188 Output %78 = OpFunction %2 None %79 %74 = OpLabel %77 = OpLoad %12 %75 @@ -434,258 +434,259 @@ OpFunctionEnd %275 = OpLoad %24 %64 OpBranch %287 %287 = OpLabel -%289 = OpSampledImage %288 %271 %275 -%290 = OpImageSampleImplicitLod %23 %289 %276 -%291 = OpLoad %23 %284 -%292 = OpFAdd %23 %291 %290 -OpStore %284 %292 -%294 = OpSampledImage %293 %272 %275 -%295 = OpImageSampleImplicitLod %23 %294 %278 -%296 = OpLoad %23 %284 -%297 = OpFAdd %23 %296 %295 -OpStore %284 %297 -%298 = OpSampledImage %293 %272 %275 -%299 = OpImageSampleImplicitLod %23 %298 %278 ConstOffset %30 -%300 = OpLoad %23 %284 -%301 = OpFAdd %23 %300 %299 -OpStore %284 %301 -%302 = OpSampledImage %293 %272 %275 -%303 = OpImageSampleExplicitLod %23 %302 %278 Lod %281 -%304 = OpLoad %23 %284 -%305 = OpFAdd %23 %304 %303 -OpStore %284 %305 -%306 = OpSampledImage %293 %272 %275 -%307 = OpImageSampleExplicitLod %23 %306 %278 Lod|ConstOffset %281 %30 -%308 = OpLoad %23 %284 -%309 = OpFAdd %23 %308 %307 -OpStore %284 %309 -%310 = OpSampledImage %293 %272 %275 -%311 = OpImageSampleImplicitLod %23 %310 %278 Bias|ConstOffset %282 %30 -%312 = OpLoad %23 %284 -%313 = OpFAdd %23 %312 %311 -OpStore %284 %313 -%315 = OpConvertUToF %7 %198 -%316 = OpCompositeConstruct %279 %278 %315 -%317 = OpSampledImage %314 %273 %275 -%318 = OpImageSampleImplicitLod %23 %317 %316 -%319 = OpLoad %23 %284 -%320 = OpFAdd %23 %319 %318 -OpStore %284 %320 -%321 = OpConvertUToF %7 %198 -%322 = OpCompositeConstruct %279 %278 %321 -%323 = OpSampledImage %314 %273 %275 -%324 = OpImageSampleImplicitLod %23 %323 %322 ConstOffset %30 -%325 = OpLoad %23 %284 -%326 = OpFAdd %23 %325 %324 -OpStore %284 %326 -%327 = OpConvertUToF %7 %198 -%328 = OpCompositeConstruct %279 %278 %327 -%329 = OpSampledImage %314 %273 %275 -%330 = OpImageSampleExplicitLod %23 %329 %328 Lod %281 -%331 = OpLoad %23 %284 -%332 = OpFAdd %23 %331 %330 -OpStore %284 %332 -%333 = OpConvertUToF %7 %198 -%334 = OpCompositeConstruct %279 %278 %333 -%335 = OpSampledImage %314 %273 %275 -%336 = OpImageSampleExplicitLod %23 %335 %334 Lod|ConstOffset %281 %30 -%337 = OpLoad %23 %284 -%338 = OpFAdd %23 %337 %336 -OpStore %284 %338 -%339 = OpConvertUToF %7 %198 -%340 = OpCompositeConstruct %279 %278 %339 -%341 = OpSampledImage %314 %273 %275 -%342 = OpImageSampleImplicitLod %23 %341 %340 Bias|ConstOffset %282 %30 -%343 = OpLoad %23 %284 -%344 = OpFAdd %23 %343 %342 -OpStore %284 %344 -%345 = OpConvertSToF %7 %283 -%346 = OpCompositeConstruct %279 %278 %345 -%347 = OpSampledImage %314 %273 %275 -%348 = OpImageSampleImplicitLod %23 %347 %346 -%349 = OpLoad %23 %284 -%350 = OpFAdd %23 %349 %348 -OpStore %284 %350 -%351 = OpConvertSToF %7 %283 -%352 = OpCompositeConstruct %279 %278 %351 -%353 = OpSampledImage %314 %273 %275 -%354 = OpImageSampleImplicitLod %23 %353 %352 ConstOffset %30 -%355 = OpLoad %23 %284 -%356 = OpFAdd %23 %355 %354 -OpStore %284 %356 -%357 = OpConvertSToF %7 %283 -%358 = OpCompositeConstruct %279 %278 %357 -%359 = OpSampledImage %314 %273 %275 -%360 = OpImageSampleExplicitLod %23 %359 %358 Lod %281 -%361 = OpLoad %23 %284 -%362 = OpFAdd %23 %361 %360 -OpStore %284 %362 -%363 = OpConvertSToF %7 %283 -%364 = OpCompositeConstruct %279 %278 %363 -%365 = OpSampledImage %314 %273 %275 -%366 = OpImageSampleExplicitLod %23 %365 %364 Lod|ConstOffset %281 %30 -%367 = OpLoad %23 %284 -%368 = OpFAdd %23 %367 %366 -OpStore %284 %368 -%369 = OpConvertSToF %7 %283 -%370 = OpCompositeConstruct %279 %278 %369 -%371 = OpSampledImage %314 %273 %275 -%372 = OpImageSampleImplicitLod %23 %371 %370 Bias|ConstOffset %282 %30 -%373 = OpLoad %23 %284 -%374 = OpFAdd %23 %373 %372 -OpStore %284 %374 -%376 = OpConvertUToF %7 %198 -%377 = OpCompositeConstruct %23 %280 %376 -%378 = OpSampledImage %375 %274 %275 -%379 = OpImageSampleImplicitLod %23 %378 %377 -%380 = OpLoad %23 %284 -%381 = OpFAdd %23 %380 %379 -OpStore %284 %381 -%382 = OpConvertUToF %7 %198 -%383 = OpCompositeConstruct %23 %280 %382 -%384 = OpSampledImage %375 %274 %275 -%385 = OpImageSampleExplicitLod %23 %384 %383 Lod %281 -%386 = OpLoad %23 %284 -%387 = OpFAdd %23 %386 %385 -OpStore %284 %387 -%388 = OpConvertUToF %7 %198 -%389 = OpCompositeConstruct %23 %280 %388 -%390 = OpSampledImage %375 %274 %275 -%391 = OpImageSampleImplicitLod %23 %390 %389 Bias %282 -%392 = OpLoad %23 %284 -%393 = OpFAdd %23 %392 %391 -OpStore %284 %393 -%394 = OpConvertSToF %7 %283 -%395 = OpCompositeConstruct %23 %280 %394 -%396 = OpSampledImage %375 %274 %275 -%397 = OpImageSampleImplicitLod %23 %396 %395 -%398 = OpLoad %23 %284 -%399 = OpFAdd %23 %398 %397 -OpStore %284 %399 -%400 = OpConvertSToF %7 %283 -%401 = OpCompositeConstruct %23 %280 %400 -%402 = OpSampledImage %375 %274 %275 -%403 = OpImageSampleExplicitLod %23 %402 %401 Lod %281 -%404 = OpLoad %23 %284 -%405 = OpFAdd %23 %404 %403 -OpStore %284 %405 -%406 = OpConvertSToF %7 %283 -%407 = OpCompositeConstruct %23 %280 %406 -%408 = OpSampledImage %375 %274 %275 -%409 = OpImageSampleImplicitLod %23 %408 %407 Bias %282 -%410 = OpLoad %23 %284 -%411 = OpFAdd %23 %410 %409 -OpStore %284 %411 -%412 = OpLoad %23 %284 -OpStore %269 %412 +%288 = OpCompositeExtract %7 %278 0 +%290 = OpSampledImage %289 %271 %275 +%291 = OpImageSampleImplicitLod %23 %290 %288 +%292 = OpLoad %23 %284 +%293 = OpFAdd %23 %292 %291 +OpStore %284 %293 +%295 = OpSampledImage %294 %272 %275 +%296 = OpImageSampleImplicitLod %23 %295 %278 +%297 = OpLoad %23 %284 +%298 = OpFAdd %23 %297 %296 +OpStore %284 %298 +%299 = OpSampledImage %294 %272 %275 +%300 = OpImageSampleImplicitLod %23 %299 %278 ConstOffset %30 +%301 = OpLoad %23 %284 +%302 = OpFAdd %23 %301 %300 +OpStore %284 %302 +%303 = OpSampledImage %294 %272 %275 +%304 = OpImageSampleExplicitLod %23 %303 %278 Lod %281 +%305 = OpLoad %23 %284 +%306 = OpFAdd %23 %305 %304 +OpStore %284 %306 +%307 = OpSampledImage %294 %272 %275 +%308 = OpImageSampleExplicitLod %23 %307 %278 Lod|ConstOffset %281 %30 +%309 = OpLoad %23 %284 +%310 = OpFAdd %23 %309 %308 +OpStore %284 %310 +%311 = OpSampledImage %294 %272 %275 +%312 = OpImageSampleImplicitLod %23 %311 %278 Bias|ConstOffset %282 %30 +%313 = OpLoad %23 %284 +%314 = OpFAdd %23 %313 %312 +OpStore %284 %314 +%316 = OpConvertUToF %7 %198 +%317 = OpCompositeConstruct %279 %278 %316 +%318 = OpSampledImage %315 %273 %275 +%319 = OpImageSampleImplicitLod %23 %318 %317 +%320 = OpLoad %23 %284 +%321 = OpFAdd %23 %320 %319 +OpStore %284 %321 +%322 = OpConvertUToF %7 %198 +%323 = OpCompositeConstruct %279 %278 %322 +%324 = OpSampledImage %315 %273 %275 +%325 = OpImageSampleImplicitLod %23 %324 %323 ConstOffset %30 +%326 = OpLoad %23 %284 +%327 = OpFAdd %23 %326 %325 +OpStore %284 %327 +%328 = OpConvertUToF %7 %198 +%329 = OpCompositeConstruct %279 %278 %328 +%330 = OpSampledImage %315 %273 %275 +%331 = OpImageSampleExplicitLod %23 %330 %329 Lod %281 +%332 = OpLoad %23 %284 +%333 = OpFAdd %23 %332 %331 +OpStore %284 %333 +%334 = OpConvertUToF %7 %198 +%335 = OpCompositeConstruct %279 %278 %334 +%336 = OpSampledImage %315 %273 %275 +%337 = OpImageSampleExplicitLod %23 %336 %335 Lod|ConstOffset %281 %30 +%338 = OpLoad %23 %284 +%339 = OpFAdd %23 %338 %337 +OpStore %284 %339 +%340 = OpConvertUToF %7 %198 +%341 = OpCompositeConstruct %279 %278 %340 +%342 = OpSampledImage %315 %273 %275 +%343 = OpImageSampleImplicitLod %23 %342 %341 Bias|ConstOffset %282 %30 +%344 = OpLoad %23 %284 +%345 = OpFAdd %23 %344 %343 +OpStore %284 %345 +%346 = OpConvertSToF %7 %283 +%347 = OpCompositeConstruct %279 %278 %346 +%348 = OpSampledImage %315 %273 %275 +%349 = OpImageSampleImplicitLod %23 %348 %347 +%350 = OpLoad %23 %284 +%351 = OpFAdd %23 %350 %349 +OpStore %284 %351 +%352 = OpConvertSToF %7 %283 +%353 = OpCompositeConstruct %279 %278 %352 +%354 = OpSampledImage %315 %273 %275 +%355 = OpImageSampleImplicitLod %23 %354 %353 ConstOffset %30 +%356 = OpLoad %23 %284 +%357 = OpFAdd %23 %356 %355 +OpStore %284 %357 +%358 = OpConvertSToF %7 %283 +%359 = OpCompositeConstruct %279 %278 %358 +%360 = OpSampledImage %315 %273 %275 +%361 = OpImageSampleExplicitLod %23 %360 %359 Lod %281 +%362 = OpLoad %23 %284 +%363 = OpFAdd %23 %362 %361 +OpStore %284 %363 +%364 = OpConvertSToF %7 %283 +%365 = OpCompositeConstruct %279 %278 %364 +%366 = OpSampledImage %315 %273 %275 +%367 = OpImageSampleExplicitLod %23 %366 %365 Lod|ConstOffset %281 %30 +%368 = OpLoad %23 %284 +%369 = OpFAdd %23 %368 %367 +OpStore %284 %369 +%370 = OpConvertSToF %7 %283 +%371 = OpCompositeConstruct %279 %278 %370 +%372 = OpSampledImage %315 %273 %275 +%373 = OpImageSampleImplicitLod %23 %372 %371 Bias|ConstOffset %282 %30 +%374 = OpLoad %23 %284 +%375 = OpFAdd %23 %374 %373 +OpStore %284 %375 +%377 = OpConvertUToF %7 %198 +%378 = OpCompositeConstruct %23 %280 %377 +%379 = OpSampledImage %376 %274 %275 +%380 = OpImageSampleImplicitLod %23 %379 %378 +%381 = OpLoad %23 %284 +%382 = OpFAdd %23 %381 %380 +OpStore %284 %382 +%383 = OpConvertUToF %7 %198 +%384 = OpCompositeConstruct %23 %280 %383 +%385 = OpSampledImage %376 %274 %275 +%386 = OpImageSampleExplicitLod %23 %385 %384 Lod %281 +%387 = OpLoad %23 %284 +%388 = OpFAdd %23 %387 %386 +OpStore %284 %388 +%389 = OpConvertUToF %7 %198 +%390 = OpCompositeConstruct %23 %280 %389 +%391 = OpSampledImage %376 %274 %275 +%392 = OpImageSampleImplicitLod %23 %391 %390 Bias %282 +%393 = OpLoad %23 %284 +%394 = OpFAdd %23 %393 %392 +OpStore %284 %394 +%395 = OpConvertSToF %7 %283 +%396 = OpCompositeConstruct %23 %280 %395 +%397 = OpSampledImage %376 %274 %275 +%398 = OpImageSampleImplicitLod %23 %397 %396 +%399 = OpLoad %23 %284 +%400 = OpFAdd %23 %399 %398 +OpStore %284 %400 +%401 = OpConvertSToF %7 %283 +%402 = OpCompositeConstruct %23 %280 %401 +%403 = OpSampledImage %376 %274 %275 +%404 = OpImageSampleExplicitLod %23 %403 %402 Lod %281 +%405 = OpLoad %23 %284 +%406 = OpFAdd %23 %405 %404 +OpStore %284 %406 +%407 = OpConvertSToF %7 %283 +%408 = OpCompositeConstruct %23 %280 %407 +%409 = OpSampledImage %376 %274 %275 +%410 = OpImageSampleImplicitLod %23 %409 %408 Bias %282 +%411 = OpLoad %23 %284 +%412 = OpFAdd %23 %411 %410 +OpStore %284 %412 +%413 = OpLoad %23 %284 +OpStore %269 %413 OpReturn OpFunctionEnd -%416 = OpFunction %2 None %79 -%413 = OpLabel -%421 = OpVariable %422 Function %423 -%417 = OpLoad %24 %66 -%418 = OpLoad %25 %68 -%419 = OpLoad %26 %70 -%420 = OpLoad %27 %72 -OpBranch %424 -%424 = OpLabel -%426 = OpSampledImage %425 %418 %417 -%427 = OpImageSampleDrefImplicitLod %7 %426 %278 %276 -%428 = OpLoad %7 %421 -%429 = OpFAdd %7 %428 %427 -OpStore %421 %429 -%431 = OpConvertUToF %7 %198 -%432 = OpCompositeConstruct %279 %278 %431 -%433 = OpSampledImage %430 %419 %417 -%434 = OpImageSampleDrefImplicitLod %7 %433 %432 %276 -%435 = OpLoad %7 %421 -%436 = OpFAdd %7 %435 %434 -OpStore %421 %436 -%437 = OpConvertSToF %7 %283 -%438 = OpCompositeConstruct %279 %278 %437 -%439 = OpSampledImage %430 %419 %417 -%440 = OpImageSampleDrefImplicitLod %7 %439 %438 %276 -%441 = OpLoad %7 %421 -%442 = OpFAdd %7 %441 %440 -OpStore %421 %442 -%444 = OpSampledImage %443 %420 %417 -%445 = OpImageSampleDrefImplicitLod %7 %444 %280 %276 -%446 = OpLoad %7 %421 -%447 = OpFAdd %7 %446 %445 -OpStore %421 %447 -%448 = OpSampledImage %425 %418 %417 -%449 = OpImageSampleDrefExplicitLod %7 %448 %278 %276 Lod %450 -%451 = OpLoad %7 %421 -%452 = OpFAdd %7 %451 %449 -OpStore %421 %452 -%453 = OpConvertUToF %7 %198 -%454 = OpCompositeConstruct %279 %278 %453 -%455 = OpSampledImage %430 %419 %417 -%456 = OpImageSampleDrefExplicitLod %7 %455 %454 %276 Lod %450 -%457 = OpLoad %7 %421 -%458 = OpFAdd %7 %457 %456 -OpStore %421 %458 -%459 = OpConvertSToF %7 %283 -%460 = OpCompositeConstruct %279 %278 %459 -%461 = OpSampledImage %430 %419 %417 -%462 = OpImageSampleDrefExplicitLod %7 %461 %460 %276 Lod %450 -%463 = OpLoad %7 %421 -%464 = OpFAdd %7 %463 %462 -OpStore %421 %464 -%465 = OpSampledImage %443 %420 %417 -%466 = OpImageSampleDrefExplicitLod %7 %465 %280 %276 Lod %450 -%467 = OpLoad %7 %421 -%468 = OpFAdd %7 %467 %466 -OpStore %421 %468 -%469 = OpLoad %7 %421 -OpStore %414 %469 +%417 = OpFunction %2 None %79 +%414 = OpLabel +%422 = OpVariable %423 Function %424 +%418 = OpLoad %24 %66 +%419 = OpLoad %25 %68 +%420 = OpLoad %26 %70 +%421 = OpLoad %27 %72 +OpBranch %425 +%425 = OpLabel +%427 = OpSampledImage %426 %419 %418 +%428 = OpImageSampleDrefImplicitLod %7 %427 %278 %276 +%429 = OpLoad %7 %422 +%430 = OpFAdd %7 %429 %428 +OpStore %422 %430 +%432 = OpConvertUToF %7 %198 +%433 = OpCompositeConstruct %279 %278 %432 +%434 = OpSampledImage %431 %420 %418 +%435 = OpImageSampleDrefImplicitLod %7 %434 %433 %276 +%436 = OpLoad %7 %422 +%437 = OpFAdd %7 %436 %435 +OpStore %422 %437 +%438 = OpConvertSToF %7 %283 +%439 = OpCompositeConstruct %279 %278 %438 +%440 = OpSampledImage %431 %420 %418 +%441 = OpImageSampleDrefImplicitLod %7 %440 %439 %276 +%442 = OpLoad %7 %422 +%443 = OpFAdd %7 %442 %441 +OpStore %422 %443 +%445 = OpSampledImage %444 %421 %418 +%446 = OpImageSampleDrefImplicitLod %7 %445 %280 %276 +%447 = OpLoad %7 %422 +%448 = OpFAdd %7 %447 %446 +OpStore %422 %448 +%449 = OpSampledImage %426 %419 %418 +%450 = OpImageSampleDrefExplicitLod %7 %449 %278 %276 Lod %451 +%452 = OpLoad %7 %422 +%453 = OpFAdd %7 %452 %450 +OpStore %422 %453 +%454 = OpConvertUToF %7 %198 +%455 = OpCompositeConstruct %279 %278 %454 +%456 = OpSampledImage %431 %420 %418 +%457 = OpImageSampleDrefExplicitLod %7 %456 %455 %276 Lod %451 +%458 = OpLoad %7 %422 +%459 = OpFAdd %7 %458 %457 +OpStore %422 %459 +%460 = OpConvertSToF %7 %283 +%461 = OpCompositeConstruct %279 %278 %460 +%462 = OpSampledImage %431 %420 %418 +%463 = OpImageSampleDrefExplicitLod %7 %462 %461 %276 Lod %451 +%464 = OpLoad %7 %422 +%465 = OpFAdd %7 %464 %463 +OpStore %422 %465 +%466 = OpSampledImage %444 %421 %418 +%467 = OpImageSampleDrefExplicitLod %7 %466 %280 %276 Lod %451 +%468 = OpLoad %7 %422 +%469 = OpFAdd %7 %468 %467 +OpStore %422 %469 +%470 = OpLoad %7 %422 +OpStore %415 %470 OpReturn OpFunctionEnd -%472 = OpFunction %2 None %79 -%470 = OpLabel -%473 = OpLoad %16 %49 -%474 = OpLoad %3 %51 -%475 = OpLoad %17 %52 -%476 = OpLoad %24 %64 -%477 = OpLoad %24 %66 -%478 = OpLoad %25 %68 -OpBranch %479 -%479 = OpLabel -%480 = OpSampledImage %293 %473 %476 -%481 = OpImageGather %23 %480 %278 %482 -%483 = OpSampledImage %293 %473 %476 -%484 = OpImageGather %23 %483 %278 %485 ConstOffset %30 -%486 = OpSampledImage %425 %478 %477 -%487 = OpImageDrefGather %23 %486 %278 %276 -%488 = OpSampledImage %425 %478 %477 -%489 = OpImageDrefGather %23 %488 %278 %276 ConstOffset %30 -%491 = OpSampledImage %490 %474 %476 -%492 = OpImageGather %98 %491 %278 %198 -%495 = OpSampledImage %494 %475 %476 -%496 = OpImageGather %493 %495 %278 %198 -%497 = OpConvertUToF %23 %492 -%498 = OpConvertSToF %23 %496 -%499 = OpFAdd %23 %497 %498 -%500 = OpFAdd %23 %481 %484 -%501 = OpFAdd %23 %500 %487 -%502 = OpFAdd %23 %501 %489 -%503 = OpFAdd %23 %502 %499 -OpStore %471 %503 +%473 = OpFunction %2 None %79 +%471 = OpLabel +%474 = OpLoad %16 %49 +%475 = OpLoad %3 %51 +%476 = OpLoad %17 %52 +%477 = OpLoad %24 %64 +%478 = OpLoad %24 %66 +%479 = OpLoad %25 %68 +OpBranch %480 +%480 = OpLabel +%481 = OpSampledImage %294 %474 %477 +%482 = OpImageGather %23 %481 %278 %483 +%484 = OpSampledImage %294 %474 %477 +%485 = OpImageGather %23 %484 %278 %486 ConstOffset %30 +%487 = OpSampledImage %426 %479 %478 +%488 = OpImageDrefGather %23 %487 %278 %276 +%489 = OpSampledImage %426 %479 %478 +%490 = OpImageDrefGather %23 %489 %278 %276 ConstOffset %30 +%492 = OpSampledImage %491 %475 %477 +%493 = OpImageGather %98 %492 %278 %198 +%496 = OpSampledImage %495 %476 %477 +%497 = OpImageGather %494 %496 %278 %198 +%498 = OpConvertUToF %23 %493 +%499 = OpConvertSToF %23 %497 +%500 = OpFAdd %23 %498 %499 +%501 = OpFAdd %23 %482 %485 +%502 = OpFAdd %23 %501 %488 +%503 = OpFAdd %23 %502 %490 +%504 = OpFAdd %23 %503 %500 +OpStore %472 %504 OpReturn OpFunctionEnd -%506 = OpFunction %2 None %79 -%504 = OpLabel -%507 = OpLoad %24 %64 -%508 = OpLoad %25 %68 -OpBranch %509 -%509 = OpLabel -%510 = OpSampledImage %425 %508 %507 -%511 = OpImageSampleImplicitLod %23 %510 %278 -%512 = OpCompositeExtract %7 %511 0 -%513 = OpSampledImage %425 %508 %507 -%514 = OpImageGather %23 %513 %278 %198 -%515 = OpCompositeConstruct %23 %512 %512 %512 %512 -%516 = OpFAdd %23 %515 %514 -OpStore %505 %516 +%507 = OpFunction %2 None %79 +%505 = OpLabel +%508 = OpLoad %24 %64 +%509 = OpLoad %25 %68 +OpBranch %510 +%510 = OpLabel +%511 = OpSampledImage %426 %509 %508 +%512 = OpImageSampleImplicitLod %23 %511 %278 +%513 = OpCompositeExtract %7 %512 0 +%514 = OpSampledImage %426 %509 %508 +%515 = OpImageGather %23 %514 %278 %198 +%516 = OpCompositeConstruct %23 %513 %513 %513 %513 +%517 = OpFAdd %23 %516 %515 +OpStore %506 %517 OpReturn OpFunctionEnd \ No newline at end of file diff --git a/tests/out/wgsl/access.wgsl b/tests/out/wgsl/access.wgsl index ba268dca9..de9863887 100644 --- a/tests/out/wgsl/access.wgsl +++ b/tests/out/wgsl/access.wgsl @@ -138,7 +138,7 @@ fn foo_vert(@builtin(vertex_index) vi: u32) -> @builtin(position) vec4 { test_matrix_within_array_within_struct_accesses(); let _matrix = bar._matrix; let arr_1 = bar.arr; - let b = bar._matrix[3][0]; + let b = bar._matrix[3u][0]; let a_1 = bar.data[(arrayLength((&bar.data)) - 2u)].value; let c = qux; let data_pointer = (&bar.data[0].value); diff --git a/tests/out/wgsl/const-exprs.wgsl b/tests/out/wgsl/const-exprs.wgsl index 57f3ba6a4..2ddc903aa 100644 --- a/tests/out/wgsl/const-exprs.wgsl +++ b/tests/out/wgsl/const-exprs.wgsl @@ -9,17 +9,13 @@ var out: vec4; var out2_: i32; fn swizzle_of_compose() { - let a = vec2(1, 2); - let b = vec2(3, 4); out = vec4(4, 3, 2, 1); return; } fn index_of_compose() { - let a_1 = vec2(1, 2); - let b_1 = vec2(3, 4); - let _e7 = out2_; - out2_ = (_e7 + 2); + let _e2 = out2_; + out2_ = (_e2 + 2); return; } diff --git a/tests/out/wgsl/image.wgsl b/tests/out/wgsl/image.wgsl index 6dfa0dbac..062d37713 100644 --- a/tests/out/wgsl/image.wgsl +++ b/tests/out/wgsl/image.wgsl @@ -112,74 +112,74 @@ fn texture_sample() -> @location(0) vec4 { let tc = vec2(0.5); let tc3_ = vec3(0.5); - let _e8 = textureSample(image_1d, sampler_reg, 0.5); - let _e9 = a; - a = (_e9 + _e8); - let _e13 = textureSample(image_2d, sampler_reg, tc); - let _e14 = a; - a = (_e14 + _e13); - let _e18 = textureSample(image_2d, sampler_reg, tc, vec2(3, 1)); - let _e19 = a; - a = (_e19 + _e18); - let _e23 = textureSampleLevel(image_2d, sampler_reg, tc, 2.3); - let _e24 = a; - a = (_e24 + _e23); - let _e28 = textureSampleLevel(image_2d, sampler_reg, tc, 2.3, vec2(3, 1)); - let _e29 = a; - a = (_e29 + _e28); - let _e34 = textureSampleBias(image_2d, sampler_reg, tc, 2.0, vec2(3, 1)); - let _e35 = a; - a = (_e35 + _e34); - let _e40 = textureSample(image_2d_array, sampler_reg, tc, 0u); - let _e41 = a; - a = (_e41 + _e40); - let _e46 = textureSample(image_2d_array, sampler_reg, tc, 0u, vec2(3, 1)); - let _e47 = a; - a = (_e47 + _e46); - let _e52 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0u, 2.3); - let _e53 = a; - a = (_e53 + _e52); - let _e58 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0u, 2.3, vec2(3, 1)); - let _e59 = a; - a = (_e59 + _e58); - let _e65 = textureSampleBias(image_2d_array, sampler_reg, tc, 0u, 2.0, vec2(3, 1)); - let _e66 = a; - a = (_e66 + _e65); - let _e71 = textureSample(image_2d_array, sampler_reg, tc, 0); - let _e72 = a; - a = (_e72 + _e71); - let _e77 = textureSample(image_2d_array, sampler_reg, tc, 0, vec2(3, 1)); - let _e78 = a; - a = (_e78 + _e77); - let _e83 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0, 2.3); - let _e84 = a; - a = (_e84 + _e83); - let _e89 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0, 2.3, vec2(3, 1)); - let _e90 = a; - a = (_e90 + _e89); - let _e96 = textureSampleBias(image_2d_array, sampler_reg, tc, 0, 2.0, vec2(3, 1)); - let _e97 = a; - a = (_e97 + _e96); - let _e102 = textureSample(image_cube_array, sampler_reg, tc3_, 0u); - let _e103 = a; - a = (_e103 + _e102); - let _e108 = textureSampleLevel(image_cube_array, sampler_reg, tc3_, 0u, 2.3); - let _e109 = a; - a = (_e109 + _e108); - let _e115 = textureSampleBias(image_cube_array, sampler_reg, tc3_, 0u, 2.0); - let _e116 = a; - a = (_e116 + _e115); - let _e121 = textureSample(image_cube_array, sampler_reg, tc3_, 0); - let _e122 = a; - a = (_e122 + _e121); - let _e127 = textureSampleLevel(image_cube_array, sampler_reg, tc3_, 0, 2.3); - let _e128 = a; - a = (_e128 + _e127); - let _e134 = textureSampleBias(image_cube_array, sampler_reg, tc3_, 0, 2.0); - let _e135 = a; - a = (_e135 + _e134); - let _e137 = a; - return _e137; + let _e9 = textureSample(image_1d, sampler_reg, tc.x); + let _e10 = a; + a = (_e10 + _e9); + let _e14 = textureSample(image_2d, sampler_reg, tc); + let _e15 = a; + a = (_e15 + _e14); + let _e19 = textureSample(image_2d, sampler_reg, tc, vec2(3, 1)); + let _e20 = a; + a = (_e20 + _e19); + let _e24 = textureSampleLevel(image_2d, sampler_reg, tc, 2.3); + let _e25 = a; + a = (_e25 + _e24); + let _e29 = textureSampleLevel(image_2d, sampler_reg, tc, 2.3, vec2(3, 1)); + let _e30 = a; + a = (_e30 + _e29); + let _e35 = textureSampleBias(image_2d, sampler_reg, tc, 2.0, vec2(3, 1)); + let _e36 = a; + a = (_e36 + _e35); + let _e41 = textureSample(image_2d_array, sampler_reg, tc, 0u); + let _e42 = a; + a = (_e42 + _e41); + let _e47 = textureSample(image_2d_array, sampler_reg, tc, 0u, vec2(3, 1)); + let _e48 = a; + a = (_e48 + _e47); + let _e53 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0u, 2.3); + let _e54 = a; + a = (_e54 + _e53); + let _e59 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0u, 2.3, vec2(3, 1)); + let _e60 = a; + a = (_e60 + _e59); + let _e66 = textureSampleBias(image_2d_array, sampler_reg, tc, 0u, 2.0, vec2(3, 1)); + let _e67 = a; + a = (_e67 + _e66); + let _e72 = textureSample(image_2d_array, sampler_reg, tc, 0); + let _e73 = a; + a = (_e73 + _e72); + let _e78 = textureSample(image_2d_array, sampler_reg, tc, 0, vec2(3, 1)); + let _e79 = a; + a = (_e79 + _e78); + let _e84 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0, 2.3); + let _e85 = a; + a = (_e85 + _e84); + let _e90 = textureSampleLevel(image_2d_array, sampler_reg, tc, 0, 2.3, vec2(3, 1)); + let _e91 = a; + a = (_e91 + _e90); + let _e97 = textureSampleBias(image_2d_array, sampler_reg, tc, 0, 2.0, vec2(3, 1)); + let _e98 = a; + a = (_e98 + _e97); + let _e103 = textureSample(image_cube_array, sampler_reg, tc3_, 0u); + let _e104 = a; + a = (_e104 + _e103); + let _e109 = textureSampleLevel(image_cube_array, sampler_reg, tc3_, 0u, 2.3); + let _e110 = a; + a = (_e110 + _e109); + let _e116 = textureSampleBias(image_cube_array, sampler_reg, tc3_, 0u, 2.0); + let _e117 = a; + a = (_e117 + _e116); + let _e122 = textureSample(image_cube_array, sampler_reg, tc3_, 0); + let _e123 = a; + a = (_e123 + _e122); + let _e128 = textureSampleLevel(image_cube_array, sampler_reg, tc3_, 0, 2.3); + let _e129 = a; + a = (_e129 + _e128); + let _e135 = textureSampleBias(image_cube_array, sampler_reg, tc3_, 0, 2.0); + let _e136 = a; + a = (_e136 + _e135); + let _e138 = a; + return _e138; } @fragment diff --git a/tests/out/wgsl/type-alias.wgsl b/tests/out/wgsl/type-alias.wgsl index a4a9438eb..fea2dec10 100644 --- a/tests/out/wgsl/type-alias.wgsl +++ b/tests/out/wgsl/type-alias.wgsl @@ -3,7 +3,7 @@ fn main() { let c = vec3(0.0); let b = vec3(vec2(0.0), 0.0); let d = vec3(vec2(0.0), 0.0); - let e = vec3(vec2(0, 0), 0); + let e = vec3(d); let f = mat2x2(vec2(1.0, 2.0), vec2(3.0, 4.0)); let g = mat3x3(a, a, a); } diff --git a/tests/wgsl-errors.rs b/tests/wgsl-errors.rs index 637b5372f..9e5eecccc 100644 --- a/tests/wgsl-errors.rs +++ b/tests/wgsl-errors.rs @@ -1759,47 +1759,47 @@ fn assign_to_let() { "###, ); - // check( - // " - // fn f() { - // let a = array(1, 2); - // a[0] = 1; - // } - // ", - // r###"error: invalid left-hand side of assignment - // ┌─ wgsl:3:17 - // │ - // 3 │ let a = array(1, 2); - // │ ^ this is an immutable binding - // 4 │ a[0] = 1; - // │ ^^^^ cannot assign to this expression - // │ - // = note: consider declaring 'a' with `var` instead of `let` + check( + " + fn f() { + let a = array(1, 2); + a[0] = 1; + } + ", + r###"error: invalid left-hand side of assignment + ┌─ wgsl:3:17 + │ +3 │ let a = array(1, 2); + │ ^ this is an immutable binding +4 │ a[0] = 1; + │ ^^^^ cannot assign to this expression + │ + = note: consider declaring 'a' with `var` instead of `let` - // "###, - // ); +"###, + ); - // check( - // " - // struct S { a: i32 } + check( + " + struct S { a: i32 } - // fn f() { - // let a = S(10); - // a.a = 20; - // } - // ", - // r###"error: invalid left-hand side of assignment - // ┌─ wgsl:5:17 - // │ - // 5 │ let a = S(10); - // │ ^ this is an immutable binding - // 6 │ a.a = 20; - // │ ^^^ cannot assign to this expression - // │ - // = note: consider declaring 'a' with `var` instead of `let` + fn f() { + let a = S(10); + a.a = 20; + } + ", + r###"error: invalid left-hand side of assignment + ┌─ wgsl:5:17 + │ +5 │ let a = S(10); + │ ^ this is an immutable binding +6 │ a.a = 20; + │ ^^^ cannot assign to this expression + │ + = note: consider declaring 'a' with `var` instead of `let` - // "###, - // ); +"###, + ); } #[test]