Lines Matching defs:context

61 static std::unique_ptr<Expression> assemble_compound(const Context& context,
71 return ConstructorCompound::Make(context, line, returnType, std::move(array));
165 static std::unique_ptr<Expression> optimize_comparison(const Context& context,
189 const Type& bvecType = context.fTypes.fBool->toCompound(context, type.columns(), /*rows=*/1);
190 return assemble_compound(context, left->fLine, bvecType, array);
195 static std::unique_ptr<Expression> evaluate_n_way_intrinsic(const Context& context,
245 return assemble_compound(context, arg0->fLine, returnType, array);
249 static std::unique_ptr<Expression> evaluate_intrinsic(const Context& context,
257 return evaluate_n_way_intrinsic(context, arguments[0], /*arg1=*/nullptr, /*arg2=*/nullptr,
261 static std::unique_ptr<Expression> evaluate_intrinsic_numeric(const Context& context,
270 return evaluate_intrinsic<float>(context, arguments, returnType, eval);
273 return evaluate_intrinsic<SKSL_INT>(context, arguments, returnType, eval);
280 static std::unique_ptr<Expression> evaluate_pairwise_intrinsic(const Context& context,
300 return evaluate_n_way_intrinsic(context, arguments[0], arguments[1], /*arg2=*/nullptr,
304 static std::unique_ptr<Expression> evaluate_3_way_intrinsic(const Context& context,
326 return evaluate_n_way_intrinsic(context, arguments[0], arguments[1], arguments[2],
433 static std::unique_ptr<Expression> optimize_intrinsic_call(const Context& context,
452 return evaluate_intrinsic<float>(context, arguments, returnType,
455 return evaluate_intrinsic<float>(context, arguments, returnType,
458 return evaluate_intrinsic<float>(context, arguments, returnType,
461 return evaluate_intrinsic<float>(context, arguments, returnType,
464 return evaluate_intrinsic<float>(context, arguments, returnType,
467 return evaluate_intrinsic<float>(context, arguments, returnType,
470 return evaluate_intrinsic<float>(context, arguments, returnType,
473 return evaluate_intrinsic<float>(context, arguments, returnType,
476 return evaluate_intrinsic<float>(context, arguments, returnType,
479 return evaluate_intrinsic<float>(context, arguments, returnType,
483 return evaluate_intrinsic<float>(context, arguments, returnType,
486 return evaluate_pairwise_intrinsic(context, arguments, returnType,
490 return evaluate_intrinsic<float>(context, arguments, returnType,
494 return evaluate_intrinsic<float>(context, arguments, returnType,
497 return evaluate_intrinsic<float>(context, arguments, returnType,
501 return evaluate_pairwise_intrinsic(context, arguments, returnType,
504 return evaluate_intrinsic<float>(context, arguments, returnType,
507 return evaluate_intrinsic<float>(context, arguments, returnType,
510 return evaluate_intrinsic<float>(context, arguments, returnType,
513 return evaluate_intrinsic<float>(context, arguments, returnType,
516 return evaluate_intrinsic<float>(context, arguments, returnType,
519 return evaluate_intrinsic<float>(context, arguments, returnType,
523 return evaluate_intrinsic_numeric(context, arguments, returnType,
526 return evaluate_intrinsic_numeric(context, arguments, returnType,
529 return evaluate_intrinsic<float>(context, arguments, returnType,
532 return evaluate_intrinsic<float>(context, arguments, returnType,
535 return evaluate_intrinsic<float>(context, arguments, returnType,
538 return evaluate_pairwise_intrinsic(context, arguments, returnType,
541 return evaluate_pairwise_intrinsic(context, arguments, returnType,
544 return evaluate_pairwise_intrinsic(context, arguments, returnType,
547 return evaluate_3_way_intrinsic(context, arguments, returnType,
550 return evaluate_intrinsic<float>(context, arguments, returnType,
569 return evaluate_n_way_intrinsic(context, arguments[0], arguments[1], arguments[2],
572 return evaluate_3_way_intrinsic(context, arguments, returnType,
576 return evaluate_pairwise_intrinsic(context, arguments, returnType,
579 return evaluate_3_way_intrinsic(context, arguments, returnType,
582 return evaluate_intrinsic<float>(context, arguments, returnType,
586 return evaluate_intrinsic<float>(context, arguments, returnType,
589 return evaluate_intrinsic<float>(context, arguments, returnType,
592 return evaluate_intrinsic<float>(context, arguments, returnType,
595 return evaluate_intrinsic<SKSL_INT>(context, arguments, returnType,
598 return evaluate_intrinsic<SKSL_INT>(context, arguments, returnType,
635 return assemble_compound(context, arguments[0]->fLine, returnType, vec);
670 return evaluate_pairwise_intrinsic(context, arguments, returnType,
680 return assemble_compound(context, arguments[0]->fLine, returnType, mat);
690 return assemble_compound(context, arguments[0]->fLine, returnType, mat);
738 return assemble_compound(context, arguments[0]->fLine, returnType, dmat);
742 return optimize_comparison(context, arguments, Intrinsics::compare_lessThan);
745 return optimize_comparison(context, arguments, Intrinsics::compare_lessThanEqual);
748 return optimize_comparison(context, arguments, Intrinsics::compare_greaterThan);
751 return optimize_comparison(context, arguments, Intrinsics::compare_greaterThanEqual);
754 return optimize_comparison(context, arguments, Intrinsics::compare_equal);
757 return optimize_comparison(context, arguments, Intrinsics::compare_notEqual);
768 return evaluate_intrinsic<bool>(context, arguments, returnType,
815 CoercionCost FunctionCall::CallCost(const Context& context, const FunctionDeclaration& function,
817 if (context.fConfig->strictES2Mode() &&
837 const Context& context,
846 CoercionCost cost = CallCost(context, *f, arguments);
855 std::unique_ptr<Expression> FunctionCall::Convert(const Context& context,
861 return Constructor::Convert(context,
869 context.fErrors->error(line,
879 arguments[i] = types[i]->coerceExpression(std::move(arguments[i]), context);
889 const FunctionDeclaration* best = FindBestFunctionForCall(context, functions,
892 return FunctionCall::Convert(context, line, *best, std::move(arguments));
902 context.fErrors->error(line, msg);
910 const FunctionDeclaration* best = FindBestFunctionForCall(context, functions,
913 return FunctionCall::Convert(context, line, *best, std::move(arguments));
924 context.fErrors->error(line, msg);
930 context.fErrors->error(line, "not a function");
935 std::unique_ptr<Expression> FunctionCall::Convert(const Context& context,
940 if (context.fConfig->strictES2Mode() && (function.modifiers().fFlags & Modifiers::kES3_Flag)) {
941 context.fErrors->error(line, "call to '" + function.description() + "' is not supported");
953 context.fErrors->error(line, msg);
969 context.fErrors->error(line, msg);
975 arguments[i] = types[i]->coerceExpression(std::move(arguments[i]), context);
985 if (!Analysis::UpdateVariableRefKind(arguments[i].get(), refKind, context.fErrors)) {
996 return ChildCall::Make(context, line, returnType, child, std::move(arguments));
999 return Make(context, line, returnType, function, std::move(arguments));
1002 std::unique_ptr<Expression> FunctionCall::Make(const Context& context,
1012 if (std::unique_ptr<Expression> expr = optimize_intrinsic_call(context,