Parser: Add 64-bit type conversion for specialization constant.

This commit is contained in:
Rex Xu 2016-09-05 16:10:14 +08:00
parent 7d01bd6f0b
commit 64bcfdb632
8 changed files with 183 additions and 96 deletions

View file

@ -1444,6 +1444,8 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const
case EOpIndexIndirect:
case EOpIndexDirectStruct:
case EOpVectorSwizzle:
case EOpConvFloatToDouble:
case EOpConvDoubleToFloat:
return true;
default:
return false;
@ -1474,6 +1476,20 @@ bool TIntermediate::isSpecializationOperation(const TIntermOperator& node) const
case EOpConvBoolToInt:
case EOpConvIntToUint:
case EOpConvBoolToUint:
case EOpConvInt64ToBool:
case EOpConvBoolToInt64:
case EOpConvUint64ToBool:
case EOpConvBoolToUint64:
case EOpConvInt64ToInt:
case EOpConvIntToInt64:
case EOpConvUint64ToUint:
case EOpConvUintToUint64:
case EOpConvInt64ToUint64:
case EOpConvUint64ToInt64:
case EOpConvInt64ToUint:
case EOpConvUintToInt64:
case EOpConvUint64ToInt:
case EOpConvIntToUint64:
// unary operations
case EOpNegative:

View file

@ -4942,7 +4942,7 @@ const TFunction* TParseContext::findFunction120(const TSourceLoc& loc, const TFu
// "When function calls are resolved, an exact type match for all the arguments
// is sought. If an exact match is found, all other functions are ignored, and
// the exact match is used. If no exact match is found, then the implicit
// conversions in section 4.1.10 Implicit Conversions will be applied to find
// conversions in section 4.1.10 Implicit Conversions will be applied to find
// a match. Mismatched types on input parameters (in or inout or default) must
// have a conversion from the calling argument type to the formal parameter type.
// Mismatched types on output parameters (out or inout) must have a conversion