Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
86b510ef
Commit
86b510ef
authored
Feb 27, 2017
by
steve-lunarg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP: HLSL: add f16tof32 and f32tof16 decompositions.
parent
42e33c9b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1079 additions
and
177 deletions
+1079
-177
hlsl.intrinsics.f1632.frag.out
Test/baseResults/hlsl.intrinsics.f1632.frag.out
+353
-118
hlsl.intrinsics.f3216.frag.out
Test/baseResults/hlsl.intrinsics.f3216.frag.out
+401
-0
hlsl.intrinsics.negative.frag.out
Test/baseResults/hlsl.intrinsics.negative.frag.out
+181
-37
hlsl.intrinsics.f1632.frag
Test/hlsl.intrinsics.f1632.frag
+14
-19
hlsl.intrinsics.f3216.frag
Test/hlsl.intrinsics.f3216.frag
+29
-0
Hlsl.FromFile.cpp
gtests/Hlsl.FromFile.cpp
+2
-1
hlslParseHelper.cpp
hlsl/hlslParseHelper.cpp
+99
-2
No files found.
Test/baseResults/hlsl.intrinsics.f1632.frag.out
View file @
86b510ef
hlsl.intrinsics.f1632.frag
ERROR: 0:3: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:16: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:23: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:30: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 4 compilation errors. No code generated.
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:2 Function Definition: PixelShaderFunctionS(
f
1; (temp float)
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(
u
1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:2 'inF0' (in uint)
0:? Sequence
0:3 Branch: Return with expression
0:3 direct index (temp float)
0:3 unpackHalf2x16 (temp 2-component vector of float)
0:3 'inF0' (in uint)
0:3 Constant:
0:3 0.000000
0:7 Function Definition: PixelShaderFunction1(vu1; (temp 1-component vector of float)
0:7 Function Parameters:
0:7 'inF0' (in 1-component vector of uint)
0:? Sequence
0:3 ERROR: Bad unary op
(temp uint)
0:3 'inF0' (in float)
0:5 Branch: Return with expression
0:5 Constant:
0:5 0.000000
0:9 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of float)
0:9 Function Parameters:
0:9 'inF0' (in 1-component vector of float)
0:8 Branch: Return with expression
0:8 Constant:
0:8 0.000000
0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float)
0:12 Function Parameters:
0:12 'inF0' (in 2-component vector of uint)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:13 Branch: Return with expression
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
0:13 'inF0' (in 2-component vector of uint)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
0:13 'inF0' (in 2-component vector of uint)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0.000000
0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of uint)
0:? Sequence
0:16 ERROR: Bad unary op
(temp 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float)
0:18 Construct vec3 (temp 3-component vector of float)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0.000000
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0.000000
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 0.000000
0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in
3-component vector of floa
t)
0:22 'inF0' (in
4-component vector of uin
t)
0:? Sequence
0:23 ERROR: Bad unary op
(temp 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:23 Branch: Return with expression
0:23 Construct vec4 (temp 4-component vector of float)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
0:23 0.000000
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
0:30 ERROR: Bad unary op
(temp 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:29 Function Definition: PixelShaderFunction( (temp void)
0:29 Function Parameters:
0:28 Branch: Return with expression
0:28 Constant:
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:27 Function Definition: main( (temp void)
0:27 Function Parameters:
0:? Sequence
0:29 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:29 move second child to first child (temp 4-component vector of float)
0:27 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:29 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:? 'inF0' (temp 4-component vector of float)
0:27 Function Call: @main( (temp 4-component vector of float)
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)
Linked fragment stage:
...
...
@@ -82,72 +133,256 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:2 Function Definition: PixelShaderFunctionS(
f
1; (temp float)
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(
u
1; (temp float)
0:2 Function Parameters:
0:2 'inF0' (in
floa
t)
0:2 'inF0' (in
uin
t)
0:? Sequence
0:3
ERROR: Bad unary op
(temp uin
t)
0:3
'inF0' (in
float)
0:
5 Branch: Return with expression
0:
5
Constant:
0:
5
0.000000
0:
9 Function Definition: PixelShaderFunction1(vf
1; (temp 1-component vector of float)
0:
9
Function Parameters:
0:
9 'inF0' (in 1-component vector of floa
t)
0:3
Branch: Return with expression
0:3 direct index (temp floa
t)
0:3
unpackHalf2x16 (temp 2-component vector of
float)
0:
3 'inF0' (in uint)
0:
3
Constant:
0:
3
0.000000
0:
7 Function Definition: PixelShaderFunction1(vu
1; (temp 1-component vector of float)
0:
7
Function Parameters:
0:
7 'inF0' (in 1-component vector of uin
t)
0:? Sequence
0:11 Branch: Return with expression
0:11 Constant:
0:11 0.000000
0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
0:15 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
0:8 Branch: Return with expression
0:8 Constant:
0:8 0.000000
0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float)
0:12 Function Parameters:
0:12 'inF0' (in 2-component vector of uint)
0:? Sequence
0:13 Branch: Return with expression
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
0:13 'inF0' (in 2-component vector of uint)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 direct index (temp float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:13 direct index (temp uint)
0:13 'inF0' (in 2-component vector of uint)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0.000000
0:17 Function Definition: PixelShaderFunction3(vu3; (temp 3-component vector of float)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of uint)
0:? Sequence
0:16 ERROR: Bad unary op
(temp 2-component vector of uint)
0:16 'inF0' (in 2-component vector of float)
0:18 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of float)
0:18 Construct vec3 (temp 3-component vector of float)
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0.000000
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0.000000
0:18 direct index (temp float)
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:18 direct index (temp uint)
0:18 'inF0' (in 3-component vector of uint)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 0.000000
0:22 Function Definition: PixelShaderFunction(vu4; (temp 4-component vector of float)
0:22 Function Parameters:
0:22 'inF0' (in
3-component vector of floa
t)
0:22 'inF0' (in
4-component vector of uin
t)
0:? Sequence
0:23 ERROR: Bad unary op
(temp 3-component vector of uint)
0:23 'inF0' (in 3-component vector of float)
0:25 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:29 Function Parameters:
0:29 'inF0' (in 4-component vector of float)
0:23 Branch: Return with expression
0:23 Construct vec4 (temp 4-component vector of float)
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0.000000
0:23 direct index (temp float)
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:23 direct index (temp uint)
0:23 'inF0' (in 4-component vector of uint)
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
0:23 0.000000
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
0:30 ERROR: Bad unary op
(temp 4-component vector of uint)
0:30 'inF0' (in 4-component vector of float)
0:32 Branch: Return with expression
0:? Constant:
0:? 1.000000
0:? 2.000000
0:? 3.000000
0:? 4.000000
0:29 Function Definition: PixelShaderFunction( (temp void)
0:29 Function Parameters:
0:28 Branch: Return with expression
0:28 Constant:
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:27 Function Definition: main( (temp void)
0:27 Function Parameters:
0:? Sequence
0:29 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:29 move second child to first child (temp 4-component vector of float)
0:27 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:29 Function Call: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:? 'inF0' (temp 4-component vector of float)
0:27 Function Call: @main( (temp 4-component vector of float)
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)
SPIR-V is not generated for failed compile or link
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 103
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 101
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 11 "PixelShaderFunctionS(u1;"
Name 10 "inF0"
Name 14 "PixelShaderFunction1(vu1;"
Name 13 "inF0"
Name 21 "PixelShaderFunction2(vu2;"
Name 20 "inF0"
Name 28 "PixelShaderFunction3(vu3;"
Name 27 "inF0"
Name 35 "PixelShaderFunction(vu4;"
Name 34 "inF0"
Name 38 "@main("
Name 101 "@entryPointOutput"
Decorate 101(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
8: TypeFloat 32
9: TypeFunction 8(float) 7(ptr)
16: TypeVector 6(int) 2
17: TypePointer Function 16(ivec2)
18: TypeVector 8(float) 2
19: TypeFunction 18(fvec2) 17(ptr)
23: TypeVector 6(int) 3
24: TypePointer Function 23(ivec3)
25: TypeVector 8(float) 3
26: TypeFunction 25(fvec3) 24(ptr)
30: TypeVector 6(int) 4
31: TypePointer Function 30(ivec4)
32: TypeVector 8(float) 4
33: TypeFunction 32(fvec4) 31(ptr)
37: TypeFunction 32(fvec4)
42: 6(int) Constant 0
46: 8(float) Constant 0
53: 6(int) Constant 1
69: 6(int) Constant 2
89: 6(int) Constant 3
97: 32(fvec4) ConstantComposite 46 46 46 46
100: TypePointer Output 32(fvec4)
101(@entryPointOutput): 100(ptr) Variable Output
4(main): 2 Function None 3
5: Label
102: 32(fvec4) FunctionCall 38(@main()
Store 101(@entryPointOutput) 102
Return
FunctionEnd
11(PixelShaderFunctionS(u1;): 8(float) Function None 9
10(inF0): 7(ptr) FunctionParameter
12: Label
40: 6(int) Load 10(inF0)
41: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 40
43: 8(float) CompositeExtract 41 0
ReturnValue 43
FunctionEnd
14(PixelShaderFunction1(vu1;): 8(float) Function None 9
13(inF0): 7(ptr) FunctionParameter
15: Label
ReturnValue 46
FunctionEnd
21(PixelShaderFunction2(vu2;): 18(fvec2) Function None 19
20(inF0): 17(ptr) FunctionParameter
22: Label
49: 7(ptr) AccessChain 20(inF0) 42
50: 6(int) Load 49
51: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 50
52: 8(float) CompositeExtract 51 0
54: 7(ptr) AccessChain 20(inF0) 53
55: 6(int) Load 54
56: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 55
57: 8(float) CompositeExtract 56 0
58: 18(fvec2) CompositeConstruct 52 57
ReturnValue 58
FunctionEnd
28(PixelShaderFunction3(vu3;): 25(fvec3) Function None 26
27(inF0): 24(ptr) FunctionParameter
29: Label
61: 7(ptr) AccessChain 27(inF0) 42
62: 6(int) Load 61
63: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 62
64: 8(float) CompositeExtract 63 0
65: 7(ptr) AccessChain 27(inF0) 53
66: 6(int) Load 65
67: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 66
68: 8(float) CompositeExtract 67 0
70: 7(ptr) AccessChain 27(inF0) 69
71: 6(int) Load 70
72: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 71
73: 8(float) CompositeExtract 72 0
74: 25(fvec3) CompositeConstruct 64 68 73
ReturnValue 74
FunctionEnd
35(PixelShaderFunction(vu4;): 32(fvec4) Function None 33
34(inF0): 31(ptr) FunctionParameter
36: Label
77: 7(ptr) AccessChain 34(inF0) 42
78: 6(int) Load 77
79: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 78
80: 8(float) CompositeExtract 79 0
81: 7(ptr) AccessChain 34(inF0) 53
82: 6(int) Load 81
83: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 82
84: 8(float) CompositeExtract 83 0
85: 7(ptr) AccessChain 34(inF0) 69
86: 6(int) Load 85
87: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 86
88: 8(float) CompositeExtract 87 0
90: 7(ptr) AccessChain 34(inF0) 89
91: 6(int) Load 90
92: 18(fvec2) ExtInst 1(GLSL.std.450) 62(UnpackHalf2x16) 91
93: 8(float) CompositeExtract 92 0
94: 32(fvec4) CompositeConstruct 80 84 88 93
ReturnValue 94
FunctionEnd
38(@main(): 32(fvec4) Function None 37
39: Label
ReturnValue 97
FunctionEnd
Test/baseResults/hlsl.intrinsics.f3216.frag.out
0 → 100644
View file @
86b510ef
hlsl.intrinsics.f3216.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(f1; (temp uint)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 Branch: Return with expression
0:3 packHalf2x16 (temp uint)
0:3 Construct vec2 (temp 2-component vector of float)
0:3 'inF0' (in float)
0:3 Constant:
0:3 0.000000
0:7 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of uint)
0:7 Function Parameters:
0:7 'inF0' (in 1-component vector of float)
0:? Sequence
0:8 Branch: Return with expression
0:8 Construct uint (temp 1-component vector of uint)
0:8 packHalf2x16 (temp uint)
0:8 Construct vec2 (temp 2-component vector of float)
0:8 Construct float (in float)
0:8 'inF0' (in 1-component vector of float)
0:8 Constant:
0:8 0.000000
0:12 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of uint)
0:12 Function Parameters:
0:12 'inF0' (in 2-component vector of float)
0:? Sequence
0:13 Branch: Return with expression
0:13 Construct uvec2 (temp 2-component vector of uint)
0:13 packHalf2x16 (temp uint)
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 'inF0' (in 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 packHalf2x16 (temp uint)
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 'inF0' (in 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0.000000
0:17 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of uint)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of float)
0:? Sequence
0:18 Branch: Return with expression
0:18 Construct uvec3 (temp 3-component vector of uint)
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0.000000
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0.000000
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 0.000000
0:22 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of uint)
0:22 Function Parameters:
0:22 'inF0' (in 4-component vector of float)
0:? Sequence
0:23 Branch: Return with expression
0:23 Construct uvec4 (temp 4-component vector of uint)
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
0:23 0.000000
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
0:28 Branch: Return with expression
0:28 Constant:
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:27 Function Definition: main( (temp void)
0:27 Function Parameters:
0:? Sequence
0:27 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:27 Function Call: @main( (temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(f1; (temp uint)
0:2 Function Parameters:
0:2 'inF0' (in float)
0:? Sequence
0:3 Branch: Return with expression
0:3 packHalf2x16 (temp uint)
0:3 Construct vec2 (temp 2-component vector of float)
0:3 'inF0' (in float)
0:3 Constant:
0:3 0.000000
0:7 Function Definition: PixelShaderFunction1(vf1; (temp 1-component vector of uint)
0:7 Function Parameters:
0:7 'inF0' (in 1-component vector of float)
0:? Sequence
0:8 Branch: Return with expression
0:8 Construct uint (temp 1-component vector of uint)
0:8 packHalf2x16 (temp uint)
0:8 Construct vec2 (temp 2-component vector of float)
0:8 Construct float (in float)
0:8 'inF0' (in 1-component vector of float)
0:8 Constant:
0:8 0.000000
0:12 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of uint)
0:12 Function Parameters:
0:12 'inF0' (in 2-component vector of float)
0:? Sequence
0:13 Branch: Return with expression
0:13 Construct uvec2 (temp 2-component vector of uint)
0:13 packHalf2x16 (temp uint)
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 'inF0' (in 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 packHalf2x16 (temp uint)
0:13 Construct vec2 (temp 2-component vector of float)
0:13 direct index (temp float)
0:13 'inF0' (in 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0.000000
0:17 Function Definition: PixelShaderFunction3(vf3; (temp 3-component vector of uint)
0:17 Function Parameters:
0:17 'inF0' (in 3-component vector of float)
0:? Sequence
0:18 Branch: Return with expression
0:18 Construct uvec3 (temp 3-component vector of uint)
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0.000000
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0.000000
0:18 packHalf2x16 (temp uint)
0:18 Construct vec2 (temp 2-component vector of float)
0:18 direct index (temp float)
0:18 'inF0' (in 3-component vector of float)
0:18 Constant:
0:18 2 (const int)
0:18 Constant:
0:18 0.000000
0:22 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of uint)
0:22 Function Parameters:
0:22 'inF0' (in 4-component vector of float)
0:? Sequence
0:23 Branch: Return with expression
0:23 Construct uvec4 (temp 4-component vector of uint)
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 0 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 1 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 2 (const int)
0:23 Constant:
0:23 0.000000
0:23 packHalf2x16 (temp uint)
0:23 Construct vec2 (temp 2-component vector of float)
0:23 direct index (temp float)
0:23 'inF0' (in 4-component vector of float)
0:23 Constant:
0:23 3 (const int)
0:23 Constant:
0:23 0.000000
0:27 Function Definition: @main( (temp 4-component vector of float)
0:27 Function Parameters:
0:? Sequence
0:28 Branch: Return with expression
0:28 Constant:
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:28 0.000000
0:27 Function Definition: main( (temp void)
0:27 Function Parameters:
0:? Sequence
0:27 move second child to first child (temp 4-component vector of float)
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
0:27 Function Call: @main( (temp 4-component vector of float)
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 106
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 104
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 11 "PixelShaderFunctionS(f1;"
Name 10 "inF0"
Name 14 "PixelShaderFunction1(vf1;"
Name 13 "inF0"
Name 21 "PixelShaderFunction2(vf2;"
Name 20 "inF0"
Name 28 "PixelShaderFunction3(vf3;"
Name 27 "inF0"
Name 35 "PixelShaderFunction(vf4;"
Name 34 "inF0"
Name 38 "@main("
Name 104 "@entryPointOutput"
Decorate 104(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeInt 32 0
9: TypeFunction 8(int) 7(ptr)
16: TypeVector 6(float) 2
17: TypePointer Function 16(fvec2)
18: TypeVector 8(int) 2
19: TypeFunction 18(ivec2) 17(ptr)
23: TypeVector 6(float) 3
24: TypePointer Function 23(fvec3)
25: TypeVector 8(int) 3
26: TypeFunction 25(ivec3) 24(ptr)
30: TypeVector 6(float) 4
31: TypePointer Function 30(fvec4)
32: TypeVector 8(int) 4
33: TypeFunction 32(ivec4) 31(ptr)
37: TypeFunction 30(fvec4)
41: 6(float) Constant 0
51: 8(int) Constant 0
56: 8(int) Constant 1
72: 8(int) Constant 2
92: 8(int) Constant 3
100: 30(fvec4) ConstantComposite 41 41 41 41
103: TypePointer Output 30(fvec4)
104(@entryPointOutput): 103(ptr) Variable Output
4(main): 2 Function None 3
5: Label
105: 30(fvec4) FunctionCall 38(@main()
Store 104(@entryPointOutput) 105
Return
FunctionEnd
11(PixelShaderFunctionS(f1;): 8(int) Function None 9
10(inF0): 7(ptr) FunctionParameter
12: Label
40: 6(float) Load 10(inF0)
42: 16(fvec2) CompositeConstruct 40 41
43: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 42
ReturnValue 43
FunctionEnd
14(PixelShaderFunction1(vf1;): 8(int) Function None 9
13(inF0): 7(ptr) FunctionParameter
15: Label
46: 6(float) Load 13(inF0)
47: 16(fvec2) CompositeConstruct 46 41
48: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 47
ReturnValue 48
FunctionEnd
21(PixelShaderFunction2(vf2;): 18(ivec2) Function None 19
20(inF0): 17(ptr) FunctionParameter
22: Label
52: 7(ptr) AccessChain 20(inF0) 51
53: 6(float) Load 52
54: 16(fvec2) CompositeConstruct 53 41
55: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 54
57: 7(ptr) AccessChain 20(inF0) 56
58: 6(float) Load 57
59: 16(fvec2) CompositeConstruct 58 41
60: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 59
61: 18(ivec2) CompositeConstruct 55 60
ReturnValue 61
FunctionEnd
28(PixelShaderFunction3(vf3;): 25(ivec3) Function None 26
27(inF0): 24(ptr) FunctionParameter
29: Label
64: 7(ptr) AccessChain 27(inF0) 51
65: 6(float) Load 64
66: 16(fvec2) CompositeConstruct 65 41
67: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 66
68: 7(ptr) AccessChain 27(inF0) 56
69: 6(float) Load 68
70: 16(fvec2) CompositeConstruct 69 41
71: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 70
73: 7(ptr) AccessChain 27(inF0) 72
74: 6(float) Load 73
75: 16(fvec2) CompositeConstruct 74 41
76: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 75
77: 25(ivec3) CompositeConstruct 67 71 76
ReturnValue 77
FunctionEnd
35(PixelShaderFunction(vf4;): 32(ivec4) Function None 33
34(inF0): 31(ptr) FunctionParameter
36: Label
80: 7(ptr) AccessChain 34(inF0) 51
81: 6(float) Load 80
82: 16(fvec2) CompositeConstruct 81 41
83: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 82
84: 7(ptr) AccessChain 34(inF0) 56
85: 6(float) Load 84
86: 16(fvec2) CompositeConstruct 85 41
87: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 86
88: 7(ptr) AccessChain 34(inF0) 72
89: 6(float) Load 88
90: 16(fvec2) CompositeConstruct 89 41
91: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 90
93: 7(ptr) AccessChain 34(inF0) 92
94: 6(float) Load 93
95: 16(fvec2) CompositeConstruct 94 41
96: 8(int) ExtInst 1(GLSL.std.450) 58(PackHalf2x16) 95
97: 32(ivec4) CompositeConstruct 83 87 91 96
ReturnValue 97
FunctionEnd
38(@main(): 30(fvec4) Function None 37
39: Label
ReturnValue 100
FunctionEnd
Test/baseResults/hlsl.intrinsics.negative.frag.out
View file @
86b510ef
hlsl.intrinsics.negative.frag
ERROR: 0:10: 'determinant' : no matching overloaded function found
ERROR: 0:12: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:23: 'length' : ambiguous best function under implicit type conversion
ERROR: 0:25: 'normalize' : ambiguous best function under implicit type conversion
ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion
...
...
@@ -13,16 +12,13 @@ ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:49: 'cross' : no matching overloaded function found
ERROR: 0:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:51: 'determinant' : no matching overloaded function found
ERROR: 0:52: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:57: 'transpose' : no matching overloaded function found
ERROR: 0:64: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:67: 'determinant' : no matching overloaded function found
ERROR: 0:68: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:73: 'transpose' : no matching overloaded function found
ERROR: 0:81: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:84: 'determinant' : no matching overloaded function found
ERROR: 0:85: 'f32tof16' : unimplemented intrinsic: handle natively
ERROR: 0:90: 'transpose' : no matching overloaded function found
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:117: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
...
...
@@ -63,7 +59,7 @@ ERROR: 0:133: 'normalize' : no matching overloaded function found
ERROR: 0:133: 'reflect' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : no matching overloaded function found
ERROR: 6
4
compilation errors. No code generated.
ERROR: 6
0
compilation errors. No code generated.
Shader version: 450
...
...
@@ -111,10 +107,12 @@ ERROR: node is still EOpNull!
0:9 3 (const int)
0:10 Constant:
0:10 0.000000
0:12 ERROR: Bad unary op
(temp float)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 direct index (temp float)
0:12 unpackHalf2x16 (temp 2-component vector of float)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 Constant:
0:12 0.000000
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
...
...
@@ -195,10 +193,25 @@ ERROR: node is still EOpNull!
0:50 0.000000
0:51 Constant:
0:51 0.000000
0:52 ERROR: Bad unary op
(temp 2-component vector of float)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Construct vec2 (temp 2-component vector of float)
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Constant:
0:52 0 (const int)
0:52 Constant:
0:52 0.000000
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
0:52 0.000000
0:53 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (temp 2-component vector of uint)
0:53 'inF0' (in 2-component vector of float)
...
...
@@ -230,10 +243,34 @@ ERROR: node is still EOpNull!
0:66 0.000000
0:67 Constant:
0:67 0.000000
0:68 ERROR: Bad unary op
(temp 3-component vector of float)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Construct vec3 (temp 3-component vector of float)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 0 (const int)
0:68 Constant:
0:68 0.000000
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 0.000000
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 2 (const int)
0:68 Constant:
0:68 0.000000
0:69 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (temp 3-component vector of uint)
0:69 'inF0' (in 3-component vector of float)
...
...
@@ -269,10 +306,43 @@ ERROR: node is still EOpNull!
0:83 'inF1' (in 4-component vector of float)
0:84 Constant:
0:84 0.000000
0:85 ERROR: Bad unary op
(temp 4-component vector of float)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Construct vec4 (temp 4-component vector of float)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 0 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 1 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 2 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 3 (const int)
0:85 Constant:
0:85 0.000000
0:86 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (temp 4-component vector of uint)
0:86 'inF0' (in 4-component vector of float)
...
...
@@ -499,10 +569,12 @@ ERROR: node is still EOpNull!
0:9 3 (const int)
0:10 Constant:
0:10 0.000000
0:12 ERROR: Bad unary op
(temp float)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 direct index (temp float)
0:12 unpackHalf2x16 (temp 2-component vector of float)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 Constant:
0:12 0.000000
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
...
...
@@ -583,10 +655,25 @@ ERROR: node is still EOpNull!
0:50 0.000000
0:51 Constant:
0:51 0.000000
0:52 ERROR: Bad unary op
(temp 2-component vector of float)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Construct vec2 (temp 2-component vector of float)
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Constant:
0:52 0 (const int)
0:52 Constant:
0:52 0.000000
0:52 direct index (temp float)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 direct index (temp uint)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 'inF0' (in 2-component vector of float)
0:52 Constant:
0:52 1 (const int)
0:52 Constant:
0:52 0.000000
0:53 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (temp 2-component vector of uint)
0:53 'inF0' (in 2-component vector of float)
...
...
@@ -618,10 +705,34 @@ ERROR: node is still EOpNull!
0:66 0.000000
0:67 Constant:
0:67 0.000000
0:68 ERROR: Bad unary op
(temp 3-component vector of float)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Construct vec3 (temp 3-component vector of float)
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 0 (const int)
0:68 Constant:
0:68 0.000000
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 1 (const int)
0:68 Constant:
0:68 0.000000
0:68 direct index (temp float)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 direct index (temp uint)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 'inF0' (in 3-component vector of float)
0:68 Constant:
0:68 2 (const int)
0:68 Constant:
0:68 0.000000
0:69 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (temp 3-component vector of uint)
0:69 'inF0' (in 3-component vector of float)
...
...
@@ -657,10 +768,43 @@ ERROR: node is still EOpNull!
0:83 'inF1' (in 4-component vector of float)
0:84 Constant:
0:84 0.000000
0:85 ERROR: Bad unary op
(temp 4-component vector of float)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Construct vec4 (temp 4-component vector of float)
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 0 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 1 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 2 (const int)
0:85 Constant:
0:85 0.000000
0:85 direct index (temp float)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 direct index (temp uint)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 'inF0' (in 4-component vector of float)
0:85 Constant:
0:85 3 (const int)
0:85 Constant:
0:85 0.000000
0:86 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (temp 4-component vector of uint)
0:86 'inF0' (in 4-component vector of float)
...
...
Test/hlsl.intrinsics.f1632.frag
View file @
86b510ef
float
PixelShaderFunctionS
(
floa
t
inF0
)
float
PixelShaderFunctionS
(
uin
t
inF0
)
{
f32tof16
(
inF0
);
return
0
.
0
;
return
f16tof32
(
inF0
);
}
float1
PixelShaderFunction1
(
floa
t1
inF0
)
float1
PixelShaderFunction1
(
uin
t1
inF0
)
{
// TODO: ... add when float1 prototypes are generated
return
0
.
0
;
return
f16tof32
(
inF0
);
}
float2
PixelShaderFunction2
(
floa
t2
inF0
)
float2
PixelShaderFunction2
(
uin
t2
inF0
)
{
f32tof16
(
inF0
);
return
float2
(
1
,
2
);
return
f16tof32
(
inF0
);
}
float3
PixelShaderFunction3
(
floa
t3
inF0
)
float3
PixelShaderFunction3
(
uin
t3
inF0
)
{
f32tof16
(
inF0
);
return
float3
(
1
,
2
,
3
);
return
f16tof32
(
inF0
);
}
float4
PixelShaderFunction
(
floa
t4
inF0
)
float4
PixelShaderFunction
(
uin
t4
inF0
)
{
f32tof16
(
inF0
);
return
float4
(
1
,
2
,
3
,
4
);
return
f16tof32
(
inF0
);
}
float4
main
()
:
SV_Target0
{
return
0
;
}
Test/hlsl.intrinsics.f3216.frag
0 → 100644
View file @
86b510ef
uint
PixelShaderFunctionS
(
float
inF0
)
{
return
f32tof16
(
inF0
);
}
uint1
PixelShaderFunction1
(
float1
inF0
)
{
return
f32tof16
(
inF0
);
}
uint2
PixelShaderFunction2
(
float2
inF0
)
{
return
f32tof16
(
inF0
);
}
uint3
PixelShaderFunction3
(
float3
inF0
)
{
return
f32tof16
(
inF0
);
}
uint4
PixelShaderFunction
(
float4
inF0
)
{
return
f32tof16
(
inF0
);
}
float4
main
()
:
SV_Target0
{
return
0
;
}
gtests/Hlsl.FromFile.cpp
View file @
86b510ef
...
...
@@ -132,7 +132,8 @@ INSTANTIATE_TEST_CASE_P(
{
"hlsl.intrinsics.evalfns.frag"
,
"main"
},
{
"hlsl.intrinsics.d3dcolortoubyte4.frag"
,
"main"
},
{
"hlsl.intrinsics.double.frag"
,
"PixelShaderFunction"
},
{
"hlsl.intrinsics.f1632.frag"
,
"PixelShaderFunction"
},
{
"hlsl.intrinsics.f1632.frag"
,
"main"
},
{
"hlsl.intrinsics.f3216.frag"
,
"main"
},
{
"hlsl.intrinsics.frag"
,
"main"
},
{
"hlsl.intrinsics.lit.frag"
,
"PixelShaderFunction"
},
{
"hlsl.intrinsics.negative.comp"
,
"ComputeShaderFunction"
},
...
...
hlsl/hlslParseHelper.cpp
View file @
86b510ef
...
...
@@ -3564,10 +3564,107 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
}
case
EOpF16tof32
:
{
// input uvecN with low 16 bits of each component holding a float16. convert to float32.
TIntermTyped
*
argValue
=
node
->
getAsUnaryNode
()
->
getOperand
();
TIntermTyped
*
zero
=
intermediate
.
addConstantUnion
(
0.0
,
EbtFloat
,
loc
,
true
);
const
int
vecSize
=
argValue
->
getType
().
getVectorSize
();
TOperator
constructOp
=
EOpNull
;
switch
(
vecSize
)
{
case
1
:
constructOp
=
EOpNull
;
break
;
// direct use, no construct needed
case
2
:
constructOp
=
EOpConstructVec2
;
break
;
case
3
:
constructOp
=
EOpConstructVec3
;
break
;
case
4
:
constructOp
=
EOpConstructVec4
;
break
;
default
:
assert
(
0
);
break
;
}
// For scalar case, we don't need to construct another type.
TIntermAggregate
*
result
=
(
vecSize
>
1
)
?
new
TIntermAggregate
(
constructOp
)
:
nullptr
;
if
(
result
)
{
result
->
setType
(
TType
(
EbtFloat
,
EvqTemporary
,
vecSize
));
result
->
setLoc
(
loc
);
}
for
(
int
idx
=
0
;
idx
<
vecSize
;
++
idx
)
{
TIntermTyped
*
idxConst
=
intermediate
.
addConstantUnion
(
idx
,
loc
,
true
);
TIntermTyped
*
component
=
argValue
->
getType
().
isVector
()
?
intermediate
.
addIndex
(
EOpIndexDirect
,
argValue
,
idxConst
,
loc
)
:
argValue
;
if
(
component
!=
argValue
)
component
->
setType
(
TType
(
argValue
->
getBasicType
(),
EvqTemporary
));
TIntermTyped
*
unpackOp
=
new
TIntermUnary
(
EOpUnpackHalf2x16
);
unpackOp
->
setType
(
TType
(
EbtFloat
,
EvqTemporary
,
2
));
unpackOp
->
getAsUnaryNode
()
->
setOperand
(
component
);
unpackOp
->
setLoc
(
loc
);
TIntermTyped
*
lowOrder
=
intermediate
.
addIndex
(
EOpIndexDirect
,
unpackOp
,
zero
,
loc
);
if
(
result
!=
nullptr
)
{
result
->
getSequence
().
push_back
(
lowOrder
);
node
=
result
;
}
else
{
node
=
lowOrder
;
}
}
break
;
}
case
EOpF32tof16
:
{
// Temporary until decomposition is available.
error
(
loc
,
"unimplemented intrinsic: handle natively"
,
"f32tof16"
,
""
);
// input floatN converted to 16 bit float in low order bits of each component of uintN
TIntermTyped
*
argValue
=
node
->
getAsUnaryNode
()
->
getOperand
();
TIntermTyped
*
zero
=
intermediate
.
addConstantUnion
(
0.0
,
EbtFloat
,
loc
,
true
);
const
int
vecSize
=
argValue
->
getType
().
getVectorSize
();
TOperator
constructOp
=
EOpNull
;
switch
(
vecSize
)
{
case
1
:
constructOp
=
EOpNull
;
break
;
// direct use, no construct needed
case
2
:
constructOp
=
EOpConstructUVec2
;
break
;
case
3
:
constructOp
=
EOpConstructUVec3
;
break
;
case
4
:
constructOp
=
EOpConstructUVec4
;
break
;
default
:
assert
(
0
);
break
;
}
// For scalar case, we don't need to construct another type.
TIntermAggregate
*
result
=
(
vecSize
>
1
)
?
new
TIntermAggregate
(
constructOp
)
:
nullptr
;
if
(
result
)
{
result
->
setType
(
TType
(
EbtUint
,
EvqTemporary
,
vecSize
));
result
->
setLoc
(
loc
);
}
for
(
int
idx
=
0
;
idx
<
vecSize
;
++
idx
)
{
TIntermTyped
*
idxConst
=
intermediate
.
addConstantUnion
(
idx
,
loc
,
true
);
TIntermTyped
*
component
=
argValue
->
getType
().
isVector
()
?
intermediate
.
addIndex
(
EOpIndexDirect
,
argValue
,
idxConst
,
loc
)
:
argValue
;
if
(
component
!=
argValue
)
component
->
setType
(
TType
(
argValue
->
getBasicType
(),
EvqTemporary
));
TIntermAggregate
*
vec2ComponentAndZero
=
new
TIntermAggregate
(
EOpConstructVec2
);
vec2ComponentAndZero
->
getSequence
().
push_back
(
component
);
vec2ComponentAndZero
->
getSequence
().
push_back
(
zero
);
vec2ComponentAndZero
->
setType
(
TType
(
EbtFloat
,
EvqTemporary
,
2
));
vec2ComponentAndZero
->
setLoc
(
loc
);
TIntermTyped
*
packOp
=
new
TIntermUnary
(
EOpPackHalf2x16
);
packOp
->
getAsUnaryNode
()
->
setOperand
(
vec2ComponentAndZero
);
packOp
->
setLoc
(
loc
);
packOp
->
setType
(
TType
(
EbtUint
,
EvqTemporary
));
if
(
result
!=
nullptr
)
{
result
->
getSequence
().
push_back
(
packOp
);
node
=
result
;
}
else
{
node
=
packOp
;
}
}
break
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment