blob: e897fa9c808d92398755328196fd078f58da8e24 [file] [log] [blame]
#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
#undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
namespace llvm {
namespace acc {
// Sets for atomic
static AccClauseSet allowedClauses_ACCD_atomic {
};
static AccClauseSet allowedOnceClauses_ACCD_atomic {
};
static AccClauseSet allowedExclusiveClauses_ACCD_atomic {
};
static AccClauseSet requiredClauses_ACCD_atomic {
};
// Sets for cache
static AccClauseSet allowedClauses_ACCD_cache {
};
static AccClauseSet allowedOnceClauses_ACCD_cache {
};
static AccClauseSet allowedExclusiveClauses_ACCD_cache {
};
static AccClauseSet requiredClauses_ACCD_cache {
};
// Sets for data
static AccClauseSet allowedClauses_ACCD_data {
};
static AccClauseSet allowedOnceClauses_ACCD_data {
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_default,
};
static AccClauseSet allowedExclusiveClauses_ACCD_data {
};
static AccClauseSet requiredClauses_ACCD_data {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
};
// Sets for declare
static AccClauseSet allowedClauses_ACCD_declare {
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_device_resident,
llvm::acc::Clause::ACCC_link,
};
static AccClauseSet allowedOnceClauses_ACCD_declare {
};
static AccClauseSet allowedExclusiveClauses_ACCD_declare {
};
static AccClauseSet requiredClauses_ACCD_declare {
};
// Sets for enter data
static AccClauseSet allowedClauses_ACCD_enter_data {
};
static AccClauseSet allowedOnceClauses_ACCD_enter_data {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedExclusiveClauses_ACCD_enter_data {
};
static AccClauseSet requiredClauses_ACCD_enter_data {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_copyin,
};
// Sets for exit data
static AccClauseSet allowedClauses_ACCD_exit_data {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_wait,
llvm::acc::Clause::ACCC_finalize,
};
static AccClauseSet allowedOnceClauses_ACCD_exit_data {
};
static AccClauseSet allowedExclusiveClauses_ACCD_exit_data {
};
static AccClauseSet requiredClauses_ACCD_exit_data {
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_delete,
llvm::acc::Clause::ACCC_detach,
};
// Sets for host_data
static AccClauseSet allowedClauses_ACCD_host_data {
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_if_present,
};
static AccClauseSet allowedOnceClauses_ACCD_host_data {
};
static AccClauseSet allowedExclusiveClauses_ACCD_host_data {
};
static AccClauseSet requiredClauses_ACCD_host_data {
llvm::acc::Clause::ACCC_use_device,
};
// Sets for init
static AccClauseSet allowedClauses_ACCD_init {
};
static AccClauseSet allowedOnceClauses_ACCD_init {
llvm::acc::Clause::ACCC_device_num,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_if,
};
static AccClauseSet allowedExclusiveClauses_ACCD_init {
};
static AccClauseSet requiredClauses_ACCD_init {
};
// Sets for kernels
static AccClauseSet allowedClauses_ACCD_kernels {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_kernels {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_num_gangs,
llvm::acc::Clause::ACCC_num_workers,
llvm::acc::Clause::ACCC_self,
llvm::acc::Clause::ACCC_vector_length,
};
static AccClauseSet allowedExclusiveClauses_ACCD_kernels {
};
static AccClauseSet requiredClauses_ACCD_kernels {
};
// Sets for kernels loop
static AccClauseSet allowedClauses_ACCD_kernels_loop {
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_private,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_attach,
};
static AccClauseSet allowedOnceClauses_ACCD_kernels_loop {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_collapse,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_gang,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_num_gangs,
llvm::acc::Clause::ACCC_num_workers,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_self,
llvm::acc::Clause::ACCC_tile,
llvm::acc::Clause::ACCC_vector,
llvm::acc::Clause::ACCC_vector_length,
llvm::acc::Clause::ACCC_wait,
llvm::acc::Clause::ACCC_worker,
};
static AccClauseSet allowedExclusiveClauses_ACCD_kernels_loop {
llvm::acc::Clause::ACCC_auto,
llvm::acc::Clause::ACCC_independent,
llvm::acc::Clause::ACCC_seq,
};
static AccClauseSet requiredClauses_ACCD_kernels_loop {
};
// Sets for loop
static AccClauseSet allowedClauses_ACCD_loop {
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_private,
};
static AccClauseSet allowedOnceClauses_ACCD_loop {
llvm::acc::Clause::ACCC_collapse,
llvm::acc::Clause::ACCC_gang,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_tile,
llvm::acc::Clause::ACCC_vector,
llvm::acc::Clause::ACCC_worker,
};
static AccClauseSet allowedExclusiveClauses_ACCD_loop {
llvm::acc::Clause::ACCC_auto,
llvm::acc::Clause::ACCC_independent,
llvm::acc::Clause::ACCC_seq,
};
static AccClauseSet requiredClauses_ACCD_loop {
};
// Sets for parallel
static AccClauseSet allowedClauses_ACCD_parallel {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_private,
llvm::acc::Clause::ACCC_firstprivate,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_parallel {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_num_gangs,
llvm::acc::Clause::ACCC_num_workers,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_self,
llvm::acc::Clause::ACCC_vector_length,
};
static AccClauseSet allowedExclusiveClauses_ACCD_parallel {
};
static AccClauseSet requiredClauses_ACCD_parallel {
};
// Sets for parallel loop
static AccClauseSet allowedClauses_ACCD_parallel_loop {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_firstprivate,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_private,
llvm::acc::Clause::ACCC_tile,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_parallel_loop {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_collapse,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_gang,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_num_gangs,
llvm::acc::Clause::ACCC_num_workers,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_self,
llvm::acc::Clause::ACCC_vector,
llvm::acc::Clause::ACCC_vector_length,
llvm::acc::Clause::ACCC_worker,
};
static AccClauseSet allowedExclusiveClauses_ACCD_parallel_loop {
llvm::acc::Clause::ACCC_auto,
llvm::acc::Clause::ACCC_independent,
llvm::acc::Clause::ACCC_seq,
};
static AccClauseSet requiredClauses_ACCD_parallel_loop {
};
// Sets for routine
static AccClauseSet allowedClauses_ACCD_routine {
};
static AccClauseSet allowedOnceClauses_ACCD_routine {
llvm::acc::Clause::ACCC_bind,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_nohost,
};
static AccClauseSet allowedExclusiveClauses_ACCD_routine {
};
static AccClauseSet requiredClauses_ACCD_routine {
llvm::acc::Clause::ACCC_gang,
llvm::acc::Clause::ACCC_seq,
llvm::acc::Clause::ACCC_vector,
llvm::acc::Clause::ACCC_worker,
};
// Sets for serial
static AccClauseSet allowedClauses_ACCD_serial {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_private,
llvm::acc::Clause::ACCC_firstprivate,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_serial {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_self,
};
static AccClauseSet allowedExclusiveClauses_ACCD_serial {
};
static AccClauseSet requiredClauses_ACCD_serial {
};
// Sets for serial loop
static AccClauseSet allowedClauses_ACCD_serial_loop {
llvm::acc::Clause::ACCC_attach,
llvm::acc::Clause::ACCC_copy,
llvm::acc::Clause::ACCC_copyin,
llvm::acc::Clause::ACCC_copyout,
llvm::acc::Clause::ACCC_create,
llvm::acc::Clause::ACCC_deviceptr,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_firstprivate,
llvm::acc::Clause::ACCC_no_create,
llvm::acc::Clause::ACCC_present,
llvm::acc::Clause::ACCC_private,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_serial_loop {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_collapse,
llvm::acc::Clause::ACCC_default,
llvm::acc::Clause::ACCC_gang,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_reduction,
llvm::acc::Clause::ACCC_self,
llvm::acc::Clause::ACCC_tile,
llvm::acc::Clause::ACCC_vector,
llvm::acc::Clause::ACCC_worker,
};
static AccClauseSet allowedExclusiveClauses_ACCD_serial_loop {
llvm::acc::Clause::ACCC_auto,
llvm::acc::Clause::ACCC_independent,
llvm::acc::Clause::ACCC_seq,
};
static AccClauseSet requiredClauses_ACCD_serial_loop {
};
// Sets for set
static AccClauseSet allowedClauses_ACCD_set {
};
static AccClauseSet allowedOnceClauses_ACCD_set {
llvm::acc::Clause::ACCC_default_async,
llvm::acc::Clause::ACCC_device_num,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_if,
};
static AccClauseSet allowedExclusiveClauses_ACCD_set {
};
static AccClauseSet requiredClauses_ACCD_set {
llvm::acc::Clause::ACCC_default_async,
llvm::acc::Clause::ACCC_device_num,
llvm::acc::Clause::ACCC_device_type,
};
// Sets for shutdown
static AccClauseSet allowedClauses_ACCD_shutdown {
};
static AccClauseSet allowedOnceClauses_ACCD_shutdown {
llvm::acc::Clause::ACCC_device_num,
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_if,
};
static AccClauseSet allowedExclusiveClauses_ACCD_shutdown {
};
static AccClauseSet requiredClauses_ACCD_shutdown {
};
// Sets for unknown
static AccClauseSet allowedClauses_ACCD_unknown {
};
static AccClauseSet allowedOnceClauses_ACCD_unknown {
};
static AccClauseSet allowedExclusiveClauses_ACCD_unknown {
};
static AccClauseSet requiredClauses_ACCD_unknown {
};
// Sets for update
static AccClauseSet allowedClauses_ACCD_update {
llvm::acc::Clause::ACCC_device_type,
llvm::acc::Clause::ACCC_wait,
};
static AccClauseSet allowedOnceClauses_ACCD_update {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_if,
llvm::acc::Clause::ACCC_if_present,
};
static AccClauseSet allowedExclusiveClauses_ACCD_update {
};
static AccClauseSet requiredClauses_ACCD_update {
llvm::acc::Clause::ACCC_device,
llvm::acc::Clause::ACCC_host,
llvm::acc::Clause::ACCC_self,
};
// Sets for wait
static AccClauseSet allowedClauses_ACCD_wait {
};
static AccClauseSet allowedOnceClauses_ACCD_wait {
llvm::acc::Clause::ACCC_async,
llvm::acc::Clause::ACCC_if,
};
static AccClauseSet allowedExclusiveClauses_ACCD_wait {
};
static AccClauseSet requiredClauses_ACCD_wait {
};
} // namespace acc
} // namespace llvm
#endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS
#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
#undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
{
{llvm::acc::Directive::ACCD_atomic,
{
llvm::acc::allowedClauses_ACCD_atomic,
llvm::acc::allowedOnceClauses_ACCD_atomic,
llvm::acc::allowedExclusiveClauses_ACCD_atomic,
llvm::acc::requiredClauses_ACCD_atomic,
}
},
{llvm::acc::Directive::ACCD_cache,
{
llvm::acc::allowedClauses_ACCD_cache,
llvm::acc::allowedOnceClauses_ACCD_cache,
llvm::acc::allowedExclusiveClauses_ACCD_cache,
llvm::acc::requiredClauses_ACCD_cache,
}
},
{llvm::acc::Directive::ACCD_data,
{
llvm::acc::allowedClauses_ACCD_data,
llvm::acc::allowedOnceClauses_ACCD_data,
llvm::acc::allowedExclusiveClauses_ACCD_data,
llvm::acc::requiredClauses_ACCD_data,
}
},
{llvm::acc::Directive::ACCD_declare,
{
llvm::acc::allowedClauses_ACCD_declare,
llvm::acc::allowedOnceClauses_ACCD_declare,
llvm::acc::allowedExclusiveClauses_ACCD_declare,
llvm::acc::requiredClauses_ACCD_declare,
}
},
{llvm::acc::Directive::ACCD_enter_data,
{
llvm::acc::allowedClauses_ACCD_enter_data,
llvm::acc::allowedOnceClauses_ACCD_enter_data,
llvm::acc::allowedExclusiveClauses_ACCD_enter_data,
llvm::acc::requiredClauses_ACCD_enter_data,
}
},
{llvm::acc::Directive::ACCD_exit_data,
{
llvm::acc::allowedClauses_ACCD_exit_data,
llvm::acc::allowedOnceClauses_ACCD_exit_data,
llvm::acc::allowedExclusiveClauses_ACCD_exit_data,
llvm::acc::requiredClauses_ACCD_exit_data,
}
},
{llvm::acc::Directive::ACCD_host_data,
{
llvm::acc::allowedClauses_ACCD_host_data,
llvm::acc::allowedOnceClauses_ACCD_host_data,
llvm::acc::allowedExclusiveClauses_ACCD_host_data,
llvm::acc::requiredClauses_ACCD_host_data,
}
},
{llvm::acc::Directive::ACCD_init,
{
llvm::acc::allowedClauses_ACCD_init,
llvm::acc::allowedOnceClauses_ACCD_init,
llvm::acc::allowedExclusiveClauses_ACCD_init,
llvm::acc::requiredClauses_ACCD_init,
}
},
{llvm::acc::Directive::ACCD_kernels,
{
llvm::acc::allowedClauses_ACCD_kernels,
llvm::acc::allowedOnceClauses_ACCD_kernels,
llvm::acc::allowedExclusiveClauses_ACCD_kernels,
llvm::acc::requiredClauses_ACCD_kernels,
}
},
{llvm::acc::Directive::ACCD_kernels_loop,
{
llvm::acc::allowedClauses_ACCD_kernels_loop,
llvm::acc::allowedOnceClauses_ACCD_kernels_loop,
llvm::acc::allowedExclusiveClauses_ACCD_kernels_loop,
llvm::acc::requiredClauses_ACCD_kernels_loop,
}
},
{llvm::acc::Directive::ACCD_loop,
{
llvm::acc::allowedClauses_ACCD_loop,
llvm::acc::allowedOnceClauses_ACCD_loop,
llvm::acc::allowedExclusiveClauses_ACCD_loop,
llvm::acc::requiredClauses_ACCD_loop,
}
},
{llvm::acc::Directive::ACCD_parallel,
{
llvm::acc::allowedClauses_ACCD_parallel,
llvm::acc::allowedOnceClauses_ACCD_parallel,
llvm::acc::allowedExclusiveClauses_ACCD_parallel,
llvm::acc::requiredClauses_ACCD_parallel,
}
},
{llvm::acc::Directive::ACCD_parallel_loop,
{
llvm::acc::allowedClauses_ACCD_parallel_loop,
llvm::acc::allowedOnceClauses_ACCD_parallel_loop,
llvm::acc::allowedExclusiveClauses_ACCD_parallel_loop,
llvm::acc::requiredClauses_ACCD_parallel_loop,
}
},
{llvm::acc::Directive::ACCD_routine,
{
llvm::acc::allowedClauses_ACCD_routine,
llvm::acc::allowedOnceClauses_ACCD_routine,
llvm::acc::allowedExclusiveClauses_ACCD_routine,
llvm::acc::requiredClauses_ACCD_routine,
}
},
{llvm::acc::Directive::ACCD_serial,
{
llvm::acc::allowedClauses_ACCD_serial,
llvm::acc::allowedOnceClauses_ACCD_serial,
llvm::acc::allowedExclusiveClauses_ACCD_serial,
llvm::acc::requiredClauses_ACCD_serial,
}
},
{llvm::acc::Directive::ACCD_serial_loop,
{
llvm::acc::allowedClauses_ACCD_serial_loop,
llvm::acc::allowedOnceClauses_ACCD_serial_loop,
llvm::acc::allowedExclusiveClauses_ACCD_serial_loop,
llvm::acc::requiredClauses_ACCD_serial_loop,
}
},
{llvm::acc::Directive::ACCD_set,
{
llvm::acc::allowedClauses_ACCD_set,
llvm::acc::allowedOnceClauses_ACCD_set,
llvm::acc::allowedExclusiveClauses_ACCD_set,
llvm::acc::requiredClauses_ACCD_set,
}
},
{llvm::acc::Directive::ACCD_shutdown,
{
llvm::acc::allowedClauses_ACCD_shutdown,
llvm::acc::allowedOnceClauses_ACCD_shutdown,
llvm::acc::allowedExclusiveClauses_ACCD_shutdown,
llvm::acc::requiredClauses_ACCD_shutdown,
}
},
{llvm::acc::Directive::ACCD_unknown,
{
llvm::acc::allowedClauses_ACCD_unknown,
llvm::acc::allowedOnceClauses_ACCD_unknown,
llvm::acc::allowedExclusiveClauses_ACCD_unknown,
llvm::acc::requiredClauses_ACCD_unknown,
}
},
{llvm::acc::Directive::ACCD_update,
{
llvm::acc::allowedClauses_ACCD_update,
llvm::acc::allowedOnceClauses_ACCD_update,
llvm::acc::allowedExclusiveClauses_ACCD_update,
llvm::acc::requiredClauses_ACCD_update,
}
},
{llvm::acc::Directive::ACCD_wait,
{
llvm::acc::allowedClauses_ACCD_wait,
llvm::acc::allowedOnceClauses_ACCD_wait,
llvm::acc::allowedExclusiveClauses_ACCD_wait,
llvm::acc::requiredClauses_ACCD_wait,
}
},
}
#endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP
#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES
#undef GEN_FLANG_CLAUSE_PARSER_CLASSES
WRAPPER_CLASS(Async, std::optional<ScalarIntExpr>);
WRAPPER_CLASS(Attach, AccObjectList);
EMPTY_CLASS(Auto);
WRAPPER_CLASS(Bind, AccBindClause);
EMPTY_CLASS(Capture);
WRAPPER_CLASS(Collapse, ScalarIntConstantExpr);
WRAPPER_CLASS(Copy, AccObjectList);
WRAPPER_CLASS(Copyin, AccObjectListWithModifier);
WRAPPER_CLASS(Copyout, AccObjectListWithModifier);
WRAPPER_CLASS(Create, AccObjectListWithModifier);
WRAPPER_CLASS(Default, AccDefaultClause);
WRAPPER_CLASS(DefaultAsync, ScalarIntExpr);
WRAPPER_CLASS(Delete, AccObjectList);
WRAPPER_CLASS(Detach, AccObjectList);
WRAPPER_CLASS(Device, AccObjectList);
WRAPPER_CLASS(DeviceNum, ScalarIntExpr);
WRAPPER_CLASS(Deviceptr, AccObjectList);
WRAPPER_CLASS(DeviceResident, AccObjectList);
WRAPPER_CLASS(DeviceType, std::optional<std::list<ScalarIntExpr>>);
EMPTY_CLASS(Finalize);
WRAPPER_CLASS(Firstprivate, AccObjectList);
WRAPPER_CLASS(Gang, std::optional<AccGangArgument>);
WRAPPER_CLASS(Host, AccObjectList);
WRAPPER_CLASS(If, ScalarLogicalExpr);
EMPTY_CLASS(IfPresent);
EMPTY_CLASS(Independent);
WRAPPER_CLASS(Link, AccObjectList);
WRAPPER_CLASS(NoCreate, AccObjectList);
EMPTY_CLASS(Nohost);
WRAPPER_CLASS(NumGangs, ScalarIntExpr);
WRAPPER_CLASS(NumWorkers, ScalarIntExpr);
WRAPPER_CLASS(Present, AccObjectList);
WRAPPER_CLASS(Private, AccObjectList);
EMPTY_CLASS(Read);
WRAPPER_CLASS(Reduction, AccObjectListWithReduction);
WRAPPER_CLASS(Self, AccSelfClause);
EMPTY_CLASS(Seq);
WRAPPER_CLASS(Tile, AccTileExprList);
EMPTY_CLASS(Unknown);
WRAPPER_CLASS(UseDevice, AccObjectList);
WRAPPER_CLASS(Vector, std::optional<ScalarIntExpr>);
WRAPPER_CLASS(VectorLength, ScalarIntExpr);
WRAPPER_CLASS(Wait, std::optional<AccWaitArgument>);
WRAPPER_CLASS(Worker, std::optional<ScalarIntExpr>);
EMPTY_CLASS(Write);
#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES
#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
#undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
Async
, Attach
, Auto
, Bind
, Capture
, Collapse
, Copy
, Copyin
, Copyout
, Create
, Default
, DefaultAsync
, Delete
, Detach
, Device
, DeviceNum
, Deviceptr
, DeviceResident
, DeviceType
, Finalize
, Firstprivate
, Gang
, Host
, If
, IfPresent
, Independent
, Link
, NoCreate
, Nohost
, NumGangs
, NumWorkers
, Present
, Private
, Read
, Reduction
, Self
, Seq
, Tile
, Unknown
, UseDevice
, Vector
, VectorLength
, Wait
, Worker
, Write
#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
#ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
#undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
NODE(AccClause, Async)
NODE(AccClause, Attach)
NODE(AccClause, Auto)
NODE(AccClause, Bind)
NODE(AccClause, Capture)
NODE(AccClause, Collapse)
NODE(AccClause, Copy)
NODE(AccClause, Copyin)
NODE(AccClause, Copyout)
NODE(AccClause, Create)
NODE(AccClause, Default)
NODE(AccClause, DefaultAsync)
NODE(AccClause, Delete)
NODE(AccClause, Detach)
NODE(AccClause, Device)
NODE(AccClause, DeviceNum)
NODE(AccClause, Deviceptr)
NODE(AccClause, DeviceResident)
NODE(AccClause, DeviceType)
NODE(AccClause, Finalize)
NODE(AccClause, Firstprivate)
NODE(AccClause, Gang)
NODE(AccClause, Host)
NODE(AccClause, If)
NODE(AccClause, IfPresent)
NODE(AccClause, Independent)
NODE(AccClause, Link)
NODE(AccClause, NoCreate)
NODE(AccClause, Nohost)
NODE(AccClause, NumGangs)
NODE(AccClause, NumWorkers)
NODE(AccClause, Present)
NODE(AccClause, Private)
NODE(AccClause, Read)
NODE(AccClause, Reduction)
NODE(AccClause, Self)
NODE(AccClause, Seq)
NODE(AccClause, Tile)
NODE(AccClause, Unknown)
NODE(AccClause, UseDevice)
NODE(AccClause, Vector)
NODE(AccClause, VectorLength)
NODE(AccClause, Wait)
NODE(AccClause, Worker)
NODE(AccClause, Write)
#endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
#ifdef GEN_FLANG_CLAUSE_UNPARSE
#undef GEN_FLANG_CLAUSE_UNPARSE
void Unparse(const AccClause::Async &x) {
Word("ASYNC");
Walk("(", x.v, ")");
}
void Unparse(const AccClause::Attach &x) {
Word("ATTACH");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Auto &) { Word("AUTO"); }
void Unparse(const AccClause::Bind &x) {
Word("BIND");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Capture &) { Word("CAPTURE"); }
void Unparse(const AccClause::Collapse &x) {
Word("COLLAPSE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Copy &x) {
Word("COPY");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Copyin &x) {
Word("COPYIN");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Copyout &x) {
Word("COPYOUT");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Create &x) {
Word("CREATE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Default &x) {
Word("DEFAULT");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::DefaultAsync &x) {
Word("DEFAULT_ASYNC");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Delete &x) {
Word("DELETE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Detach &x) {
Word("DETACH");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Device &x) {
Word("DEVICE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::DeviceNum &x) {
Word("DEVICE_NUM");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Deviceptr &x) {
Word("DEVICEPTR");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::DeviceResident &x) {
Word("DEVICE_RESIDENT");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::DeviceType &x) {
Word("DEVICE_TYPE");
Put("(");
if (x.v.has_value())
Walk(x.v, ",");
else
Put("*");
Put(")");
}
void Before(const AccClause::Finalize &) { Word("FINALIZE"); }
void Unparse(const AccClause::Firstprivate &x) {
Word("FIRSTPRIVATE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Gang &x) {
Word("GANG");
Walk("(", x.v, ")");
}
void Unparse(const AccClause::Host &x) {
Word("HOST");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::If &x) {
Word("IF");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::IfPresent &) { Word("IF_PRESENT"); }
void Before(const AccClause::Independent &) { Word("INDEPENDENT"); }
void Unparse(const AccClause::Link &x) {
Word("LINK");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::NoCreate &x) {
Word("NO_CREATE");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Nohost &) { Word("NOHOST"); }
void Unparse(const AccClause::NumGangs &x) {
Word("NUM_GANGS");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::NumWorkers &x) {
Word("NUM_WORKERS");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Present &x) {
Word("PRESENT");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Private &x) {
Word("PRIVATE");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Read &) { Word("READ"); }
void Unparse(const AccClause::Reduction &x) {
Word("REDUCTION");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Self &x) {
Word("SELF");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Seq &) { Word("SEQ"); }
void Unparse(const AccClause::Tile &x) {
Word("TILE");
Put("(");
Walk(x.v);
Put(")");
}
void Before(const AccClause::Unknown &) { Word("UNKNOWN"); }
void Unparse(const AccClause::UseDevice &x) {
Word("USE_DEVICE");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Vector &x) {
Word("VECTOR");
Walk("(", x.v, ")");
}
void Unparse(const AccClause::VectorLength &x) {
Word("VECTOR_LENGTH");
Put("(");
Walk(x.v);
Put(")");
}
void Unparse(const AccClause::Wait &x) {
Word("WAIT");
Walk("(", x.v, ")");
}
void Unparse(const AccClause::Worker &x) {
Word("WORKER");
Walk("(", x.v, ")");
}
void Before(const AccClause::Write &) { Word("WRITE"); }
#endif // GEN_FLANG_CLAUSE_UNPARSE
#ifdef GEN_CLANG_CLAUSE_CLASS
#undef GEN_CLANG_CLAUSE_CLASS
#ifndef CLAUSE
#define CLAUSE(Enum, Str, Implicit)
#endif
#ifndef CLAUSE_CLASS
#define CLAUSE_CLASS(Enum, Str, Class)
#endif
#ifndef CLAUSE_NO_CLASS
#define CLAUSE_NO_CLASS(Enum, Str)
#endif
#define __CLAUSE(Name, Class) \
CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
CLAUSE_CLASS(ACCC_##Name, #Name, Class)
#define __CLAUSE_NO_CLASS(Name) \
CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
CLAUSE_NO_CLASS(ACCC_##Name, #Name)
#define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \
CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
CLAUSE_CLASS(ACCC_##Name, Str, Class)
#define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \
CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
CLAUSE_NO_CLASS(ACCC_##Name, Str)
__CLAUSE_NO_CLASS(async)
__CLAUSE_NO_CLASS(attach)
__CLAUSE_NO_CLASS(auto)
__CLAUSE_NO_CLASS(bind)
__CLAUSE_NO_CLASS(capture)
__CLAUSE_NO_CLASS(collapse)
__CLAUSE_NO_CLASS(copy)
__CLAUSE_NO_CLASS(copyin)
__CLAUSE_NO_CLASS(copyout)
__CLAUSE_NO_CLASS(create)
__CLAUSE_NO_CLASS(default)
__CLAUSE_NO_CLASS(default_async)
__CLAUSE_NO_CLASS(delete)
__CLAUSE_NO_CLASS(detach)
__CLAUSE_NO_CLASS(device)
__CLAUSE_NO_CLASS(device_num)
__CLAUSE_NO_CLASS(deviceptr)
__CLAUSE_NO_CLASS(device_resident)
__CLAUSE_NO_CLASS(device_type)
__CLAUSE_NO_CLASS(finalize)
__CLAUSE_NO_CLASS(firstprivate)
__CLAUSE_NO_CLASS(gang)
__CLAUSE_NO_CLASS(host)
__CLAUSE_NO_CLASS(if)
__CLAUSE_NO_CLASS(if_present)
__CLAUSE_NO_CLASS(independent)
__CLAUSE_NO_CLASS(link)
__CLAUSE_NO_CLASS(no_create)
__CLAUSE_NO_CLASS(nohost)
__CLAUSE_NO_CLASS(num_gangs)
__CLAUSE_NO_CLASS(num_workers)
__CLAUSE_NO_CLASS(present)
__CLAUSE_NO_CLASS(private)
__CLAUSE_NO_CLASS(read)
__CLAUSE_NO_CLASS(reduction)
__CLAUSE_NO_CLASS(self)
__CLAUSE_NO_CLASS(seq)
__CLAUSE_NO_CLASS(tile)
__CLAUSE_NO_CLASS(unknown)
__CLAUSE_NO_CLASS(use_device)
__CLAUSE_NO_CLASS(vector)
__CLAUSE_NO_CLASS(vector_length)
__CLAUSE_NO_CLASS(wait)
__CLAUSE_NO_CLASS(worker)
__CLAUSE_NO_CLASS(write)
#undef __IMPLICIT_CLAUSE_NO_CLASS
#undef __IMPLICIT_CLAUSE_CLASS
#undef __CLAUSE
#undef CLAUSE_NO_CLASS
#undef CLAUSE_CLASS
#undef CLAUSE
#endif // GEN_CLANG_CLAUSE_CLASS