#!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 coverage-gap found by GraphicsFuzz.

# Short description: A fragment shader that covers a specific dead branch elimination path

# The test passes because shader always writes red.

# Optimized using spirv-opt with the following arguments:
# '--private-to-local'
# '--eliminate-dead-branches'
# '--merge-return'
# '--eliminate-dead-branches'
# '--merge-return'
# '--combine-access-chains'
# '--reduce-load-size'
# '--eliminate-local-single-block'
# '--eliminate-dead-branches'
# '--merge-return'
# '--eliminate-local-single-block'
# '--eliminate-local-single-store'
# '--copy-propagate-arrays'
# '--eliminate-dead-branches'
# '--merge-blocks'
# '--scalar-replacement=100'
# '--eliminate-local-single-store'
# '--eliminate-local-single-store'
# '--eliminate-dead-code-aggressive'
# '--inline-entry-points-exhaustive'
# '--eliminate-dead-branches'
# '--merge-blocks'
# '--eliminate-local-single-block'
# spirv-opt commit hash: 9215c1b7df0029f27807e8c8d7ec80532ce90a87



SHADER vertex variant_vertex_shader PASSTHROUGH

# variant_fragment_shader is derived from the following GLSL:
# #version 310 es
# precision highp float;
#
# layout(location = 0) out vec4 _GLF_color;
#
# float func(float x)
# {
#     float a = x;
#
#     do
#     {
#         if (a == x)
#             return a;
#
#         a++;
#     } while(a < x);
#
#     return 0.0;
# }
#
# void main()
# {
#     float f = 0.0;
#     float i = 0.0;
#
#     do
#     {
#         f = func(i);
#         i += func(1.0);
#     }
#     while (i < 6.0);
#
#     if (f == 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: 127
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %58
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 310
               OpName %4 "main"
               OpName %10 "func(f1;"
               OpName %9 "x"
               OpName %12 "a"
               OpName %35 "f"
               OpName %36 "i"
               OpName %41 "param"
               OpName %44 "param"
               OpName %58 "_GLF_color"
               OpDecorate %58 Location 0
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeFloat 32
          %7 = OpTypePointer Function %6
          %8 = OpTypeFunction %6 %7
         %20 = OpTypeBool
         %27 = OpConstant %6 1
         %32 = OpConstant %6 0
         %49 = OpConstant %6 6
         %52 = OpConstant %6 5
         %56 = OpTypeVector %6 4
         %57 = OpTypePointer Output %56
         %58 = OpVariable %57 Output
         %59 = OpConstantComposite %56 %27 %32 %32 %27
         %61 = OpConstantComposite %56 %32 %32 %32 %32
         %68 = OpConstantFalse %20
         %69 = OpTypePointer Function %20
         %71 = OpConstantTrue %20
          %4 = OpFunction %2 None %3
          %5 = OpLabel
        %100 = OpVariable %69 Function %68
        %101 = OpVariable %7 Function
        %102 = OpVariable %7 Function
        %103 = OpVariable %7 Function
         %74 = OpVariable %69 Function %68
         %75 = OpVariable %7 Function
         %76 = OpVariable %7 Function
         %77 = OpVariable %7 Function
         %35 = OpVariable %7 Function
         %36 = OpVariable %7 Function
         %41 = OpVariable %7 Function
         %44 = OpVariable %7 Function
               OpStore %35 %32
               OpStore %36 %32
               OpBranch %37
         %37 = OpLabel
         %42 = OpLoad %6 %36
               OpStore %41 %42
               OpStore %74 %68
               OpLoopMerge %39 %126 None
               OpBranch %78
         %78 = OpLabel
         %79 = OpLoad %6 %41
               OpStore %76 %79
               OpLoopMerge %80 %81 None
               OpBranch %82
         %82 = OpLabel
               OpLoopMerge %83 %84 None
               OpBranch %85
         %85 = OpLabel
         %86 = OpLoad %6 %76
         %87 = OpLoad %6 %41
         %88 = OpFOrdEqual %20 %86 %87
               OpSelectionMerge %89 None
               OpBranchConditional %88 %90 %89
         %90 = OpLabel
         %91 = OpLoad %6 %76
               OpStore %74 %71
               OpStore %75 %91
               OpBranch %83
         %89 = OpLabel
         %92 = OpLoad %6 %76
         %93 = OpFAdd %6 %92 %27
               OpStore %76 %93
               OpBranch %84
         %84 = OpLabel
         %94 = OpLoad %6 %76
         %95 = OpLoad %6 %41
         %96 = OpFOrdLessThan %20 %94 %95
               OpBranchConditional %96 %82 %83
         %83 = OpLabel
         %97 = OpLoad %20 %74
               OpSelectionMerge %98 None
               OpBranchConditional %97 %80 %98
         %98 = OpLabel
               OpStore %74 %71
               OpStore %75 %32
               OpBranch %80
         %81 = OpLabel
               OpBranch %78
         %80 = OpLabel
         %99 = OpLoad %6 %75
               OpStore %77 %99
               OpStore %35 %99
               OpStore %44 %27
               OpStore %100 %68
               OpBranch %104
        %104 = OpLabel
        %105 = OpLoad %6 %44
               OpStore %102 %105
               OpLoopMerge %106 %107 None
               OpBranch %108
        %108 = OpLabel
               OpLoopMerge %109 %110 None
               OpBranch %111
        %111 = OpLabel
        %112 = OpLoad %6 %102
        %113 = OpLoad %6 %44
        %114 = OpFOrdEqual %20 %112 %113
               OpSelectionMerge %115 None
               OpBranchConditional %114 %116 %115
        %116 = OpLabel
        %117 = OpLoad %6 %102
               OpStore %100 %71
               OpStore %101 %117
               OpBranch %109
        %115 = OpLabel
        %118 = OpLoad %6 %102
        %119 = OpFAdd %6 %118 %27
               OpStore %102 %119
               OpBranch %110
        %110 = OpLabel
        %120 = OpLoad %6 %102
        %121 = OpLoad %6 %44
        %122 = OpFOrdLessThan %20 %120 %121
               OpBranchConditional %122 %108 %109
        %109 = OpLabel
        %123 = OpLoad %20 %100
               OpSelectionMerge %124 None
               OpBranchConditional %123 %106 %124
        %124 = OpLabel
               OpStore %100 %71
               OpStore %101 %32
               OpBranch %106
        %107 = OpLabel
               OpBranch %104
        %106 = OpLabel
        %125 = OpLoad %6 %101
               OpStore %103 %125
         %46 = OpLoad %6 %36
         %47 = OpFAdd %6 %46 %125
               OpStore %36 %47
         %50 = OpFOrdLessThan %20 %47 %49
               OpBranchConditional %50 %126 %39
        %126 = OpLabel
               OpBranch %37
         %39 = OpLabel
         %51 = OpLoad %6 %35
         %53 = OpFOrdEqual %20 %51 %52
               OpSelectionMerge %55 None
               OpBranchConditional %53 %54 %60
         %54 = OpLabel
               OpStore %58 %59
               OpBranch %55
         %60 = OpLabel
               OpStore %58 %61
               OpBranch %55
         %55 = OpLabel
               OpReturn
               OpFunctionEnd
         %10 = OpFunction %6 None %8
          %9 = OpFunctionParameter %7
         %11 = OpLabel
         %70 = OpVariable %69 Function %68
         %63 = OpVariable %7 Function
         %12 = OpVariable %7 Function
               OpBranch %65
         %65 = OpLabel
         %13 = OpLoad %6 %9
               OpStore %12 %13
               OpLoopMerge %62 %67 None
               OpBranch %14
         %14 = OpLabel
               OpLoopMerge %16 %17 None
               OpBranch %15
         %15 = OpLabel
         %18 = OpLoad %6 %12
         %19 = OpLoad %6 %9
         %21 = OpFOrdEqual %20 %18 %19
               OpSelectionMerge %23 None
               OpBranchConditional %21 %22 %23
         %22 = OpLabel
         %24 = OpLoad %6 %12
               OpStore %70 %71
               OpStore %63 %24
               OpBranch %16
         %23 = OpLabel
         %26 = OpLoad %6 %12
         %28 = OpFAdd %6 %26 %27
               OpStore %12 %28
               OpBranch %17
         %17 = OpLabel
         %29 = OpLoad %6 %12
         %30 = OpLoad %6 %9
         %31 = OpFOrdLessThan %20 %29 %30
               OpBranchConditional %31 %14 %16
         %16 = OpLabel
         %73 = OpLoad %20 %70
               OpSelectionMerge %72 None
               OpBranchConditional %73 %62 %72
         %72 = OpLabel
               OpStore %70 %71
               OpStore %63 %32
               OpBranch %62
         %67 = OpLabel
               OpBranch %65
         %62 = OpLabel
         %64 = OpLoad %6 %63
               OpReturnValue %64
               OpFunctionEnd
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
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
