Lines Matching refs:left
23 static bool is_low_precision_matrix_vector_multiply(const Expression& left,
29 left.type().isMatrix() &&
31 left.type().rows() == right.type().columns() &&
32 Analysis::IsTrivialExpression(left) &&
37 const Expression& left,
43 for (int n = 0; n < left.type().rows(); ++n) {
46 context, left.clone(), Literal::MakeInt(context, left.fLine, n));
70 std::unique_ptr<Expression> left,
73 if (!left || !right) {
76 const int line = left->fLine;
78 const Type* rawLeftType = (left->isIntLiteral() && right->type().isInteger())
80 : &left->type();
81 const Type* rawRightType = (right->isIntLiteral() && left->type().isInteger())
82 ? &left->type()
87 !Analysis::UpdateVariableRefKind(left.get(),
101 "' cannot operate on '" + left->type().displayName() +
107 context.fErrors->error(line, "assignments to opaque type '" + left->type().displayName() +
127 left = leftType->coerceExpression(std::move(left), context);
129 if (!left || !right) {
133 return BinaryExpression::Make(context, std::move(left), op, std::move(right), resultType);
137 std::unique_ptr<Expression> left,
144 SkAssertResult(op.determineBinaryType(context, left->type(), right->type(),
147 return BinaryExpression::Make(context, std::move(left), op, std::move(right), resultType);
151 std::unique_ptr<Expression> left,
157 SkASSERT(!context.fConfig->strictES2Mode() || !left->type().isOrContainsArray());
160 SkASSERT(!op.isAssignment() || Analysis::IsAssignable(*left));
161 SkASSERT(!op.isAssignment() || !left->type().componentType().isOpaque());
165 left->type().checkForOutOfRangeLiteral(context, *right);
169 const int line = left->fLine;
170 if (std::unique_ptr<Expression> result = ConstantFolder::Simplify(context, line, *left,
180 if (is_low_precision_matrix_vector_multiply(*left, op, *right, *resultType)) {
188 rewrite_matrix_vector_multiply(context, *left, op, *right, *resultType);
201 std::make_unique<BinaryExpression>(line, std::move(left), op,
207 return std::make_unique<BinaryExpression>(line, std::move(left), op,
238 this->left()->clone(),
245 return "(" + this->left()->description() +