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
070aaeaf
Commit
070aaeaf
authored
Dec 15, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HLSL: Fix #1192: when bool operands are converted to ints, convert result type.
parent
35682b59
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
181 additions
and
206 deletions
+181
-206
hlsl.boolConv.vert.out
Test/baseResults/hlsl.boolConv.vert.out
+176
-206
Intermediate.cpp
glslang/MachineIndependent/Intermediate.cpp
+5
-0
No files found.
Test/baseResults/hlsl.boolConv.vert.out
View file @
070aaeaf
...
@@ -16,84 +16,74 @@ Shader version: 500
...
@@ -16,84 +16,74 @@ Shader version: 500
0:4 0 (const int)
0:4 0 (const int)
0:6 add second child into first child ( temp int)
0:6 add second child into first child ( temp int)
0:6 'r' ( temp int)
0:6 'r' ( temp int)
0:6 Convert bool to int ( temp int)
0:6 add ( temp int)
0:6 add ( temp bool)
0:6 Convert bool to int ( temp int)
0:6 Convert bool to int ( temp int)
0:6 'a' ( global bool)
0:6 'a' ( global bool)
0:6 Convert bool to int ( temp int)
0:6 Convert bool to int ( temp int)
0:6 'b' ( global bool)
0:6 'b' ( global bool)
0:7 add second child into first child ( temp int)
0:7 add second child into first child ( temp int)
0:7 'r' ( temp int)
0:7 'r' ( temp int)
0:7 Convert bool to int ( temp int)
0:7 subtract ( temp int)
0:7 subtract ( temp bool)
0:7 Convert bool to int ( temp int)
0:7 Convert bool to int ( temp int)
0:7 'a' ( global bool)
0:7 'a' ( global bool)
0:7 Convert bool to int ( temp int)
0:7 Convert bool to int ( temp int)
0:7 'b' ( global bool)
0:7 'b' ( global bool)
0:8 add second child into first child ( temp int)
0:8 add second child into first child ( temp int)
0:8 'r' ( temp int)
0:8 'r' ( temp int)
0:8 Convert bool to int ( temp int)
0:8 component-wise multiply ( temp int)
0:8 component-wise multiply ( temp bool)
0:8 Convert bool to int ( temp int)
0:8 Convert bool to int ( temp int)
0:8 'a' ( global bool)
0:8 'a' ( global bool)
0:8 Convert bool to int ( temp int)
0:8 Convert bool to int ( temp int)
0:8 'b' ( global bool)
0:8 'b' ( global bool)
0:9 add second child into first child ( temp int)
0:9 add second child into first child ( temp int)
0:9 'r' ( temp int)
0:9 'r' ( temp int)
0:9 Convert bool to int ( temp int)
0:9 divide ( temp int)
0:9 divide ( temp bool)
0:9 Convert bool to int ( temp int)
0:9 Convert bool to int ( temp int)
0:9 'a' ( global bool)
0:9 'a' ( global bool)
0:9 Convert bool to int ( temp int)
0:9 Convert bool to int ( temp int)
0:9 'b' ( global bool)
0:9 'b' ( global bool)
0:10 add second child into first child ( temp int)
0:10 add second child into first child ( temp int)
0:10 'r' ( temp int)
0:10 'r' ( temp int)
0:10 Convert bool to int ( temp int)
0:10 mod ( temp int)
0:10 mod ( temp bool)
0:10 Convert bool to int ( temp int)
0:10 Convert bool to int ( temp int)
0:10 'a' ( global bool)
0:10 'a' ( global bool)
0:10 Convert bool to int ( temp int)
0:10 Convert bool to int ( temp int)
0:10 'b' ( global bool)
0:10 'b' ( global bool)
0:12 add second child into first child ( temp int)
0:12 add second child into first child ( temp int)
0:12 'r' ( temp int)
0:12 'r' ( temp int)
0:12 Convert bool to int ( temp int)
0:12 bitwise and ( temp int)
0:12 bitwise and ( temp bool)
0:12 Convert bool to int ( temp int)
0:12 Convert bool to int ( temp int)
0:12 'a' ( global bool)
0:12 'a' ( global bool)
0:12 Convert bool to int ( temp int)
0:12 Convert bool to int ( temp int)
0:12 'b' ( global bool)
0:12 'b' ( global bool)
0:13 add second child into first child ( temp int)
0:13 add second child into first child ( temp int)
0:13 'r' ( temp int)
0:13 'r' ( temp int)
0:13 Convert bool to int ( temp int)
0:13 inclusive-or ( temp int)
0:13 inclusive-or ( temp bool)
0:13 Convert bool to int ( temp int)
0:13 Convert bool to int ( temp int)
0:13 'a' ( global bool)
0:13 'a' ( global bool)
0:13 Convert bool to int ( temp int)
0:13 Convert bool to int ( temp int)
0:13 'b' ( global bool)
0:13 'b' ( global bool)
0:14 add second child into first child ( temp int)
0:14 add second child into first child ( temp int)
0:14 'r' ( temp int)
0:14 'r' ( temp int)
0:14 Convert bool to int ( temp int)
0:14 exclusive-or ( temp int)
0:14 exclusive-or ( temp bool)
0:14 Convert bool to int ( temp int)
0:14 Convert bool to int ( temp int)
0:14 'a' ( global bool)
0:14 'a' ( global bool)
0:14 Convert bool to int ( temp int)
0:14 Convert bool to int ( temp int)
0:14 'b' ( global bool)
0:14 'b' ( global bool)
0:16 add second child into first child ( temp int)
0:16 add second child into first child ( temp int)
0:16 'r' ( temp int)
0:16 'r' ( temp int)
0:16 Convert bool to int ( temp int)
0:16 left-shift ( temp int)
0:16 left-shift ( temp bool)
0:16 Convert bool to int ( temp int)
0:16 Convert bool to int ( temp int)
0:16 'a' ( global bool)
0:16 'a' ( global bool)
0:16 Convert bool to int ( temp int)
0:16 Convert bool to int ( temp int)
0:16 'b' ( global bool)
0:16 'b' ( global bool)
0:17 add second child into first child ( temp int)
0:17 add second child into first child ( temp int)
0:17 'r' ( temp int)
0:17 'r' ( temp int)
0:17 Convert bool to int ( temp int)
0:17 right-shift ( temp int)
0:17 right-shift ( temp bool)
0:17 Convert bool to int ( temp int)
0:17 Convert bool to int ( temp int)
0:17 'a' ( global bool)
0:17 'a' ( global bool)
0:17 Convert bool to int ( temp int)
0:17 Convert bool to int ( temp int)
0:17 'b' ( global bool)
0:17 'b' ( global bool)
0:19 Branch: Return with expression
0:19 Branch: Return with expression
0:19 Construct vec4 ( temp 4-component vector of float)
0:19 Construct vec4 ( temp 4-component vector of float)
0:19 Convert int to float ( temp float)
0:19 Convert int to float ( temp float)
...
@@ -130,84 +120,74 @@ Shader version: 500
...
@@ -130,84 +120,74 @@ Shader version: 500
0:4 0 (const int)
0:4 0 (const int)
0:6 add second child into first child ( temp int)
0:6 add second child into first child ( temp int)
0:6 'r' ( temp int)
0:6 'r' ( temp int)
0:6 Convert bool to int ( temp int)
0:6 add ( temp int)
0:6 add ( temp bool)
0:6 Convert bool to int ( temp int)
0:6 Convert bool to int ( temp int)
0:6 'a' ( global bool)
0:6 'a' ( global bool)
0:6 Convert bool to int ( temp int)
0:6 Convert bool to int ( temp int)
0:6 'b' ( global bool)
0:6 'b' ( global bool)
0:7 add second child into first child ( temp int)
0:7 add second child into first child ( temp int)
0:7 'r' ( temp int)
0:7 'r' ( temp int)
0:7 Convert bool to int ( temp int)
0:7 subtract ( temp int)
0:7 subtract ( temp bool)
0:7 Convert bool to int ( temp int)
0:7 Convert bool to int ( temp int)
0:7 'a' ( global bool)
0:7 'a' ( global bool)
0:7 Convert bool to int ( temp int)
0:7 Convert bool to int ( temp int)
0:7 'b' ( global bool)
0:7 'b' ( global bool)
0:8 add second child into first child ( temp int)
0:8 add second child into first child ( temp int)
0:8 'r' ( temp int)
0:8 'r' ( temp int)
0:8 Convert bool to int ( temp int)
0:8 component-wise multiply ( temp int)
0:8 component-wise multiply ( temp bool)
0:8 Convert bool to int ( temp int)
0:8 Convert bool to int ( temp int)
0:8 'a' ( global bool)
0:8 'a' ( global bool)
0:8 Convert bool to int ( temp int)
0:8 Convert bool to int ( temp int)
0:8 'b' ( global bool)
0:8 'b' ( global bool)
0:9 add second child into first child ( temp int)
0:9 add second child into first child ( temp int)
0:9 'r' ( temp int)
0:9 'r' ( temp int)
0:9 Convert bool to int ( temp int)
0:9 divide ( temp int)
0:9 divide ( temp bool)
0:9 Convert bool to int ( temp int)
0:9 Convert bool to int ( temp int)
0:9 'a' ( global bool)
0:9 'a' ( global bool)
0:9 Convert bool to int ( temp int)
0:9 Convert bool to int ( temp int)
0:9 'b' ( global bool)
0:9 'b' ( global bool)
0:10 add second child into first child ( temp int)
0:10 add second child into first child ( temp int)
0:10 'r' ( temp int)
0:10 'r' ( temp int)
0:10 Convert bool to int ( temp int)
0:10 mod ( temp int)
0:10 mod ( temp bool)
0:10 Convert bool to int ( temp int)
0:10 Convert bool to int ( temp int)
0:10 'a' ( global bool)
0:10 'a' ( global bool)
0:10 Convert bool to int ( temp int)
0:10 Convert bool to int ( temp int)
0:10 'b' ( global bool)
0:10 'b' ( global bool)
0:12 add second child into first child ( temp int)
0:12 add second child into first child ( temp int)
0:12 'r' ( temp int)
0:12 'r' ( temp int)
0:12 Convert bool to int ( temp int)
0:12 bitwise and ( temp int)
0:12 bitwise and ( temp bool)
0:12 Convert bool to int ( temp int)
0:12 Convert bool to int ( temp int)
0:12 'a' ( global bool)
0:12 'a' ( global bool)
0:12 Convert bool to int ( temp int)
0:12 Convert bool to int ( temp int)
0:12 'b' ( global bool)
0:12 'b' ( global bool)
0:13 add second child into first child ( temp int)
0:13 add second child into first child ( temp int)
0:13 'r' ( temp int)
0:13 'r' ( temp int)
0:13 Convert bool to int ( temp int)
0:13 inclusive-or ( temp int)
0:13 inclusive-or ( temp bool)
0:13 Convert bool to int ( temp int)
0:13 Convert bool to int ( temp int)
0:13 'a' ( global bool)
0:13 'a' ( global bool)
0:13 Convert bool to int ( temp int)
0:13 Convert bool to int ( temp int)
0:13 'b' ( global bool)
0:13 'b' ( global bool)
0:14 add second child into first child ( temp int)
0:14 add second child into first child ( temp int)
0:14 'r' ( temp int)
0:14 'r' ( temp int)
0:14 Convert bool to int ( temp int)
0:14 exclusive-or ( temp int)
0:14 exclusive-or ( temp bool)
0:14 Convert bool to int ( temp int)
0:14 Convert bool to int ( temp int)
0:14 'a' ( global bool)
0:14 'a' ( global bool)
0:14 Convert bool to int ( temp int)
0:14 Convert bool to int ( temp int)
0:14 'b' ( global bool)
0:14 'b' ( global bool)
0:16 add second child into first child ( temp int)
0:16 add second child into first child ( temp int)
0:16 'r' ( temp int)
0:16 'r' ( temp int)
0:16 Convert bool to int ( temp int)
0:16 left-shift ( temp int)
0:16 left-shift ( temp bool)
0:16 Convert bool to int ( temp int)
0:16 Convert bool to int ( temp int)
0:16 'a' ( global bool)
0:16 'a' ( global bool)
0:16 Convert bool to int ( temp int)
0:16 Convert bool to int ( temp int)
0:16 'b' ( global bool)
0:16 'b' ( global bool)
0:17 add second child into first child ( temp int)
0:17 add second child into first child ( temp int)
0:17 'r' ( temp int)
0:17 'r' ( temp int)
0:17 Convert bool to int ( temp int)
0:17 right-shift ( temp int)
0:17 right-shift ( temp bool)
0:17 Convert bool to int ( temp int)
0:17 Convert bool to int ( temp int)
0:17 'a' ( global bool)
0:17 'a' ( global bool)
0:17 Convert bool to int ( temp int)
0:17 Convert bool to int ( temp int)
0:17 'b' ( global bool)
0:17 'b' ( global bool)
0:19 Branch: Return with expression
0:19 Branch: Return with expression
0:19 Construct vec4 ( temp 4-component vector of float)
0:19 Construct vec4 ( temp 4-component vector of float)
0:19 Convert int to float ( temp float)
0:19 Convert int to float ( temp float)
...
@@ -225,20 +205,20 @@ Shader version: 500
...
@@ -225,20 +205,20 @@ Shader version: 500
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80002
// Generated by (magic number): 80002
// Id's are bound by
10
9
// Id's are bound by
9
9
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main"
10
7
EntryPoint Vertex 4 "main"
9
7
Source HLSL 500
Source HLSL 500
Name 4 "main"
Name 4 "main"
Name 9 "@main("
Name 9 "@main("
Name 13 "b"
Name 13 "b"
Name 17 "r"
Name 17 "r"
Name 19 "a"
Name 19 "a"
Name
10
7 "@entryPointOutput"
Name
9
7 "@entryPointOutput"
Decorate
10
7(@entryPointOutput) BuiltIn Position
Decorate
9
7(@entryPointOutput) BuiltIn Position
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeFloat 32
6: TypeFloat 32
...
@@ -253,13 +233,13 @@ Shader version: 500
...
@@ -253,13 +233,13 @@ Shader version: 500
18: 15(int) Constant 0
18: 15(int) Constant 0
19(a): 12(ptr) Variable Private
19(a): 12(ptr) Variable Private
21: 15(int) Constant 1
21: 15(int) Constant 1
10
6: TypePointer Output 7(fvec4)
9
6: TypePointer Output 7(fvec4)
107(@entryPointOutput): 10
6(ptr) Variable Output
97(@entryPointOutput): 9
6(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Store 13(b) 14
Store 13(b) 14
10
8: 7(fvec4) FunctionCall 9(@main()
9
8: 7(fvec4) FunctionCall 9(@main()
Store
107(@entryPointOutput) 10
8
Store
97(@entryPointOutput) 9
8
Return
Return
FunctionEnd
FunctionEnd
9(@main(): 7(fvec4) Function None 8
9(@main(): 7(fvec4) Function None 8
...
@@ -270,62 +250,63 @@ Shader version: 500
...
@@ -270,62 +250,63 @@ Shader version: 500
22: 15(int) Select 20 21 18
22: 15(int) Select 20 21 18
23: 11(bool) Load 13(b)
23: 11(bool) Load 13(b)
24: 15(int) Select 23 21 18
24: 15(int) Select 23 21 18
25:
11(bool
) IAdd 22 24
25:
15(int
) IAdd 22 24
26: 15(int)
Select 25 21 18
26: 15(int)
Load 17(r)
27: 15(int)
Load 17(r)
27: 15(int)
IAdd 26 25
28: 15(int) IAdd 27 26
Store 17(r) 27
Store 17(r) 28
28: 11(bool) Load 19(a)
29:
11(bool) Load 19(a)
29:
15(int) Select 28 21 18
30:
15(int) Select 29 21 18
30:
11(bool) Load 13(b)
31:
11(bool) Load 13(b)
31:
15(int) Select 30 21 18
32: 15(int)
Select 31 21 18
32: 15(int)
ISub 29 31
33:
11(bool) ISub 30 32
33:
15(int) Load 17(r)
34: 15(int)
Select 33 21 18
34: 15(int)
IAdd 33 32
35: 15(int) Load 17(r)
Store 17(r) 34
3
6: 15(int) IAdd 35 34
3
5: 11(bool) Load 19(a)
Store 17(r) 36
36: 15(int) Select 35 21 18
37: 11(bool) Load 1
9(a
)
37: 11(bool) Load 1
3(b
)
38: 15(int) Select 37 21 18
38: 15(int) Select 37 21 18
39: 11(bool) Load 13(b)
39: 15(int) IMul 36 38
40: 15(int) Select 39 21 18
40: 15(int) Load 17(r)
41: 11(bool) IMul 38 40
41: 15(int) IAdd 40 39
42: 15(int) Select 41 21 18
Store 17(r) 41
43: 15(int) Load 17(r)
42: 11(bool) Load 19(a)
44: 15(int) IAdd 43 42
43: 15(int) Select 42 21 18
Store 17(r) 44
44: 11(bool) Load 13(b)
45: 11(bool) Load 19(a)
45: 15(int) Select 44 21 18
46: 15(int) Select 45 21 18
46: 15(int) SDiv 43 45
47: 11(bool) Load 13(b)
47: 15(int) Load 17(r)
48: 15(int) Select 47 21 18
48: 15(int) IAdd 47 46
49: 11(bool) SDiv 46 48
Store 17(r) 48
49: 11(bool) Load 19(a)
50: 15(int) Select 49 21 18
50: 15(int) Select 49 21 18
51:
15(int) Load 17(r
)
51:
11(bool) Load 13(b
)
52: 15(int)
IAdd 51 50
52: 15(int)
Select 51 21 18
Store 17(r)
52
53: 15(int) SMod 50
52
5
3: 11(bool) Load 19(a
)
5
4: 15(int) Load 17(r
)
5
4: 15(int) Select 53 21 18
5
5: 15(int) IAdd 54 53
55: 11(bool) Load 13(b)
Store 17(r) 55
56:
15(int) Select 55 21 18
56:
11(bool) Load 19(a)
57:
11(bool) SMod 54 56
57:
15(int) Select 56 21 18
58:
15(int) Select 57 21 18
58:
11(bool) Load 13(b)
59: 15(int)
Load 17(r)
59: 15(int)
Select 58 21 18
60: 15(int)
IAdd 59 58
60: 15(int)
BitwiseAnd 57 59
Store 17(r) 60
61: 15(int) Load 17(r)
6
1: 11(bool) Load 19(a)
6
2: 15(int) IAdd 61 60
62: 15(int) Select 61 21 18
Store 17(r) 62
63: 11(bool) Load 1
3(b
)
63: 11(bool) Load 1
9(a
)
64: 15(int) Select 63 21 18
64: 15(int) Select 63 21 18
65: 11(bool)
BitwiseAnd 62 64
65: 11(bool)
Load 13(b)
66: 15(int) Select 65 21 18
66: 15(int) Select 65 21 18
67: 15(int)
Load 17(r)
67: 15(int)
BitwiseOr 64 66
68: 15(int)
IAdd 67 66
68: 15(int)
Load 17(r)
Store 17(r) 68
69: 15(int) IAdd 68 67
69: 11(bool) Load 19(a)
Store 17(r) 69
70:
15(int) Select 69 21 18
70:
11(bool) Load 19(a)
71:
11(bool) Load 13(b)
71:
15(int) Select 70 21 18
72:
15(int) Select 71 21 18
72:
11(bool) Load 13(b)
73:
11(bool) BitwiseOr 70 72
73:
15(int) Select 72 21 18
74: 15(int)
Select 73 21 18
74: 15(int)
BitwiseXor 71 73
75: 15(int) Load 17(r)
75: 15(int) Load 17(r)
76: 15(int) IAdd 75 74
76: 15(int) IAdd 75 74
Store 17(r) 76
Store 17(r) 76
...
@@ -333,31 +314,20 @@ Shader version: 500
...
@@ -333,31 +314,20 @@ Shader version: 500
78: 15(int) Select 77 21 18
78: 15(int) Select 77 21 18
79: 11(bool) Load 13(b)
79: 11(bool) Load 13(b)
80: 15(int) Select 79 21 18
80: 15(int) Select 79 21 18
81: 11(bool) BitwiseXor 78 80
81: 15(int) ShiftLeftLogical 78 80
82: 15(int) Select 81 21 18
82: 15(int) Load 17(r)
83: 15(int) Load 17(r)
83: 15(int) IAdd 82 81
84: 15(int) IAdd 83 82
Store 17(r) 83
Store 17(r) 84
84: 11(bool) Load 19(a)
85: 11(bool) Load 19(a)
85: 15(int) Select 84 21 18
86: 15(int) Select 85 21 18
86: 11(bool) Load 13(b)
87: 11(bool) Load 13(b)
87: 15(int) Select 86 21 18
88: 15(int) Select 87 21 18
88: 15(int) ShiftRightArithmetic 85 87
89: 11(bool) ShiftLeftLogical 86 88
89: 15(int) Load 17(r)
90: 15(int) Select 89 21 18
90: 15(int) IAdd 89 88
Store 17(r) 90
91: 15(int) Load 17(r)
91: 15(int) Load 17(r)
92: 15(int) IAdd 91 90
92: 6(float) ConvertSToF 91
Store 17(r) 92
93: 7(fvec4) CompositeConstruct 92 92 92 92
93: 11(bool) Load 19(a)
ReturnValue 93
94: 15(int) Select 93 21 18
95: 11(bool) Load 13(b)
96: 15(int) Select 95 21 18
97: 11(bool) ShiftRightArithmetic 94 96
98: 15(int) Select 97 21 18
99: 15(int) Load 17(r)
100: 15(int) IAdd 99 98
Store 17(r) 100
101: 15(int) Load 17(r)
102: 6(float) ConvertSToF 101
103: 7(fvec4) CompositeConstruct 102 102 102 102
ReturnValue 103
FunctionEnd
FunctionEnd
glslang/MachineIndependent/Intermediate.cpp
View file @
070aaeaf
...
@@ -2474,6 +2474,11 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
...
@@ -2474,6 +2474,11 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
return
false
;
return
false
;
node
.
setLeft
(
left
);
node
.
setLeft
(
left
);
node
.
setRight
(
right
);
node
.
setRight
(
right
);
// Update the original base assumption on result type..
node
.
setType
(
left
->
getType
());
node
.
getWritableType
().
getQualifier
().
clear
();
break
;
break
;
default
:
default
:
...
...
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