Revision tags: llvmorg-21-init |
|
#
2c75bda4 |
| 15-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Split up SemaOpenACC.cpp
This file is getting quite large, so this patch splits the 'clause' specific parts off into its own file to keep them better organized.
|
Revision tags: llvmorg-19.1.7 |
|
#
553fa204 |
| 09-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'at least one of' restriction for 'update'
This completes the implementation of 'update' by implementing its last restriction. This restriction requires at least 1 of the 'self',
[OpenACC] Implement 'at least one of' restriction for 'update'
This completes the implementation of 'update' by implementing its last restriction. This restriction requires at least 1 of the 'self', 'host', or 'device' clauses.
show more ...
|
#
be32621c |
| 09-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'device' and 'host' clauses for 'update'
These two clauses just take a 'var-list' and specify where the variables should be copied from/to. This patch implements the AST nodes f
[OpenACC] Implement 'device' and 'host' clauses for 'update'
These two clauses just take a 'var-list' and specify where the variables should be copied from/to. This patch implements the AST nodes for them and ensures they properly take a var-list.
show more ...
|
#
2c2accbc |
| 08-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Enable 'self' sema for 'update' construct
The 'self' clause is an unfortunately difficult one, as it has a significantly different meaning between 'update' and the other constructs. This
[OpenACC] Enable 'self' sema for 'update' construct
The 'self' clause is an unfortunately difficult one, as it has a significantly different meaning between 'update' and the other constructs. This patch introduces a way for the 'self' clause to work as both. I considered making this two separate AST nodes (one for 'self' on 'update' and one for the others), however this makes the automated macros/etc for supporting a clause break.
Instead, 'self' has the ability to act as either a condition or as a var-list clause. As this is the only one of its kind, it is implemented all within it. If in the future we have more that work like this, we should consider rewriting a lot of the macros that we use to make clauses work, and make them separate ast nodes.
show more ...
|
#
666eee0e |
| 07-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'device_type' for the 'update' construct
This has a similar restriction to 'set' in that only 'async' and 'wait' are disallowed, so this implements that restriction and enables 'dev
[OpenACC] enable 'device_type' for the 'update' construct
This has a similar restriction to 'set' in that only 'async' and 'wait' are disallowed, so this implements that restriction and enables 'device_type'.
show more ...
|
#
e2c1b1fe |
| 07-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'async' and 'wait' for 'update' construct
These work the same here as they do for every other construct, so this is as simple as enabling them and writing tests, which this patch do
[OpenACC] enable 'async' and 'wait' for 'update' construct
These work the same here as they do for every other construct, so this is as simple as enabling them and writing tests, which this patch does.
show more ...
|
#
dd1e8aa0 |
| 07-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Enable 'if' and 'if_present' for 'update' construct
The only restriction on 'if' is that only 1 can appear on an update construct, so this enforces that. 'if_present' has no restrictions.
|
#
db81e8c4 |
| 06-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Initial sema implementation of 'update' construct
This executable construct has a larger list of clauses than some of the others, plus has some additional restrictions. This patch impleme
[OpenACC] Initial sema implementation of 'update' construct
This executable construct has a larger list of clauses than some of the others, plus has some additional restrictions. This patch implements the AST node, plus the 'cannot be the body of a if, while, do, switch, or label' statement restriction. Future patches will handle the rest of the restrictions, which are based on clauses.
show more ...
|
#
ff24e9a1 |
| 06-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'default_async' sema
A fairly simple one, only valid on the 'set' construct, this clause takes an int expression. Most of the work was already done as a part of parsing, so this
[OpenACC] Implement 'default_async' sema
A fairly simple one, only valid on the 'set' construct, this clause takes an int expression. Most of the work was already done as a part of parsing, so this patch ends up being a lot of infrastructure.
show more ...
|
#
21c785d7 |
| 03-Jan-2025 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'set' construct sema
The 'set' construct is another fairly simple one, it doesn't have an associated statement and only a handful of allowed clauses. This patch implements it and
[OpenACC] Implement 'set' construct sema
The 'set' construct is another fairly simple one, it doesn't have an associated statement and only a handful of allowed clauses. This patch implements it and all the rules for it, allowing 3 of its for clauses. The only exception is default_async, which will be implemented in a future patch, because it isn't just being enabled, it needs a complete new implementation.
show more ...
|
#
bdf25553 |
| 19-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'device_num' clause sema for 'init'/'shutdown'
This is a very simple sema implementation, and just required AST node plus the existing diagnostics. This patch adds tests and add
[OpenACC] Implement 'device_num' clause sema for 'init'/'shutdown'
This is a very simple sema implementation, and just required AST node plus the existing diagnostics. This patch adds tests and adds the AST node required, plus enables it for 'init' and 'shutdown' (only!)
show more ...
|
#
4bbdb018 |
| 19-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'init' and 'shutdown' constructs
These two constructs are very simple and similar, and only support 3 different clauses, two of which are already implemented. This patch adds AS
[OpenACC] Implement 'init' and 'shutdown' constructs
These two constructs are very simple and similar, and only support 3 different clauses, two of which are already implemented. This patch adds AST nodes for both constructs, and leaves the device_num clause unimplemented, but enables the other two.
show more ...
|
#
e34cc7c9 |
| 17-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'wait' construct
The arguments to this are the same as for the 'wait' clause, so this reuses all of that infrastructure. So all this has to do is support a pair of clauses that a
[OpenACC] Implement 'wait' construct
The arguments to this are the same as for the 'wait' clause, so this reuses all of that infrastructure. So all this has to do is support a pair of clauses that are already implemented (if and async), plus create an AST node. This patch does so, and adds proper testing.
show more ...
|
Revision tags: llvmorg-19.1.6 |
|
#
bfc2dbe0 |
| 16-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement data construct 'at least 1 of ... clauses' rule
All 4 of the 'data' constructs have a requirement that at least 1 of a small list of clauses must appear on the construct. This p
[OpenACC] Implement data construct 'at least 1 of ... clauses' rule
All 4 of the 'data' constructs have a requirement that at least 1 of a small list of clauses must appear on the construct. This patch implements that restriction, and updates all of the tests it takes to do so.
show more ...
|
#
fbb14dd9 |
| 16-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'use_device' clause AST/Sema
This is a clause that is only valid on 'host_data' constructs, and identifies variables which it should use the current device address. From a Sema p
[OpenACC] Implement 'use_device' clause AST/Sema
This is a clause that is only valid on 'host_data' constructs, and identifies variables which it should use the current device address. From a Sema perspective, the only thing novel here is mild changes to how ActOnVar works for this clause, else this is very much like the rest of the 'var-list' clauses.
show more ...
|
#
1ab81f8e |
| 16-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'delete' AST/Sema for 'exit data' construct
'delete' is another clause that has very little compile-time implication, but needs a full AST that takes a var list. This patch ipml
[OpenACC] Implement 'delete' AST/Sema for 'exit data' construct
'delete' is another clause that has very little compile-time implication, but needs a full AST that takes a var list. This patch ipmlements it fully, plus adds sufficient test coverage.
show more ...
|
#
3351b3bf |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] implement 'detach' clause sema
This is another new clause specific to 'exit data' that takes a pointer argument. This patch implements this the same way we do a few other clauses (like att
[OpenACC] implement 'detach' clause sema
This is another new clause specific to 'exit data' that takes a pointer argument. This patch implements this the same way we do a few other clauses (like attach) that have the same restrictions.
show more ...
|
#
2244d2e7 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'if_present' clause sema
The 'if_present' clause controls the replacement of addresses in the var-list in current device memory. This clause can only go on 'host_device'. From
[OpenACC] Implement 'if_present' clause sema
The 'if_present' clause controls the replacement of addresses in the var-list in current device memory. This clause can only go on 'host_device'. From a Sema perspective, there isn't anything to do beyond add this to AST and pass it on.
show more ...
|
#
003eb5e8 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Implement 'finalize' clause sema
This is a very simple clause as far as sema is concerned. It is only valid on 'exit data', and doesn't have any rules involving it, so it is simply applie
[OpenACC] Implement 'finalize' clause sema
This is a very simple clause as far as sema is concerned. It is only valid on 'exit data', and doesn't have any rules involving it, so it is simply applied and passed onto the MLIR.
show more ...
|
#
6d69d184 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'attach' clause sema for 'data' and 'enter data'
This is very similar to deviceptr, and is the same implementation as for combined/compute constructs, so this just enables that, and
[OpenACC] enable 'attach' clause sema for 'data' and 'enter data'
This is very similar to deviceptr, and is the same implementation as for combined/compute constructs, so this just enables that, and adds tests.
show more ...
|
#
754499c1 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] Enable 'deviceptr' clause sema on data construct
Another simple implementation, as it uses the same work as the previous implementation, just enabling it for this construct.
|
#
331f3cc9 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'present' clause for 'data' construct
No additional sema is required once again, so this patch adds testing and enables the clause.
|
#
1da0730b |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'copyout' clause sema for data constructs
Same as the previous few, this just enables copyout for data constructs and ensures we have sufficient test coverage.
|
#
b2b1eec2 |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] enable 'copyin' clause sema for 'data'/'enter data'
stop reporting 'copyin' as not implemented on a data/enter data construct, and enforce sema rules.
|
#
9359625b |
| 13-Dec-2024 |
erichkeane <ekeane@nvidia.com> |
[OpenACC] 'create' clause sema for data/enter data constructs
Enable and add tests for 'create' on a data or enter data construct.
|