[ir] Tighter ValueToLet access restrictions.
Instead of just assuming any call is a `Load, Store` this CL adds
methods into the various `MemberBuiltinCall`, `CoreBuiltinCall` and
`BuiltinCall` classes to allow the backends to specify the restrictions
for any given method. This allows more calls to be inlined by the
backends.
Bug: 379684039
Change-Id: Ifcad3a8ffc66361d3b5d57c2cd27ea3c151ca0e0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/215354
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
diff --git a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.glsl b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.glsl
index 7e877b7..a5fa8a7 100644
--- a/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/insertBits/428b0b.wgsl.expected.glsl
@@ -13,11 +13,10 @@
uint arg_3 = 1u;
ivec3 v_1 = arg_0;
ivec3 v_2 = arg_1;
- uint v_3 = arg_3;
- uint v_4 = min(arg_2, 32u);
- uint v_5 = min(v_3, (32u - v_4));
- int v_6 = int(v_4);
- ivec3 res = bitfieldInsert(v_1, v_2, v_6, int(v_5));
+ uint v_3 = min(arg_2, 32u);
+ uint v_4 = min(arg_3, (32u - v_3));
+ int v_5 = int(v_3);
+ ivec3 res = bitfieldInsert(v_1, v_2, v_5, int(v_4));
return res;
}
void main() {
@@ -36,11 +35,10 @@
uint arg_3 = 1u;
ivec3 v_1 = arg_0;
ivec3 v_2 = arg_1;
- uint v_3 = arg_3;
- uint v_4 = min(arg_2, 32u);
- uint v_5 = min(v_3, (32u - v_4));
- int v_6 = int(v_4);
- ivec3 res = bitfieldInsert(v_1, v_2, v_6, int(v_5));
+ uint v_3 = min(arg_2, 32u);
+ uint v_4 = min(arg_3, (32u - v_3));
+ int v_5 = int(v_3);
+ ivec3 res = bitfieldInsert(v_1, v_2, v_5, int(v_4));
return res;
}
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -63,11 +61,10 @@
uint arg_3 = 1u;
ivec3 v = arg_0;
ivec3 v_1 = arg_1;
- uint v_2 = arg_3;
- uint v_3 = min(arg_2, 32u);
- uint v_4 = min(v_2, (32u - v_3));
- int v_5 = int(v_3);
- ivec3 res = bitfieldInsert(v, v_1, v_5, int(v_4));
+ uint v_2 = min(arg_2, 32u);
+ uint v_3 = min(arg_3, (32u - v_2));
+ int v_4 = int(v_2);
+ ivec3 res = bitfieldInsert(v, v_1, v_4, int(v_3));
return res;
}
VertexOutput vertex_main_inner() {
@@ -77,10 +74,10 @@
return tint_symbol;
}
void main() {
- VertexOutput v_6 = vertex_main_inner();
- gl_Position = v_6.pos;
+ VertexOutput v_5 = vertex_main_inner();
+ gl_Position = v_5.pos;
gl_Position[1u] = -(gl_Position.y);
gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
- vertex_main_loc0_Output = v_6.prevent_dce;
+ vertex_main_loc0_Output = v_5.prevent_dce;
gl_PointSize = 1.0f;
}