glslang -> SPV: improved support for do-while/continue. Contributed by David Neto (dneto@google.com).
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31205 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
62
Test/baseResults/spv.do-simple.vert.out
Normal file
62
Test/baseResults/spv.do-simple.vert.out
Normal file
@@ -0,0 +1,62 @@
|
||||
spv.do-simple.vert
|
||||
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 26
|
||||
|
||||
Source GLSL 300
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4
|
||||
Name 4 "main"
|
||||
Name 9 "i"
|
||||
Name 24 "gl_VertexID"
|
||||
Name 25 "gl_InstanceID"
|
||||
Decorate 9(i) PrecisionHigh
|
||||
Decorate 24(gl_VertexID) PrecisionHigh
|
||||
Decorate 24(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 24(gl_VertexID) NoStaticUse
|
||||
Decorate 25(gl_InstanceID) PrecisionHigh
|
||||
Decorate 25(gl_InstanceID) BuiltIn InstanceId
|
||||
Decorate 25(gl_InstanceID) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeInt 32 1
|
||||
8: TypePointer Function 7(int)
|
||||
10: 7(int) Constant 0
|
||||
16: 7(int) Constant 1
|
||||
19: 7(int) Constant 10
|
||||
20: TypeBool
|
||||
23: TypePointer Input 7(int)
|
||||
24(gl_VertexID): 23(ptr) Variable Input
|
||||
25(gl_InstanceID): 23(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(i): 8(ptr) Variable Function
|
||||
Store 9(i) 10
|
||||
Branch 11
|
||||
11: Label
|
||||
LoopMerge 12 None
|
||||
Branch 13
|
||||
13: Label
|
||||
15: 7(int) Load 9(i)
|
||||
17: 7(int) IAdd 15 16
|
||||
Store 9(i) 17
|
||||
Branch 14
|
||||
14: Label
|
||||
18: 7(int) Load 9(i)
|
||||
21: 20(bool) SLessThan 18 19
|
||||
BranchConditional 21 22 12
|
||||
22: Label
|
||||
Branch 11
|
||||
12: Label
|
||||
Branch 6
|
||||
6: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
63
Test/baseResults/spv.for-simple.vert.out
Normal file
63
Test/baseResults/spv.for-simple.vert.out
Normal file
@@ -0,0 +1,63 @@
|
||||
spv.for-simple.vert
|
||||
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 26
|
||||
|
||||
Source GLSL 300
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4
|
||||
Name 4 "main"
|
||||
Name 9 "i"
|
||||
Name 18 "j"
|
||||
Name 24 "gl_VertexID"
|
||||
Name 25 "gl_InstanceID"
|
||||
Decorate 9(i) PrecisionHigh
|
||||
Decorate 18(j) PrecisionHigh
|
||||
Decorate 24(gl_VertexID) PrecisionHigh
|
||||
Decorate 24(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 24(gl_VertexID) NoStaticUse
|
||||
Decorate 25(gl_InstanceID) PrecisionHigh
|
||||
Decorate 25(gl_InstanceID) BuiltIn InstanceId
|
||||
Decorate 25(gl_InstanceID) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeInt 32 1
|
||||
8: TypePointer Function 7(int)
|
||||
10: 7(int) Constant 0
|
||||
14: 7(int) Constant 10
|
||||
15: TypeBool
|
||||
19: 7(int) Constant 12
|
||||
21: 7(int) Constant 1
|
||||
23: TypePointer Input 7(int)
|
||||
24(gl_VertexID): 23(ptr) Variable Input
|
||||
25(gl_InstanceID): 23(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(i): 8(ptr) Variable Function
|
||||
18(j): 8(ptr) Variable Function
|
||||
Store 9(i) 10
|
||||
Branch 11
|
||||
11: Label
|
||||
13: 7(int) Load 9(i)
|
||||
16: 15(bool) SLessThan 13 14
|
||||
LoopMerge 12 None
|
||||
BranchConditional 16 17 12
|
||||
17: Label
|
||||
Store 18(j) 19
|
||||
20: 7(int) Load 9(i)
|
||||
22: 7(int) IAdd 20 21
|
||||
Store 9(i) 22
|
||||
Branch 11
|
||||
12: Label
|
||||
Branch 6
|
||||
6: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
99
Test/baseResults/spv.while-continue-break.vert.out
Normal file
99
Test/baseResults/spv.while-continue-break.vert.out
Normal file
@@ -0,0 +1,99 @@
|
||||
spv.while-continue-break.vert
|
||||
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 43
|
||||
|
||||
Source GLSL 300
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4
|
||||
Name 4 "main"
|
||||
Name 9 "i"
|
||||
Name 18 "A"
|
||||
Name 26 "B"
|
||||
Name 28 "C"
|
||||
Name 38 "D"
|
||||
Name 41 "gl_VertexID"
|
||||
Name 42 "gl_InstanceID"
|
||||
Decorate 9(i) PrecisionHigh
|
||||
Decorate 18(A) PrecisionHigh
|
||||
Decorate 26(B) PrecisionHigh
|
||||
Decorate 28(C) PrecisionHigh
|
||||
Decorate 38(D) PrecisionHigh
|
||||
Decorate 41(gl_VertexID) PrecisionHigh
|
||||
Decorate 41(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 41(gl_VertexID) NoStaticUse
|
||||
Decorate 42(gl_InstanceID) PrecisionHigh
|
||||
Decorate 42(gl_InstanceID) BuiltIn InstanceId
|
||||
Decorate 42(gl_InstanceID) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeInt 32 1
|
||||
8: TypePointer Function 7(int)
|
||||
10: 7(int) Constant 0
|
||||
14: 7(int) Constant 10
|
||||
15: TypeBool
|
||||
19: 7(int) Constant 1
|
||||
21: 7(int) Constant 2
|
||||
30: 7(int) Constant 5
|
||||
39: 7(int) Constant 3
|
||||
40: TypePointer Input 7(int)
|
||||
41(gl_VertexID): 40(ptr) Variable Input
|
||||
42(gl_InstanceID): 40(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(i): 8(ptr) Variable Function
|
||||
18(A): 8(ptr) Variable Function
|
||||
26(B): 8(ptr) Variable Function
|
||||
28(C): 8(ptr) Variable Function
|
||||
38(D): 8(ptr) Variable Function
|
||||
Store 9(i) 10
|
||||
Branch 11
|
||||
11: Label
|
||||
13: 7(int) Load 9(i)
|
||||
16: 15(bool) SLessThan 13 14
|
||||
LoopMerge 12 None
|
||||
BranchConditional 16 17 12
|
||||
17: Label
|
||||
Store 18(A) 19
|
||||
20: 7(int) Load 9(i)
|
||||
22: 7(int) SMod 20 21
|
||||
23: 15(bool) IEqual 22 10
|
||||
SelectionMerge 25 None
|
||||
BranchConditional 23 24 25
|
||||
24: Label
|
||||
Store 26(B) 21
|
||||
Branch 11
|
||||
27: Label
|
||||
Store 28(C) 21
|
||||
Branch 25
|
||||
25: Label
|
||||
29: 7(int) Load 9(i)
|
||||
31: 7(int) SMod 29 30
|
||||
32: 15(bool) IEqual 31 10
|
||||
SelectionMerge 34 None
|
||||
BranchConditional 32 33 34
|
||||
33: Label
|
||||
Store 26(B) 21
|
||||
Branch 12
|
||||
35: Label
|
||||
Store 28(C) 21
|
||||
Branch 34
|
||||
34: Label
|
||||
36: 7(int) Load 9(i)
|
||||
37: 7(int) IAdd 36 19
|
||||
Store 9(i) 37
|
||||
Branch 11
|
||||
12: Label
|
||||
Store 38(D) 39
|
||||
Branch 6
|
||||
6: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
58
Test/baseResults/spv.while-simple.vert.out
Normal file
58
Test/baseResults/spv.while-simple.vert.out
Normal file
@@ -0,0 +1,58 @@
|
||||
spv.while-simple.vert
|
||||
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
|
||||
// Module Version 99
|
||||
// Generated by (magic number): 51a00bb
|
||||
// Id's are bound by 24
|
||||
|
||||
Source GLSL 300
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4
|
||||
Name 4 "main"
|
||||
Name 9 "i"
|
||||
Name 22 "gl_VertexID"
|
||||
Name 23 "gl_InstanceID"
|
||||
Decorate 9(i) PrecisionHigh
|
||||
Decorate 22(gl_VertexID) PrecisionHigh
|
||||
Decorate 22(gl_VertexID) BuiltIn VertexId
|
||||
Decorate 22(gl_VertexID) NoStaticUse
|
||||
Decorate 23(gl_InstanceID) PrecisionHigh
|
||||
Decorate 23(gl_InstanceID) BuiltIn InstanceId
|
||||
Decorate 23(gl_InstanceID) NoStaticUse
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
7: TypeInt 32 1
|
||||
8: TypePointer Function 7(int)
|
||||
10: 7(int) Constant 0
|
||||
14: 7(int) Constant 10
|
||||
15: TypeBool
|
||||
19: 7(int) Constant 1
|
||||
21: TypePointer Input 7(int)
|
||||
22(gl_VertexID): 21(ptr) Variable Input
|
||||
23(gl_InstanceID): 21(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
9(i): 8(ptr) Variable Function
|
||||
Store 9(i) 10
|
||||
Branch 11
|
||||
11: Label
|
||||
13: 7(int) Load 9(i)
|
||||
16: 15(bool) SLessThan 13 14
|
||||
LoopMerge 12 None
|
||||
BranchConditional 16 17 12
|
||||
17: Label
|
||||
18: 7(int) Load 9(i)
|
||||
20: 7(int) IAdd 18 19
|
||||
Store 9(i) 20
|
||||
Branch 11
|
||||
12: Label
|
||||
Branch 6
|
||||
6: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
@@ -36,6 +36,16 @@ if [ -a localtestlist ]
|
||||
done < localtestlist
|
||||
fi
|
||||
|
||||
#
|
||||
# SPIR-V code generation tests
|
||||
#
|
||||
grep -v "^#" test-spirv-list | while read t; do
|
||||
echo Running SPIR-V $t...
|
||||
b=`basename $t`
|
||||
$EXE -H $t > $TARGETDIR/$b.out
|
||||
diff -b $BASEDIR/$b.out $TARGETDIR/$b.out
|
||||
done
|
||||
|
||||
#
|
||||
# grouped shaders for bulk (faster) tests
|
||||
#
|
||||
|
||||
7
Test/spv.do-simple.vert
Normal file
7
Test/spv.do-simple.vert
Normal file
@@ -0,0 +1,7 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i = 0;
|
||||
do {
|
||||
i++;
|
||||
} while(i<10);
|
||||
}
|
||||
20
Test/spv.do-while-continue-break.vert
Normal file
20
Test/spv.do-while-continue-break.vert
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i = 0;
|
||||
int A, B, C, D, E, F, G;
|
||||
do {
|
||||
A = 0;
|
||||
if (i == 2) {
|
||||
B = 1;
|
||||
continue;
|
||||
C = 2;
|
||||
}
|
||||
if (i == 5) {
|
||||
D = 3;
|
||||
break;
|
||||
E = 42;
|
||||
}
|
||||
F = 99;
|
||||
} while (++i < 19);
|
||||
G = 12;
|
||||
}
|
||||
20
Test/spv.for-continue-break.vert
Normal file
20
Test/spv.for-continue-break.vert
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i;
|
||||
int A, B, C, D, E, F, G;
|
||||
for (i=0; i < 10 ; i++) {
|
||||
A = 1;
|
||||
if (i%2 ==0) {
|
||||
B = 1;
|
||||
continue;
|
||||
C = 1;
|
||||
}
|
||||
if (i%3 == 0) {
|
||||
D = 1;
|
||||
break;
|
||||
E = 1;
|
||||
}
|
||||
F = 12;
|
||||
}
|
||||
G = 99;
|
||||
}
|
||||
8
Test/spv.for-simple.vert
Normal file
8
Test/spv.for-simple.vert
Normal file
@@ -0,0 +1,8 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i;
|
||||
int j;
|
||||
for (i=0; i < 10 ; i++) {
|
||||
j = 12;
|
||||
}
|
||||
}
|
||||
20
Test/spv.while-continue-break.vert
Normal file
20
Test/spv.while-continue-break.vert
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i = 0;
|
||||
int A, B, C, D;
|
||||
while (i<10) {
|
||||
A = 1;
|
||||
if (i%2 == 0) {
|
||||
B = 2;
|
||||
continue;
|
||||
C = 2;
|
||||
}
|
||||
if (i%5 == 0) {
|
||||
B = 2;
|
||||
break;
|
||||
C = 2;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
D = 3;
|
||||
}
|
||||
7
Test/spv.while-simple.vert
Normal file
7
Test/spv.while-simple.vert
Normal file
@@ -0,0 +1,7 @@
|
||||
#version 300 es
|
||||
void main() {
|
||||
int i = 0;
|
||||
while (i<10) {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
9
Test/test-spirv-list
Normal file
9
Test/test-spirv-list
Normal file
@@ -0,0 +1,9 @@
|
||||
# Test looping constructs.
|
||||
# No tests yet for making sure break and continue from a nested loop
|
||||
# goes to the innermost target.
|
||||
spv.do-simple.vert
|
||||
spv.do-while-continue-break.vert
|
||||
spv.for-continue-break.vert
|
||||
spv.for-simple.vert
|
||||
spv.while-continue-break.vert
|
||||
spv.while-simple.vert
|
||||
Reference in New Issue
Block a user