Semantics: Spec. changing to reflect reality of int/uint conversion for |^&.

This effects 4.x, where int/uint conversions are done, but not earlier.
This commit is contained in:
John Kessenich 2016-01-22 15:40:24 -07:00
parent 4889167430
commit 4bfeed5fe8
4 changed files with 318 additions and 24 deletions

View File

@ -185,3 +185,13 @@ void qlod()
}
struct SKeyMem { int precise; } KeyMem; // ERROR, keyword can't be a member
uniform uint uu;
out int iout;
void bitwiseConv()
{
iout = uu & i;
iout += uu ^ i;
iout += i | uu;
}

View File

@ -7,10 +7,10 @@ uniform bvec4 ub41, ub42;
uniform float uf;
uniform int ui;
#ifdef TEST_POST_110
uniform uvec4 uuv4;
uniform unsigned int uui;
#endif
uniform uint uui;
void main()
{
@ -19,9 +19,9 @@ void main()
bool b;
bvec4 bv4;
int i;
#ifdef TEST_POST_110
uint u;
#endif
// floating point
v = radians(uv4);
@ -51,37 +51,37 @@ void main()
v += sign(v);
v += floor(v);
#ifdef TEST_POST_110
v += trunc(v);
v += round(v);
v += roundEven(v);
#endif
v += ceil(v);
v += fract(v);
v += mod(v, v);
v += mod(v, v.x);
#ifdef TEST_POST_110
v += modf(v, v);
#endif
v += min(v, uv4);
v += max(v, uv4);
v += clamp(v, uv4, uv4);
v += mix(v,v,v);
#ifdef TEST_POST_110
v += mix(v,v,ub);
v += intBitsToFloat(v);
v += uintBitsToFloat(v);
v += fma(v);
v += mix(v,v,bv4);
v += intBitsToFloat(ivec4(i));
v += uintBitsToFloat(uv4);
v += fma(v,v,v);
v += frexp(v);
v += ldexp(v);
v += unpackUnorm2x16(v);
v += unpackUnorm4x8(v);
v += unpackSnorm4x8(v);
#endif
v += step(v,v);
v += smoothstep(v,v,v);
@ -96,7 +96,7 @@ void main()
v += fwidth(v);
//noise*(v);
#ifdef TEST_POST_110
// signed integer
i += abs(ui);
i += sign(i);
@ -118,15 +118,15 @@ void main()
u += floatsBitToInt(v);
u += packUnorm2x16(v);
u += packUnorm4x8(v);
u += packSnorm4x8(v);
u += floatBitsToUInt(v);
#endif
i += uui & i; // ERRORs, no int/uint conversions before 400
i += uui ^ i;
i += i | uui;
// bool
#ifdef TEST_POST_110
b = isnan(uf);
b = isinf(v);
#endif
b = isinf(v.y);
b = any(lessThan(v, uv4));
b = (b && any(lessThanEqual(v, uv4)));
b = (b && any(greaterThan(v, uv4)));

View File

@ -1,6 +1,34 @@
Operations.frag
ERROR: 0:76: 'intBitsToFloat' : no matching overloaded function found
ERROR: 0:77: 'uintBitsToFloat' : no matching overloaded function found
ERROR: 0:78: 'fma' : no matching overloaded function found
ERROR: 0:79: 'frexp' : no matching overloaded function found
ERROR: 0:80: 'ldexp' : no matching overloaded function found
ERROR: 0:81: 'unpackUnorm2x16' : no matching overloaded function found
ERROR: 0:82: 'unpackUnorm4x8' : no matching overloaded function found
ERROR: 0:83: 'unpackSnorm4x8' : no matching overloaded function found
ERROR: 0:107: 'floatsBitsToInt' : no matching overloaded function found
ERROR: 0:108: 'packUnorm2x16' : no matching overloaded function found
ERROR: 0:109: 'packUnorm4x8' : no matching overloaded function found
ERROR: 0:110: 'packSnorm4x8' : no matching overloaded function found
ERROR: 0:113: 'assign' : cannot convert from 'global float' to 'temp uint'
ERROR: 0:114: 'assign' : cannot convert from 'global float' to 'temp uint'
ERROR: 0:118: 'floatsBitToInt' : no matching overloaded function found
ERROR: 0:118: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:119: 'packUnorm2x16' : no matching overloaded function found
ERROR: 0:119: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:120: 'packUnorm4x8' : no matching overloaded function found
ERROR: 0:120: 'assign' : cannot convert from 'const float' to 'temp uint'
ERROR: 0:121: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type 'uniform uint' and a right operand of type 'temp int' (or there is no acceptable conversion)
ERROR: 0:121: 'assign' : cannot convert from 'uniform uint' to 'temp int'
ERROR: 0:122: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'uniform uint' and a right operand of type 'temp int' (or there is no acceptable conversion)
ERROR: 0:122: 'assign' : cannot convert from 'uniform uint' to 'temp int'
ERROR: 0:123: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'temp int' and a right operand of type 'uniform uint' (or there is no acceptable conversion)
ERROR: 25 compilation errors. No code generated.
Shader version: 130
0:? Sequence
ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void)
0:15 Function Parameters:
0:? Sequence
@ -107,6 +135,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 trunc (global 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 round (global 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 roundEven (global 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 4-component vector of float)
@ -128,6 +168,11 @@ Shader version: 130
0:63 'v' (temp 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:66 add second child into first child (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 modf (global 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:69 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float)
0:69 min (global 4-component vector of float)
@ -150,6 +195,44 @@ Shader version: 130
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:75 add second child into first child (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 mix (global 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'bv4' (temp 4-component vector of bool)
0:76 add second child into first child (temp 4-component vector of float)
0:76 'v' (temp 4-component vector of float)
0:76 Constant:
0:76 0.000000
0:77 add second child into first child (temp 4-component vector of float)
0:77 'v' (temp 4-component vector of float)
0:77 Constant:
0:77 0.000000
0:78 add second child into first child (temp 4-component vector of float)
0:78 'v' (temp 4-component vector of float)
0:78 Constant:
0:78 0.000000
0:79 add second child into first child (temp 4-component vector of float)
0:79 'v' (temp 4-component vector of float)
0:79 Constant:
0:79 0.000000
0:80 add second child into first child (temp 4-component vector of float)
0:80 'v' (temp 4-component vector of float)
0:80 Constant:
0:80 0.000000
0:81 add second child into first child (temp 4-component vector of float)
0:81 'v' (temp 4-component vector of float)
0:81 Constant:
0:81 0.000000
0:82 add second child into first child (temp 4-component vector of float)
0:82 'v' (temp 4-component vector of float)
0:82 Constant:
0:82 0.000000
0:83 add second child into first child (temp 4-component vector of float)
0:83 'v' (temp 4-component vector of float)
0:83 Constant:
0:83 0.000000
0:86 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float)
0:86 step (global 4-component vector of float)
@ -205,6 +288,75 @@ Shader version: 130
0:96 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 4-component vector of float)
0:101 add second child into first child (temp int)
0:101 'i' (temp int)
0:101 Absolute value (global int)
0:101 'ui' (uniform int)
0:102 add second child into first child (temp int)
0:102 'i' (temp int)
0:102 Sign (global int)
0:102 'i' (temp int)
0:103 add second child into first child (temp int)
0:103 'i' (temp int)
0:103 min (global int)
0:103 'i' (temp int)
0:103 'ui' (uniform int)
0:104 add second child into first child (temp int)
0:104 'i' (temp int)
0:104 max (global int)
0:104 'i' (temp int)
0:104 'ui' (uniform int)
0:105 add second child into first child (temp int)
0:105 'i' (temp int)
0:105 clamp (global int)
0:105 'i' (temp int)
0:105 'ui' (uniform int)
0:105 'ui' (uniform int)
0:107 Constant:
0:107 0.000000
0:108 Constant:
0:108 0.000000
0:109 Constant:
0:109 0.000000
0:110 Constant:
0:110 0.000000
0:113 'u' (temp uint)
0:114 'u' (temp uint)
0:115 add second child into first child (temp uint)
0:115 'u' (temp uint)
0:115 min (global uint)
0:115 'u' (temp uint)
0:115 'uui' (uniform uint)
0:116 add second child into first child (temp uint)
0:116 'u' (temp uint)
0:116 max (global uint)
0:116 'u' (temp uint)
0:116 'uui' (uniform uint)
0:117 add second child into first child (temp uint)
0:117 'u' (temp uint)
0:117 clamp (global uint)
0:117 'u' (temp uint)
0:117 'uui' (uniform uint)
0:117 'uui' (uniform uint)
0:118 'u' (temp uint)
0:119 'u' (temp uint)
0:120 'u' (temp uint)
0:121 'i' (temp int)
0:122 'i' (temp int)
0:123 add second child into first child (temp int)
0:123 'i' (temp int)
0:123 'i' (temp int)
0:127 move second child to first child (temp bool)
0:127 'b' (temp bool)
0:127 isnan (global bool)
0:127 'uf' (uniform float)
0:128 move second child to first child (temp bool)
0:128 'b' (temp bool)
0:128 isinf (global bool)
0:128 direct index (temp float)
0:128 'v' (temp 4-component vector of float)
0:128 Constant:
0:128 1 (const int)
0:130 move second child to first child (temp bool)
0:130 'b' (temp bool)
0:130 any (global bool)
@ -431,13 +583,15 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float)
0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)
Linked fragment stage:
Shader version: 130
0:? Sequence
ERROR: node is still EOpNull!
0:15 Function Definition: main( (global void)
0:15 Function Parameters:
0:? Sequence
@ -544,6 +698,18 @@ Shader version: 130
0:52 'v' (temp 4-component vector of float)
0:52 Floor (global 4-component vector of float)
0:52 'v' (temp 4-component vector of float)
0:55 add second child into first child (temp 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:55 trunc (global 4-component vector of float)
0:55 'v' (temp 4-component vector of float)
0:56 add second child into first child (temp 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:56 round (global 4-component vector of float)
0:56 'v' (temp 4-component vector of float)
0:57 add second child into first child (temp 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:57 roundEven (global 4-component vector of float)
0:57 'v' (temp 4-component vector of float)
0:60 add second child into first child (temp 4-component vector of float)
0:60 'v' (temp 4-component vector of float)
0:60 Ceiling (global 4-component vector of float)
@ -565,6 +731,11 @@ Shader version: 130
0:63 'v' (temp 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:66 add second child into first child (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 modf (global 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:66 'v' (temp 4-component vector of float)
0:69 add second child into first child (temp 4-component vector of float)
0:69 'v' (temp 4-component vector of float)
0:69 min (global 4-component vector of float)
@ -587,6 +758,44 @@ Shader version: 130
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:72 'v' (temp 4-component vector of float)
0:75 add second child into first child (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 mix (global 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'v' (temp 4-component vector of float)
0:75 'bv4' (temp 4-component vector of bool)
0:76 add second child into first child (temp 4-component vector of float)
0:76 'v' (temp 4-component vector of float)
0:76 Constant:
0:76 0.000000
0:77 add second child into first child (temp 4-component vector of float)
0:77 'v' (temp 4-component vector of float)
0:77 Constant:
0:77 0.000000
0:78 add second child into first child (temp 4-component vector of float)
0:78 'v' (temp 4-component vector of float)
0:78 Constant:
0:78 0.000000
0:79 add second child into first child (temp 4-component vector of float)
0:79 'v' (temp 4-component vector of float)
0:79 Constant:
0:79 0.000000
0:80 add second child into first child (temp 4-component vector of float)
0:80 'v' (temp 4-component vector of float)
0:80 Constant:
0:80 0.000000
0:81 add second child into first child (temp 4-component vector of float)
0:81 'v' (temp 4-component vector of float)
0:81 Constant:
0:81 0.000000
0:82 add second child into first child (temp 4-component vector of float)
0:82 'v' (temp 4-component vector of float)
0:82 Constant:
0:82 0.000000
0:83 add second child into first child (temp 4-component vector of float)
0:83 'v' (temp 4-component vector of float)
0:83 Constant:
0:83 0.000000
0:86 add second child into first child (temp 4-component vector of float)
0:86 'v' (temp 4-component vector of float)
0:86 step (global 4-component vector of float)
@ -642,6 +851,75 @@ Shader version: 130
0:96 'v' (temp 4-component vector of float)
0:96 fwidth (global 4-component vector of float)
0:96 'v' (temp 4-component vector of float)
0:101 add second child into first child (temp int)
0:101 'i' (temp int)
0:101 Absolute value (global int)
0:101 'ui' (uniform int)
0:102 add second child into first child (temp int)
0:102 'i' (temp int)
0:102 Sign (global int)
0:102 'i' (temp int)
0:103 add second child into first child (temp int)
0:103 'i' (temp int)
0:103 min (global int)
0:103 'i' (temp int)
0:103 'ui' (uniform int)
0:104 add second child into first child (temp int)
0:104 'i' (temp int)
0:104 max (global int)
0:104 'i' (temp int)
0:104 'ui' (uniform int)
0:105 add second child into first child (temp int)
0:105 'i' (temp int)
0:105 clamp (global int)
0:105 'i' (temp int)
0:105 'ui' (uniform int)
0:105 'ui' (uniform int)
0:107 Constant:
0:107 0.000000
0:108 Constant:
0:108 0.000000
0:109 Constant:
0:109 0.000000
0:110 Constant:
0:110 0.000000
0:113 'u' (temp uint)
0:114 'u' (temp uint)
0:115 add second child into first child (temp uint)
0:115 'u' (temp uint)
0:115 min (global uint)
0:115 'u' (temp uint)
0:115 'uui' (uniform uint)
0:116 add second child into first child (temp uint)
0:116 'u' (temp uint)
0:116 max (global uint)
0:116 'u' (temp uint)
0:116 'uui' (uniform uint)
0:117 add second child into first child (temp uint)
0:117 'u' (temp uint)
0:117 clamp (global uint)
0:117 'u' (temp uint)
0:117 'uui' (uniform uint)
0:117 'uui' (uniform uint)
0:118 'u' (temp uint)
0:119 'u' (temp uint)
0:120 'u' (temp uint)
0:121 'i' (temp int)
0:122 'i' (temp int)
0:123 add second child into first child (temp int)
0:123 'i' (temp int)
0:123 'i' (temp int)
0:127 move second child to first child (temp bool)
0:127 'b' (temp bool)
0:127 isnan (global bool)
0:127 'uf' (uniform float)
0:128 move second child to first child (temp bool)
0:128 'b' (temp bool)
0:128 isinf (global bool)
0:128 direct index (temp float)
0:128 'v' (temp 4-component vector of float)
0:128 Constant:
0:128 1 (const int)
0:130 move second child to first child (temp bool)
0:130 'b' (temp bool)
0:130 any (global bool)
@ -868,4 +1146,6 @@ Shader version: 130
0:? 'ub42' (uniform 4-component vector of bool)
0:? 'uf' (uniform float)
0:? 'ui' (uniform int)
0:? 'uuv4' (uniform 4-component vector of uint)
0:? 'uui' (uniform uint)

View File

@ -457,6 +457,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpMatrixTimesVector:
case EOpMatrixTimesScalar:
case EOpAnd:
case EOpInclusiveOr:
case EOpExclusiveOr:
case EOpFunctionCall:
case EOpReturn:
case EOpAssign: