History log of /llvm-project/clang/lib/Sema/SemaOpenACC.cpp (Results 1 – 25 of 110)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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.


12345