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

                              Capability Shader
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 5  "main" 30 104
                              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;
}

float testBranch(float x, float y)
{
    float result = 0;
    bool b = x > 0;

    // branch with load
    if (b) {
        result += 1;
    }
    else {
        result -= 1;
    }

    // branch with expression
    if (x > y) {
        result += x - y;
    }

    // selection with load
    result += b ?
        1 : -1;

    // selection with expression
    result += x < y ? 
        y : 
        float(b);

    return result;
}

void main()
{
    outv = foo(s);
    outv += testBranch(inv.x, inv.y);
    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 20  "testBranch(f1;f1;"
                              Name 18  "x"
                              Name 19  "y"
                              Name 23  "r"
                              Name 30  "inv"
                              Name 56  "result"
                              Name 59  "b"
                              Name 104  "outv"
                              Name 105  "S"
                              MemberName 105(S) 0  "a"
                              Name 106  "ubuf"
                              MemberName 106(ubuf) 0  "s"
                              Name 108  ""
                              Name 109  "param"
                              Name 116  "param"
                              Name 120  "param"
                              Name 131  "s2d"
                              Name 161  "i"
                              Decorate 30(inv) Location 0
                              Decorate 104(outv) Location 0
                              MemberDecorate 105(S) 0 Offset 0
                              MemberDecorate 106(ubuf) 0 Offset 0
                              Decorate 106(ubuf) Block
                              Decorate 108 DescriptorSet 3
                              Decorate 108 Binding 0
                              Decorate 131(s2d) Location 0
                              Decorate 131(s2d) DescriptorSet 3
                              Decorate 131(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 10(float)
              17:             TypeFunction 10(float) 16(ptr) 16(ptr)
              22:             TypePointer Function 11(fvec4)
              24:      7(int) Constant 0
              25:             TypePointer Function 7(int)
              29:             TypePointer Input 11(fvec4)
         30(inv):     29(ptr) Variable Input
              34:   10(float) Constant 1065353216
              37:             TypeInt 32 0
              38:     37(int) Constant 0
              41:   10(float) Constant 1077936128
              42:             TypeBool
              50:   10(float) Constant 1073741824
              57:   10(float) Constant 0
              58:             TypePointer Function 42(bool)
              81:      7(int) Constant 1
              82:      7(int) Constant 4294967295
             103:             TypePointer Output 11(fvec4)
       104(outv):    103(ptr) Variable Output
          105(S):             TypeStruct 7(int)
       106(ubuf):             TypeStruct 105(S)
             107:             TypePointer Uniform 106(ubuf)
             108:    107(ptr) Variable Uniform
             110:             TypePointer Uniform 105(S)
             117:             TypePointer Input 10(float)
             121:     37(int) Constant 1
             128:             TypeImage 10(float) 2D sampled format:Unknown
             129:             TypeSampledImage 128
             130:             TypePointer UniformConstant 129
        131(s2d):    130(ptr) Variable UniformConstant
             133:             TypeVector 10(float) 2
             134:   10(float) Constant 1056964608
             135:  133(fvec2) ConstantComposite 134 134
             139:             TypePointer Uniform 7(int)
             168:      7(int) Constant 10
             174:             TypePointer Output 10(float)
             177:   10(float) Constant 1092616192
                              Line 1 58 11
         5(main):           3 Function None 4
               6:             Label
      109(param):      9(ptr) Variable Function
      116(param):     16(ptr) Variable Function
      120(param):     16(ptr) Variable Function
          161(i):     25(ptr) Variable Function
             179:     22(ptr) Variable Function
                              Line 1 60 0
             111:    110(ptr) AccessChain 108 24
             112:      105(S) Load 111
             113:      7(int) CompositeExtract 112 0
             114:     25(ptr) AccessChain 109(param) 24
                              Store 114 113
             115:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param)
                              Store 104(outv) 115
                              Line 1 61 0
             118:    117(ptr) AccessChain 30(inv) 38
             119:   10(float) Load 118
                              Store 116(param) 119
             122:    117(ptr) AccessChain 30(inv) 121
             123:   10(float) Load 122
                              Store 120(param) 123
             124:   10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param)
             125:   11(fvec4) Load 104(outv)
             126:   11(fvec4) CompositeConstruct 124 124 124 124
             127:   11(fvec4) FAdd 125 126
                              Store 104(outv) 127
                              Line 1 62 0
             132:         129 Load 131(s2d)
             136:   11(fvec4) ImageSampleImplicitLod 132 135
             137:   11(fvec4) Load 104(outv)
             138:   11(fvec4) FAdd 137 136
                              Store 104(outv) 138
                              Line 1 64 0
             140:    139(ptr) AccessChain 108 24 24
             141:      7(int) Load 140
                              SelectionMerge 145 None
                              Switch 141 144 
                                     case 10: 142
                                     case 20: 143
             144:               Label
                                Line 1 73 0
             156:   11(fvec4)   Load 104(outv)
             157:   11(fvec4)   CompositeConstruct 34 34 34 34
             158:   11(fvec4)   FSub 156 157
                                Store 104(outv) 158
                                Line 1 74 0
                                Branch 145
             142:               Label
                                Line 1 66 0
             146:   11(fvec4)   Load 104(outv)
             147:   11(fvec4)   CompositeConstruct 34 34 34 34
             148:   11(fvec4)   FAdd 146 147
                                Store 104(outv) 148
                                Line 1 67 0
                                Branch 145
             143:               Label
                                Line 1 69 0
             150:   11(fvec4)   Load 104(outv)
             151:   11(fvec4)   VectorTimesScalar 150 50
                                Store 104(outv) 151
                                Line 1 70 0
             152:   11(fvec4)   Load 104(outv)
             153:   11(fvec4)   CompositeConstruct 34 34 34 34
             154:   11(fvec4)   FAdd 152 153
                                Store 104(outv) 154
                                Line 1 71 0
                                Branch 145
             145:             Label
                              Line 1 77 0
                              Store 161(i) 24
                              Branch 162
             162:             Label
                              Line 1 77 0
                              LoopMerge 164 165 None
                              Branch 166
             166:             Label
                              Line 1 77 0
             167:      7(int) Load 161(i)
             169:    42(bool) SLessThan 167 168
                              BranchConditional 169 163 164
             163:               Label
                                Line 1 78 0
             170:   11(fvec4)   Load 104(outv)
             171:   11(fvec4)   VectorTimesScalar 170 41
                                Store 104(outv) 171
                                Branch 165
             165:               Label
                                Line 1 77 0
             172:      7(int)   Load 161(i)
             173:      7(int)   IAdd 172 81
                                Store 161(i) 173
                                Branch 162
             164:             Label
                              Line 1 80 0
             175:    174(ptr) AccessChain 104(outv) 38
             176:   10(float) Load 175
             178:    42(bool) FOrdLessThan 176 177
                              SelectionMerge 181 None
                              BranchConditional 178 180 184
             180:               Label
                                Line 1 81 0
             182:   11(fvec4)   Load 104(outv)
             183:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 182
                                Store 104(outv) 183
                                Store 179 183
                                Branch 181
             184:               Label
                                Line 1 82 0
             185:   11(fvec4)   Load 104(outv)
             186:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 185
                                Store 104(outv) 186
                                Store 179 186
                                Branch 181
             181:             Label
                              Return
                              FunctionEnd
                              Line 1 16 13
14(foo(struct-S-i11;):   11(fvec4) Function None 12
           13(s):      9(ptr) FunctionParameter
              15:             Label
           23(r):     22(ptr) Variable Function
                              Line 1 18 0
              26:     25(ptr) AccessChain 13(s) 24
              27:      7(int) Load 26
              28:   10(float) ConvertSToF 27
              31:   11(fvec4) Load 30(inv)
              32:   11(fvec4) VectorTimesScalar 31 28
                              Store 23(r) 32
                              Line 1 19 0
              33:   11(fvec4) Load 23(r)
              35:   11(fvec4) CompositeConstruct 34 34 34 34
              36:   11(fvec4) FAdd 33 35
                              Store 23(r) 36
                              Line 1 20 0
              39:     16(ptr) AccessChain 23(r) 38
              40:   10(float) Load 39
              43:    42(bool) FOrdGreaterThan 40 41
                              SelectionMerge 45 None
                              BranchConditional 43 44 49
              44:               Label
                                Line 1 21 0
              46:   11(fvec4)   Load 23(r)
              47:   11(fvec4)   CompositeConstruct 34 34 34 34
              48:   11(fvec4)   FSub 46 47
                                Store 23(r) 48
                                Branch 45
              49:               Label
                                Line 1 23 0
              51:   11(fvec4)   Load 23(r)
              52:   11(fvec4)   VectorTimesScalar 51 50
                                Store 23(r) 52
                                Branch 45
              45:             Label
                              Line 1 25 0
              53:   11(fvec4) Load 23(r)
                              ReturnValue 53
                              FunctionEnd
                              Line 1 28 34
20(testBranch(f1;f1;):   10(float) Function None 17
           18(x):     16(ptr) FunctionParameter
           19(y):     16(ptr) FunctionParameter
              21:             Label
      56(result):     16(ptr) Variable Function
           59(b):     58(ptr) Variable Function
              90:     16(ptr) Variable Function
                              Line 1 30 0
                              Store 56(result) 57
                              Line 1 31 0
              60:   10(float) Load 18(x)
              61:    42(bool) FOrdGreaterThan 60 57
                              Store 59(b) 61
                              Line 1 34 0
              62:    42(bool) Load 59(b)
                              SelectionMerge 64 None
                              BranchConditional 62 63 67
              63:               Label
                                Line 1 35 0
              65:   10(float)   Load 56(result)
              66:   10(float)   FAdd 65 34
                                Store 56(result) 66
                                Branch 64
              67:               Label
                                Line 1 38 0
              68:   10(float)   Load 56(result)
              69:   10(float)   FSub 68 34
                                Store 56(result) 69
                                Branch 64
              64:             Label
                              Line 1 42 0
              70:   10(float) Load 18(x)
              71:   10(float) Load 19(y)
              72:    42(bool) FOrdGreaterThan 70 71
                              SelectionMerge 74 None
                              BranchConditional 72 73 74
              73:               Label
                                Line 1 43 0
              75:   10(float)   Load 18(x)
              76:   10(float)   Load 19(y)
              77:   10(float)   FSub 75 76
              78:   10(float)   Load 56(result)
              79:   10(float)   FAdd 78 77
                                Store 56(result) 79
                                Branch 74
              74:             Label
                              Line 1 47 0
              80:    42(bool) Load 59(b)
              83:      7(int) Select 80 81 82
              84:   10(float) ConvertSToF 83
              85:   10(float) Load 56(result)
              86:   10(float) FAdd 85 84
                              Store 56(result) 86
                              Line 1 51 0
              87:   10(float) Load 18(x)
              88:   10(float) Load 19(y)
              89:    42(bool) FOrdLessThan 87 88
                              SelectionMerge 92 None
                              BranchConditional 89 91 94
              91:               Label
                                Line 1 52 0
              93:   10(float)   Load 19(y)
                                Store 90 93
                                Branch 92
              94:               Label
                                Line 1 53 0
              95:    42(bool)   Load 59(b)
              96:   10(float)   Select 95 34 57
                                Store 90 96
                                Branch 92
              92:             Label
              97:   10(float) Load 90
                              Line 1 51 0
              98:   10(float) Load 56(result)
              99:   10(float) FAdd 98 97
                              Store 56(result) 99
                              Line 1 55 0
             100:   10(float) Load 56(result)
                              ReturnValue 100
                              FunctionEnd
