Update prebuilt Clang to r416183b from Android.
https://android.googlesource.com/platform/prebuilts/clang/host/
linux-x86/+/06a71ddac05c22edb2d10b590e1769b3f8619bef
clang 12.0.5 (based on r416183b) from build 7284624.
Change-Id: I277a316abcf47307562d8b748b84870f31a72866
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/linux-x64/clang/include/llvm/Frontend/OpenACC/ACC.inc b/linux-x64/clang/include/llvm/Frontend/OpenACC/ACC.inc
new file mode 100644
index 0000000..e897fa9
--- /dev/null
+++ b/linux-x64/clang/include/llvm/Frontend/OpenACC/ACC.inc
@@ -0,0 +1,1143 @@
+#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
+