Lines Matching refs:right

233 bool Operator::isMatrixMultiply(const Type& left, const Type& right) {
238 return right.isMatrix() || right.isVector();
240 return left.isVector() && right.isMatrix();
249 const Type& right,
255 case Token::Kind::TK_EQ: // left = right
259 return right.canCoerceTo(left, allowNarrowing);
261 case Token::Kind::TK_EQEQ: // left == right
262 case Token::Kind::TK_NEQ: { // left != right
263 CoercionCost rightToLeft = right.coercionCost(left),
264 leftToRight = left.coercionCost(right);
274 *outLeftType = &right;
275 *outRightType = &right;
282 case Token::Kind::TK_LOGICALOR: // left || right
283 case Token::Kind::TK_LOGICALAND: // left && right
284 case Token::Kind::TK_LOGICALXOR: // left ^^ right
289 right.canCoerceTo(*context.fTypes.fBool, allowNarrowing);
291 case Token::Kind::TK_COMMA: // left, right
293 *outRightType = &right;
294 *outResultType = &right;
304 const Type& rightComponentType = right.componentType();
310 if (this->isMatrixMultiply(left, right)) { // left * right
312 if (!this->determineBinaryType(context, left.componentType(), right.componentType(),
318 *outRightType = &(*outResultType)->toCompound(context, right.columns(), right.rows());
320 int rightColumns = right.columns(), rightRows = right.rows();
321 if (right.isVector()) {
342 if (leftIsVectorOrMatrix && validMatrixOrVectorOp && right.isScalar()) {
344 if (!this->determineBinaryType(context, left.componentType(), right,
356 bool rightIsVectorOrMatrix = right.isVector() || right.isMatrix();
360 if (!this->determineBinaryType(context, left, right.componentType(),
365 *outRightType = &(*outRightType)->toCompound(context, right.columns(), right.rows());
367 *outResultType = &(*outResultType)->toCompound(context, right.columns(), right.rows());
372 CoercionCost rightToLeftCost = right.coercionCost(left);
374 : left.coercionCost(right);
376 if ((left.isScalar() && right.isScalar()) || (leftIsVectorOrMatrix && validMatrixOrVectorOp)) {
389 *outLeftType = &right;
390 *outRightType = &right;
391 *outResultType = &right;