Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-18.1.8, llvmorg-18.1.7
# a15b685c 21-May-2024 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement 'reduction' sema for compute constructs (#92808)

'reduction' has a few restrictions over normal 'var-list' clauses:

1- On parallel, a num_gangs can only have 1 argument when c

[OpenACC] Implement 'reduction' sema for compute constructs (#92808)

'reduction' has a few restrictions over normal 'var-list' clauses:

1- On parallel, a num_gangs can only have 1 argument when combined with
reduction. These two aren't able to be combined on any other of the
compute constructs however.

2- The vars all must be 'numerical data types' types of some sort, or a
'composite of numerical data types'. A list of types is given in the
standard as a minimum, so we choose 'isScalar', which covers all of
these types and keeps types that are actually numeric. Other compilers
don't seem to implement the 'composite of numerical data types', though
we do.

3- Because of the above restrictions, member-of-composite is not
allowed, so any access via a memberexpr is disallowed. Array-element and
sub-arrays (aka array sections) are both permitted, so long as they meet
the requirements of #2.

This patch implements all of these for compute constructs.

show more ...


Revision tags: llvmorg-18.1.6
# 01e91a2d 02-May-2024 erichkeane <ekeane@nvidia.com>

[OpenACC] Implement copyin, copyout, create clauses for compute construct

Like 'copy', these also have alternate names, so this implements that as
well. Additionally, these have an optional tag of

[OpenACC] Implement copyin, copyout, create clauses for compute construct

Like 'copy', these also have alternate names, so this implements that as
well. Additionally, these have an optional tag of either 'readonly' or
'zero' depending on the clause.

Otherwise, this is a pretty rote implementation of the clause, as there
aren't any special rules for it.

show more ...