MLIR  22.0.0git
OpenACCSupport.cpp
Go to the documentation of this file.
1 //===- OpenACCSupport.cpp - OpenACCSupport Implementation -----------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file implements the OpenACCSupport analysis interface.
10 //
11 //===----------------------------------------------------------------------===//
12 
15 
16 namespace mlir {
17 namespace acc {
18 
20  if (impl)
21  return impl->getVariableName(v);
22  return acc::getVariableName(v);
23 }
24 
25 std::string OpenACCSupport::getRecipeName(RecipeKind kind, Type type,
26  Value var) {
27  if (impl)
28  return impl->getRecipeName(kind, type, var);
29  // The default implementation assumes that only type matters
30  // and the actual instance of variable is not relevant.
31  auto recipeName = acc::getRecipeName(kind, type);
32  if (recipeName.empty())
33  emitNYI(var ? var.getLoc() : UnknownLoc::get(type.getContext()),
34  "variable privatization (incomplete recipe name handling)");
35  return recipeName;
36 }
37 
39  if (impl)
40  return impl->emitNYI(loc, message);
41  return mlir::emitError(loc, "not yet implemented: " + message);
42 }
43 
44 } // namespace acc
45 } // namespace mlir
union mlir::linalg::@1257::ArityGroupAndKind::Kind kind
This class represents a diagnostic that is inflight and set to be reported.
Definition: Diagnostics.h:316
This class defines the main interface for locations in MLIR and acts as a non-nullable wrapper around...
Definition: Location.h:76
Instances of the Type class are uniqued, have an immutable identifier and an optional mutable compone...
Definition: Types.h:74
MLIRContext * getContext() const
Return the MLIRContext in which this type was uniqued.
Definition: Types.cpp:35
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
Definition: Value.h:96
Location getLoc() const
Return the location of this value.
Definition: Value.cpp:24
InFlightDiagnostic emitNYI(Location loc, const Twine &message)
Report a case that is not yet supported by the implementation.
std::string getVariableName(Value v)
Get the variable name for a given value.
std::string getRecipeName(RecipeKind kind, Type type, Value var)
Get the recipe name for a given type and value.
std::string getVariableName(mlir::Value v)
Attempts to extract the variable name from a value by walking through view-like operations until an a...
std::string getRecipeName(mlir::acc::RecipeKind kind, mlir::Type type)
Get the recipe name for a given recipe kind and type.
Include the generated interface declarations.
InFlightDiagnostic emitError(Location loc)
Utility method to emit an error message using this location.
auto get(MLIRContext *context, Ts &&...params)
Helper method that injects context only if needed, this helps unify some of the attribute constructio...