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:10        Constant:
0:10          1.000000
0:10          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:16        Constant:
0:16          1.000000
0:16          2.000000
0:16          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:22        Constant:
0:22          1.000000
0:22          2.000000
0:22          3.000000
0:22          4.000000
0:?   Linker Objects


Linked vertex stage:

WARNING: Linking vertex stage: Entry point not found

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:10        Constant:
0:10          1.000000
0:10          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:16        Constant:
0:16          1.000000
0:16          2.000000
0:16          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:22        Constant:
0:22          1.000000
0:22          2.000000
0:22          3.000000
0:22          4.000000
0:?   Linker Objects

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 78

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