clang 20.0.0git
|
An offload action combines host or/and device actions according to the programming model implementation needs and propagates the offloading kind to its dependences. More...
#include "clang/Driver/Action.h"
Classes | |
class | DeviceDependences |
Type used to communicate device actions. More... | |
class | HostDependence |
Type used to communicate host actions. More... | |
Public Member Functions | |
OffloadAction (const HostDependence &HDep) | |
OffloadAction (const DeviceDependences &DDeps, types::ID Ty) | |
OffloadAction (const HostDependence &HDep, const DeviceDependences &DDeps) | |
void | doOnHostDependence (const OffloadActionWorkTy &Work) const |
Execute the work specified in Work on the host dependence. | |
void | doOnEachDeviceDependence (const OffloadActionWorkTy &Work) const |
Execute the work specified in Work on each device dependence. | |
void | doOnEachDependence (const OffloadActionWorkTy &Work) const |
Execute the work specified in Work on each dependence. | |
void | doOnEachDependence (bool IsHostDependence, const OffloadActionWorkTy &Work) const |
Execute the work specified in Work on each host or device dependence if IsHostDependenceto is true or false, respectively. | |
bool | hasHostDependence () const |
Return true if the action has a host dependence. | |
Action * | getHostDependence () const |
Return the host dependence of this action. | |
bool | hasSingleDeviceDependence (bool DoNotConsiderHostActions=false) const |
Return true if the action has a single device dependence. | |
Action * | getSingleDeviceDependence (bool DoNotConsiderHostActions=false) const |
Return the single device dependence of this action. | |
Public Member Functions inherited from clang::driver::Action | |
virtual | ~Action () |
const char * | getClassName () const |
ActionClass | getKind () const |
types::ID | getType () const |
ActionList & | getInputs () |
const ActionList & | getInputs () const |
size_type | size () const |
input_iterator | input_begin () |
input_iterator | input_end () |
input_range | inputs () |
input_const_iterator | input_begin () const |
input_const_iterator | input_end () const |
input_const_range | inputs () const |
void | setCannotBeCollapsedWithNextDependentAction () |
Mark this action as not legal to collapse. | |
bool | isCollapsingWithNextDependentActionLegal () const |
Return true if this function can be collapsed with others. | |
std::string | getOffloadingKindPrefix () const |
Return a string containing the offload kind of the action. | |
void | propagateDeviceOffloadInfo (OffloadKind OKind, const char *OArch, const ToolChain *OToolChain) |
Set the device offload info of this action and propagate it to its dependences. | |
void | propagateHostOffloadInfo (unsigned OKinds, const char *OArch) |
Append the host offload info of this action and propagate it to its dependences. | |
void | setHostOffloadInfo (unsigned OKinds, const char *OArch) |
void | propagateOffloadInfo (const Action *A) |
Set the offload info of this action to be the same as the provided action, and propagate it to its dependences. | |
unsigned | getOffloadingHostActiveKinds () const |
OffloadKind | getOffloadingDeviceKind () const |
const char * | getOffloadingArch () const |
const ToolChain * | getOffloadingToolChain () const |
bool | isHostOffloading (unsigned int OKind) const |
Check if this action have any offload kinds. | |
bool | isDeviceOffloading (OffloadKind OKind) const |
bool | isOffloading (OffloadKind OKind) const |
Static Public Member Functions | |
static bool | classof (const Action *A) |
Static Public Member Functions inherited from clang::driver::Action | |
static const char * | getClassName (ActionClass AC) |
static std::string | GetOffloadingFileNamePrefix (OffloadKind Kind, StringRef NormalizedTriple, bool CreatePrefixForHost=false) |
Return a string that can be used as prefix in order to generate unique files for each offloading kind. | |
static StringRef | GetOffloadKindName (OffloadKind Kind) |
Return a string containing a offload kind name. | |
Additional Inherited Members | |
Protected Member Functions inherited from clang::driver::Action | |
Action (ActionClass Kind, types::ID Type) | |
Action (ActionClass Kind, Action *Input, types::ID Type) | |
Action (ActionClass Kind, Action *Input) | |
Action (ActionClass Kind, const ActionList &Inputs, types::ID Type) | |
Protected Attributes inherited from clang::driver::Action | |
unsigned | ActiveOffloadKindMask = 0u |
Offload information. | |
OffloadKind | OffloadingDeviceKind = OFK_None |
Offloading kind of the device. | |
const char * | OffloadingArch = nullptr |
The Offloading architecture associated with this action. | |
const ToolChain * | OffloadingToolChain = nullptr |
The Offloading toolchain associated with this device action. | |
An offload action combines host or/and device actions according to the programming model implementation needs and propagates the offloading kind to its dependences.
using clang::driver::OffloadAction::OffloadActionWorkTy = llvm::function_ref<void(Action *, const ToolChain *, const char *)> |
OffloadAction::OffloadAction | ( | const HostDependence & | HDep | ) |
Definition at line 186 of file Action.cpp.
References clang::driver::Action::ActiveOffloadKindMask, clang::driver::OffloadAction::HostDependence::getAction(), clang::driver::OffloadAction::HostDependence::getBoundArch(), clang::driver::OffloadAction::HostDependence::getOffloadKinds(), clang::driver::Action::OffloadingArch, and clang::driver::Action::propagateHostOffloadInfo().
OffloadAction::OffloadAction | ( | const DeviceDependences & | DDeps, |
types::ID | Ty | ||
) |
Definition at line 194 of file Action.cpp.
References clang::driver::OffloadAction::DeviceDependences::getBoundArchs(), clang::driver::Action::getInputs(), clang::driver::OffloadAction::DeviceDependences::getOffloadKinds(), clang::driver::OffloadAction::DeviceDependences::getToolChains(), clang::driver::Action::OffloadingArch, clang::driver::Action::OffloadingDeviceKind, and clang::driver::Action::size().
OffloadAction::OffloadAction | ( | const HostDependence & | HDep, |
const DeviceDependences & | DDeps | ||
) |
Definition at line 214 of file Action.cpp.
References clang::driver::Action::ActiveOffloadKindMask, clang::driver::OffloadAction::HostDependence::getAction(), clang::driver::OffloadAction::DeviceDependences::getActions(), clang::driver::OffloadAction::HostDependence::getBoundArch(), clang::driver::OffloadAction::DeviceDependences::getBoundArchs(), clang::driver::Action::getInputs(), clang::driver::OffloadAction::DeviceDependences::getOffloadKinds(), clang::driver::OffloadAction::HostDependence::getOffloadKinds(), clang::driver::OffloadAction::DeviceDependences::getToolChains(), clang::driver::Action::OffloadingArch, clang::driver::Action::OffloadingToolChain, and clang::driver::Action::propagateHostOffloadInfo().
Definition at line 396 of file Action.h.
References clang::driver::Action::getKind(), and clang::driver::Action::OffloadClass.
void OffloadAction::doOnEachDependence | ( | bool | IsHostDependence, |
const OffloadActionWorkTy & | Work | ||
) | const |
Execute the work specified in Work on each host or device dependence if IsHostDependenceto is true or false, respectively.
Definition at line 274 of file Action.cpp.
References doOnEachDeviceDependence(), and doOnHostDependence().
void OffloadAction::doOnEachDependence | ( | const OffloadActionWorkTy & | Work | ) | const |
Execute the work specified in Work on each dependence.
Definition at line 269 of file Action.cpp.
References doOnEachDeviceDependence(), and doOnHostDependence().
void OffloadAction::doOnEachDeviceDependence | ( | const OffloadActionWorkTy & | Work | ) | const |
Execute the work specified in Work on each device dependence.
Definition at line 247 of file Action.cpp.
References E, clang::driver::Action::getInputs(), and clang::driver::Action::size().
Referenced by doOnEachDependence().
void OffloadAction::doOnHostDependence | ( | const OffloadActionWorkTy & | Work | ) | const |
Execute the work specified in Work on the host dependence.
Definition at line 239 of file Action.cpp.
References clang::driver::Action::getInputs().
Referenced by doOnEachDependence().
Action * OffloadAction::getHostDependence | ( | ) | const |
Return the host dependence of this action.
This function is only expected to be called if the host dependence exists.
Definition at line 284 of file Action.cpp.
References clang::driver::Action::getInputs(), and hasHostDependence().
Return the single device dependence of this action.
This function is only expected to be called if a single device dependence exists. If DoNotConsiderHostActions is set, a host dependence is allowed.
Definition at line 298 of file Action.cpp.
References clang::driver::Action::getInputs(), and hasSingleDeviceDependence().
bool OffloadAction::hasHostDependence | ( | ) | const |
Return true if the action has a host dependence.
Definition at line 282 of file Action.cpp.
Referenced by getHostDependence().
Return true if the action has a single device dependence.
If DoNotConsiderHostActions is set, ignore the host dependence, if any, while accounting for the number of dependences.
Definition at line 290 of file Action.cpp.
References clang::driver::Action::getInputs().
Referenced by getSingleDeviceDependence().