Lines Matching defs:funcRef
178 FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
180 ActualArguments &args{funcRef.arguments()};
183 if (funcRef.Rank() == 0) {
186 return MakeInvalidIntrinsic<T>(std::move(funcRef));
189 return Expr<T>{std::move(funcRef)};
224 return Expr<T>{std::move(funcRef)};
229 FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
231 ActualArguments &args{funcRef.arguments()};
234 if (funcRef.Rank() == 0) {
237 return MakeInvalidIntrinsic<T>(std::move(funcRef));
240 return Expr<T>{std::move(funcRef)};
286 return Expr<T>{std::move(funcRef)};
292 FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef, bool isUCOBOUND) {
294 ActualArguments &args{funcRef.arguments()};
297 if (funcRef.Rank() == 0) {
300 return MakeInvalidIntrinsic<T>(std::move(funcRef));
303 return Expr<T>{std::move(funcRef)};
317 return Expr<T>{std::move(funcRef)};
607 FoldingContext &context, FunctionRef<T> &funcRef) {
608 ActualArguments &args{funcRef.arguments()};
609 auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
642 return FoldDotProduct<T>(context, std::move(funcRef));
665 return FoldElementalIntrinsic<T, T, T, Int4>(context, std::move(funcRef),
682 context, std::move(funcRef), ScalarFunc<T, T, T>(fptr));
685 context, std::move(funcRef), &Scalar<T>::IAND, Scalar<T>{}.NOT());
688 context, std::move(funcRef), &Scalar<T>::IOR, Scalar<T>{});
717 return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
756 return FoldElementalIntrinsic<T, T, Int4, Int4>(context, std::move(funcRef),
779 context, std::move(funcRef), &Scalar<T>::IEOR, Scalar<T>{});
841 return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
847 return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
854 std::move(funcRef),
873 return FoldIntrinsicFunction(context, std::move(funcRef));
882 return FoldElementalIntrinsic<T, Int4>(context, std::move(funcRef),
887 return FoldMatmul(context, std::move(funcRef));
889 return FoldMINorMAX(context, std::move(funcRef), Ordering::Greater);
891 return FoldMaxvalMinval<T>(context, std::move(funcRef),
897 context, std::move(funcRef), &Scalar<T>::MERGE_BITS);
899 return FoldMINorMAX(context, std::move(funcRef), Ordering::Less);
901 return FoldMaxvalMinval<T>(context, std::move(funcRef),
907 context, std::move(funcRef), &Scalar<T>::NOT);
909 return FoldProduct<T>(context, std::move(funcRef), Scalar<T>{1});
941 return FoldElementalIntrinsic<T, T, Int4>(context, std::move(funcRef),
947 return FoldSum<T>(context, std::move(funcRef));
955 FunctionRef<Type<TypeCategory::Integer, KIND>> &&funcRef) {
956 if (auto foldedCommon{FoldIntrinsicFunctionCommon(context, funcRef)}) {
961 ActualArguments &args{funcRef.arguments()};
962 auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
979 return FoldElementalIntrinsic<T, T>(context, std::move(funcRef),
999 return FoldElementalIntrinsic<T, TR>(context, std::move(funcRef),
1019 return FoldCount<T, 1>(context, std::move(funcRef));
1021 return FoldCount<T, 2>(context, std::move(funcRef));
1023 return FoldCount<T, 4>(context, std::move(funcRef));
1025 return FoldCount<T, 8>(context, std::move(funcRef));
1028 return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
1043 [&funcRef, &context](const auto &x) -> Expr<T> {
1045 return FoldElementalIntrinsic<T, TR>(context, std::move(funcRef),
1053 return FoldLocation<WhichLocation::Findloc, T>(context, std::move(funcRef));
1073 [&funcRef, &context, &FromInt64](const auto &str) -> Expr<T> {
1077 std::move(funcRef),
1107 std::move(funcRef),
1123 std::move(funcRef),
1160 return LBOUND(context, std::move(funcRef));
1162 return COBOUND(context, std::move(funcRef), /*isUCOBOUND=*/false);
1167 [&funcRef, &context, &name](const auto &n) -> Expr<T> {
1170 return FoldElementalIntrinsic<T, TI>(context, std::move(funcRef),
1185 return FoldElementalIntrinsic<T, TI>(context, std::move(funcRef),
1205 return Expr<T>{std::move(funcRef)};
1208 return Expr<T>{std::move(funcRef)};
1220 return FoldElementalIntrinsic<T, TC>(context, std::move(funcRef),
1230 return RewriteSpecificMINorMAX(context, std::move(funcRef));
1241 return FoldLocation<WhichLocation::Maxloc, T>(context, std::move(funcRef));
1243 return RewriteSpecificMINorMAX(context, std::move(funcRef));
1254 return FoldLocation<WhichLocation::Minloc, T>(context, std::move(funcRef));
1268 return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
1300 return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
1404 return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
1422 return MakeInvalidIntrinsic<T>(std::move(funcRef));
1453 return UBOUND(context, std::move(funcRef));
1455 return COBOUND(context, std::move(funcRef), /*isUCOBOUND=*/true);
1478 return Expr<T>{std::move(funcRef)};
1484 FunctionRef<Type<TypeCategory::Unsigned, KIND>> &&funcRef) {
1485 if (auto foldedCommon{FoldIntrinsicFunctionCommon(context, funcRef)}) {
1489 ActualArguments &args{funcRef.arguments()};
1490 auto *intrinsic{std::get_if<SpecificIntrinsic>(&funcRef.proc().u)};
1508 return FoldElementalIntrinsic<T, T, T>(context, std::move(funcRef),
1524 return Expr<T>{std::move(funcRef)};