hlsl.intrinsics.negative.comp
Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
0:2    Function Parameters: 
0:2      'inF0' ( in float)
0:2      'inF1' ( in float)
0:2      'inF2' ( in float)
0:2      'inI0' ( in int)
0:?     Sequence
0:53      Branch: Return with expression
0:53        Constant:
0:53          0.000000
0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float)
0:57    Function Parameters: 
0:57      'inF0' ( in 1-component vector of float)
0:57      'inF1' ( in 1-component vector of float)
0:57      'inF2' ( in 1-component vector of float)
0:57      'inI0' ( in 1-component vector of int)
0:?     Sequence
0:62      Branch: Return with expression
0:62        Constant:
0:62          0.000000
0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float)
0:66    Function Parameters: 
0:66      'inF0' ( in 2-component vector of float)
0:66      'inF1' ( in 2-component vector of float)
0:66      'inF2' ( in 2-component vector of float)
0:66      'inI0' ( in 2-component vector of int)
0:?     Sequence
0:109      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
0:113    Function Parameters: 
0:113      'inF0' ( in 3-component vector of float)
0:113      'inF1' ( in 3-component vector of float)
0:113      'inF2' ( in 3-component vector of float)
0:113      'inI0' ( in 3-component vector of int)
0:?     Sequence
0:154      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:158  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:158    Function Parameters: 
0:158      'inF0' ( in 4-component vector of float)
0:158      'inF1' ( in 4-component vector of float)
0:158      'inF2' ( in 4-component vector of float)
0:158      'inI0' ( in 4-component vector of int)
0:?     Sequence
0:199      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:158  Function Definition: ComputeShaderFunction( ( temp void)
0:158    Function Parameters: 
0:?     Sequence
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF0' ( temp 4-component vector of float)
0:?         'inF0' (layout( location=0) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF1' ( temp 4-component vector of float)
0:?         'inF1' (layout( location=1) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF2' ( temp 4-component vector of float)
0:?         'inF2' (layout( location=2) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of int)
0:?         'inI0' ( temp 4-component vector of int)
0:?         'inI0' (layout( location=3) in 4-component vector of int)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:158        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:?           'inF0' ( temp 4-component vector of float)
0:?           'inF1' ( temp 4-component vector of float)
0:?           'inF2' ( temp 4-component vector of float)
0:?           'inI0' ( temp 4-component vector of int)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'inF0' (layout( location=0) in 4-component vector of float)
0:?     'inF1' (layout( location=1) in 4-component vector of float)
0:?     'inF2' (layout( location=2) in 4-component vector of float)
0:?     'inI0' (layout( location=3) in 4-component vector of int)


Linked compute stage:


Shader version: 500
local_size = (1, 1, 1)
0:? Sequence
0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
0:2    Function Parameters: 
0:2      'inF0' ( in float)
0:2      'inF1' ( in float)
0:2      'inF2' ( in float)
0:2      'inI0' ( in int)
0:?     Sequence
0:53      Branch: Return with expression
0:53        Constant:
0:53          0.000000
0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float)
0:57    Function Parameters: 
0:57      'inF0' ( in 1-component vector of float)
0:57      'inF1' ( in 1-component vector of float)
0:57      'inF2' ( in 1-component vector of float)
0:57      'inI0' ( in 1-component vector of int)
0:?     Sequence
0:62      Branch: Return with expression
0:62        Constant:
0:62          0.000000
0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float)
0:66    Function Parameters: 
0:66      'inF0' ( in 2-component vector of float)
0:66      'inF1' ( in 2-component vector of float)
0:66      'inF2' ( in 2-component vector of float)
0:66      'inI0' ( in 2-component vector of int)
0:?     Sequence
0:109      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
0:113    Function Parameters: 
0:113      'inF0' ( in 3-component vector of float)
0:113      'inF1' ( in 3-component vector of float)
0:113      'inF2' ( in 3-component vector of float)
0:113      'inI0' ( in 3-component vector of int)
0:?     Sequence
0:154      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:158  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:158    Function Parameters: 
0:158      'inF0' ( in 4-component vector of float)
0:158      'inF1' ( in 4-component vector of float)
0:158      'inF2' ( in 4-component vector of float)
0:158      'inI0' ( in 4-component vector of int)
0:?     Sequence
0:199      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:158  Function Definition: ComputeShaderFunction( ( temp void)
0:158    Function Parameters: 
0:?     Sequence
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF0' ( temp 4-component vector of float)
0:?         'inF0' (layout( location=0) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF1' ( temp 4-component vector of float)
0:?         'inF1' (layout( location=1) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         'inF2' ( temp 4-component vector of float)
0:?         'inF2' (layout( location=2) in 4-component vector of float)
0:158      move second child to first child ( temp 4-component vector of int)
0:?         'inI0' ( temp 4-component vector of int)
0:?         'inI0' (layout( location=3) in 4-component vector of int)
0:158      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:158        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
0:?           'inF0' ( temp 4-component vector of float)
0:?           'inF1' ( temp 4-component vector of float)
0:?           'inF2' ( temp 4-component vector of float)
0:?           'inI0' ( temp 4-component vector of int)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'inF0' (layout( location=0) in 4-component vector of float)
0:?     'inF1' (layout( location=1) in 4-component vector of float)
0:?     'inF2' (layout( location=2) in 4-component vector of float)
0:?     'inI0' (layout( location=3) in 4-component vector of int)

// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 99

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "ComputeShaderFunction" 76 79 82 86 89
                              ExecutionMode 4 LocalSize 1 1 1
                              Source HLSL 500
                              Name 4  "ComputeShaderFunction"
                              Name 15  "ComputeShaderFunctionS(f1;f1;f1;i1;"
                              Name 11  "inF0"
                              Name 12  "inF1"
                              Name 13  "inF2"
                              Name 14  "inI0"
                              Name 21  "ComputeShaderFunction1(vf1;vf1;vf1;vi1;"
                              Name 17  "inF0"
                              Name 18  "inF1"
                              Name 19  "inF2"
                              Name 20  "inI0"
                              Name 32  "ComputeShaderFunction2(vf2;vf2;vf2;vi2;"
                              Name 28  "inF0"
                              Name 29  "inF1"
                              Name 30  "inF2"
                              Name 31  "inI0"
                              Name 43  "ComputeShaderFunction3(vf3;vf3;vf3;vi3;"
                              Name 39  "inF0"
                              Name 40  "inF1"
                              Name 41  "inF2"
                              Name 42  "inI0"
                              Name 54  "@ComputeShaderFunction(vf4;vf4;vf4;vi4;"
                              Name 50  "inF0"
                              Name 51  "inF1"
                              Name 52  "inF2"
                              Name 53  "inI0"
                              Name 74  "inF0"
                              Name 76  "inF0"
                              Name 78  "inF1"
                              Name 79  "inF1"
                              Name 81  "inF2"
                              Name 82  "inF2"
                              Name 84  "inI0"
                              Name 86  "inI0"
                              Name 89  "@entryPointOutput"
                              Name 90  "param"
                              Name 92  "param"
                              Name 94  "param"
                              Name 96  "param"
                              Decorate 76(inF0) Location 0
                              Decorate 79(inF1) Location 1
                              Decorate 82(inF2) Location 2
                              Decorate 86(inI0) Location 3
                              Decorate 89(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeInt 32 1
               9:             TypePointer Function 8(int)
              10:             TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr)
              23:             TypeVector 6(float) 2
              24:             TypePointer Function 23(fvec2)
              25:             TypeVector 8(int) 2
              26:             TypePointer Function 25(ivec2)
              27:             TypeFunction 23(fvec2) 24(ptr) 24(ptr) 24(ptr) 26(ptr)
              34:             TypeVector 6(float) 3
              35:             TypePointer Function 34(fvec3)
              36:             TypeVector 8(int) 3
              37:             TypePointer Function 36(ivec3)
              38:             TypeFunction 34(fvec3) 35(ptr) 35(ptr) 35(ptr) 37(ptr)
              45:             TypeVector 6(float) 4
              46:             TypePointer Function 45(fvec4)
              47:             TypeVector 8(int) 4
              48:             TypePointer Function 47(ivec4)
              49:             TypeFunction 45(fvec4) 46(ptr) 46(ptr) 46(ptr) 48(ptr)
              56:    6(float) Constant 0
              61:    6(float) Constant 1065353216
              62:    6(float) Constant 1073741824
              63:   23(fvec2) ConstantComposite 61 62
              66:    6(float) Constant 1077936128
              67:   34(fvec3) ConstantComposite 61 62 66
              70:    6(float) Constant 1082130432
              71:   45(fvec4) ConstantComposite 61 62 66 70
              75:             TypePointer Input 45(fvec4)
        76(inF0):     75(ptr) Variable Input
        79(inF1):     75(ptr) Variable Input
        82(inF2):     75(ptr) Variable Input
              85:             TypePointer Input 47(ivec4)
        86(inI0):     85(ptr) Variable Input
              88:             TypePointer Output 45(fvec4)
89(@entryPointOutput):     88(ptr) Variable Output
4(ComputeShaderFunction):           2 Function None 3
               5:             Label
        74(inF0):     46(ptr) Variable Function
        78(inF1):     46(ptr) Variable Function
        81(inF2):     46(ptr) Variable Function
        84(inI0):     48(ptr) Variable Function
       90(param):     46(ptr) Variable Function
       92(param):     46(ptr) Variable Function
       94(param):     46(ptr) Variable Function
       96(param):     48(ptr) Variable Function
              77:   45(fvec4) Load 76(inF0)
                              Store 74(inF0) 77
              80:   45(fvec4) Load 79(inF1)
                              Store 78(inF1) 80
              83:   45(fvec4) Load 82(inF2)
                              Store 81(inF2) 83
              87:   47(ivec4) Load 86(inI0)
                              Store 84(inI0) 87
              91:   45(fvec4) Load 74(inF0)
                              Store 90(param) 91
              93:   45(fvec4) Load 78(inF1)
                              Store 92(param) 93
              95:   45(fvec4) Load 81(inF2)
                              Store 94(param) 95
              97:   47(ivec4) Load 84(inI0)
                              Store 96(param) 97
              98:   45(fvec4) FunctionCall 54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;) 90(param) 92(param) 94(param) 96(param)
                              Store 89(@entryPointOutput) 98
                              Return
                              FunctionEnd
15(ComputeShaderFunctionS(f1;f1;f1;i1;):    6(float) Function None 10
        11(inF0):      7(ptr) FunctionParameter
        12(inF1):      7(ptr) FunctionParameter
        13(inF2):      7(ptr) FunctionParameter
        14(inI0):      9(ptr) FunctionParameter
              16:             Label
                              ReturnValue 56
                              FunctionEnd
21(ComputeShaderFunction1(vf1;vf1;vf1;vi1;):    6(float) Function None 10
        17(inF0):      7(ptr) FunctionParameter
        18(inF1):      7(ptr) FunctionParameter
        19(inF2):      7(ptr) FunctionParameter
        20(inI0):      9(ptr) FunctionParameter
              22:             Label
                              ReturnValue 56
                              FunctionEnd
32(ComputeShaderFunction2(vf2;vf2;vf2;vi2;):   23(fvec2) Function None 27
        28(inF0):     24(ptr) FunctionParameter
        29(inF1):     24(ptr) FunctionParameter
        30(inF2):     24(ptr) FunctionParameter
        31(inI0):     26(ptr) FunctionParameter
              33:             Label
                              ReturnValue 63
                              FunctionEnd
43(ComputeShaderFunction3(vf3;vf3;vf3;vi3;):   34(fvec3) Function None 38
        39(inF0):     35(ptr) FunctionParameter
        40(inF1):     35(ptr) FunctionParameter
        41(inF2):     35(ptr) FunctionParameter
        42(inI0):     37(ptr) FunctionParameter
              44:             Label
                              ReturnValue 67
                              FunctionEnd
54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;):   45(fvec4) Function None 49
        50(inF0):     46(ptr) FunctionParameter
        51(inF1):     46(ptr) FunctionParameter
        52(inF2):     46(ptr) FunctionParameter
        53(inI0):     48(ptr) FunctionParameter
              55:             Label
                              ReturnValue 71
                              FunctionEnd
