spv.debugInfo.frag
// Module Version 10300
// Generated by (magic number): 80002
// 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  "#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"
                              ModuleProcesses  "no-storage-format"
                              ModuleProcesses  "resource-set-binding 3"
                              ModuleProcesses  "auto-map-locations"
                              ModuleProcesses  "client opengl100"
                              ModuleProcesses  "target-env opengl"
                              ModuleProcesses  "relaxed-errors"
                              ModuleProcesses  "suppress-warnings"
                              ModuleProcesses  "hlsl-offsets"
                              ModuleProcesses  "entry-point main"
                              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 69(s2d) DescriptorSet 3
               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
             114:             TypePointer Output 10(float)
             117:   10(float) Constant 1092616192
         5(main):           3 Function None 4
               6:             Label
       59(param):     58(ptr) Variable Function
           99(i):     19(ptr) Variable Function
             113:     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
             115:    114(ptr) AccessChain 52(outv) 32
             116:   10(float) Load 115
             118:    37(bool) FOrdLessThan 116 117
                              SelectionMerge 120 None
                              BranchConditional 118 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 113 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 113 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
