spv.debugInfo.frag
// Module Version 10000
// 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  "// OpModuleProcessed no-storage-format
// OpModuleProcessed resource-set-binding 3
// 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 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
