# Copyright 2018 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.
# A fragment shader that uses FragCoord and somewhat complex control flow.
# Derived from the following GLSL fragment shader.
# We check that the top-left pixel is red. The test passes because _GLF_color is
# initially set to red, all other writes to _GLF_color write red, and the discard
# statement only executes for pixels with an x coordinate >= 180.

# #version 310 es
#
# precision highp float;
# precision highp int;
#
# layout(location=0) out vec4 _GLF_color;
#
# void main() {
#   _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
#   for (int i = 0; i < 1; i++) {
#     if (1.0 < gl_FragCoord.x) {
#       break;
#     }
#     if (gl_FragCoord.x < 0.0) {
#       return;
#     }
#   }
#   do {
#     if (gl_FragCoord.x < 40.0) {
#       _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
#     } else {
#       if (gl_FragCoord.x < 140.0) {
#       } else {
#         for (int j = 1; j > 0; j--) {
#           if (gl_FragCoord.x < 160.0) {
#             for (int k = 1; k > 0; k--) {
#               if (gl_FragCoord.y < 0.0) {
#               } else {
#                 _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
#               }
#             }
#           } else {
#             if (gl_FragCoord.x < 180.0) {
#               for (int l = 1; l != 0; l--) {
#                 _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
#               }
#             } else {
#               if (gl_FragCoord.x < 180.0) {
#                 for (int m = 0; m != 1; m++) {
#                   for (int n = 0; n < 1; n++) {
#                     _GLF_color = vec4(1.0, 0.0, 0.0, 1.0);
#                   }
#                 }
#                 vec4 backup;
#                 for (int o = 1; o != 0; o--) {
#                   backup = vec4(1.0, 0.0, 0.0, 1.0);
#                 }
#                 _GLF_color = backup;
#               } else {
#                 discard;
#               }
#             }
#           }
#         }
#       }
#       return;
#     }
#   } while (false);
# }

[vertex shader passthrough]

[fragment shader spirv]
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 7
; Bound: 206
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %_GLF_color %gl_FragCoord
               OpExecutionMode %main OriginUpperLeft
               OpSource ESSL 310
               OpName %main "main"
               OpName %_GLF_color "_GLF_color"
               OpName %gl_FragCoord "gl_FragCoord"
               OpDecorate %_GLF_color Location 0
               OpDecorate %gl_FragCoord BuiltIn FragCoord
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
 %_GLF_color = OpVariable %_ptr_Output_v4float Output
    %float_1 = OpConstant %float 1
    %float_0 = OpConstant %float 0
         %12 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_1
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
      %int_1 = OpConstant %int 1
       %bool = OpTypeBool
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
       %uint = OpTypeInt 32 0
     %uint_0 = OpConstant %uint 0
%_ptr_Input_float = OpTypePointer Input %float
   %float_40 = OpConstant %float 40
  %float_140 = OpConstant %float 140
  %float_160 = OpConstant %float 160
     %uint_1 = OpConstant %uint 1
  %float_180 = OpConstant %float 180
      %false = OpConstantFalse %bool
       %true = OpConstantTrue %bool
        %181 = OpUndef %v4float
       %main = OpFunction %void None %3
          %5 = OpLabel
               OpBranch %157
        %157 = OpLabel
               OpStore %_GLF_color %12
               OpLoopMerge %156 %159 None
               OpBranch %17
         %17 = OpLabel
        %167 = OpPhi %int %int_0 %157 %44 %41
         %25 = OpSLessThan %bool %167 %int_1
               OpLoopMerge %19 %41 None
               OpBranchConditional %25 %18 %19
         %18 = OpLabel
         %31 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
         %32 = OpLoad %float %31
         %33 = OpFOrdLessThan %bool %float_1 %32
               OpSelectionMerge %35 None
               OpBranchConditional %33 %34 %35
         %34 = OpLabel
               OpBranch %19
         %35 = OpLabel
         %39 = OpFOrdLessThan %bool %32 %float_0
               OpSelectionMerge %201 None
               OpBranchConditional %39 %40 %41
         %40 = OpLabel
               OpBranch %19
        %201 = OpLabel
               OpBranch %41
         %41 = OpLabel
         %44 = OpIAdd %int %167 %int_1
               OpBranch %17
         %19 = OpLabel
        %168 = OpPhi %bool %false %17 %false %34 %true %40
               OpSelectionMerge %163 None
               OpBranchConditional %168 %156 %163
        %163 = OpLabel
               OpBranch %45
         %45 = OpLabel
               OpLoopMerge %47 %53 None
               OpBranch %46
         %46 = OpLabel
         %49 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_0
         %50 = OpLoad %float %49
         %52 = OpFOrdLessThan %bool %50 %float_40
               OpSelectionMerge %202 None
               OpBranchConditional %52 %53 %55
        %202 = OpLabel
               OpBranch %53
         %53 = OpLabel
               OpStore %_GLF_color %12
               OpBranchConditional %false %45 %47
         %55 = OpLabel
         %59 = OpFOrdLessThan %bool %50 %float_140
               OpSelectionMerge %61 None
               OpBranchConditional %59 %60 %62
         %60 = OpLabel
               OpBranch %61
         %62 = OpLabel
               OpBranch %64
         %64 = OpLabel
        %176 = OpPhi %v4float %181 %62 %197 %76
        %171 = OpPhi %int %int_1 %62 %153 %76
         %70 = OpSGreaterThan %bool %171 %int_0
               OpLoopMerge %66 %76 None
               OpBranchConditional %70 %65 %66
         %65 = OpLabel
         %74 = OpFOrdLessThan %bool %50 %float_160
               OpSelectionMerge %203 None
               OpBranchConditional %74 %75 %94
         %75 = OpLabel
               OpBranch %78
         %78 = OpLabel
        %185 = OpPhi %int %int_1 %75 %93 %90
         %84 = OpSGreaterThan %bool %185 %int_0
               OpLoopMerge %80 %90 None
               OpBranchConditional %84 %79 %80
         %79 = OpLabel
         %86 = OpAccessChain %_ptr_Input_float %gl_FragCoord %uint_1
         %87 = OpLoad %float %86
         %88 = OpFOrdLessThan %bool %87 %float_0
               OpSelectionMerge %204 None
               OpBranchConditional %88 %89 %91
         %89 = OpLabel
               OpBranch %90
         %91 = OpLabel
               OpStore %_GLF_color %12
               OpBranch %90
        %204 = OpLabel
               OpBranch %90
         %90 = OpLabel
         %93 = OpISub %int %185 %int_1
               OpBranch %78
         %80 = OpLabel
               OpBranch %76
         %94 = OpLabel
         %98 = OpFOrdLessThan %bool %50 %float_180
               OpSelectionMerge %100 None
               OpBranchConditional %98 %99 %111
         %99 = OpLabel
               OpBranch %102
        %102 = OpLabel
        %184 = OpPhi %int %int_1 %99 %110 %103
        %108 = OpINotEqual %bool %184 %int_0
               OpLoopMerge %104 %103 None
               OpBranchConditional %108 %103 %104
        %103 = OpLabel
               OpStore %_GLF_color %12
        %110 = OpISub %int %184 %int_1
               OpBranch %102
        %104 = OpLabel
               OpBranch %100
        %111 = OpLabel
               OpSelectionMerge %116 None
               OpBranchConditional %98 %115 %150
        %115 = OpLabel
               OpBranch %118
        %118 = OpLabel
        %172 = OpPhi %int %int_0 %115 %136 %128
        %124 = OpINotEqual %bool %172 %int_1
               OpLoopMerge %120 %128 None
               OpBranchConditional %124 %119 %120
        %119 = OpLabel
               OpBranch %126
        %126 = OpLabel
        %182 = OpPhi %int %int_0 %119 %134 %127
        %132 = OpSLessThan %bool %182 %int_1
               OpLoopMerge %205 %127 None
               OpBranchConditional %132 %127 %205
        %127 = OpLabel
               OpStore %_GLF_color %12
        %134 = OpIAdd %int %182 %int_1
               OpBranch %126
        %205 = OpLabel
               OpBranch %128
        %128 = OpLabel
        %136 = OpIAdd %int %172 %int_1
               OpBranch %118
        %120 = OpLabel
               OpBranch %138
        %138 = OpLabel
        %174 = OpPhi %v4float %176 %120 %12 %139
        %173 = OpPhi %int %int_1 %120 %148 %139
        %144 = OpINotEqual %bool %173 %int_0
               OpLoopMerge %140 %139 None
               OpBranchConditional %144 %139 %140
        %139 = OpLabel
        %148 = OpISub %int %173 %int_1
               OpBranch %138
        %140 = OpLabel
               OpStore %_GLF_color %174
               OpBranch %116
        %150 = OpLabel
               OpKill
        %116 = OpLabel
               OpBranch %100
        %100 = OpLabel
        %200 = OpPhi %v4float %176 %104 %174 %116
               OpBranch %76
        %203 = OpLabel
               OpBranch %76
         %76 = OpLabel
        %197 = OpPhi %v4float %176 %80 %200 %100 %181 %203
        %153 = OpISub %int %171 %int_1
               OpBranch %64
         %66 = OpLabel
               OpBranch %61
         %61 = OpLabel
               OpBranch %47
         %47 = OpLabel
        %194 = OpPhi %bool %true %61 %168 %53
               OpSelectionMerge %165 None
               OpBranchConditional %194 %156 %165
        %165 = OpLabel
               OpBranch %156
        %159 = OpLabel
               OpBranch %157
        %156 = OpLabel
               OpReturn
               OpFunctionEnd

[test]
draw rect -1 -1 2 2
probe rgba (0, 0) (1, 0, 0, 1)
