Add const-eval for `all`.

This CL adds const-eval for the `all` builtin.

Bug: tint:1581
Change-Id: Ib1d857ba24114c61e1a90b30dd66d063edfa136d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/107464
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def
index b72426e..1894f8b 100644
--- a/src/tint/intrinsics.def
+++ b/src/tint/intrinsics.def
@@ -410,8 +410,8 @@
 fn acos<N: num, T: f32_f16>(vec<N, T>) -> vec<N, T>
 fn acosh<T: f32_f16>(T) -> T
 fn acosh<N: num, T: f32_f16>(vec<N, T>) -> vec<N, T>
-fn all(bool) -> bool
-fn all<N: num>(vec<N, bool>) -> bool
+@const fn all(bool) -> bool
+@const fn all<N: num>(vec<N, bool>) -> bool
 @const fn any(bool) -> bool
 @const fn any<N: num>(vec<N, bool>) -> bool
 fn arrayLength<T, A: access>(ptr<storage, array<T>, A>) -> u32
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index 5d94e1c..f18c0d5 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -1570,6 +1570,12 @@
     return r;
 }
 
+ConstEval::Result ConstEval::all(const sem::Type* ty,
+                                 utils::VectorRef<const sem::Constant*> args,
+                                 const Source&) {
+    return CreateElement(builder, ty, !args[0]->AnyZero());
+}
+
 ConstEval::Result ConstEval::any(const sem::Type* ty,
                                  utils::VectorRef<const sem::Constant*> args,
                                  const Source&) {
diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h
index 9aacec5..d6f5594 100644
--- a/src/tint/resolver/const_eval.h
+++ b/src/tint/resolver/const_eval.h
@@ -377,6 +377,15 @@
     // Builtins
     ////////////////////////////////////////////////////////////////////////////
 
+    /// all builtin
+    /// @param ty the expression type
+    /// @param args the input arguments
+    /// @param source the source location of the conversion
+    /// @return the result value, or null if the value cannot be calculated
+    Result all(const sem::Type* ty,
+               utils::VectorRef<const sem::Constant*> args,
+               const Source& source);
+
     /// any builtin
     /// @param ty the expression type
     /// @param args the input arguments
diff --git a/src/tint/resolver/const_eval_builtin_test.cc b/src/tint/resolver/const_eval_builtin_test.cc
index 7b78035..b0fa425 100644
--- a/src/tint/resolver/const_eval_builtin_test.cc
+++ b/src/tint/resolver/const_eval_builtin_test.cc
@@ -146,6 +146,35 @@
                          C({1.0_a, 0_a}, kPiOver2<AFloat>),
                      })));
 
+static std::vector<Case> AllCases() {
+    return {
+        C({Val(true)}, Val(true)),
+        C({Val(false)}, Val(false)),
+
+        C({Vec(true, true)}, Val(true)),
+        C({Vec(true, false)}, Val(false)),
+        C({Vec(false, true)}, Val(false)),
+        C({Vec(false, false)}, Val(false)),
+
+        C({Vec(true, true, true)}, Val(true)),
+        C({Vec(false, true, true)}, Val(false)),
+        C({Vec(true, false, true)}, Val(false)),
+        C({Vec(true, true, false)}, Val(false)),
+        C({Vec(false, false, false)}, Val(false)),
+
+        C({Vec(true, true, true, true)}, Val(true)),
+        C({Vec(false, true, true, true)}, Val(false)),
+        C({Vec(true, false, true, true)}, Val(false)),
+        C({Vec(true, true, false, true)}, Val(false)),
+        C({Vec(true, true, true, false)}, Val(false)),
+        C({Vec(false, false, false, false)}, Val(false)),
+    };
+}
+INSTANTIATE_TEST_SUITE_P(  //
+    All,
+    ResolverConstEvalBuiltinTest,
+    testing::Combine(testing::Values(sem::BuiltinType::kAll), testing::ValuesIn(AllCases())));
+
 static std::vector<Case> AnyCases() {
     return {
         C({Val(true)}, Val(true)),
diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl
index dde2982..021d993 100644
--- a/src/tint/resolver/intrinsic_table.inl
+++ b/src/tint/resolver/intrinsic_table.inl
@@ -13430,7 +13430,7 @@
     /* parameters */ &kParameters[996],
     /* return matcher indices */ &kMatcherIndices[41],
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* const eval */ nullptr,
+    /* const eval */ &ConstEval::all,
   },
   {
     /* [425] */
@@ -13442,7 +13442,7 @@
     /* parameters */ &kParameters[1017],
     /* return matcher indices */ &kMatcherIndices[41],
     /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
-    /* const eval */ nullptr,
+    /* const eval */ &ConstEval::all,
   },
   {
     /* [426] */
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.dxc.hlsl
index 47ffe9f..8aa391f 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void all_353d6a() {
-  bool res = all(true);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.fxc.hlsl
index 47ffe9f..8aa391f 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void all_353d6a() {
-  bool res = all(true);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.msl b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.msl
index d661e0c..78fd78c 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void all_353d6a() {
-  bool res = all(true);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.spvasm
index ce7b6fe..4f2129b 100644
--- a/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/all/353d6a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -33,34 +33,34 @@
        %bool = OpTypeBool
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
-         %18 = OpConstantNull %bool
-         %19 = OpTypeFunction %v4float
+         %17 = OpConstantNull %bool
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %all_353d6a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_bool Function %18
+        %res = OpVariable %_ptr_Function_bool Function %17
                OpStore %res %true
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %all_353d6a
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %all_353d6a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %all_353d6a
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %all_353d6a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %all_353d6a
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %all_353d6a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.dxc.hlsl
index d426a74..eeb115e 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void all_986c7b() {
-  bool res = all((true).xxxx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.fxc.hlsl
index d426a74..eeb115e 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void all_986c7b() {
-  bool res = all((true).xxxx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.glsl
index e8bd17d..21a76c4 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void all_986c7b() {
-  bool res = all(bvec4(true));
+  bool res = true;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void all_986c7b() {
-  bool res = all(bvec4(true));
+  bool res = true;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void all_986c7b() {
-  bool res = all(bvec4(true));
+  bool res = true;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.msl b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.msl
index 6465c14..93c5215 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void all_986c7b() {
-  bool res = all(bool4(true));
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.spvasm
index 1a1b1c5..f335207 100644
--- a/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/all/986c7b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,39 +31,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %bool = OpTypeBool
-     %v4bool = OpTypeVector %bool 4
        %true = OpConstantTrue %bool
-         %17 = OpConstantComposite %v4bool %true %true %true %true
 %_ptr_Function_bool = OpTypePointer Function %bool
-         %20 = OpConstantNull %bool
-         %21 = OpTypeFunction %v4float
+         %17 = OpConstantNull %bool
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %all_986c7b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_bool Function %20
-         %13 = OpAll %bool %17
-               OpStore %res %13
+        %res = OpVariable %_ptr_Function_bool Function %17
+               OpStore %res %true
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %all_986c7b
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %all_986c7b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %all_986c7b
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %all_986c7b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %all_986c7b
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %all_986c7b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.dxc.hlsl
index 3b9e55e..2ea2bab 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void all_bd2dba() {
-  bool res = all((true).xxx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.fxc.hlsl
index 3b9e55e..2ea2bab 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void all_bd2dba() {
-  bool res = all((true).xxx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.glsl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.glsl
index d37d4a8..69d19de 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void all_bd2dba() {
-  bool res = all(bvec3(true));
+  bool res = true;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void all_bd2dba() {
-  bool res = all(bvec3(true));
+  bool res = true;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void all_bd2dba() {
-  bool res = all(bvec3(true));
+  bool res = true;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.msl b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.msl
index 49413ef..bb3cd3d 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void all_bd2dba() {
-  bool res = all(bool3(true));
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.spvasm
index 2d82b87..dcc7342 100644
--- a/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/all/bd2dba.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,39 +31,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %bool = OpTypeBool
-     %v3bool = OpTypeVector %bool 3
        %true = OpConstantTrue %bool
-         %17 = OpConstantComposite %v3bool %true %true %true
 %_ptr_Function_bool = OpTypePointer Function %bool
-         %20 = OpConstantNull %bool
-         %21 = OpTypeFunction %v4float
+         %17 = OpConstantNull %bool
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %all_bd2dba = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_bool Function %20
-         %13 = OpAll %bool %17
-               OpStore %res %13
+        %res = OpVariable %_ptr_Function_bool Function %17
+               OpStore %res %true
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %all_bd2dba
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %all_bd2dba
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %all_bd2dba
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %all_bd2dba
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %all_bd2dba
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %all_bd2dba
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.dxc.hlsl
index edc6827..5def940 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void all_f46790() {
-  bool res = all((true).xx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.fxc.hlsl
index edc6827..5def940 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void all_f46790() {
-  bool res = all((true).xx);
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.glsl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.glsl
index 2a50d2b..d515e55 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void all_f46790() {
-  bool res = all(bvec2(true));
+  bool res = true;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void all_f46790() {
-  bool res = all(bvec2(true));
+  bool res = true;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void all_f46790() {
-  bool res = all(bvec2(true));
+  bool res = true;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.msl b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.msl
index 71d9104..449bdae 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void all_f46790() {
-  bool res = all(bool2(true));
+  bool res = true;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.spvasm
index e9e5bbd..4201ee7 100644
--- a/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/all/f46790.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,39 +31,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %bool = OpTypeBool
-     %v2bool = OpTypeVector %bool 2
        %true = OpConstantTrue %bool
-         %17 = OpConstantComposite %v2bool %true %true
 %_ptr_Function_bool = OpTypePointer Function %bool
-         %20 = OpConstantNull %bool
-         %21 = OpTypeFunction %v4float
+         %17 = OpConstantNull %bool
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %all_f46790 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_bool Function %20
-         %13 = OpAll %bool %17
-               OpStore %res %13
+        %res = OpVariable %_ptr_Function_bool Function %17
+               OpStore %res %true
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %all_f46790
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %all_f46790
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %all_f46790
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %all_f46790
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %all_f46790
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %all_f46790
                OpReturn
                OpFunctionEnd