spv.1.4.OpSelect.frag
// Module Version 10400
// Generated by (magic number): 80008
// Id's are bound by 98

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 17 20 82 84
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 450
                              Name 4  "main"
                              Name 6  "fun1("
                              Name 8  "fun2("
                              Name 12  "f1"
                              Name 14  "f2"
                              Name 17  "outv"
                              Name 20  "cond"
                              Name 30  "iv1"
                              Name 34  "iv2"
                              Name 53  "m1"
                              Name 59  "m2"
                              Name 75  "S1"
                              MemberName 75(S1) 0  "a"
                              MemberName 75(S1) 1  "b"
                              Name 77  "fv"
                              Name 82  "in1"
                              Name 84  "in2"
                              Decorate 17(outv) Location 0
                              Decorate 20(cond) Flat
                              Decorate 20(cond) Location 4
                              Decorate 82(in1) Flat
                              Decorate 82(in1) Location 0
                              Decorate 84(in2) Flat
                              Decorate 84(in2) Location 2
               2:             TypeVoid
               3:             TypeFunction 2
              10:             TypeFloat 32
              11:             TypePointer Function 10(float)
              13:   10(float) Constant 1065353216
              15:   10(float) Constant 1073741824
              16:             TypePointer Output 10(float)
        17(outv):     16(ptr) Variable Output
              18:             TypeInt 32 1
              19:             TypePointer Input 18(int)
        20(cond):     19(ptr) Variable Input
              22:     18(int) Constant 8
              23:             TypeBool
              28:             TypeVector 18(int) 4
              29:             TypePointer Function 28(ivec4)
              39:     18(int) Constant 0
              44:             TypeInt 32 0
              45:     44(int) Constant 2
              50:             TypeVector 10(float) 3
              51:             TypeMatrix 50(fvec3) 3
              52:             TypePointer Function 51
              54:   10(float) Constant 0
              55:   50(fvec3) ConstantComposite 13 54 54
              56:   50(fvec3) ConstantComposite 54 13 54
              57:   50(fvec3) ConstantComposite 54 54 13
              58:          51 ConstantComposite 55 56 57
              60:   50(fvec3) ConstantComposite 15 54 54
              61:   50(fvec3) ConstantComposite 54 15 54
              62:   50(fvec3) ConstantComposite 54 54 15
              63:          51 ConstantComposite 60 61 62
              65:     18(int) Constant 20
              70:     18(int) Constant 2
              71:     44(int) Constant 1
          75(S1):             TypeStruct 10(float) 18(int)
              76:             TypePointer Function 75(S1)
              79:     18(int) Constant 5
              81:             TypePointer Input 75(S1)
         82(in1):     81(ptr) Variable Input
         84(in2):     81(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
          12(f1):     11(ptr) Variable Function
          14(f2):     11(ptr) Variable Function
         30(iv1):     29(ptr) Variable Function
         34(iv2):     29(ptr) Variable Function
          53(m1):     52(ptr) Variable Function
          59(m2):     52(ptr) Variable Function
          77(fv):     76(ptr) Variable Function
                              Store 12(f1) 13
                              Store 14(f2) 15
              21:     18(int) Load 20(cond)
              24:    23(bool) SLessThan 21 22
              25:   10(float) Load 12(f1)
              26:   10(float) Load 14(f2)
              27:   10(float) Select 24 25 26
                              Store 17(outv) 27
              31:   10(float) Load 12(f1)
              32:     18(int) ConvertFToS 31
              33:   28(ivec4) CompositeConstruct 32 32 32 32
                              Store 30(iv1) 33
              35:   10(float) Load 14(f2)
              36:     18(int) ConvertFToS 35
              37:   28(ivec4) CompositeConstruct 36 36 36 36
                              Store 34(iv2) 37
              38:     18(int) Load 20(cond)
              40:    23(bool) SGreaterThan 38 39
              41:   28(ivec4) Load 30(iv1)
              42:   28(ivec4) Load 34(iv2)
              43:   28(ivec4) Select 40 41 42
              46:     18(int) CompositeExtract 43 2
              47:   10(float) ConvertSToF 46
              48:   10(float) Load 17(outv)
              49:   10(float) FMul 48 47
                              Store 17(outv) 49
                              Store 53(m1) 58
                              Store 59(m2) 63
              64:     18(int) Load 20(cond)
              66:    23(bool) SLessThan 64 65
              67:          51 Load 53(m1)
              68:          51 Load 59(m2)
              69:          51 Select 66 67 68
              72:   10(float) CompositeExtract 69 2 1
              73:   10(float) Load 17(outv)
              74:   10(float) FMul 73 72
                              Store 17(outv) 74
              78:     18(int) Load 20(cond)
              80:    23(bool) SGreaterThan 78 79
              83:      75(S1) Load 82(in1)
              85:      75(S1) Load 84(in2)
              86:      75(S1) Select 80 83 85
                              Store 77(fv) 86
              87:     11(ptr) AccessChain 77(fv) 39
              88:   10(float) Load 87
              89:   10(float) Load 17(outv)
              90:   10(float) FMul 89 88
                              Store 17(outv) 90
              91:     18(int) Load 20(cond)
              92:    23(bool) SGreaterThan 91 39
                              SelectionMerge 94 None
                              BranchConditional 92 93 96
              93:               Label
              95:           2   FunctionCall 6(fun1()
                                Branch 94
              96:               Label
              97:           2   FunctionCall 8(fun2()
                                Branch 94
              94:             Label
                              Return
                              FunctionEnd
        6(fun1():           2 Function None 3
               7:             Label
                              Return
                              FunctionEnd
        8(fun2():           2 Function None 3
               9:             Label
                              Return
                              FunctionEnd
