spv.debugInfo.frag
// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 126

                              Capability Shader
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 5  "main" 24 52
                              ExecutionMode 5 OriginLowerLeft
               1:             String  "spv.debugInfo.frag"
                              Source GLSL 450 1  "// OpModuleProcessed no-storage-format
// OpModuleProcessed resource-set-binding 3
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed auto-map-locations
// OpModuleProcessed client opengl100
// OpModuleProcessed target-env opengl
// OpModuleProcessed relaxed-errors
// OpModuleProcessed suppress-warnings
// OpModuleProcessed hlsl-offsets
// OpModuleProcessed entry-point main
#line 1
#version 450

struct S {
    int a;
};

uniform ubuf {
    S s;
};

uniform sampler2D s2d;

layout(location = 0) in vec4 inv;
layout(location = 0) out vec4 outv;

vec4 foo(S s)
{
    vec4 r = s.a * inv;
    ++r;
    if (r.x > 3.0)
        --r;
    else
        r *= 2;

    return r;
}

void main()
{
    outv = foo(s);
    outv += texture(s2d, vec2(0.5));

    switch (s.a) {
    case 10:
        ++outv;
        break;
    case 20:
        outv = 2 * outv;
        ++outv;
        break;
    default:
        --outv;
        break;
    }

    for (int i = 0; i < 10; ++i)
        outv *= 3.0;

    outv.x < 10.0 ?
        outv = sin(outv) :
        outv = cos(outv);
}"
                              Name 5  "main"
                              Name 8  "S"
                              MemberName 8(S) 0  "a"
                              Name 14  "foo(struct-S-i11;"
                              Name 13  "s"
                              Name 17  "r"
                              Name 24  "inv"
                              Name 52  "outv"
                              Name 53  "S"
                              MemberName 53(S) 0  "a"
                              Name 54  "ubuf"
                              MemberName 54(ubuf) 0  "s"
                              Name 56  ""
                              Name 57  "S"
                              MemberName 57(S) 0  "a"
                              Name 59  "param"
                              Name 69  "s2d"
                              Name 99  "i"
                              Decorate 24(inv) Location 0
                              Decorate 52(outv) Location 0
                              MemberDecorate 53(S) 0 Offset 0
                              MemberDecorate 54(ubuf) 0 Offset 0
                              Decorate 54(ubuf) Block
                              Decorate 56 DescriptorSet 3
                              Decorate 56 Binding 0
                              Decorate 69(s2d) DescriptorSet 3
                              Decorate 69(s2d) Binding 1
               3:             TypeVoid
               4:             TypeFunction 3
               7:             TypeInt 32 1
            8(S):             TypeStruct 7(int)
               9:             TypePointer Function 8(S)
              10:             TypeFloat 32
              11:             TypeVector 10(float) 4
              12:             TypeFunction 11(fvec4) 9(ptr)
              16:             TypePointer Function 11(fvec4)
              18:      7(int) Constant 0
              19:             TypePointer Function 7(int)
              23:             TypePointer Input 11(fvec4)
         24(inv):     23(ptr) Variable Input
              28:   10(float) Constant 1065353216
              31:             TypeInt 32 0
              32:     31(int) Constant 0
              33:             TypePointer Function 10(float)
              36:   10(float) Constant 1077936128
              37:             TypeBool
              45:   10(float) Constant 1073741824
              51:             TypePointer Output 11(fvec4)
        52(outv):     51(ptr) Variable Output
           53(S):             TypeStruct 7(int)
        54(ubuf):             TypeStruct 53(S)
              55:             TypePointer Uniform 54(ubuf)
              56:     55(ptr) Variable Uniform
           57(S):             TypeStruct 7(int)
              58:             TypePointer Function 57(S)
              60:             TypePointer Uniform 53(S)
              66:             TypeImage 10(float) 2D sampled format:Unknown
              67:             TypeSampledImage 66
              68:             TypePointer UniformConstant 67
         69(s2d):     68(ptr) Variable UniformConstant
              71:             TypeVector 10(float) 2
              72:   10(float) Constant 1056964608
              73:   71(fvec2) ConstantComposite 72 72
              77:             TypePointer Uniform 7(int)
             106:      7(int) Constant 10
             111:      7(int) Constant 1
             113:             TypePointer Output 10(float)
             116:   10(float) Constant 1092616192
         5(main):           3 Function None 4
               6:             Label
       59(param):     58(ptr) Variable Function
           99(i):     19(ptr) Variable Function
             118:     16(ptr) Variable Function
                              Line 1 30 0
              61:     60(ptr) AccessChain 56 18
              62:       53(S) Load 61
              63:      7(int) CompositeExtract 62 0
              64:     19(ptr) AccessChain 59(param) 18
                              Store 64 63
              65:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 59(param)
                              Store 52(outv) 65
                              Line 1 31 0
              70:          67 Load 69(s2d)
              74:   11(fvec4) ImageSampleImplicitLod 70 73
              75:   11(fvec4) Load 52(outv)
              76:   11(fvec4) FAdd 75 74
                              Store 52(outv) 76
                              Line 1 33 0
              78:     77(ptr) AccessChain 56 18 18
              79:      7(int) Load 78
                              SelectionMerge 83 None
                              Switch 79 82 
                                     case 10: 80
                                     case 20: 81
              82:               Label
                                Line 1 42 0
              94:   11(fvec4)   Load 52(outv)
              95:   11(fvec4)   CompositeConstruct 28 28 28 28
              96:   11(fvec4)   FSub 94 95
                                Store 52(outv) 96
                                Line 1 43 0
                                Branch 83
              80:               Label
                                Line 1 35 0
              84:   11(fvec4)   Load 52(outv)
              85:   11(fvec4)   CompositeConstruct 28 28 28 28
              86:   11(fvec4)   FAdd 84 85
                                Store 52(outv) 86
                                Line 1 36 0
                                Branch 83
              81:               Label
                                Line 1 38 0
              88:   11(fvec4)   Load 52(outv)
              89:   11(fvec4)   VectorTimesScalar 88 45
                                Store 52(outv) 89
                                Line 1 39 0
              90:   11(fvec4)   Load 52(outv)
              91:   11(fvec4)   CompositeConstruct 28 28 28 28
              92:   11(fvec4)   FAdd 90 91
                                Store 52(outv) 92
                                Line 1 40 0
                                Branch 83
              83:             Label
                              Line 1 46 0
                              Store 99(i) 18
                              Branch 100
             100:             Label
                              LoopMerge 102 103 None
                              Branch 104
             104:             Label
             105:      7(int) Load 99(i)
             107:    37(bool) SLessThan 105 106
                              BranchConditional 107 101 102
             101:               Label
                                Line 1 47 0
             108:   11(fvec4)   Load 52(outv)
             109:   11(fvec4)   VectorTimesScalar 108 36
                                Store 52(outv) 109
                                Branch 103
             103:               Label
                                Line 1 46 0
             110:      7(int)   Load 99(i)
             112:      7(int)   IAdd 110 111
                                Store 99(i) 112
                                Branch 100
             102:             Label
                              Line 1 49 0
             114:    113(ptr) AccessChain 52(outv) 32
             115:   10(float) Load 114
             117:    37(bool) FOrdLessThan 115 116
                              SelectionMerge 120 None
                              BranchConditional 117 119 123
             119:               Label
                                Line 1 50 0
             121:   11(fvec4)   Load 52(outv)
             122:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 121
                                Store 52(outv) 122
                                Store 118 122
                                Branch 120
             123:               Label
                                Line 1 51 0
             124:   11(fvec4)   Load 52(outv)
             125:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 124
                                Store 52(outv) 125
                                Store 118 125
                                Branch 120
             120:             Label
                              Return
                              FunctionEnd
14(foo(struct-S-i11;):   11(fvec4) Function None 12
           13(s):      9(ptr) FunctionParameter
              15:             Label
           17(r):     16(ptr) Variable Function
                              Line 1 18 0
              20:     19(ptr) AccessChain 13(s) 18
              21:      7(int) Load 20
              22:   10(float) ConvertSToF 21
              25:   11(fvec4) Load 24(inv)
              26:   11(fvec4) VectorTimesScalar 25 22
                              Store 17(r) 26
                              Line 1 19 0
              27:   11(fvec4) Load 17(r)
              29:   11(fvec4) CompositeConstruct 28 28 28 28
              30:   11(fvec4) FAdd 27 29
                              Store 17(r) 30
                              Line 1 20 0
              34:     33(ptr) AccessChain 17(r) 32
              35:   10(float) Load 34
              38:    37(bool) FOrdGreaterThan 35 36
                              SelectionMerge 40 None
                              BranchConditional 38 39 44
              39:               Label
                                Line 1 21 0
              41:   11(fvec4)   Load 17(r)
              42:   11(fvec4)   CompositeConstruct 28 28 28 28
              43:   11(fvec4)   FSub 41 42
                                Store 17(r) 43
                                Branch 40
              44:               Label
                                Line 1 23 0
              46:   11(fvec4)   Load 17(r)
              47:   11(fvec4)   VectorTimesScalar 46 45
                                Store 17(r) 47
                                Branch 40
              40:             Label
                              Line 1 25 0
              48:   11(fvec4) Load 17(r)
                              ReturnValue 48
                              FunctionEnd
