Lines Matching refs:Expr

16 static std::optional<Expr<SomeType>> ZeroExtend(const Constant<T> &c) {  in ZeroExtend()
27 static Expr<T> FoldAllAny(FoldingContext &context, FunctionRef<T> &&ref, in FoldAllAny()
39 return Expr<T>{DoReduction<T>(*array, dim, identity, accumulator)}; in FoldAllAny()
41 return Expr<T>{std::move(ref)}; in FoldAllAny()
45 Expr<Type<TypeCategory::Logical, KIND>> FoldIntrinsicFunction( in FoldIntrinsicFunction()
62 const Expr<SomeType> *firstArgExpr{args[0]->UnwrapExpr()}; in FoldIntrinsicFunction()
66 const Expr<SomeType> *secondArgExpr{args[1]->UnwrapExpr()}; in FoldIntrinsicFunction()
71 return gotConstant ? Expr<T>{false} : Expr<T>{std::move(funcRef)}; in FoldIntrinsicFunction()
80 std::optional<Expr<SomeType>> constArgs[2]; in FoldIntrinsicFunction()
84 } else if (auto *x{UnwrapExpr<Expr<SomeInteger>>(args[i])}) { in FoldIntrinsicFunction()
121 return Expr<T>{std::move(funcRef)}; in FoldIntrinsicFunction()
124 if (const auto *ix{UnwrapExpr<Expr<SomeInteger>>(args[0])}) { in FoldIntrinsicFunction()
151 return Expr<T>{*result}; in FoldIntrinsicFunction()
182 return Expr<T>{true}; in FoldIntrinsicFunction()
188 auto *cx0{UnwrapExpr<Expr<SomeCharacter>>(args[0])}; in FoldIntrinsicFunction()
189 auto *cx1{UnwrapExpr<Expr<SomeCharacter>>(args[1])}; in FoldIntrinsicFunction()
201 if (auto *expr{UnwrapExpr<Expr<SomeLogical>>(args[0])}) { in FoldIntrinsicFunction()
214 return Expr<T>{*result}; in FoldIntrinsicFunction()
229 return Expr<T>{true}; in FoldIntrinsicFunction()
234 return Expr<T>{std::move(funcRef)}; in FoldIntrinsicFunction()
238 Expr<LogicalResult> FoldOperation( in FoldOperation()
241 std::function<Expr<LogicalResult>(Expr<T> &&, Expr<T> &&)>{ in FoldOperation()
242 [=](Expr<T> &&x, Expr<T> &&y) { in FoldOperation()
243 return Expr<LogicalResult>{Relational<SomeType>{ in FoldOperation()
263 return Expr<LogicalResult>{Constant<LogicalResult>{result}}; in FoldOperation()
265 return Expr<LogicalResult>{Relational<SomeType>{std::move(relation)}}; in FoldOperation()
268 Expr<LogicalResult> FoldOperation( in FoldOperation()
272 return Expr<LogicalResult>{FoldOperation(context, std::move(x))}; in FoldOperation()
278 Expr<Type<TypeCategory::Logical, KIND>> FoldOperation( in FoldOperation()
286 return Expr<Ty>{Constant<Ty>{!value->IsTrue()}}; in FoldOperation()
288 return Expr<Ty>{x}; in FoldOperation()
292 Expr<Type<TypeCategory::Logical, KIND>> FoldOperation( in FoldOperation()
296 std::function<Expr<LOGICAL>(Expr<LOGICAL> &&, Expr<LOGICAL> &&)>{ in FoldOperation()
297 [=](Expr<LOGICAL> &&x, Expr<LOGICAL> &&y) { in FoldOperation()
298 return Expr<LOGICAL>{LogicalOperation<KIND>{ in FoldOperation()
321 return Expr<LOGICAL>{Constant<LOGICAL>{result}}; in FoldOperation()
323 return Expr<LOGICAL>{std::move(operation)}; in FoldOperation()