; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 57
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %main "main" %gl_FragCoord %xe_frag_color
               OpExecutionMode %main OriginUpperLeft
               OpSource GLSL 420
               OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
               OpSourceExtension "GL_GOOGLE_include_directive"
               OpName %main "main"
               OpName %gl_FragCoord "gl_FragCoord"
               OpName %XeBilinearConstants "XeBilinearConstants"
               OpMemberName %XeBilinearConstants 0 "xe_bilinear_output_offset"
               OpMemberName %XeBilinearConstants 1 "xe_bilinear_output_size_inv"
               OpName %_ ""
               OpName %xe_frag_color "xe_frag_color"
               OpName %xe_texture "xe_texture"
               OpDecorate %gl_FragCoord BuiltIn FragCoord
               OpMemberDecorate %XeBilinearConstants 0 Offset 16
               OpMemberDecorate %XeBilinearConstants 1 Offset 24
               OpDecorate %XeBilinearConstants Block
               OpDecorate %xe_frag_color Location 0
               OpDecorate %xe_texture DescriptorSet 0
               OpDecorate %xe_texture Binding 0
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
       %uint = OpTypeInt 32 0
     %v2uint = OpTypeVector %uint 2
      %float = OpTypeFloat 32
    %v4float = OpTypeVector %float 4
%_ptr_Input_v4float = OpTypePointer Input %v4float
%gl_FragCoord = OpVariable %_ptr_Input_v4float Input
    %v2float = OpTypeVector %float 2
        %int = OpTypeInt 32 1
      %v2int = OpTypeVector %int 2
%XeBilinearConstants = OpTypeStruct %v2int %v2float
%_ptr_PushConstant_XeBilinearConstants = OpTypePointer PushConstant %XeBilinearConstants
          %_ = OpVariable %_ptr_PushConstant_XeBilinearConstants PushConstant
      %int_0 = OpConstant %int 0
%_ptr_PushConstant_v2int = OpTypePointer PushConstant %v2int
%_ptr_Output_v4float = OpTypePointer Output %v4float
%xe_frag_color = OpVariable %_ptr_Output_v4float Output
         %31 = OpTypeImage %float 2D 0 0 0 1 Unknown
         %32 = OpTypeSampledImage %31
%_ptr_UniformConstant_32 = OpTypePointer UniformConstant %32
 %xe_texture = OpVariable %_ptr_UniformConstant_32 UniformConstant
  %float_0_5 = OpConstant %float 0.5
      %int_1 = OpConstant %int 1
%_ptr_PushConstant_v2float = OpTypePointer PushConstant %v2float
    %float_0 = OpConstant %float 0
    %float_1 = OpConstant %float 1
     %uint_3 = OpConstant %uint 3
%_ptr_Output_float = OpTypePointer Output %float
         %56 = OpConstantComposite %v2float %float_0_5 %float_0_5
       %main = OpFunction %void None %3
          %5 = OpLabel
         %15 = OpLoad %v4float %gl_FragCoord
         %16 = OpVectorShuffle %v2float %15 %15 0 1
         %19 = OpConvertFToS %v2int %16
         %25 = OpAccessChain %_ptr_PushConstant_v2int %_ %int_0
         %26 = OpLoad %v2int %25
         %27 = OpISub %v2int %19 %26
         %28 = OpBitcast %v2uint %27
         %35 = OpLoad %32 %xe_texture
         %37 = OpConvertUToF %v2float %28
         %40 = OpFAdd %v2float %37 %56
         %43 = OpAccessChain %_ptr_PushConstant_v2float %_ %int_1
         %44 = OpLoad %v2float %43
         %45 = OpFMul %v2float %40 %44
         %47 = OpImageSampleExplicitLod %v4float %35 %45 Lod %float_0
         %50 = OpLoad %v4float %xe_frag_color
         %51 = OpVectorShuffle %v4float %50 %47 4 5 6 3
               OpStore %xe_frag_color %51
         %55 = OpAccessChain %_ptr_Output_float %xe_frag_color %uint_3
               OpStore %55 %float_1
               OpReturn
               OpFunctionEnd
