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
f67f9d7e
Commit
f67f9d7e
authored
Feb 28, 2017
by
John Kessenich
Committed by
GitHub
Feb 28, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #740 from steve-lunarg/f16tof32
HLSL: add f16tof32 and f32tof16 decompositions.
parents
42e33c9b
86b510ef
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 @
f67f9d7e
hlsl.intrinsics.f1632.frag
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
Shader version: 450
gl_FragCoord origin is upper left
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(
f
1; (temp float)
0:2 Function Definition: PixelShaderFunctionS(
u
1; (temp float)
0:2 Function Parameters:
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:? Sequence
0:3 ERROR: Bad unary op
0:8 Branch: Return with expression
(temp uint)
0:8 Constant:
0:3 'inF0' (in float)
0:8 0.000000
0:5 Branch: Return with expression
0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float)
0:5 Constant:
0:12 Function Parameters:
0:5 0.000000
0:12 'inF0' (in 2-component vector of uint)
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:? Sequence
0:? Sequence
0:11 Branch: Return with expression
0:13 Branch: Return with expression
0:11 Constant:
0:13 Construct vec2 (temp 2-component vector of float)
0:11 0.000000
0:13 direct index (temp float)
0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
0:13 unpackHalf2x16 (temp 2-component vector of float)
0:15 Function Parameters:
0:13 direct index (temp uint)
0:15 'inF0' (in 2-component vector of float)
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:? 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:18 Branch: Return with expression
0:? Constant:
0:18 Construct vec3 (temp 3-component vector of float)
0:? 1.000000
0:18 direct index (temp float)
0:? 2.000000
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-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 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:? Sequence
0:23 ERROR: Bad unary op
0:23 Branch: Return with expression
(temp 3-component vector of uint)
0:23 Construct vec4 (temp 4-component vector of float)
0:23 'inF0' (in 3-component vector of float)
0:23 direct index (temp float)
0:25 Branch: Return with expression
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:? Constant:
0:23 direct index (temp uint)
0:? 1.000000
0:23 'inF0' (in 4-component vector of uint)
0:? 2.000000
0:23 Constant:
0:? 3.000000
0:23 0 (const int)
0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:23 Constant:
0:29 Function Parameters:
0:23 0.000000
0:29 'inF0' (in 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 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:? Sequence
0:30 ERROR: Bad unary op
0:28 Branch: Return with expression
(temp 4-component vector of uint)
0:28 Constant:
0:30 'inF0' (in 4-component vector of float)
0:28 0.000000
0:32 Branch: Return with expression
0:28 0.000000
0:? Constant:
0:28 0.000000
0:? 1.000000
0:28 0.000000
0:? 2.000000
0:27 Function Definition: main( (temp void)
0:? 3.000000
0:27 Function Parameters:
0:? 4.000000
0:29 Function Definition: PixelShaderFunction( (temp void)
0:29 Function Parameters:
0:? Sequence
0:? Sequence
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:? '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:? '@entryPointOutput' (layout(location=0 ) out 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:27 Function Call: @main( (temp 4-component vector of float)
0:? 'inF0' (temp 4-component vector of float)
0:? Linker Objects
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
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:
Linked fragment stage:
...
@@ -82,72 +133,256 @@ Linked fragment stage:
...
@@ -82,72 +133,256 @@ Linked fragment stage:
Shader version: 450
Shader version: 450
gl_FragCoord origin is upper left
gl_FragCoord origin is upper left
ERROR: node is still EOpNull!
0:? Sequence
0:2 Function Definition: PixelShaderFunctionS(
f
1; (temp float)
0:2 Function Definition: PixelShaderFunctionS(
u
1; (temp float)
0:2 Function Parameters:
0:2 Function Parameters:
0:2 'inF0' (in
floa
t)
0:2 'inF0' (in
uin
t)
0:? Sequence
0:? Sequence
0:3
ERROR: Bad unary op
0:3
Branch: Return with expression
(temp uin
t)
0:3 direct index (temp floa
t)
0:3
'inF0' (in
float)
0:3
unpackHalf2x16 (temp 2-component vector of
float)
0:
5 Branch: Return with expression
0:
3 'inF0' (in uint)
0:
5
Constant:
0:
3
Constant:
0:
5
0.000000
0:
3
0.000000
0:
9 Function Definition: PixelShaderFunction1(vf
1; (temp 1-component vector of float)
0:
7 Function Definition: PixelShaderFunction1(vu
1; (temp 1-component vector of float)
0:
9
Function Parameters:
0:
7
Function Parameters:
0:
9 'inF0' (in 1-component vector of floa
t)
0:
7 'inF0' (in 1-component vector of uin
t)
0:? Sequence
0:? Sequence
0:11 Branch: Return with expression
0:8 Branch: Return with expression
0:11 Constant:
0:8 Constant:
0:11 0.000000
0:8 0.000000
0:15 Function Definition: PixelShaderFunction2(vf2; (temp 2-component vector of float)
0:12 Function Definition: PixelShaderFunction2(vu2; (temp 2-component vector of float)
0:15 Function Parameters:
0:12 Function Parameters:
0:15 'inF0' (in 2-component vector of float)
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:? 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:18 Branch: Return with expression
0:? Constant:
0:18 Construct vec3 (temp 3-component vector of float)
0:? 1.000000
0:18 direct index (temp float)
0:? 2.000000
0:18 unpackHalf2x16 (temp 2-component vector of float)
0:22 Function Definition: PixelShaderFunction3(vf3; (temp 3-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 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:? Sequence
0:23 ERROR: Bad unary op
0:23 Branch: Return with expression
(temp 3-component vector of uint)
0:23 Construct vec4 (temp 4-component vector of float)
0:23 'inF0' (in 3-component vector of float)
0:23 direct index (temp float)
0:25 Branch: Return with expression
0:23 unpackHalf2x16 (temp 2-component vector of float)
0:? Constant:
0:23 direct index (temp uint)
0:? 1.000000
0:23 'inF0' (in 4-component vector of uint)
0:? 2.000000
0:23 Constant:
0:? 3.000000
0:23 0 (const int)
0:29 Function Definition: @PixelShaderFunction(vf4; (temp 4-component vector of float)
0:23 Constant:
0:29 Function Parameters:
0:23 0.000000
0:29 'inF0' (in 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 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:? Sequence
0:30 ERROR: Bad unary op
0:28 Branch: Return with expression
(temp 4-component vector of uint)
0:28 Constant:
0:30 'inF0' (in 4-component vector of float)
0:28 0.000000
0:32 Branch: Return with expression
0:28 0.000000
0:? Constant:
0:28 0.000000
0:? 1.000000
0:28 0.000000
0:? 2.000000
0:27 Function Definition: main( (temp void)
0:? 3.000000
0:27 Function Parameters:
0:? 4.000000
0:29 Function Definition: PixelShaderFunction( (temp void)
0:29 Function Parameters:
0:? Sequence
0:? Sequence
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:? '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:? '@entryPointOutput' (layout(location=0 ) out 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:27 Function Call: @main( (temp 4-component vector of float)
0:? 'inF0' (temp 4-component vector of float)
0:? Linker Objects
0:? Linker Objects
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
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 @
f67f9d7e
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 @
f67f9d7e
hlsl.intrinsics.negative.frag
hlsl.intrinsics.negative.frag
ERROR: 0:10: 'determinant' : no matching overloaded function found
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:23: 'length' : ambiguous best function under implicit type conversion
ERROR: 0:25: 'normalize' : 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
ERROR: 0:26: 'reflect' : ambiguous best function under implicit type conversion
...
@@ -13,16 +12,13 @@ ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
...
@@ -13,16 +12,13 @@ ERROR: 0:47: 'CheckAccessFullyMapped' : no matching overloaded function found
ERROR: 0:49: 'cross' : 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:50: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:51: 'determinant' : 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:57: 'transpose' : no matching overloaded function found
ERROR: 0:64: 'CheckAccessFullyMapped' : 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:66: 'D3DCOLORtoUBYTE4' : no matching overloaded function found
ERROR: 0:67: 'determinant' : 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:73: 'transpose' : no matching overloaded function found
ERROR: 0:81: 'CheckAccessFullyMapped' : 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: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:90: 'transpose' : no matching overloaded function found
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:117: 'countbits' : no matching overloaded function found
ERROR: 0:117: 'D3DCOLORtoUBYTE4' : 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
...
@@ -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: 'reflect' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'refract' : no matching overloaded function found
ERROR: 0:133: 'reversebits' : 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
Shader version: 450
...
@@ -111,10 +107,12 @@ ERROR: node is still EOpNull!
...
@@ -111,10 +107,12 @@ ERROR: node is still EOpNull!
0:9 3 (const int)
0:9 3 (const int)
0:10 Constant:
0:10 Constant:
0:10 0.000000
0:10 0.000000
0:12 ERROR: Bad unary op
0:12 direct index (temp float)
(temp float)
0:12 unpackHalf2x16 (temp 2-component vector of float)
0:12 Convert float to uint (temp uint)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 'inF0' (in float)
0:12 Constant:
0:12 0.000000
0:13 findMSB (temp uint)
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
0:13 'inF0' (in float)
...
@@ -195,10 +193,25 @@ ERROR: node is still EOpNull!
...
@@ -195,10 +193,25 @@ ERROR: node is still EOpNull!
0:50 0.000000
0:50 0.000000
0:51 Constant:
0:51 Constant:
0:51 0.000000
0:51 0.000000
0:52 ERROR: Bad unary op
0:52 Construct vec2 (temp 2-component vector of float)
(temp 2-component vector of float)
0:52 direct index (temp float)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 'inF0' (in 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 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (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)
0:53 'inF0' (in 2-component vector of float)
...
@@ -230,10 +243,34 @@ ERROR: node is still EOpNull!
...
@@ -230,10 +243,34 @@ ERROR: node is still EOpNull!
0:66 0.000000
0:66 0.000000
0:67 Constant:
0:67 Constant:
0:67 0.000000
0:67 0.000000
0:68 ERROR: Bad unary op
0:68 Construct vec3 (temp 3-component vector of float)
(temp 3-component vector of float)
0:68 direct index (temp float)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 'inF0' (in 3-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 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (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)
0:69 'inF0' (in 3-component vector of float)
...
@@ -269,10 +306,43 @@ ERROR: node is still EOpNull!
...
@@ -269,10 +306,43 @@ ERROR: node is still EOpNull!
0:83 'inF1' (in 4-component vector of float)
0:83 'inF1' (in 4-component vector of float)
0:84 Constant:
0:84 Constant:
0:84 0.000000
0:84 0.000000
0:85 ERROR: Bad unary op
0:85 Construct vec4 (temp 4-component vector of float)
(temp 4-component vector of float)
0:85 direct index (temp float)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 'inF0' (in 4-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 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (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)
0:86 'inF0' (in 4-component vector of float)
...
@@ -499,10 +569,12 @@ ERROR: node is still EOpNull!
...
@@ -499,10 +569,12 @@ ERROR: node is still EOpNull!
0:9 3 (const int)
0:9 3 (const int)
0:10 Constant:
0:10 Constant:
0:10 0.000000
0:10 0.000000
0:12 ERROR: Bad unary op
0:12 direct index (temp float)
(temp float)
0:12 unpackHalf2x16 (temp 2-component vector of float)
0:12 Convert float to uint (temp uint)
0:12 Convert float to uint (temp uint)
0:12 'inF0' (in float)
0:12 'inF0' (in float)
0:12 Constant:
0:12 0.000000
0:13 findMSB (temp uint)
0:13 findMSB (temp uint)
0:13 Convert float to uint (temp uint)
0:13 Convert float to uint (temp uint)
0:13 'inF0' (in float)
0:13 'inF0' (in float)
...
@@ -583,10 +655,25 @@ ERROR: node is still EOpNull!
...
@@ -583,10 +655,25 @@ ERROR: node is still EOpNull!
0:50 0.000000
0:50 0.000000
0:51 Constant:
0:51 Constant:
0:51 0.000000
0:51 0.000000
0:52 ERROR: Bad unary op
0:52 Construct vec2 (temp 2-component vector of float)
(temp 2-component vector of float)
0:52 direct index (temp float)
0:52 Convert float to uint (temp 2-component vector of uint)
0:52 unpackHalf2x16 (temp 2-component vector of float)
0:52 'inF0' (in 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 findMSB (temp 2-component vector of uint)
0:53 Convert float to uint (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)
0:53 'inF0' (in 2-component vector of float)
...
@@ -618,10 +705,34 @@ ERROR: node is still EOpNull!
...
@@ -618,10 +705,34 @@ ERROR: node is still EOpNull!
0:66 0.000000
0:66 0.000000
0:67 Constant:
0:67 Constant:
0:67 0.000000
0:67 0.000000
0:68 ERROR: Bad unary op
0:68 Construct vec3 (temp 3-component vector of float)
(temp 3-component vector of float)
0:68 direct index (temp float)
0:68 Convert float to uint (temp 3-component vector of uint)
0:68 unpackHalf2x16 (temp 2-component vector of float)
0:68 'inF0' (in 3-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 findMSB (temp 3-component vector of uint)
0:69 Convert float to uint (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)
0:69 'inF0' (in 3-component vector of float)
...
@@ -657,10 +768,43 @@ ERROR: node is still EOpNull!
...
@@ -657,10 +768,43 @@ ERROR: node is still EOpNull!
0:83 'inF1' (in 4-component vector of float)
0:83 'inF1' (in 4-component vector of float)
0:84 Constant:
0:84 Constant:
0:84 0.000000
0:84 0.000000
0:85 ERROR: Bad unary op
0:85 Construct vec4 (temp 4-component vector of float)
(temp 4-component vector of float)
0:85 direct index (temp float)
0:85 Convert float to uint (temp 4-component vector of uint)
0:85 unpackHalf2x16 (temp 2-component vector of float)
0:85 'inF0' (in 4-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 findMSB (temp 4-component vector of uint)
0:86 Convert float to uint (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)
0:86 'inF0' (in 4-component vector of float)
...
...
Test/hlsl.intrinsics.f1632.frag
View file @
f67f9d7e
float
PixelShaderFunctionS
(
floa
t
inF0
)
float
PixelShaderFunctionS
(
uin
t
inF0
)
{
{
f32tof16
(
inF0
);
return
f16tof32
(
inF0
);
return
0
.
0
;
}
}
float1
PixelShaderFunction1
(
floa
t1
inF0
)
float1
PixelShaderFunction1
(
uin
t1
inF0
)
{
{
// TODO: ... add when float1 prototypes are generated
return
f16tof32
(
inF0
);
return
0
.
0
;
}
}
float2
PixelShaderFunction2
(
floa
t2
inF0
)
float2
PixelShaderFunction2
(
uin
t2
inF0
)
{
{
f32tof16
(
inF0
);
return
f16tof32
(
inF0
);
return
float2
(
1
,
2
);
}
}
float3
PixelShaderFunction3
(
floa
t3
inF0
)
float3
PixelShaderFunction3
(
uin
t3
inF0
)
{
{
f32tof16
(
inF0
);
return
f16tof32
(
inF0
);
return
float3
(
1
,
2
,
3
);
}
}
float4
PixelShaderFunction
(
floa
t4
inF0
)
float4
PixelShaderFunction
(
uin
t4
inF0
)
{
{
f32tof16
(
inF0
);
return
f16tof32
(
inF0
);
return
float4
(
1
,
2
,
3
,
4
);
}
}
float4
main
()
:
SV_Target0
{
return
0
;
}
Test/hlsl.intrinsics.f3216.frag
0 → 100644
View file @
f67f9d7e
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 @
f67f9d7e
...
@@ -132,7 +132,8 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -132,7 +132,8 @@ INSTANTIATE_TEST_CASE_P(
{
"hlsl.intrinsics.evalfns.frag"
,
"main"
},
{
"hlsl.intrinsics.evalfns.frag"
,
"main"
},
{
"hlsl.intrinsics.d3dcolortoubyte4.frag"
,
"main"
},
{
"hlsl.intrinsics.d3dcolortoubyte4.frag"
,
"main"
},
{
"hlsl.intrinsics.double.frag"
,
"PixelShaderFunction"
},
{
"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.frag"
,
"main"
},
{
"hlsl.intrinsics.lit.frag"
,
"PixelShaderFunction"
},
{
"hlsl.intrinsics.lit.frag"
,
"PixelShaderFunction"
},
{
"hlsl.intrinsics.negative.comp"
,
"ComputeShaderFunction"
},
{
"hlsl.intrinsics.negative.comp"
,
"ComputeShaderFunction"
},
...
...
hlsl/hlslParseHelper.cpp
View file @
f67f9d7e
...
@@ -3564,10 +3564,107 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
...
@@ -3564,10 +3564,107 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*&
}
}
case
EOpF16tof32
:
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
:
case
EOpF32tof16
:
{
{
// Temporary until decomposition is available.
// input floatN converted to 16 bit float in low order bits of each component of uintN
error
(
loc
,
"unimplemented intrinsic: handle natively"
,
"f32tof16"
,
""
);
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
;
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