23 return left > right ? left :
right;
103 case EOpAbs:
return "abs";
113 case EOpAny:
return "any";
114 case EOpAll:
return "all";
216 if (leftTempConstant && rightTempConstant) {
217 typedReturnNode = leftTempConstant->
fold(node->
getOp(), rightTempConstant,
infoSink);
220 return typedReturnNode;
351 if (childTempConstant) {
512 newNode->setLine(node->
getLine());
513 newNode->setOperand(node);
528 if (left == 0 && right == 0)
602 return commaAggregate;
674 for (
int i = 0;
i < fields.
num;
i++) {
678 sequenceVector.push_back(constIntNode);
847 if (
left->isArray() ||
right->isArray()) {
854 if (
left->getBasicType() !=
right->getBasicType())
913 if (
left->getNominalSize() !=
right->getNominalSize()) {
916 if (
left->getNominalSize() != 1 &&
right->getNominalSize() != 1)
929 if (!
left->isMatrix() &&
right->isMatrix()) {
930 if (
left->isVector())
936 }
else if (
left->isMatrix() && !
right->isMatrix()) {
937 if (
right->isVector()) {
943 }
else if (
left->isMatrix() &&
right->isMatrix()) {
945 }
else if (!
left->isMatrix() && !
right->isMatrix()) {
946 if (
left->isVector() &&
right->isVector()) {
948 }
else if (
left->isVector() ||
right->isVector()) {
958 if (!
left->isMatrix() &&
right->isMatrix()) {
959 if (
left->isVector())
964 }
else if (
left->isMatrix() && !
right->isMatrix()) {
965 if (
right->isVector()) {
970 }
else if (
left->isMatrix() &&
right->isMatrix()) {
972 }
else if (!
left->isMatrix() && !
right->isMatrix()) {
973 if (
left->isVector() &&
right->isVector()) {
975 }
else if (
left->isVector() ||
right->isVector()) {
976 if (!
left->isVector())
995 if ((
left->isMatrix() &&
right->isVector()) ||
1007 if ((
left->isMatrix() &&
right->isVector()) ||
1008 (
left->isVector() &&
right->isMatrix()))
1024 size_t structSize = fields.size();
1027 for (
size_t j = 0;
j < structSize;
j++) {
1028 size_t size = fields[
j]->type()->getObjectSize();
1029 for (
size_t i = 0;
i <
size;
i++) {
1034 if (leftUnionArray[index] != rightUnionArray[index])
1046 TType typeWithoutArrayness = leftNodeType;
1051 for (
size_t i = 0;
i < arraySize; ++
i) {
1053 if (!
CompareStruct(typeWithoutArrayness, &rightUnionArray[offset], &leftUnionArray[offset]))
1057 return CompareStruct(leftNodeType, rightUnionArray, leftUnionArray);
1082 for (
size_t i = 0;
i < objectSize; ++
i)
1097 bool boolNodeFlag =
false;
1102 for (
size_t i = 0;
i < objectSize;
i++)
1103 tempConstArray[
i] = unionArray[
i] + rightUnionArray[
i];
1109 for (
size_t i = 0;
i < objectSize;
i++)
1110 tempConstArray[
i] = unionArray[
i] - rightUnionArray[
i];
1119 for (
size_t i = 0;
i < objectSize;
i++)
1120 tempConstArray[
i] = unionArray[
i] * rightUnionArray[
i];
1134 for (
int i = 0;
i <
size;
i++) {
1144 for (
size_t i = 0;
i < objectSize;
i++) {
1147 if (rightUnionArray[
i] == 0.0
f) {
1155 if (rightUnionArray[
i] == 0) {
1179 for (
int j = 0;
j <
size;
j++) {
1200 for (
int j = 0;
j <
size;
j++) {
1210 for (
size_t i = 0;
i < objectSize;
i++)
1211 tempConstArray[
i] = unionArray[
i] && rightUnionArray[
i];
1218 for (
size_t i = 0;
i < objectSize;
i++)
1219 tempConstArray[
i] = unionArray[
i] || rightUnionArray[
i];
1226 for (
size_t i = 0;
i < objectSize;
i++)
1228 case EbtBool: tempConstArray[
i].
setBConst((unionArray[
i] == rightUnionArray[
i]) ?
false :
true);
break;
1229 default:
assert(
false &&
"Default missing");
1237 tempConstArray->
setBConst(*unionArray < *rightUnionArray);
1243 tempConstArray->
setBConst(*unionArray > *rightUnionArray);
1250 constant.
setBConst(*unionArray > *rightUnionArray);
1260 constant.
setBConst(*unionArray < *rightUnionArray);
1270 boolNodeFlag =
true;
1272 for (
size_t i = 0;
i < objectSize;
i++) {
1273 if (unionArray[
i] != rightUnionArray[
i]) {
1274 boolNodeFlag =
true;
1281 if (!boolNodeFlag) {
1296 boolNodeFlag =
true;
1298 for (
size_t i = 0;
i < objectSize;
i++) {
1299 if (unionArray[
i] == rightUnionArray[
i]) {
1300 boolNodeFlag =
true;
1307 if (!boolNodeFlag) {
1333 for (
size_t i = 0;
i < objectSize;
i++) {
1368 for (
size_t i = 0;
i <
size;
i++) {
1370 switch (promoteTo) {
1435 if (hashFunction ==
NULL || name.empty())
1440 TString hashedName = stream.str();
TIntermConstantUnion(ConstantUnion *unionPointer, const TType &t)
TSymbolTable & symbolTable
void message(TPrefixType p, const TSourceLoc &loc, const char *m)
void setPrecision(TPrecision p)
TIntermSequence & getSequence()
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
#define HASHED_NAME_PREFIX
bool promote(TInfoSink &)
virtual TIntermAggregate * getAsAggregate()
khronos_uint64_t(* ShHashFunction64)(const char *, size_t)
void setType(const TType &t)
static void init(struct bs2b *bs2b)
TBasicType getBasicType() const
TPrecision getPrecision() const
TBasicType getBasicType() const
int getNominalSize() const
bool isConstructor() const
EGLImageKHR EGLint * name
void setQualifier(TQualifier q)
bool getBConst(int index) const
bool promote(TInfoSink &)
void setLine(const TSourceLoc &l)
virtual TIntermConstantUnion * getAsConstantUnion()
TPrecision getPrecision() const
GLenum GLenum GLvoid * row
TQualifier getQualifier() const
std::basic_ostringstream< char, std::char_traits< char >, TStringAllocator > TStringStream
void RemoveAllTreeNodes(TIntermNode *root)
const TSourceLoc & getLine() const
const TType & getType() const
static TString hash(const TString &name, ShHashFunction64 hashFunction)
GLenum GLenum GLvoid GLvoid * column
ConstantUnion * getUnionArrayPointer() const
void setRight(TIntermTyped *n)
virtual TIntermTyped * getAsTyped()
int getIConst(int index) const
std::basic_string< char, std::char_traits< char >, TStringAllocator > TString
void setLeft(TIntermTyped *n)
TIntermTyped * fold(TOperator, TIntermTyped *, TInfoSink &)
virtual TIntermTyped * getAsTyped()
size_t getObjectSize() const
const TFieldList & fields() const
TStructure * getStruct() const
float getFConst(int index) const
bool modifiesState() const
int getNominalSize() const
void setOperand(TIntermTyped *o)