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 |
|
#
03eba209 |
| 14-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Fix ast-print of device_type clause
When writing the test for this I seemingly forgot to put 'CHECK' on the lines, so I didn't notice that I was printing the identifiers as pointers rather
[OpenACC] Fix ast-print of device_type clause
When writing the test for this I seemingly forgot to put 'CHECK' on the lines, so I didn't notice that I was printing the identifiers as pointers rather than their names. This patch corrects the tests and the print behavior.
show more ...
|
#
8ef2011b |
| 13-May-2024 |
erichkeane <ekeane@nvidia.com> |
Reapply "[OpenACC] device_type clause Sema for Compute constructs"
device_type, also spelled as dtype, specifies the applicability of the clauses following it, and takes a series of identifiers repr
Reapply "[OpenACC] device_type clause Sema for Compute constructs"
device_type, also spelled as dtype, specifies the applicability of the clauses following it, and takes a series of identifiers representing the architectures it applies to. As we don't have a source for the valid architectures yet, this patch just accepts all.
Semantically, this also limits the list of clauses that can be applied after the device_type, so this implements that as well.
This reverts commit 06f04b2e27f2586d3db2204ed4e54f8b78fea74e. This reapplies commit c4a9a374749deb5f2a932a7d4ef9321be1b2ae5d. The build failures were caused by the patch depending on the order of evaluation of arguments to a function. This reapplication separates out the capture of one of the values.
show more ...
|
#
06f04b2e |
| 13-May-2024 |
erichkeane <ekeane@nvidia.com> |
Revert "[OpenACC] device_type clause Sema for Compute constructs"
This reverts commit c4a9a374749deb5f2a932a7d4ef9321be1b2ae5d.
This and the followup patch keep hitting an assert I wrote on the bui
Revert "[OpenACC] device_type clause Sema for Compute constructs"
This reverts commit c4a9a374749deb5f2a932a7d4ef9321be1b2ae5d.
This and the followup patch keep hitting an assert I wrote on the build bots in a way that isn't clear. Reverting so I can fix it without a rush.
show more ...
|
#
c4a9a374 |
| 09-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] device_type clause Sema for Compute constructs
device_type, also spelled as dtype, specifies the applicability of the clauses following it, and takes a series of identifiers representing t
[OpenACC] device_type clause Sema for Compute constructs
device_type, also spelled as dtype, specifies the applicability of the clauses following it, and takes a series of identifiers representing the architectures it applies to. As we don't have a source for the valid architectures yet, this patch just accepts all.
Semantically, this also limits the list of clauses that can be applied after the device_type, so this implements that as well.
show more ...
|
#
b1b46521 |
| 07-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] 'wait' clause for compute construct sema
'wait' takes a few int-exprs (well, a series of async-arguments, but those are effectively just an int-expr), plus a pair of tags. This patch a
[OpenACC] 'wait' clause for compute construct sema
'wait' takes a few int-exprs (well, a series of async-arguments, but those are effectively just an int-expr), plus a pair of tags. This patch adds the support for this to the AST, and does the appropriate semantic analysis for them.
show more ...
|
#
30cfe2b2 |
| 06-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'async' clause sema for compute constructs
This is a pretty simple clause, it takes an 'async-argument', which effectively needs to be just parsed as an 'int' argument, since it
[OpenACC] Implement 'async' clause sema for compute constructs
This is a pretty simple clause, it takes an 'async-argument', which effectively needs to be just parsed as an 'int' argument, since it can be an arbitrarly integer at runtime (and negative values are legal for implementation defined values).
This patch also cleans up the async-argument parsing, so 'wait' got some minor quality-of-life improvements for parsing (both clause and construct).
show more ...
|
#
48c8a579 |
| 03-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'deviceptr' and 'attach' sema for compute constructs
These two are very similar to the other 'var-list' variants, except they require that the type of the variable be a pointer.
[OpenACC] Implement 'deviceptr' and 'attach' sema for compute constructs
These two are very similar to the other 'var-list' variants, except they require that the type of the variable be a pointer. This patch implements that restriction.
show more ...
|
#
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 ...
|
#
bd909d2e |
| 02-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement no_create and present clauses on compute constructs
These two are, from a semantic checking perspective, identical to first-private/private/etc, other than appertainment. This pa
[OpenACC] Implement no_create and present clauses on compute constructs
These two are, from a semantic checking perspective, identical to first-private/private/etc, other than appertainment. This patch implements both.
show more ...
|
#
a13c5140 |
| 02-May-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement firstprivate clause for compute constructs
This clause is pretty nearly copy/paste from private, except that it doesn't support 'loop', and thus 'kernelsloop' for appertainment.
|
Revision tags: llvmorg-18.1.5 |
|
#
fa67986d |
| 30-Apr-2024 |
Erich Keane <ekeane@nvidia.com> |
[OpenACC] Private Clause on Compute Constructs (#90521)
The private clause is the first that takes a 'var-list', thus this has a
lot of additional work to enable the var-list type. A 'var' is a
tr
[OpenACC] Private Clause on Compute Constructs (#90521)
The private clause is the first that takes a 'var-list', thus this has a
lot of additional work to enable the var-list type. A 'var' is a
traditional variable reference, subscript, member-expression, or
array-section, so checking of these is pretty minor.
Note: This ran into some issues with array-sections (aka sub-arrays)
that will be fixed in a follow-up patch.
show more ...
|
#
cc6113da |
| 30-Apr-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Fix ast-print for OpenACC Clauses
Previously we weren't printing expressions correctly, so this patch adds a test to ensure we do, and fixes how expressions are printed.
|