#!amber

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


# A test for a coverage-gap found by the GraphicsFuzz project.

# Short description: A fragment shader that covers specific LLVM code paths

# The test passes because the shader always writes red.

SHADER vertex variant_vertex_shader PASSTHROUGH

# variant_fragment_shader is derived from the following GLSL:
# #version 320 es
#
# #define _int_1 _GLF_uniform_int_values[0]
# #define _int_0 _GLF_uniform_int_values[1]
# #define _int_10 _GLF_uniform_int_values[2]
# #define _int_6 _GLF_uniform_int_values[3]
#
# precision highp float;
# precision highp int;
#
# // Contents of _GLF_uniform_int_values: [1, 0, 10, 6]
# layout(set = 0, binding = 0) uniform buf0
# {
#     int _GLF_uniform_int_values[4];
# };
#
# const int _GLF_global_loop_bound = 10;
# int _GLF_global_loop_count = 0;
#
# struct S
# {
#     int data[10];
# };
#
# layout(location = 0) out vec4 _GLF_color;
#
# void func()
# {
#     int a = _int_1;
#     int b = _int_1;
#
#     while (_GLF_global_loop_count < _GLF_global_loop_bound)
#     {
#         _GLF_global_loop_count ++;
#
#         if(b == _int_6)
#         {
#             break;
#         }
#
#         b++;
#
#         // Always false.
#         if(int[10](_int_1, _int_1, _int_1, _int_1, _int_1, _int_1, _int_1, _int_1, _int_1, _int_1)[a] == _int_0)
#         {
#             return;
#         }
#     }
# }
#
# void main()
# {
#     S obj = S(int[10](_int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0));
#
#     for(int i = _int_0; i < _int_10 && _GLF_global_loop_count < _GLF_global_loop_bound; i ++)
#     {
#         _GLF_global_loop_count ++;
#
#         if(i == 0)
#         {
#             obj.data[i] = 1;
#         }
#         else if(i == 1)
#         {
#             // Calling func twice makes sure the global counter has reached its limit, and this
#             // loop will therefore end.
#             func();
#             func();
#             obj.data[i] = _int_1;
#         }
#         // Never executed.
#         else if(i == 4)
#         {
#             obj.data[i] = _int_1;
#         }
#         // Never executed.
#         else
#         {
#             discard;
#         }
#     }
#
#     // Check results against reference values.
#     bool ok = true;
#     int ref[10] = int[10](_int_1, _int_1, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0, _int_0);
#
#     for(int i = 0; i < 10; i ++)
#     {
#         if(obj.data[i] != ref[i])
#         {
#             ok = false;
#         }
#     }
#
#     if(ok)
#     {
#         _GLF_color = vec4(_int_1, _int_0, _int_0, _int_1);
#     }
#     else
#     {
#         _GLF_color = vec4(_int_0);
#     }
# }
SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 226
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %207
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 320
               OpName %4 "main"
               OpName %6 "func("
               OpName %10 "_GLF_global_loop_count"
               OpName %13 "a"
               OpName %17 "buf0"
               OpMemberName %17 0 "_GLF_uniform_int_values"
               OpName %19 ""
               OpName %23 "b"
               OpName %73 "indexable"
               OpName %82 "S"
               OpMemberName %82 0 "data"
               OpName %84 "obj"
               OpName %107 "i"
               OpName %157 "ok"
               OpName %159 "ref"
               OpName %181 "i"
               OpName %207 "_GLF_color"
               OpDecorate %16 ArrayStride 16
               OpMemberDecorate %17 0 Offset 0
               OpDecorate %17 Block
               OpDecorate %19 DescriptorSet 0
               OpDecorate %19 Binding 0
               OpDecorate %207 Location 0
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %8 = OpTypeInt 32 1
          %9 = OpTypePointer Private %8
         %10 = OpVariable %9 Private
         %11 = OpConstant %8 0
         %12 = OpTypePointer Function %8
         %14 = OpTypeInt 32 0
         %15 = OpConstant %14 4
         %16 = OpTypeArray %8 %15
         %17 = OpTypeStruct %16
         %18 = OpTypePointer Uniform %17
         %19 = OpVariable %18 Uniform
         %20 = OpTypePointer Uniform %8
         %32 = OpConstant %8 10
         %33 = OpTypeBool
         %36 = OpConstant %8 1
         %39 = OpConstant %8 3
         %68 = OpConstant %14 10
         %69 = OpTypeArray %8 %68
         %72 = OpTypePointer Function %69
         %82 = OpTypeStruct %69
         %83 = OpTypePointer Function %82
        %116 = OpConstant %8 2
        %144 = OpConstant %8 4
        %156 = OpTypePointer Function %33
        %158 = OpConstantTrue %33
        %198 = OpConstantFalse %33
        %204 = OpTypeFloat 32
        %205 = OpTypeVector %204 4
        %206 = OpTypePointer Output %205
        %207 = OpVariable %206 Output
          %4 = OpFunction %2 None %3
          %5 = OpLabel
         %84 = OpVariable %83 Function
        %107 = OpVariable %12 Function
        %157 = OpVariable %156 Function
        %159 = OpVariable %72 Function
        %181 = OpVariable %12 Function
               OpStore %10 %11
         %85 = OpAccessChain %20 %19 %11 %36
         %86 = OpLoad %8 %85
         %87 = OpAccessChain %20 %19 %11 %36
         %88 = OpLoad %8 %87
         %89 = OpAccessChain %20 %19 %11 %36
         %90 = OpLoad %8 %89
         %91 = OpAccessChain %20 %19 %11 %36
         %92 = OpLoad %8 %91
         %93 = OpAccessChain %20 %19 %11 %36
         %94 = OpLoad %8 %93
         %95 = OpAccessChain %20 %19 %11 %36
         %96 = OpLoad %8 %95
         %97 = OpAccessChain %20 %19 %11 %36
         %98 = OpLoad %8 %97
         %99 = OpAccessChain %20 %19 %11 %36
        %100 = OpLoad %8 %99
        %101 = OpAccessChain %20 %19 %11 %36
        %102 = OpLoad %8 %101
        %103 = OpAccessChain %20 %19 %11 %36
        %104 = OpLoad %8 %103
        %105 = OpCompositeConstruct %69 %86 %88 %90 %92 %94 %96 %98 %100 %102 %104
        %106 = OpCompositeConstruct %82 %105
               OpStore %84 %106
        %108 = OpAccessChain %20 %19 %11 %36
        %109 = OpLoad %8 %108
               OpStore %107 %109
               OpBranch %110
        %110 = OpLabel
               OpLoopMerge %112 %113 None
               OpBranch %114
        %114 = OpLabel
        %115 = OpLoad %8 %107
        %117 = OpAccessChain %20 %19 %11 %116
        %118 = OpLoad %8 %117
        %119 = OpSLessThan %33 %115 %118
        %120 = OpLoad %8 %10
        %121 = OpSLessThan %33 %120 %32
        %122 = OpLogicalAnd %33 %119 %121
               OpBranchConditional %122 %111 %112
        %111 = OpLabel
        %123 = OpLoad %8 %10
        %124 = OpIAdd %8 %123 %36
               OpStore %10 %124
        %125 = OpLoad %8 %107
        %126 = OpIEqual %33 %125 %11
               OpSelectionMerge %128 None
               OpBranchConditional %126 %127 %131
        %127 = OpLabel
        %129 = OpLoad %8 %107
        %130 = OpAccessChain %12 %84 %11 %129
               OpStore %130 %36
               OpBranch %128
        %131 = OpLabel
        %132 = OpLoad %8 %107
        %133 = OpIEqual %33 %132 %36
               OpSelectionMerge %135 None
               OpBranchConditional %133 %134 %142
        %134 = OpLabel
        %136 = OpFunctionCall %2 %6
        %137 = OpFunctionCall %2 %6
        %138 = OpLoad %8 %107
        %139 = OpAccessChain %20 %19 %11 %11
        %140 = OpLoad %8 %139
        %141 = OpAccessChain %12 %84 %11 %138
               OpStore %141 %140
               OpBranch %135
        %142 = OpLabel
        %143 = OpLoad %8 %107
        %145 = OpIEqual %33 %143 %144
               OpSelectionMerge %147 None
               OpBranchConditional %145 %146 %152
        %146 = OpLabel
        %148 = OpLoad %8 %107
        %149 = OpAccessChain %20 %19 %11 %11
        %150 = OpLoad %8 %149
        %151 = OpAccessChain %12 %84 %11 %148
               OpStore %151 %150
               OpBranch %147
        %152 = OpLabel
               OpKill
        %147 = OpLabel
               OpBranch %135
        %135 = OpLabel
               OpBranch %128
        %128 = OpLabel
               OpBranch %113
        %113 = OpLabel
        %154 = OpLoad %8 %107
        %155 = OpIAdd %8 %154 %36
               OpStore %107 %155
               OpBranch %110
        %112 = OpLabel
               OpStore %157 %158
        %160 = OpAccessChain %20 %19 %11 %11
        %161 = OpLoad %8 %160
        %162 = OpAccessChain %20 %19 %11 %11
        %163 = OpLoad %8 %162
        %164 = OpAccessChain %20 %19 %11 %36
        %165 = OpLoad %8 %164
        %166 = OpAccessChain %20 %19 %11 %36
        %167 = OpLoad %8 %166
        %168 = OpAccessChain %20 %19 %11 %36
        %169 = OpLoad %8 %168
        %170 = OpAccessChain %20 %19 %11 %36
        %171 = OpLoad %8 %170
        %172 = OpAccessChain %20 %19 %11 %36
        %173 = OpLoad %8 %172
        %174 = OpAccessChain %20 %19 %11 %36
        %175 = OpLoad %8 %174
        %176 = OpAccessChain %20 %19 %11 %36
        %177 = OpLoad %8 %176
        %178 = OpAccessChain %20 %19 %11 %36
        %179 = OpLoad %8 %178
        %180 = OpCompositeConstruct %69 %161 %163 %165 %167 %169 %171 %173 %175 %177 %179
               OpStore %159 %180
               OpStore %181 %11
               OpBranch %182
        %182 = OpLabel
               OpLoopMerge %184 %185 None
               OpBranch %186
        %186 = OpLabel
        %187 = OpLoad %8 %181
        %188 = OpSLessThan %33 %187 %32
               OpBranchConditional %188 %183 %184
        %183 = OpLabel
        %189 = OpLoad %8 %181
        %190 = OpAccessChain %12 %84 %11 %189
        %191 = OpLoad %8 %190
        %192 = OpLoad %8 %181
        %193 = OpAccessChain %12 %159 %192
        %194 = OpLoad %8 %193
        %195 = OpINotEqual %33 %191 %194
               OpSelectionMerge %197 None
               OpBranchConditional %195 %196 %197
        %196 = OpLabel
               OpStore %157 %198
               OpBranch %197
        %197 = OpLabel
               OpBranch %185
        %185 = OpLabel
        %199 = OpLoad %8 %181
        %200 = OpIAdd %8 %199 %36
               OpStore %181 %200
               OpBranch %182
        %184 = OpLabel
        %201 = OpLoad %33 %157
               OpSelectionMerge %203 None
               OpBranchConditional %201 %202 %221
        %202 = OpLabel
        %208 = OpAccessChain %20 %19 %11 %11
        %209 = OpLoad %8 %208
        %210 = OpConvertSToF %204 %209
        %211 = OpAccessChain %20 %19 %11 %36
        %212 = OpLoad %8 %211
        %213 = OpConvertSToF %204 %212
        %214 = OpAccessChain %20 %19 %11 %36
        %215 = OpLoad %8 %214
        %216 = OpConvertSToF %204 %215
        %217 = OpAccessChain %20 %19 %11 %11
        %218 = OpLoad %8 %217
        %219 = OpConvertSToF %204 %218
        %220 = OpCompositeConstruct %205 %210 %213 %216 %219
               OpStore %207 %220
               OpBranch %203
        %221 = OpLabel
        %222 = OpAccessChain %20 %19 %11 %36
        %223 = OpLoad %8 %222
        %224 = OpConvertSToF %204 %223
        %225 = OpCompositeConstruct %205 %224 %224 %224 %224
               OpStore %207 %225
               OpBranch %203
        %203 = OpLabel
               OpReturn
               OpFunctionEnd
          %6 = OpFunction %2 None %3
          %7 = OpLabel
         %13 = OpVariable %12 Function
         %23 = OpVariable %12 Function
         %73 = OpVariable %72 Function
         %21 = OpAccessChain %20 %19 %11 %11
         %22 = OpLoad %8 %21
               OpStore %13 %22
         %24 = OpAccessChain %20 %19 %11 %11
         %25 = OpLoad %8 %24
               OpStore %23 %25
               OpBranch %26
         %26 = OpLabel
               OpLoopMerge %28 %29 None
               OpBranch %30
         %30 = OpLabel
         %31 = OpLoad %8 %10
         %34 = OpSLessThan %33 %31 %32
               OpBranchConditional %34 %27 %28
         %27 = OpLabel
         %35 = OpLoad %8 %10
         %37 = OpIAdd %8 %35 %36
               OpStore %10 %37
         %38 = OpLoad %8 %23
         %40 = OpAccessChain %20 %19 %11 %39
         %41 = OpLoad %8 %40
         %42 = OpIEqual %33 %38 %41
               OpSelectionMerge %44 None
               OpBranchConditional %42 %43 %44
         %43 = OpLabel
               OpBranch %28
         %44 = OpLabel
         %46 = OpLoad %8 %23
         %47 = OpIAdd %8 %46 %36
               OpStore %23 %47
         %48 = OpAccessChain %20 %19 %11 %11
         %49 = OpLoad %8 %48
         %50 = OpAccessChain %20 %19 %11 %11
         %51 = OpLoad %8 %50
         %52 = OpAccessChain %20 %19 %11 %11
         %53 = OpLoad %8 %52
         %54 = OpAccessChain %20 %19 %11 %11
         %55 = OpLoad %8 %54
         %56 = OpAccessChain %20 %19 %11 %11
         %57 = OpLoad %8 %56
         %58 = OpAccessChain %20 %19 %11 %11
         %59 = OpLoad %8 %58
         %60 = OpAccessChain %20 %19 %11 %11
         %61 = OpLoad %8 %60
         %62 = OpAccessChain %20 %19 %11 %11
         %63 = OpLoad %8 %62
         %64 = OpAccessChain %20 %19 %11 %11
         %65 = OpLoad %8 %64
         %66 = OpAccessChain %20 %19 %11 %11
         %67 = OpLoad %8 %66
         %70 = OpCompositeConstruct %69 %49 %51 %53 %55 %57 %59 %61 %63 %65 %67
         %71 = OpLoad %8 %13
               OpStore %73 %70
         %74 = OpAccessChain %12 %73 %71
         %75 = OpLoad %8 %74
         %76 = OpAccessChain %20 %19 %11 %36
         %77 = OpLoad %8 %76
         %78 = OpIEqual %33 %75 %77
               OpSelectionMerge %80 None
               OpBranchConditional %78 %79 %80
         %79 = OpLabel
               OpReturn
         %80 = OpLabel
               OpBranch %29
         %29 = OpLabel
               OpBranch %26
         %28 = OpLabel
               OpReturn
               OpFunctionEnd
END

# uniforms for variant

# _GLF_uniform_int_values
BUFFER variant__GLF_uniform_int_values DATA_TYPE int32[] STD140 DATA
 1 0 10 6
END

BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM

PIPELINE graphics variant_pipeline
  ATTACH variant_vertex_shader
  ATTACH variant_fragment_shader
  FRAMEBUFFER_SIZE 256 256
  BIND BUFFER variant_framebuffer AS color LOCATION 0
  BIND BUFFER variant__GLF_uniform_int_values AS uniform DESCRIPTOR_SET 0 BINDING 0
END
CLEAR_COLOR variant_pipeline 0 0 0 255

CLEAR variant_pipeline
RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256

EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255
