; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 71
; Schema: 0
               OpCapability Shader
               OpMemoryModel Logical GLSL450
               OpEntryPoint GLCompute %main1 "main1" %local_invocation_index_3
               OpEntryPoint GLCompute %main2 "main2" %local_invocation_index_1_1
               OpEntryPoint GLCompute %main3 "main3" %local_invocation_index_2_1
               OpEntryPoint GLCompute %main4 "main4"
               OpExecutionMode %main1 LocalSize 1 1 1
               OpExecutionMode %main2 LocalSize 1 1 1
               OpExecutionMode %main3 LocalSize 1 1 1
               OpExecutionMode %main4 LocalSize 1 1 1
               OpName %local_invocation_index_3 "local_invocation_index_3"
               OpName %local_invocation_index_1_1 "local_invocation_index_1_1"
               OpName %local_invocation_index_2_1 "local_invocation_index_2_1"
               OpName %a "a"
               OpName %b "b"
               OpName %c "c"
               OpName %uses_a "uses_a"
               OpName %uses_b "uses_b"
               OpName %uses_a_and_b "uses_a_and_b"
               OpName %no_uses "no_uses"
               OpName %outer "outer"
               OpName %main1_inner "main1_inner"
               OpName %local_invocation_index "local_invocation_index"
               OpName %main1 "main1"
               OpName %main2_inner "main2_inner"
               OpName %local_invocation_index_1 "local_invocation_index_1"
               OpName %main2 "main2"
               OpName %main3_inner "main3_inner"
               OpName %local_invocation_index_2 "local_invocation_index_2"
               OpName %main3 "main3"
               OpName %main4 "main4"
               OpDecorate %local_invocation_index_3 BuiltIn LocalInvocationIndex
               OpDecorate %local_invocation_index_1_1 BuiltIn LocalInvocationIndex
               OpDecorate %local_invocation_index_2_1 BuiltIn LocalInvocationIndex
       %uint = OpTypeInt 32 0
%_ptr_Input_uint = OpTypePointer Input %uint
%local_invocation_index_3 = OpVariable %_ptr_Input_uint Input
%local_invocation_index_1_1 = OpVariable %_ptr_Input_uint Input
%local_invocation_index_2_1 = OpVariable %_ptr_Input_uint Input
        %int = OpTypeInt 32 1
%_ptr_Workgroup_int = OpTypePointer Workgroup %int
          %a = OpVariable %_ptr_Workgroup_int Workgroup
          %b = OpVariable %_ptr_Workgroup_int Workgroup
          %c = OpVariable %_ptr_Workgroup_int Workgroup
       %void = OpTypeVoid
         %11 = OpTypeFunction %void
      %int_1 = OpConstant %int 1
      %int_2 = OpConstant %int 2
         %30 = OpConstantNull %int
         %35 = OpTypeFunction %void %uint
     %uint_2 = OpConstant %uint 2
   %uint_264 = OpConstant %uint 264
     %int_42 = OpConstant %int 42
      %int_7 = OpConstant %int 7
     %uses_a = OpFunction %void None %11
         %14 = OpLabel
         %15 = OpLoad %int %a
         %17 = OpIAdd %int %15 %int_1
               OpStore %a %17
               OpReturn
               OpFunctionEnd
     %uses_b = OpFunction %void None %11
         %19 = OpLabel
         %20 = OpLoad %int %b
         %22 = OpIMul %int %20 %int_2
               OpStore %b %22
               OpReturn
               OpFunctionEnd
%uses_a_and_b = OpFunction %void None %11
         %24 = OpLabel
         %25 = OpLoad %int %a
               OpStore %b %25
               OpReturn
               OpFunctionEnd
    %no_uses = OpFunction %void None %11
         %27 = OpLabel
               OpReturn
               OpFunctionEnd
      %outer = OpFunction %void None %11
         %29 = OpLabel
               OpStore %a %30
         %31 = OpFunctionCall %void %uses_a
         %32 = OpFunctionCall %void %uses_a_and_b
         %33 = OpFunctionCall %void %uses_b
         %34 = OpFunctionCall %void %no_uses
               OpReturn
               OpFunctionEnd
%main1_inner = OpFunction %void None %35
%local_invocation_index = OpFunctionParameter %uint
         %38 = OpLabel
               OpStore %a %30
               OpControlBarrier %uint_2 %uint_2 %uint_264
               OpStore %a %int_42
         %43 = OpFunctionCall %void %uses_a
               OpReturn
               OpFunctionEnd
      %main1 = OpFunction %void None %11
         %45 = OpLabel
         %47 = OpLoad %uint %local_invocation_index_3
         %46 = OpFunctionCall %void %main1_inner %47
               OpReturn
               OpFunctionEnd
%main2_inner = OpFunction %void None %35
%local_invocation_index_1 = OpFunctionParameter %uint
         %50 = OpLabel
               OpStore %b %30
               OpControlBarrier %uint_2 %uint_2 %uint_264
               OpStore %b %int_7
         %53 = OpFunctionCall %void %uses_b
               OpReturn
               OpFunctionEnd
      %main2 = OpFunction %void None %11
         %55 = OpLabel
         %57 = OpLoad %uint %local_invocation_index_1_1
         %56 = OpFunctionCall %void %main2_inner %57
               OpReturn
               OpFunctionEnd
%main3_inner = OpFunction %void None %35
%local_invocation_index_2 = OpFunctionParameter %uint
         %60 = OpLabel
               OpStore %a %30
               OpStore %b %30
               OpControlBarrier %uint_2 %uint_2 %uint_264
         %62 = OpFunctionCall %void %outer
         %63 = OpFunctionCall %void %no_uses
               OpReturn
               OpFunctionEnd
      %main3 = OpFunction %void None %11
         %65 = OpLabel
         %67 = OpLoad %uint %local_invocation_index_2_1
         %66 = OpFunctionCall %void %main3_inner %67
               OpReturn
               OpFunctionEnd
      %main4 = OpFunction %void None %11
         %69 = OpLabel
         %70 = OpFunctionCall %void %no_uses
               OpReturn
               OpFunctionEnd