clang 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
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:
Inheritance graph
[legend]

Classes

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

Public Types

using OffloadActionWorkTy = llvm::function_ref< void(Action *, const ToolChain *, const char *)>
 
- Public Types inherited from clang::driver::Action
enum  ActionClass {
  InputClass = 0 , BindArchClass , OffloadClass , PreprocessJobClass ,
  PrecompileJobClass , ExtractAPIJobClass , AnalyzeJobClass , MigrateJobClass ,
  CompileJobClass , BackendJobClass , AssembleJobClass , LinkJobClass ,
  IfsMergeJobClass , LipoJobClass , DsymutilJobClass , VerifyDebugInfoJobClass ,
  VerifyPCHJobClass , OffloadBundlingJobClass , OffloadUnbundlingJobClass , OffloadPackagerJobClass ,
  LinkerWrapperJobClass , StaticLibJobClass , BinaryAnalyzeJobClass , JobClassFirst = PreprocessJobClass ,
  JobClassLast = BinaryAnalyzeJobClass
}
 
enum  OffloadKind {
  OFK_None = 0x00 , OFK_Host = 0x01 , OFK_Cuda = 0x02 , OFK_OpenMP = 0x04 ,
  OFK_HIP = 0x08
}
 
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 268 of file Action.h.

Member Typedef Documentation

◆ OffloadActionWorkTy

using clang::driver::OffloadAction::OffloadActionWorkTy = llvm::function_ref<void(Action *, const ToolChain *, const char *)>

Definition at line 349 of file Action.h.

Constructor & Destructor Documentation

◆ OffloadAction() [1/3]

OffloadAction::OffloadAction ( const HostDependence HDep)

◆ OffloadAction() [2/3]

OffloadAction::OffloadAction ( const DeviceDependences DDeps,
types::ID  Ty 
)

◆ OffloadAction() [3/3]

OffloadAction::OffloadAction ( const HostDependence HDep,
const DeviceDependences DDeps 
)

Member Function Documentation

◆ classof()

static 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 274 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 269 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 247 of file Action.cpp.

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

Referenced by doOnEachDependence().

◆ doOnHostDependence()

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().

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

References 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 298 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 282 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 290 of file Action.cpp.

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

Referenced by getSingleDeviceDependence().


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