#!amber

# Copyright 2022 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.

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



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_5 _GLF_uniform_int_values[2]
# #define _int_3 _GLF_uniform_int_values[3]
# #define _float_0_0 _GLF_uniform_float_values[0]
#
# precision highp float;
# precision highp int;
#
# // Contents of _GLF_uniform_float_values: 0.0
# layout(set = 0, binding = 0) uniform buf0
# {
#     float _GLF_uniform_float_values[1];
# };
#
# // Contents of _GLF_uniform_int_values: [1, 0, 5, 3]
# layout(set = 0, binding = 1) uniform buf1
# {
#     int _GLF_uniform_int_values[4];
# };
#
# layout(location = 0) out vec4 _GLF_color;
#
# void main()
# {
#     ivec4 v = ivec4(_int_5);
#
#     // Iterates three times.
#     for(int k = 1; k < 4; k++)
#     {
#         for(int b = 4; b >= k; b--)
#         {
#             // Always false.
#             if(gl_FragCoord.x < 0.0)
#             {
#                 return;
#             }
#         }
#
#         // Always false.
#         if(gl_FragCoord.x < 0.0)
#         {
#             return;
#         }
#
#         v[_int_1] = _int_1;
#     }
#
#     // At this point v is (5, 1, 5, 5).
#
#     for(int i = _int_1; i >= 0; i--)
#     {
#         for(int j = _int_3; j >= i + _int_1; j--)
#         {
#             // This is iterated with (i, j) pairs of (1, 3), (1, 2), (0, 3), (0, 2), (0, 1).
#             v[j]--;
#         }
#     }
#
#     // Always true.
#     if(v == ivec4(_int_5, _int_0, _int_3, _int_3))
#     {
#         _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: 160
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %46 %120
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 320
               OpName %4 "main"
               OpName %9 "v"
               OpName %13 "buf1"
               OpMemberName %13 0 "_GLF_uniform_int_values"
               OpName %15 ""
               OpName %46 "gl_FragCoord"
               OpName %120 "_GLF_color"
               OpDecorate %12 ArrayStride 16
               OpMemberDecorate %13 0 Offset 0
               OpDecorate %13 Block
               OpDecorate %15 DescriptorSet 0
               OpDecorate %15 Binding 1
               OpDecorate %46 BuiltIn FragCoord
               OpDecorate %120 Location 0
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeInt 32 1
          %7 = OpTypeVector %6 4
          %8 = OpTypePointer Function %7
         %10 = OpTypeInt 32 0
         %11 = OpConstant %10 4
         %12 = OpTypeArray %6 %11
         %13 = OpTypeStruct %12
         %14 = OpTypePointer Uniform %13
         %15 = OpVariable %14 Uniform
         %16 = OpConstant %6 0
         %17 = OpConstant %6 2
         %18 = OpTypePointer Uniform %6
         %22 = OpTypePointer Function %6
         %24 = OpConstant %6 1
         %31 = OpConstant %6 4
         %32 = OpTypeBool
         %43 = OpTypeFloat 32
         %44 = OpTypeVector %43 4
         %45 = OpTypePointer Input %44
         %46 = OpVariable %45 Input
         %47 = OpConstant %10 0
         %48 = OpTypePointer Input %43
         %51 = OpConstant %43 0
         %82 = OpConstant %6 3
        %114 = OpTypeVector %32 4
        %119 = OpTypePointer Output %44
        %120 = OpVariable %119 Output
        %152 = OpConstantFalse %32
        %153 = OpTypePointer Function %32
        %155 = OpConstantTrue %32
          %4 = OpFunction %2 None %3
          %5 = OpLabel
        %154 = OpVariable %153 Function %152
          %9 = OpVariable %8 Function
               OpSelectionMerge %150 None
               OpSwitch %47 %151
        %151 = OpLabel
         %19 = OpAccessChain %18 %15 %16 %17
         %20 = OpLoad %6 %19
         %21 = OpCompositeConstruct %7 %20 %20 %20 %20
               OpStore %9 %21
               OpBranch %25
         %25 = OpLabel
        %144 = OpPhi %6 %24 %151 %70 %28
         %33 = OpSLessThan %32 %144 %31
               OpLoopMerge %27 %28 None
               OpBranchConditional %33 %26 %27
         %26 = OpLabel
               OpBranch %35
         %35 = OpLabel
        %148 = OpPhi %6 %31 %26 %57 %38
         %42 = OpSGreaterThanEqual %32 %148 %144
               OpLoopMerge %37 %38 None
               OpBranchConditional %42 %36 %37
         %36 = OpLabel
         %49 = OpAccessChain %48 %46 %47
         %50 = OpLoad %43 %49
         %52 = OpFOrdLessThan %32 %50 %51
               OpSelectionMerge %54 None
               OpBranchConditional %52 %53 %54
         %53 = OpLabel
               OpStore %154 %155
               OpBranch %37
         %54 = OpLabel
               OpBranch %38
         %38 = OpLabel
         %57 = OpISub %6 %148 %24
               OpBranch %35
         %37 = OpLabel
        %157 = OpLoad %32 %154
               OpSelectionMerge %156 None
               OpBranchConditional %157 %27 %156
        %156 = OpLabel
         %58 = OpAccessChain %48 %46 %47
         %59 = OpLoad %43 %58
         %60 = OpFOrdLessThan %32 %59 %51
               OpSelectionMerge %62 None
               OpBranchConditional %60 %61 %62
         %61 = OpLabel
               OpStore %154 %155
               OpBranch %27
         %62 = OpLabel
         %64 = OpAccessChain %18 %15 %16 %16
         %65 = OpLoad %6 %64
         %68 = OpAccessChain %22 %9 %65
               OpStore %68 %65
               OpBranch %28
         %28 = OpLabel
         %70 = OpIAdd %6 %144 %24
               OpBranch %25
         %27 = OpLabel
        %159 = OpLoad %32 %154
               OpSelectionMerge %158 None
               OpBranchConditional %159 %150 %158
        %158 = OpLabel
         %72 = OpAccessChain %18 %15 %16 %16
         %73 = OpLoad %6 %72
               OpBranch %74
         %74 = OpLabel
        %145 = OpPhi %6 %73 %158 %103 %77
         %80 = OpSGreaterThanEqual %32 %145 %16
               OpLoopMerge %76 %77 None
               OpBranchConditional %80 %75 %76
         %75 = OpLabel
         %83 = OpAccessChain %18 %15 %16 %82
         %84 = OpLoad %6 %83
               OpBranch %85
         %85 = OpLabel
        %146 = OpPhi %6 %84 %75 %101 %86
         %94 = OpIAdd %6 %145 %73
         %95 = OpSGreaterThanEqual %32 %146 %94
               OpLoopMerge %87 %86 None
               OpBranchConditional %95 %86 %87
         %86 = OpLabel
         %97 = OpAccessChain %22 %9 %146
         %98 = OpLoad %6 %97
         %99 = OpISub %6 %98 %24
               OpStore %97 %99
        %101 = OpISub %6 %146 %24
               OpBranch %85
         %87 = OpLabel
               OpBranch %77
         %77 = OpLabel
        %103 = OpISub %6 %145 %24
               OpBranch %74
         %76 = OpLabel
        %104 = OpLoad %7 %9
        %107 = OpAccessChain %18 %15 %16 %24
        %108 = OpLoad %6 %107
        %109 = OpAccessChain %18 %15 %16 %82
        %110 = OpLoad %6 %109
        %113 = OpCompositeConstruct %7 %20 %108 %110 %110
        %115 = OpIEqual %114 %104 %113
        %116 = OpAll %32 %115
               OpSelectionMerge %118 None
               OpBranchConditional %116 %117 %134
        %117 = OpLabel
        %123 = OpConvertSToF %43 %73
        %126 = OpConvertSToF %43 %108
        %133 = OpCompositeConstruct %44 %123 %126 %126 %123
               OpStore %120 %133
               OpBranch %118
        %134 = OpLabel
        %137 = OpConvertSToF %43 %108
        %138 = OpCompositeConstruct %44 %137 %137 %137 %137
               OpStore %120 %138
               OpBranch %118
        %118 = OpLabel
               OpStore %154 %155
               OpBranch %150
        %150 = OpLabel
               OpReturn
               OpFunctionEnd
END

# uniforms for variant

# _GLF_uniform_int_values
BUFFER variant__GLF_uniform_int_values DATA_TYPE int32[] STD140 DATA
 1 0 5 3
END
# _GLF_uniform_float_values
BUFFER variant__GLF_uniform_float_values DATA_TYPE float[] STD140 DATA
 0.0
END

BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM

PIPELINE graphics variant_pipeline
  ATTACH variant_vertex_shader
  ATTACH variant_fragment_shader
  FRAMEBUFFER_SIZE 32 32
  BIND BUFFER variant_framebuffer AS color LOCATION 0
  BIND BUFFER variant__GLF_uniform_int_values AS uniform DESCRIPTOR_SET 0 BINDING 1
  BIND BUFFER variant__GLF_uniform_float_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 32 32

EXPECT variant_framebuffer IDX 0 0 SIZE 32 32 EQ_RGBA 255 0 0 255
