hlsl.intrinsic.frexp.vert
Shader version: 500
0:? Sequence
0:2  Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
0:2    Function Parameters: 
0:2      'inF0' ( in float)
0:2      'inF1' ( in float)
0:?     Sequence
0:3      frexp ( temp float)
0:3        'inF0' ( in float)
0:3        'inF1' ( in float)
0:4      Branch: Return with expression
0:4        Constant:
0:4          0.000000
0:8  Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
0:8    Function Parameters: 
0:8      'inF0' ( in 2-component vector of float)
0:8      'inF1' ( in 2-component vector of float)
0:?     Sequence
0:9      frexp ( temp 2-component vector of float)
0:9        'inF0' ( in 2-component vector of float)
0:9        'inF1' ( in 2-component vector of float)
0:10      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:14  Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
0:14    Function Parameters: 
0:14      'inF0' ( in 3-component vector of float)
0:14      'inF1' ( in 3-component vector of float)
0:?     Sequence
0:15      frexp ( temp 3-component vector of float)
0:15        'inF0' ( in 3-component vector of float)
0:15        'inF1' ( in 3-component vector of float)
0:16      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:20  Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'inF0' ( in 4-component vector of float)
0:20      'inF1' ( in 4-component vector of float)
0:?     Sequence
0:21      frexp ( temp 4-component vector of float)
0:21        'inF0' ( in 4-component vector of float)
0:21        'inF1' ( in 4-component vector of float)
0:22      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:29  Function Definition: @main( ( temp void)
0:29    Function Parameters: 
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      Function Call: @main( ( temp void)
0:?   Linker Objects


Linked vertex stage:


Shader version: 500
0:? Sequence
0:2  Function Definition: VertexShaderFunctionS(f1;f1; ( temp float)
0:2    Function Parameters: 
0:2      'inF0' ( in float)
0:2      'inF1' ( in float)
0:?     Sequence
0:3      frexp ( temp float)
0:3        'inF0' ( in float)
0:3        'inF1' ( in float)
0:4      Branch: Return with expression
0:4        Constant:
0:4          0.000000
0:8  Function Definition: VertexShaderFunction2(vf2;vf2; ( temp 2-component vector of float)
0:8    Function Parameters: 
0:8      'inF0' ( in 2-component vector of float)
0:8      'inF1' ( in 2-component vector of float)
0:?     Sequence
0:9      frexp ( temp 2-component vector of float)
0:9        'inF0' ( in 2-component vector of float)
0:9        'inF1' ( in 2-component vector of float)
0:10      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:14  Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
0:14    Function Parameters: 
0:14      'inF0' ( in 3-component vector of float)
0:14      'inF1' ( in 3-component vector of float)
0:?     Sequence
0:15      frexp ( temp 3-component vector of float)
0:15        'inF0' ( in 3-component vector of float)
0:15        'inF1' ( in 3-component vector of float)
0:16      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:20  Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
0:20    Function Parameters: 
0:20      'inF0' ( in 4-component vector of float)
0:20      'inF1' ( in 4-component vector of float)
0:?     Sequence
0:21      frexp ( temp 4-component vector of float)
0:21        'inF0' ( in 4-component vector of float)
0:21        'inF1' ( in 4-component vector of float)
0:22      Branch: Return with expression
0:?         Constant:
0:?           1.000000
0:?           2.000000
0:?           3.000000
0:?           4.000000
0:29  Function Definition: @main( ( temp void)
0:29    Function Parameters: 
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      Function Call: @main( ( temp void)
0:?   Linker Objects

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Source HLSL 500
                              Name 4  "main"
                              Name 11  "VertexShaderFunctionS(f1;f1;"
                              Name 9  "inF0"
                              Name 10  "inF1"
                              Name 18  "VertexShaderFunction2(vf2;vf2;"
                              Name 16  "inF0"
                              Name 17  "inF1"
                              Name 25  "VertexShaderFunction3(vf3;vf3;"
                              Name 23  "inF0"
                              Name 24  "inF1"
                              Name 32  "VertexShaderFunction4(vf4;vf4;"
                              Name 30  "inF0"
                              Name 31  "inF1"
                              Name 34  "@main("
                              Name 38  "ResType"
                              Name 48  "ResType"
                              Name 60  "ResType"
                              Name 71  "ResType"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 6(float) 7(ptr) 7(ptr)
              13:             TypeVector 6(float) 2
              14:             TypePointer Function 13(fvec2)
              15:             TypeFunction 13(fvec2) 14(ptr) 14(ptr)
              20:             TypeVector 6(float) 3
              21:             TypePointer Function 20(fvec3)
              22:             TypeFunction 20(fvec3) 21(ptr) 21(ptr)
              27:             TypeVector 6(float) 4
              28:             TypePointer Function 27(fvec4)
              29:             TypeFunction 27(fvec4) 28(ptr) 28(ptr)
              37:             TypeInt 32 1
     38(ResType):             TypeStruct 6(float) 37(int)
              43:    6(float) Constant 0
              47:             TypeVector 37(int) 2
     48(ResType):             TypeStruct 13(fvec2) 47(ivec2)
              53:    6(float) Constant 1065353216
              54:    6(float) Constant 1073741824
              55:   13(fvec2) ConstantComposite 53 54
              59:             TypeVector 37(int) 3
     60(ResType):             TypeStruct 20(fvec3) 59(ivec3)
              65:    6(float) Constant 1077936128
              66:   20(fvec3) ConstantComposite 53 54 65
              70:             TypeVector 37(int) 4
     71(ResType):             TypeStruct 27(fvec4) 70(ivec4)
              76:    6(float) Constant 1082130432
              77:   27(fvec4) ConstantComposite 53 54 65 76
         4(main):           2 Function None 3
               5:             Label
              80:           2 FunctionCall 34(@main()
                              Return
                              FunctionEnd
11(VertexShaderFunctionS(f1;f1;):    6(float) Function None 8
         9(inF0):      7(ptr) FunctionParameter
        10(inF1):      7(ptr) FunctionParameter
              12:             Label
              36:    6(float) Load 9(inF0)
              39: 38(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 36
              40:     37(int) CompositeExtract 39 1
              41:    6(float) ConvertSToF 40
                              Store 10(inF1) 41
              42:    6(float) CompositeExtract 39 0
                              ReturnValue 43
                              FunctionEnd
18(VertexShaderFunction2(vf2;vf2;):   13(fvec2) Function None 15
        16(inF0):     14(ptr) FunctionParameter
        17(inF1):     14(ptr) FunctionParameter
              19:             Label
              46:   13(fvec2) Load 16(inF0)
              49: 48(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 46
              50:   47(ivec2) CompositeExtract 49 1
              51:   13(fvec2) ConvertSToF 50
                              Store 17(inF1) 51
              52:   13(fvec2) CompositeExtract 49 0
                              ReturnValue 55
                              FunctionEnd
25(VertexShaderFunction3(vf3;vf3;):   20(fvec3) Function None 22
        23(inF0):     21(ptr) FunctionParameter
        24(inF1):     21(ptr) FunctionParameter
              26:             Label
              58:   20(fvec3) Load 23(inF0)
              61: 60(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 58
              62:   59(ivec3) CompositeExtract 61 1
              63:   20(fvec3) ConvertSToF 62
                              Store 24(inF1) 63
              64:   20(fvec3) CompositeExtract 61 0
                              ReturnValue 66
                              FunctionEnd
32(VertexShaderFunction4(vf4;vf4;):   27(fvec4) Function None 29
        30(inF0):     28(ptr) FunctionParameter
        31(inF1):     28(ptr) FunctionParameter
              33:             Label
              69:   27(fvec4) Load 30(inF0)
              72: 71(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 69
              73:   70(ivec4) CompositeExtract 72 1
              74:   27(fvec4) ConvertSToF 73
                              Store 31(inF1) 74
              75:   27(fvec4) CompositeExtract 72 0
                              ReturnValue 77
                              FunctionEnd
      34(@main():           2 Function None 3
              35:             Label
                              Return
                              FunctionEnd
