hlsl.intrinsics.negative.comp
Shader version: 450
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' (layout(location=0 ) in 4-component vector of float)
0:158      'inF1' (layout(location=1 ) in 4-component vector of float)
0:158      'inF2' (layout(location=2 ) in 4-component vector of float)
0:158      'inI0' (layout(location=3 ) in 4-component vector of int)
0:?     Sequence
0:199      Sequence
0:199        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             2.000000
0:?             3.000000
0:?             4.000000
0:199        Branch: Return
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: 450
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' (layout(location=0 ) in 4-component vector of float)
0:158      'inF1' (layout(location=1 ) in 4-component vector of float)
0:158      'inF2' (layout(location=2 ) in 4-component vector of float)
0:158      'inI0' (layout(location=3 ) in 4-component vector of int)
0:?     Sequence
0:199      Sequence
0:199        move second child to first child (temp 4-component vector of float)
0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:?           Constant:
0:?             1.000000
0:?             2.000000
0:?             3.000000
0:?             4.000000
0:199        Branch: Return
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): 80001
// Id's are bound by 72

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "ComputeShaderFunction" 61 66 67 68 71
                              ExecutionMode 4 LocalSize 1 1 1
                              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 61  "@entryPointOutput"
                              Name 66  "inF0"
                              Name 67  "inF1"
                              Name 68  "inF2"
                              Name 71  "inI0"
                              Decorate 61(@entryPointOutput) Location 0
                              Decorate 66(inF0) Location 0
                              Decorate 67(inF1) Location 1
                              Decorate 68(inF2) Location 2
                              Decorate 71(inI0) Location 3
               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:    6(float) Constant 0
              50:    6(float) Constant 1065353216
              51:    6(float) Constant 1073741824
              52:   23(fvec2) ConstantComposite 50 51
              55:    6(float) Constant 1077936128
              56:   34(fvec3) ConstantComposite 50 51 55
              59:             TypeVector 6(float) 4
              60:             TypePointer Output 59(fvec4)
61(@entryPointOutput):     60(ptr) Variable Output
              62:    6(float) Constant 1082130432
              63:   59(fvec4) ConstantComposite 50 51 55 62
              65:             TypePointer Input 59(fvec4)
        66(inF0):     65(ptr) Variable Input
        67(inF1):     65(ptr) Variable Input
        68(inF2):     65(ptr) Variable Input
              69:             TypeVector 8(int) 4
              70:             TypePointer Input 69(ivec4)
        71(inI0):     70(ptr) Variable Input
4(ComputeShaderFunction):           2 Function None 3
               5:             Label
                              Store 61(@entryPointOutput) 63
                              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 45
                              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 45
                              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 52
                              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 56
                              FunctionEnd
