HLSL: phase 2c: use lValueErrorCheck in HLSL FE
This commit splits lValueErrorCheck into machine dependent and independent parts. The GLSL form in TParseContext inherits from and invokes the machine dependent part in TParseContextBase. The base form checks language independent things. This split does not change the set of errors tested for: the test results are identical. The new base class interface is now used from the HLSL FE to test lvalues. There was one test diff due to this, where the test was writing to a uniform. It still does the same indirections, but does not attempt a uniform write.
This commit is contained in:
@@ -14,15 +14,14 @@ gl_FragCoord origin is upper left
|
||||
0:39 Compare Equal (temp bool)
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
0:40 move second child to first child (temp 4-component vector of float)
|
||||
0:40 i: direct index for structure (temp 4-component vector of float)
|
||||
0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
|
||||
0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
|
||||
0:40 Constant:
|
||||
0:40 1 (const uint)
|
||||
0:40 i: direct index for structure (temp 4-component vector of float)
|
||||
0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
|
||||
0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:40 1 (const uint)
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
@@ -56,15 +55,14 @@ gl_FragCoord origin is upper left
|
||||
0:39 Compare Equal (temp bool)
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
0:40 move second child to first child (temp 4-component vector of float)
|
||||
0:40 i: direct index for structure (temp 4-component vector of float)
|
||||
0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
|
||||
0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
|
||||
0:40 Constant:
|
||||
0:40 1 (const uint)
|
||||
0:40 i: direct index for structure (temp 4-component vector of float)
|
||||
0:40 s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
|
||||
0:40 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:40 1 (const uint)
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
@@ -85,12 +83,12 @@ gl_FragCoord origin is upper left
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 49
|
||||
// Id's are bound by 46
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 29 34 35 38 40 42 45 46 47 48
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 29 31 32 35 37 39 42 43 44 45
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 8 "FS"
|
||||
@@ -110,15 +108,15 @@ gl_FragCoord origin is upper left
|
||||
MemberName 22($Global) 3 "ff6"
|
||||
Name 24 ""
|
||||
Name 29 "ff4"
|
||||
Name 34 "@entryPointOutput"
|
||||
Name 35 "input"
|
||||
Name 38 "a"
|
||||
Name 40 "b"
|
||||
Name 42 "c"
|
||||
Name 45 "d"
|
||||
Name 46 "ff1"
|
||||
Name 47 "ff2"
|
||||
Name 48 "ff3"
|
||||
Name 31 "@entryPointOutput"
|
||||
Name 32 "input"
|
||||
Name 35 "a"
|
||||
Name 37 "b"
|
||||
Name 39 "c"
|
||||
Name 42 "d"
|
||||
Name 43 "ff1"
|
||||
Name 44 "ff2"
|
||||
Name 45 "ff3"
|
||||
MemberDecorate 20(myS) 0 Offset 0
|
||||
MemberDecorate 20(myS) 1 Offset 4
|
||||
MemberDecorate 20(myS) 2 Offset 16
|
||||
@@ -133,22 +131,22 @@ gl_FragCoord origin is upper left
|
||||
Decorate 29(ff4) Offset 4
|
||||
Decorate 29(ff4) Location 7
|
||||
Decorate 29(ff4) Binding 0
|
||||
Decorate 34(@entryPointOutput) Location 0
|
||||
Decorate 35(input) Location 0
|
||||
Decorate 38(a) Location 1
|
||||
Decorate 40(b) Flat
|
||||
Decorate 40(b) Location 2
|
||||
Decorate 42(c) NoPerspective
|
||||
Decorate 42(c) Centroid
|
||||
Decorate 42(c) Location 3
|
||||
Decorate 45(d) Centroid
|
||||
Decorate 45(d) Location 4
|
||||
Decorate 46(ff1) BuiltIn FrontFacing
|
||||
Decorate 47(ff2) Offset 4
|
||||
Decorate 47(ff2) Location 5
|
||||
Decorate 48(ff3) Offset 4
|
||||
Decorate 48(ff3) Location 6
|
||||
Decorate 48(ff3) Binding 0
|
||||
Decorate 31(@entryPointOutput) Location 0
|
||||
Decorate 32(input) Location 0
|
||||
Decorate 35(a) Location 1
|
||||
Decorate 37(b) Flat
|
||||
Decorate 37(b) Location 2
|
||||
Decorate 39(c) NoPerspective
|
||||
Decorate 39(c) Centroid
|
||||
Decorate 39(c) Location 3
|
||||
Decorate 42(d) Centroid
|
||||
Decorate 42(d) Location 4
|
||||
Decorate 43(ff1) BuiltIn FrontFacing
|
||||
Decorate 44(ff2) Offset 4
|
||||
Decorate 44(ff2) Location 5
|
||||
Decorate 45(ff3) Offset 4
|
||||
Decorate 45(ff3) Location 6
|
||||
Decorate 45(ff3) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeBool
|
||||
@@ -168,21 +166,20 @@ gl_FragCoord origin is upper left
|
||||
27: 25(int) Constant 0
|
||||
28: TypePointer Input 19(fvec4)
|
||||
29(ff4): 28(ptr) Variable Input
|
||||
31: TypePointer Uniform 19(fvec4)
|
||||
33: TypePointer Output 19(fvec4)
|
||||
34(@entryPointOutput): 33(ptr) Variable Output
|
||||
35(input): 28(ptr) Variable Input
|
||||
38(a): 28(ptr) Variable Input
|
||||
39: TypePointer Input 6(bool)
|
||||
40(b): 39(ptr) Variable Input
|
||||
41: TypePointer Input 18(float)
|
||||
42(c): 41(ptr) Variable Input
|
||||
43: TypeVector 18(float) 2
|
||||
44: TypePointer Input 43(fvec2)
|
||||
45(d): 44(ptr) Variable Input
|
||||
46(ff1): 39(ptr) Variable Input
|
||||
47(ff2): 39(ptr) Variable Input
|
||||
48(ff3): 39(ptr) Variable Input
|
||||
30: TypePointer Output 19(fvec4)
|
||||
31(@entryPointOutput): 30(ptr) Variable Output
|
||||
32(input): 28(ptr) Variable Input
|
||||
35(a): 28(ptr) Variable Input
|
||||
36: TypePointer Input 6(bool)
|
||||
37(b): 36(ptr) Variable Input
|
||||
38: TypePointer Input 18(float)
|
||||
39(c): 38(ptr) Variable Input
|
||||
40: TypeVector 18(float) 2
|
||||
41: TypePointer Input 40(fvec2)
|
||||
42(d): 41(ptr) Variable Input
|
||||
43(ff1): 36(ptr) Variable Input
|
||||
44(ff2): 36(ptr) Variable Input
|
||||
45(ff3): 36(ptr) Variable Input
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
10(s3): 9(ptr) Variable Function
|
||||
@@ -192,10 +189,7 @@ gl_FragCoord origin is upper left
|
||||
14: 7(bvec3) CompositeExtract 12 0
|
||||
15: 7(bvec3) LogicalEqual 13 14
|
||||
16: 6(bool) All 15
|
||||
30: 19(fvec4) Load 29(ff4)
|
||||
32: 31(ptr) AccessChain 24 26 27
|
||||
Store 32 30
|
||||
36: 19(fvec4) Load 35(input)
|
||||
Store 34(@entryPointOutput) 36
|
||||
33: 19(fvec4) Load 32(input)
|
||||
Store 31(@entryPointOutput) 33
|
||||
Return
|
||||
FunctionEnd
|
||||
|
||||
@@ -37,7 +37,7 @@ float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
|
||||
} s3;
|
||||
|
||||
s3 == s3;
|
||||
s2.i = s.ff4;
|
||||
s2.i; s.ff4; // no assignments to uniforms, but preserve indirections.
|
||||
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user