#!amber

# Copyright 2020 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 bug found by GraphicsFuzz.

# Short description: A fragment shader that compares a float and a coordinate

# The test passes because shader always writes red.

# Optimized using spirv-opt with the following arguments:
# '--redundancy-elimination'
# '--redundancy-elimination'
# '--private-to-local'
# '--eliminate-dead-inserts'
# '--eliminate-dead-code-aggressive'
# '--combine-access-chains'
# '--reduce-load-size'
# '--inline-entry-points-exhaustive'
# '--vector-dce'
# '--eliminate-dead-branches'
# '--merge-blocks'
# '--copy-propagate-arrays'
# '--vector-dce'
# '--eliminate-dead-branches'
# '--merge-blocks'
# '--eliminate-dead-branches'
# '--merge-return'
# '--combine-access-chains'
# '--eliminate-dead-inserts'
# '--eliminate-dead-branches'
# '--if-conversion'
# '--inline-entry-points-exhaustive'
# '--simplify-instructions'
# '--eliminate-local-single-store'
# '--eliminate-dead-branches'
# '--eliminate-local-single-block'
# '--eliminate-local-multi-store'
# '--convert-local-access-chains'
# '--ccp'
# spirv-opt commit hash: ab7ac60f14ae66006bed5c989a2cfd4c4881704c



SHADER vertex variant_vertex_shader PASSTHROUGH

# variant_fragment_shader is derived from the following GLSL:
# #version 310 es
# precision highp float;
# precision highp int;
#
# layout(set = 0, binding = 0) uniform buf0
# {
#     vec2 injectionSwitch;
# };
# layout(location = 0) out vec4 _GLF_color;
#
# // Always returns 5.
# float func()
# {
#     float zero = 0.0;
#     bool alwaysFalse = gl_FragCoord.x < 0.0;
#
#     do
#     {
#         if (injectionSwitch.x < injectionSwitch.y) // Always true
#         {
#             while (int(zero) <= bitfieldInsert(101, 0, 0, 0))
#             {
#                 if (zero <= gl_FragCoord.x)
#                     return 5.0; // Always returns here
#
#                 zero++;
#             }
#         }
#     } while (alwaysFalse);
#
#     for (int u = 0; u < 1; u++)
#     {
#         if (!alwaysFalse)
#             return zero;
#     }
#
#     return 0.0;
# }
#
# void main()
# {
#     float c = 0.0;
#     for (int i = 0; i < 1; i++)
#     {
#         if (!(gl_FragCoord.x < 0.0)) // Always true
#             c = func();
#     }
#
#     if (c == 5.0)
#         _GLF_color = vec4(1, 0, 0, 1);
#     else
#         _GLF_color = vec4(0);
# }
SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 8
; Bound: 261
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %18 %109
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 310
               OpName %4 "main"
               OpName %8 "func("
               OpName %11 "zero"
               OpName %15 "alwaysFalse"
               OpName %18 "gl_FragCoord"
               OpName %30 "buf0"
               OpMemberName %30 0 "injectionSwitch"
               OpName %32 ""
               OpName %67 "u"
               OpName %86 "c"
               OpName %87 "i"
               OpName %109 "_GLF_color"
               OpDecorate %18 BuiltIn FragCoord
               OpMemberDecorate %30 0 Offset 0
               OpDecorate %30 Block
               OpDecorate %32 DescriptorSet 0
               OpDecorate %32 Binding 0
               OpDecorate %109 Location 0
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeFloat 32
          %7 = OpTypeFunction %6
         %10 = OpTypePointer Function %6
         %12 = OpConstant %6 0
         %13 = OpTypeBool
         %14 = OpTypePointer Function %13
         %16 = OpTypeVector %6 4
         %17 = OpTypePointer Input %16
         %18 = OpVariable %17 Input
         %19 = OpTypeInt 32 0
         %20 = OpConstant %19 0
         %21 = OpTypePointer Input %6
         %29 = OpTypeVector %6 2
         %30 = OpTypeStruct %29
         %31 = OpTypePointer Uniform %30
         %32 = OpVariable %31 Uniform
         %33 = OpTypeInt 32 1
         %34 = OpConstant %33 0
         %35 = OpTypePointer Uniform %6
         %38 = OpConstant %19 1
         %51 = OpConstant %33 101
         %60 = OpConstant %6 5
         %63 = OpConstant %6 1
         %66 = OpTypePointer Function %33
         %74 = OpConstant %33 1
        %108 = OpTypePointer Output %16
        %109 = OpVariable %108 Output
        %110 = OpConstantComposite %16 %63 %12 %12 %63
        %112 = OpConstantComposite %16 %12 %12 %12 %12
        %119 = OpConstantFalse %13
        %121 = OpConstantTrue %13
        %211 = OpUndef %6
        %226 = OpUndef %13
        %228 = OpUndef %33
        %256 = OpUndef %6
        %260 = OpUndef %13
          %4 = OpFunction %2 None %3
          %5 = OpLabel
        %128 = OpVariable %14 Function %119
        %129 = OpVariable %10 Function
        %130 = OpVariable %10 Function
        %131 = OpVariable %14 Function
        %132 = OpVariable %66 Function
        %133 = OpVariable %10 Function
         %86 = OpVariable %10 Function
         %87 = OpVariable %66 Function
               OpStore %86 %12
               OpStore %87 %34
               OpBranch %88
         %88 = OpLabel
        %210 = OpPhi %6 %211 %5 %227 %91
        %188 = OpPhi %6 %12 %5 %225 %91
        %187 = OpPhi %33 %34 %5 %103 %91
         %94 = OpSLessThan %13 %187 %74
               OpLoopMerge %90 %91 None
               OpBranchConditional %94 %89 %90
         %89 = OpLabel
         %95 = OpAccessChain %21 %18 %20
         %96 = OpLoad %6 %95
         %97 = OpFOrdLessThan %13 %96 %12
         %98 = OpLogicalNot %13 %97
               OpSelectionMerge %100 None
               OpBranchConditional %98 %99 %100
         %99 = OpLabel
               OpStore %128 %119
               OpBranch %134
        %134 = OpLabel
        %221 = OpPhi %33 %187 %99 %228 %136
        %209 = OpPhi %6 %210 %99 %211 %136
        %194 = OpPhi %13 %119 %99 %226 %136
               OpLoopMerge %135 %136 None
               OpBranch %137
        %137 = OpLabel
               OpStore %130 %12
        %138 = OpAccessChain %21 %18 %20
        %139 = OpLoad %6 %138
        %140 = OpFOrdLessThan %13 %139 %12
               OpStore %131 %140
               OpBranch %141
        %141 = OpLabel
        %193 = OpPhi %13 %119 %137 %196 %143
        %190 = OpPhi %6 %12 %137 %201 %143
        %220 = OpPhi %33 %221 %137 %222 %143
        %208 = OpPhi %6 %209 %137 %212 %143
               OpLoopMerge %142 %143 None
               OpBranch %144
        %144 = OpLabel
        %145 = OpAccessChain %35 %32 %34 %20
        %146 = OpLoad %6 %145
        %147 = OpAccessChain %35 %32 %34 %38
        %148 = OpLoad %6 %147
        %149 = OpFOrdLessThan %13 %146 %148
               OpSelectionMerge %150 None
               OpBranchConditional %149 %151 %150
        %151 = OpLabel
               OpBranch %152
        %152 = OpLabel
        %189 = OpPhi %6 %190 %151 %165 %158
        %154 = OpConvertFToS %33 %189
        %155 = OpBitFieldInsert %33 %51 %34 %34 %34
        %156 = OpSLessThanEqual %13 %154 %155
               OpLoopMerge %157 %158 None
               OpBranchConditional %156 %159 %157
        %159 = OpLabel
        %161 = OpFOrdLessThanEqual %13 %189 %139
               OpSelectionMerge %162 None
               OpBranchConditional %161 %163 %162
        %163 = OpLabel
               OpStore %128 %121
               OpStore %129 %60
               OpBranch %157
        %162 = OpLabel
        %165 = OpFAdd %6 %189 %63
               OpStore %130 %165
               OpBranch %158
        %158 = OpLabel
               OpBranch %152
        %157 = OpLabel
        %206 = OpPhi %6 %208 %152 %60 %163
        %191 = OpPhi %13 %193 %152 %121 %163
               OpSelectionMerge %167 None
               OpBranchConditional %191 %142 %167
        %167 = OpLabel
               OpBranch %150
        %150 = OpLabel
        %222 = OpPhi %33 %220 %144 %220 %167
        %212 = OpPhi %6 %208 %144 %206 %167
        %201 = OpPhi %6 %190 %144 %189 %167
        %196 = OpPhi %13 %193 %144 %191 %167
               OpBranch %143
        %143 = OpLabel
               OpBranchConditional %140 %141 %142
        %142 = OpLabel
        %217 = OpPhi %33 %220 %157 %222 %143
        %205 = OpPhi %6 %206 %157 %212 %143
        %199 = OpPhi %6 %189 %157 %201 %143
        %195 = OpPhi %13 %191 %157 %196 %143
               OpSelectionMerge %170 None
               OpBranchConditional %195 %135 %170
        %170 = OpLabel
               OpStore %132 %34
               OpBranch %171
        %171 = OpLabel
        %197 = OpPhi %33 %34 %170 %183 %175
        %173 = OpSLessThan %13 %197 %74
               OpLoopMerge %174 %175 None
               OpBranchConditional %173 %176 %174
        %176 = OpLabel
        %178 = OpLogicalNot %13 %140
               OpSelectionMerge %179 None
               OpBranchConditional %178 %180 %179
        %180 = OpLabel
               OpStore %128 %121
               OpStore %129 %199
               OpBranch %174
        %179 = OpLabel
               OpBranch %175
        %175 = OpLabel
        %183 = OpIAdd %33 %197 %74
               OpStore %132 %183
               OpBranch %171
        %174 = OpLabel
        %213 = OpPhi %6 %205 %171 %199 %180
        %202 = OpPhi %13 %195 %171 %121 %180
               OpSelectionMerge %185 None
               OpBranchConditional %202 %135 %185
        %185 = OpLabel
               OpStore %128 %121
               OpStore %129 %12
               OpBranch %135
        %136 = OpLabel
               OpBranch %134
        %135 = OpLabel
        %204 = OpPhi %6 %205 %142 %213 %174 %12 %185
               OpStore %133 %204
               OpStore %86 %204
               OpBranch %100
        %100 = OpLabel
        %227 = OpPhi %6 %210 %89 %204 %135
        %225 = OpPhi %6 %188 %89 %204 %135
        %215 = OpPhi %33 %187 %89 %217 %135
               OpBranch %91
         %91 = OpLabel
        %103 = OpIAdd %33 %215 %74
               OpStore %87 %103
               OpBranch %88
         %90 = OpLabel
        %105 = OpFOrdEqual %13 %188 %60
               OpSelectionMerge %107 None
               OpBranchConditional %105 %106 %111
        %106 = OpLabel
               OpStore %109 %110
               OpBranch %107
        %111 = OpLabel
               OpStore %109 %112
               OpBranch %107
        %107 = OpLabel
               OpReturn
               OpFunctionEnd
          %8 = OpFunction %6 None %7
          %9 = OpLabel
        %120 = OpVariable %14 Function %119
        %114 = OpVariable %10 Function
         %11 = OpVariable %10 Function
         %15 = OpVariable %14 Function
         %67 = OpVariable %66 Function
               OpBranch %116
        %116 = OpLabel
        %234 = OpPhi %13 %119 %9 %260 %118
               OpLoopMerge %113 %118 None
               OpBranch %117
        %117 = OpLabel
               OpStore %11 %12
         %22 = OpAccessChain %21 %18 %20
         %23 = OpLoad %6 %22
         %24 = OpFOrdLessThan %13 %23 %12
               OpStore %15 %24
               OpBranch %25
         %25 = OpLabel
        %233 = OpPhi %13 %234 %117 %240 %28
        %230 = OpPhi %6 %12 %117 %247 %28
        %254 = OpPhi %6 %256 %117 %257 %28
               OpLoopMerge %27 %28 None
               OpBranch %26
         %26 = OpLabel
         %36 = OpAccessChain %35 %32 %34 %20
         %37 = OpLoad %6 %36
         %39 = OpAccessChain %35 %32 %34 %38
         %40 = OpLoad %6 %39
         %41 = OpFOrdLessThan %13 %37 %40
               OpSelectionMerge %43 None
               OpBranchConditional %41 %42 %43
         %42 = OpLabel
               OpBranch %44
         %44 = OpLabel
        %229 = OpPhi %6 %230 %42 %64 %47
         %50 = OpConvertFToS %33 %229
         %52 = OpBitFieldInsert %33 %51 %34 %34 %34
         %53 = OpSLessThanEqual %13 %50 %52
               OpLoopMerge %46 %47 None
               OpBranchConditional %53 %45 %46
         %45 = OpLabel
         %57 = OpFOrdLessThanEqual %13 %229 %23
               OpSelectionMerge %59 None
               OpBranchConditional %57 %58 %59
         %58 = OpLabel
               OpStore %120 %121
               OpStore %114 %60
               OpBranch %46
         %59 = OpLabel
         %64 = OpFAdd %6 %229 %63
               OpStore %11 %64
               OpBranch %47
         %47 = OpLabel
               OpBranch %44
         %46 = OpLabel
        %252 = OpPhi %6 %254 %44 %60 %58
        %231 = OpPhi %13 %233 %44 %121 %58
               OpSelectionMerge %122 None
               OpBranchConditional %231 %27 %122
        %122 = OpLabel
               OpBranch %43
         %43 = OpLabel
        %257 = OpPhi %6 %254 %26 %252 %122
        %247 = OpPhi %6 %230 %26 %229 %122
        %240 = OpPhi %13 %233 %26 %231 %122
               OpBranch %28
         %28 = OpLabel
               OpBranchConditional %24 %25 %27
         %27 = OpLabel
        %251 = OpPhi %6 %252 %46 %257 %28
        %245 = OpPhi %6 %229 %46 %247 %28
        %239 = OpPhi %13 %231 %46 %240 %28
               OpSelectionMerge %124 None
               OpBranchConditional %239 %113 %124
        %124 = OpLabel
               OpStore %67 %34
               OpBranch %68
         %68 = OpLabel
        %241 = OpPhi %33 %34 %124 %83 %71
         %75 = OpSLessThan %13 %241 %74
               OpLoopMerge %70 %71 None
               OpBranchConditional %75 %69 %70
         %69 = OpLabel
         %77 = OpLogicalNot %13 %24
               OpSelectionMerge %79 None
               OpBranchConditional %77 %78 %79
         %78 = OpLabel
               OpStore %120 %121
               OpStore %114 %245
               OpBranch %70
         %79 = OpLabel
               OpBranch %71
         %71 = OpLabel
         %83 = OpIAdd %33 %241 %74
               OpStore %67 %83
               OpBranch %68
         %70 = OpLabel
        %258 = OpPhi %6 %251 %68 %245 %78
        %248 = OpPhi %13 %239 %68 %121 %78
               OpSelectionMerge %126 None
               OpBranchConditional %248 %113 %126
        %126 = OpLabel
               OpStore %120 %121
               OpStore %114 %12
               OpBranch %113
        %118 = OpLabel
               OpBranch %116
        %113 = OpLabel
        %250 = OpPhi %6 %251 %27 %258 %70 %12 %126
               OpReturnValue %250
               OpFunctionEnd
END

# uniforms for variant

# resolution
BUFFER variant_resolution DATA_TYPE vec2<float> DATA
 256.0 256.0
END
# injectionSwitch
BUFFER variant_injectionSwitch DATA_TYPE vec2<float> DATA
 0.0 1.0
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_resolution AS uniform DESCRIPTOR_SET 0 BINDING 1
  BIND BUFFER variant_injectionSwitch 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
