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
16namespace mlir {
17namespace acc {
18
20 if (impl)
21 return impl->getVariableName(v);
22 return acc::getVariableName(v);
23}
24
25std::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
44bool OpenACCSupport::isValidSymbolUse(Operation *user, SymbolRefAttr symbol,
45 Operation **definingOpPtr) {
46 if (impl)
47 return impl->isValidSymbolUse(user, symbol, definingOpPtr);
48 return acc::isValidSymbolUse(user, symbol, definingOpPtr);
49}
50
51} // namespace acc
52} // namespace mlir
This class represents a diagnostic that is inflight and set to be reported.
This class defines the main interface for locations in MLIR and acts as a non-nullable wrapper around...
Definition Location.h:76
Operation is the basic unit of execution within MLIR.
Definition Operation.h:88
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.
bool isValidSymbolUse(Operation *user, SymbolRefAttr symbol, Operation **definingOpPtr=nullptr)
Check if a symbol use is valid for use in an OpenACC region.
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.
bool isValidSymbolUse(Operation *user, SymbolRefAttr symbol, Operation **definingOpPtr)
Include the generated interface declarations.
InFlightDiagnostic emitError(Location loc)
Utility method to emit an error message using this location.