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
51634468
Commit
51634468
authored
Oct 26, 2016
by
John Kessenich
Committed by
GitHub
Oct 26, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #568 from steve-lunarg/logicalop-fix
HLSL: allow component-wise operations for logical || and &&.
parents
aba44400
27939caa
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
445 additions
and
4 deletions
+445
-4
hlsl.logical.binary.vec.frag.out
Test/baseResults/hlsl.logical.binary.vec.frag.out
+412
-0
hlsl.logical.binary.vec.frag
Test/hlsl.logical.binary.vec.frag
+24
-0
Intermediate.cpp
glslang/MachineIndependent/Intermediate.cpp
+8
-4
Hlsl.FromFile.cpp
gtests/Hlsl.FromFile.cpp
+1
-0
No files found.
Test/baseResults/hlsl.logical.binary.vec.frag.out
0 → 100644
View file @
51634468
hlsl.logical.binary.vec.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color})
0:10 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child (temp 4-component vector of bool)
0:11 'r00' (temp 4-component vector of bool)
0:11 Negate conditional (temp 4-component vector of bool)
0:11 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:11 Constant:
0:11 0 (const uint)
0:12 Sequence
0:12 move second child to first child (temp 4-component vector of bool)
0:12 'r01' (temp 4-component vector of bool)
0:12 logical-and (temp 4-component vector of bool)
0:12 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:12 Constant:
0:12 0 (const uint)
0:12 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:12 Constant:
0:12 1 (const uint)
0:13 Sequence
0:13 move second child to first child (temp 4-component vector of bool)
0:13 'r02' (temp 4-component vector of bool)
0:13 logical-or (temp 4-component vector of bool)
0:13 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:13 Constant:
0:13 0 (const uint)
0:13 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:13 Constant:
0:13 1 (const uint)
0:15 Sequence
0:15 move second child to first child (temp 4-component vector of bool)
0:15 'r10' (temp 4-component vector of bool)
0:15 logical-and (temp 4-component vector of bool)
0:15 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
0:15 b1a: direct index for structure (layout(offset=32 ) uniform bool)
0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:15 Constant:
0:15 2 (const uint)
0:15 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:15 Constant:
0:15 1 (const uint)
0:16 Sequence
0:16 move second child to first child (temp 4-component vector of bool)
0:16 'r11' (temp 4-component vector of bool)
0:16 logical-or (temp 4-component vector of bool)
0:16 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
0:16 b1a: direct index for structure (layout(offset=32 ) uniform bool)
0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:16 Constant:
0:16 2 (const uint)
0:16 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:16 Constant:
0:16 1 (const uint)
0:18 Sequence
0:18 move second child to first child (temp 4-component vector of bool)
0:18 'r20' (temp 4-component vector of bool)
0:18 logical-and (temp 4-component vector of bool)
0:18 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:18 Constant:
0:18 0 (const uint)
0:18 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
0:18 b1b: direct index for structure (layout(offset=36 ) uniform bool)
0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:18 Constant:
0:18 3 (const uint)
0:19 Sequence
0:19 move second child to first child (temp 4-component vector of bool)
0:19 'r21' (temp 4-component vector of bool)
0:19 logical-or (temp 4-component vector of bool)
0:19 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:19 Constant:
0:19 0 (const uint)
0:19 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
0:19 b1b: direct index for structure (layout(offset=36 ) uniform bool)
0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:19 Constant:
0:19 3 (const uint)
0:22 move second child to first child (temp 4-component vector of float)
0:22 Color: direct index for structure (temp 4-component vector of float)
0:22 'psout' (temp structure{temp 4-component vector of float Color})
0:22 Constant:
0:22 0 (const int)
0:22 Convert bool to float (temp 4-component vector of float)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 'r00' (temp 4-component vector of bool)
0:22 'r01' (temp 4-component vector of bool)
0:22 'r02' (temp 4-component vector of bool)
0:22 'r10' (temp 4-component vector of bool)
0:22 'r11' (temp 4-component vector of bool)
0:22 'r20' (temp 4-component vector of bool)
0:22 'r21' (temp 4-component vector of bool)
0:23 Sequence
0:23 Sequence
0:23 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:23 Color: direct index for structure (temp 4-component vector of float)
0:23 'psout' (temp structure{temp 4-component vector of float Color})
0:23 Constant:
0:23 0 (const int)
0:23 Branch: Return
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:10 Function Definition: main( (temp structure{temp 4-component vector of float Color})
0:10 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child (temp 4-component vector of bool)
0:11 'r00' (temp 4-component vector of bool)
0:11 Negate conditional (temp 4-component vector of bool)
0:11 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:11 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:11 Constant:
0:11 0 (const uint)
0:12 Sequence
0:12 move second child to first child (temp 4-component vector of bool)
0:12 'r01' (temp 4-component vector of bool)
0:12 logical-and (temp 4-component vector of bool)
0:12 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:12 Constant:
0:12 0 (const uint)
0:12 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:12 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:12 Constant:
0:12 1 (const uint)
0:13 Sequence
0:13 move second child to first child (temp 4-component vector of bool)
0:13 'r02' (temp 4-component vector of bool)
0:13 logical-or (temp 4-component vector of bool)
0:13 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:13 Constant:
0:13 0 (const uint)
0:13 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:13 Constant:
0:13 1 (const uint)
0:15 Sequence
0:15 move second child to first child (temp 4-component vector of bool)
0:15 'r10' (temp 4-component vector of bool)
0:15 logical-and (temp 4-component vector of bool)
0:15 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
0:15 b1a: direct index for structure (layout(offset=32 ) uniform bool)
0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:15 Constant:
0:15 2 (const uint)
0:15 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:15 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:15 Constant:
0:15 1 (const uint)
0:16 Sequence
0:16 move second child to first child (temp 4-component vector of bool)
0:16 'r11' (temp 4-component vector of bool)
0:16 logical-or (temp 4-component vector of bool)
0:16 Construct bvec4 (layout(offset=16 ) uniform 4-component vector of bool)
0:16 b1a: direct index for structure (layout(offset=32 ) uniform bool)
0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:16 Constant:
0:16 2 (const uint)
0:16 b4b: direct index for structure (layout(offset=16 ) uniform 4-component vector of bool)
0:16 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:16 Constant:
0:16 1 (const uint)
0:18 Sequence
0:18 move second child to first child (temp 4-component vector of bool)
0:18 'r20' (temp 4-component vector of bool)
0:18 logical-and (temp 4-component vector of bool)
0:18 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:18 Constant:
0:18 0 (const uint)
0:18 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
0:18 b1b: direct index for structure (layout(offset=36 ) uniform bool)
0:18 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:18 Constant:
0:18 3 (const uint)
0:19 Sequence
0:19 move second child to first child (temp 4-component vector of bool)
0:19 'r21' (temp 4-component vector of bool)
0:19 logical-or (temp 4-component vector of bool)
0:19 b4a: direct index for structure (layout(offset=0 ) uniform 4-component vector of bool)
0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:19 Constant:
0:19 0 (const uint)
0:19 Construct bvec4 (layout(offset=0 ) uniform 4-component vector of bool)
0:19 b1b: direct index for structure (layout(offset=36 ) uniform bool)
0:19 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
0:19 Constant:
0:19 3 (const uint)
0:22 move second child to first child (temp 4-component vector of float)
0:22 Color: direct index for structure (temp 4-component vector of float)
0:22 'psout' (temp structure{temp 4-component vector of float Color})
0:22 Constant:
0:22 0 (const int)
0:22 Convert bool to float (temp 4-component vector of float)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 logical-or (temp 4-component vector of bool)
0:22 'r00' (temp 4-component vector of bool)
0:22 'r01' (temp 4-component vector of bool)
0:22 'r02' (temp 4-component vector of bool)
0:22 'r10' (temp 4-component vector of bool)
0:22 'r11' (temp 4-component vector of bool)
0:22 'r20' (temp 4-component vector of bool)
0:22 'r21' (temp 4-component vector of bool)
0:23 Sequence
0:23 Sequence
0:23 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:23 Color: direct index for structure (temp 4-component vector of float)
0:23 'psout' (temp structure{temp 4-component vector of float Color})
0:23 Constant:
0:23 0 (const int)
0:23 Branch: Return
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of bool b4a, layout(offset=16 ) uniform 4-component vector of bool b4b, layout(offset=32 ) uniform bool b1a, layout(offset=36 ) uniform bool b1b})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 115
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 111
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 9 "r00"
Name 12 "$Global"
MemberName 12($Global) 0 "b4a"
MemberName 12($Global) 1 "b4b"
MemberName 12($Global) 2 "b1a"
MemberName 12($Global) 3 "b1b"
Name 14 ""
Name 24 "r01"
Name 33 "r02"
Name 41 "r10"
Name 52 "r11"
Name 61 "r20"
Name 73 "r21"
Name 87 "PS_OUTPUT"
MemberName 87(PS_OUTPUT) 0 "Color"
Name 89 "psout"
Name 111 "Color"
MemberDecorate 12($Global) 0 Offset 0
MemberDecorate 12($Global) 1 Offset 16
MemberDecorate 12($Global) 2 Offset 32
MemberDecorate 12($Global) 3 Offset 36
Decorate 12($Global) Block
Decorate 14 DescriptorSet 0
Decorate 111(Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeBool
7: TypeVector 6(bool) 4
8: TypePointer Function 7(bvec4)
10: TypeInt 32 0
11: TypeVector 10(int) 4
12($Global): TypeStruct 11(ivec4) 11(ivec4) 10(int) 10(int)
13: TypePointer Uniform 12($Global)
14: 13(ptr) Variable Uniform
15: TypeInt 32 1
16: 15(int) Constant 0
17: TypePointer Uniform 11(ivec4)
20: 10(int) Constant 0
21: 11(ivec4) ConstantComposite 20 20 20 20
28: 15(int) Constant 1
42: 15(int) Constant 2
43: TypePointer Uniform 10(int)
67: 15(int) Constant 3
85: TypeFloat 32
86: TypeVector 85(float) 4
87(PS_OUTPUT): TypeStruct 86(fvec4)
88: TypePointer Function 87(PS_OUTPUT)
103: 85(float) Constant 0
104: 85(float) Constant 1065353216
105: 86(fvec4) ConstantComposite 103 103 103 103
106: 86(fvec4) ConstantComposite 104 104 104 104
108: TypePointer Function 86(fvec4)
110: TypePointer Output 86(fvec4)
111(Color): 110(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(r00): 8(ptr) Variable Function
24(r01): 8(ptr) Variable Function
33(r02): 8(ptr) Variable Function
41(r10): 8(ptr) Variable Function
52(r11): 8(ptr) Variable Function
61(r20): 8(ptr) Variable Function
73(r21): 8(ptr) Variable Function
89(psout): 88(ptr) Variable Function
18: 17(ptr) AccessChain 14 16
19: 11(ivec4) Load 18
22: 7(bvec4) INotEqual 19 21
23: 7(bvec4) LogicalNot 22
Store 9(r00) 23
25: 17(ptr) AccessChain 14 16
26: 11(ivec4) Load 25
27: 7(bvec4) INotEqual 26 21
29: 17(ptr) AccessChain 14 28
30: 11(ivec4) Load 29
31: 7(bvec4) INotEqual 30 21
32: 7(bvec4) LogicalAnd 27 31
Store 24(r01) 32
34: 17(ptr) AccessChain 14 16
35: 11(ivec4) Load 34
36: 7(bvec4) INotEqual 35 21
37: 17(ptr) AccessChain 14 28
38: 11(ivec4) Load 37
39: 7(bvec4) INotEqual 38 21
40: 7(bvec4) LogicalOr 36 39
Store 33(r02) 40
44: 43(ptr) AccessChain 14 42
45: 10(int) Load 44
46: 6(bool) INotEqual 45 20
47: 7(bvec4) CompositeConstruct 46 46 46 46
48: 17(ptr) AccessChain 14 28
49: 11(ivec4) Load 48
50: 7(bvec4) INotEqual 49 21
51: 7(bvec4) LogicalAnd 47 50
Store 41(r10) 51
53: 43(ptr) AccessChain 14 42
54: 10(int) Load 53
55: 6(bool) INotEqual 54 20
56: 7(bvec4) CompositeConstruct 55 55 55 55
57: 17(ptr) AccessChain 14 28
58: 11(ivec4) Load 57
59: 7(bvec4) INotEqual 58 21
60: 7(bvec4) LogicalOr 56 59
Store 52(r11) 60
62: 17(ptr) AccessChain 14 16
63: 11(ivec4) Load 62
64: 7(bvec4) INotEqual 63 21
SelectionMerge 66 None
BranchConditional 64 65 66
65: Label
68: 43(ptr) AccessChain 14 67
69: 10(int) Load 68
70: 6(bool) INotEqual 69 20
71: 7(bvec4) CompositeConstruct 70 70 70 70
Branch 66
66: Label
72: 6(bool) Phi 64 5 71 65
Store 61(r20) 72
74: 17(ptr) AccessChain 14 16
75: 11(ivec4) Load 74
76: 7(bvec4) INotEqual 75 21
77: 6(bool) LogicalNot 76
SelectionMerge 79 None
BranchConditional 77 78 79
78: Label
80: 43(ptr) AccessChain 14 67
81: 10(int) Load 80
82: 6(bool) INotEqual 81 20
83: 7(bvec4) CompositeConstruct 82 82 82 82
Branch 79
79: Label
84: 6(bool) Phi 76 66 83 78
Store 73(r21) 84
90: 7(bvec4) Load 9(r00)
91: 7(bvec4) Load 24(r01)
92: 7(bvec4) LogicalOr 90 91
93: 7(bvec4) Load 33(r02)
94: 7(bvec4) LogicalOr 92 93
95: 7(bvec4) Load 41(r10)
96: 7(bvec4) LogicalOr 94 95
97: 7(bvec4) Load 52(r11)
98: 7(bvec4) LogicalOr 96 97
99: 7(bvec4) Load 61(r20)
100: 7(bvec4) LogicalOr 98 99
101: 7(bvec4) Load 73(r21)
102: 7(bvec4) LogicalOr 100 101
107: 86(fvec4) Select 102 106 105
109: 108(ptr) AccessChain 89(psout) 16
Store 109 107
112: 108(ptr) AccessChain 89(psout) 16
113: 86(fvec4) Load 112
Store 111(Color) 113
Return
FunctionEnd
Test/hlsl.logical.binary.vec.frag
0 → 100644
View file @
51634468
struct
PS_OUTPUT
{
float4
Color
:
SV_Target0
;
};
uniform
bool4
b4a
,
b4b
;
uniform
bool
b1a
,
b1b
;
PS_OUTPUT
main
()
{
bool4
r00
=
!
b4a
;
bool4
r01
=
b4a
&&
b4b
;
// vec, vec
bool4
r02
=
b4a
||
b4b
;
// vec, vec
bool4
r10
=
b1a
&&
b4b
;
// scalar, vec
bool4
r11
=
b1a
||
b4b
;
// scalar, vec
bool4
r20
=
b4a
&&
b1b
;
// vec, scalar
bool4
r21
=
b4a
||
b1b
;
// vec, scalar
PS_OUTPUT
psout
;
psout
.
Color
=
r00
||
r01
||
r02
||
r10
||
r11
||
r20
||
r21
;
return
psout
;
}
glslang/MachineIndependent/Intermediate.cpp
View file @
51634468
...
...
@@ -797,6 +797,9 @@ TIntermTyped* TIntermediate::addShapeConversion(TOperator op, const TType& type,
case
EOpNotEqual
:
case
EOpFunctionCall
:
case
EOpReturn
:
case
EOpLogicalAnd
:
case
EOpLogicalOr
:
case
EOpLogicalXor
:
break
;
default
:
return
node
;
...
...
@@ -1924,13 +1927,14 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
return
false
;
node
.
setLeft
(
left
=
convertedL
);
// also updates stack variable
node
.
setRight
(
right
=
convertedR
);
// also updates stack variable
}
else
{
// logical ops operate only on scalar Booleans and will promote to scalar Boolean.
if
(
left
->
getBasicType
()
!=
EbtBool
||
left
->
isVector
()
||
left
->
isMatrix
())
return
false
;
}
// logical ops operate only on scalar Booleans and will promote to scalar Boolean.
if
(
left
->
getBasicType
()
!=
EbtBool
||
left
->
isVector
()
||
left
->
isMatrix
())
return
false
;
node
.
setType
(
TType
(
EbtBool
,
EvqTemporary
,
left
->
getVectorSize
()));
node
.
setType
(
TType
(
EbtBool
));
break
;
case
EOpRightShift
:
...
...
gtests/Hlsl.FromFile.cpp
View file @
51634468
...
...
@@ -145,6 +145,7 @@ INSTANTIATE_TEST_CASE_P(
{
"hlsl.load.offsetarray.dx10.frag"
,
"main"
},
{
"hlsl.logical.unary.frag"
,
"main"
},
{
"hlsl.logical.binary.frag"
,
"main"
},
{
"hlsl.logical.binary.vec.frag"
,
"main"
},
{
"hlsl.multiEntry.vert"
,
"RealEntrypoint"
},
{
"hlsl.multiReturn.frag"
,
"main"
},
{
"hlsl.matrixindex.frag"
,
"main"
},
...
...
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