clang 22.0.0git
clang::driver::OffloadAction Class Referencefinal

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"

Inheritance diagram for clang::driver::OffloadAction:
[legend]

Classes

class  DeviceDependences
 Type used to communicate device actions. More...
class  HostDependence
 Type used to communicate host actions. More...

Public Types

using OffloadActionWorkTy
Public Types inherited from clang::driver::Action
enum  ActionClass {
  InputClass = 0 , BindArchClass , OffloadClass , PreprocessJobClass ,
  PrecompileJobClass , ExtractAPIJobClass , AnalyzeJobClass , CompileJobClass ,
  BackendJobClass , AssembleJobClass , LinkJobClass , IfsMergeJobClass ,
  LipoJobClass , DsymutilJobClass , VerifyDebugInfoJobClass , VerifyPCHJobClass ,
  OffloadBundlingJobClass , OffloadUnbundlingJobClass , OffloadPackagerJobClass , LinkerWrapperJobClass ,
  StaticLibJobClass , BinaryAnalyzeJobClass , BinaryTranslatorJobClass , ObjcopyJobClass ,
  JobClassFirst = PreprocessJobClass , JobClassLast = ObjcopyJobClass
}
enum  OffloadKind {
  OFK_None = 0x00 , OFK_Host = 0x01 , OFK_Cuda = 0x02 , OFK_OpenMP = 0x04 ,
  OFK_HIP = 0x08 , OFK_SYCL = 0x10
}
using size_type = ActionList::size_type
using input_iterator = ActionList::iterator
using input_const_iterator = ActionList::const_iterator
using input_range = llvm::iterator_range<input_iterator>
using input_const_range = llvm::iterator_range<input_const_iterator>

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.
ActiongetHostDependence () const
 Return the host dependence of this action.
bool hasSingleDeviceDependence (bool DoNotConsiderHostActions=false) const
 Return true if the action has a single device dependence.
ActiongetSingleDeviceDependence (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
ActionListgetInputs ()
const ActionListgetInputs () 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 ToolChaingetOffloadingToolChain () 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 ToolChainOffloadingToolChain = nullptr
 The Offloading toolchain associated with this device action.

Detailed Description

An offload action combines host or/and device actions according to the programming model implementation needs and propagates the offloading kind to its dependences.

Definition at line 270 of file Action.h.

Member Typedef Documentation

◆ OffloadActionWorkTy

Initial value:
llvm::function_ref<void(Action *, const ToolChain *, const char *)>
Action(ActionClass Kind, types::ID Type)
Definition Action.h:136
ToolChain - Access to tools for a single platform.
Definition ToolChain.h:92

Definition at line 351 of file Action.h.

Constructor & Destructor Documentation

◆ OffloadAction() [1/3]

◆ OffloadAction() [2/3]

◆ OffloadAction() [3/3]

Member Function Documentation

◆ classof()

bool clang::driver::OffloadAction::classof ( const Action * A)
inlinestatic

◆ doOnEachDependence() [1/2]

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 284 of file Action.cpp.

References doOnEachDeviceDependence(), and doOnHostDependence().

◆ doOnEachDependence() [2/2]

void OffloadAction::doOnEachDependence ( const OffloadActionWorkTy & Work) const

Execute the work specified in Work on each dependence.

Definition at line 279 of file Action.cpp.

References doOnEachDeviceDependence(), and doOnHostDependence().

◆ doOnEachDeviceDependence()

void OffloadAction::doOnEachDeviceDependence ( const OffloadActionWorkTy & Work) const

Execute the work specified in Work on each device dependence.

Definition at line 257 of file Action.cpp.

References clang::driver::Action::getInputs(), and clang::driver::Action::size().

Referenced by doOnEachDependence(), and doOnEachDependence().

◆ doOnHostDependence()

void OffloadAction::doOnHostDependence ( const OffloadActionWorkTy & Work) const

Execute the work specified in Work on the host dependence.

Definition at line 249 of file Action.cpp.

References clang::driver::Action::getInputs().

Referenced by doOnEachDependence(), and doOnEachDependence().

◆ getHostDependence()

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 294 of file Action.cpp.

References clang::driver::Action::Action(), clang::driver::Action::getInputs(), and hasHostDependence().

◆ getSingleDeviceDependence()

Action * OffloadAction::getSingleDeviceDependence ( bool DoNotConsiderHostActions = false) const

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 308 of file Action.cpp.

References clang::driver::Action::getInputs(), and hasSingleDeviceDependence().

◆ hasHostDependence()

bool OffloadAction::hasHostDependence ( ) const

Return true if the action has a host dependence.

Definition at line 292 of file Action.cpp.

Referenced by getHostDependence().

◆ hasSingleDeviceDependence()

bool OffloadAction::hasSingleDeviceDependence ( bool DoNotConsiderHostActions = false) const

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 300 of file Action.cpp.

References clang::driver::Action::getInputs().

Referenced by getSingleDeviceDependence().


The documentation for this class was generated from the following files: