History log of /llvm-project/clang/test/ParserOpenACC/parse-constructs.c (Results 1 – 22 of 22)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: llvmorg-21-init, 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 ...


# 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 ...


# 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 ...


# 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 ...


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 ...


# 010d0115 10-Dec-2024 erichkeane <ekeane@nvidia.com>

[OpenACC] Create AST nodes for 'data' constructs

These constructs are all very similar and closely related, so this patch
creates the AST nodes for them, serialization, printing/etc.
Additionally th

[OpenACC] Create AST nodes for 'data' constructs

These constructs are all very similar and closely related, so this patch
creates the AST nodes for them, serialization, printing/etc.
Additionally the restrictions are all added as tests/todos in the tests,
as those will have to be implemented once we get those clauses implemented.

show more ...


Revision tags: llvmorg-19.1.5, llvmorg-19.1.4
# 39351f8e 07-Nov-2024 erichkeane <ekeane@nvidia.com>

[OpenACC] Implement AST/Sema for combined constructs

Combined constructs (OpenACC 3.3 section 2.11) are a short-cut for
writing a `loop` construct immediately inside of a `compute` construct.
Howeve

[OpenACC] Implement AST/Sema for combined constructs

Combined constructs (OpenACC 3.3 section 2.11) are a short-cut for
writing a `loop` construct immediately inside of a `compute` construct.
However, this interaction requires we do additional work to ensure that
we get the semantics between the two correct, as well as diagnostics.

This patch adds the semantic analysis for the constructs (but no
clauses), as well as the AST nodes.

show more ...


# b0cfbfd7 08-Nov-2024 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement `loop` restrictions on `for` loops. (#115370)

OpenACC restricts the contents of a 'for' loop affected by a 'loop'
construct without a 'seq'. The loop variable must be integer, p

[OpenACC] Implement `loop` restrictions on `for` loops. (#115370)

OpenACC restricts the contents of a 'for' loop affected by a 'loop'
construct without a 'seq'. The loop variable must be integer, pointer,
or random-access-iterator, it must monotonically increase/decrease, and
the trip count must be computable at runtime before the function.

This patch tries to implement some of these limitations to the best of
our ability, though it causes us to be perhaps overly restrictive at the
moment. I expect we'll revisit some of these rules/add additional
supported forms of loop-variable and 'monotonically increasing' here,
but the currently enforced rules are heavily inspired by the OMP
implementation here.

show more ...


Revision tags: llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7
# 42f4e505 05-Jun-2024 Erich Keane <ekeane@nvidia.com>

[OpenACC] Loop construct basic Sema and AST work (#93742)

This patch implements the 'loop' construct AST, as well as the basic
appertainment rule. Additionally, it sets up the 'parent' compute
con

[OpenACC] Loop construct basic Sema and AST work (#93742)

This patch implements the 'loop' construct AST, as well as the basic
appertainment rule. Additionally, it sets up the 'parent' compute
construct, which is necessary for codegen/other diagnostics.

A 'loop' can apply to a for or range-for loop, otherwise it has no other
restrictions (though some of its clauses do).

show more ...


Revision tags: llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1
# bb97c992 04-Mar-2024 erichkeane <ekeane@nvidia.com>

[OpenACC] Enable serial/kernels Compute Constructs

So far, all the work we've done for compute constructs has only used
'parallel'. This patch does the work to enable the same logic for
'serial' an

[OpenACC] Enable serial/kernels Compute Constructs

So far, all the work we've done for compute constructs has only used
'parallel'. This patch does the work to enable the same logic for
'serial' and 'kernels' constructs as well, since they are the same
semantic behavior.

show more ...


Revision tags: llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3
# cb891127 16-Feb-2024 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement beginning parts of the 'parallel' Sema impl (#81659)

This patch Implements AST node creation and appertainment enforcement
for 'parallel', as well as changes the 'not implemente

[OpenACC] Implement beginning parts of the 'parallel' Sema impl (#81659)

This patch Implements AST node creation and appertainment enforcement
for 'parallel', as well as changes the 'not implemented' messages to be
more specific. It does not deal with clauses/clause legality, nor a few
of the other rules from the standard, but this gets us most of the way
for a framework for future construct implementation.

show more ...


# db4ea21d 15-Feb-2024 erichkeane <ekeane@nvidia.com>

[OpenACC] Change 'not implemented' diagnostic to be more specific

Currently we just emit a generic 'not implemented' diagnostic for all
OpenACC pragmas. This patch moves the diagnostic to 'Sema' and

[OpenACC] Change 'not implemented' diagnostic to be more specific

Currently we just emit a generic 'not implemented' diagnostic for all
OpenACC pragmas. This patch moves the diagnostic to 'Sema' and diagnoses
for a specific clause or construct, in preperation of implementing Sema
for constructs.

show more ...


Revision tags: llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init
# fdee0a35 19-Dec-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Add 'clause' parsing infrastructure plus a few clauses (#75052)

As we've now finished parsing the constructs, we're moving onto
implementing 'clause' parsing. While some are complicated a

[OpenACC] Add 'clause' parsing infrastructure plus a few clauses (#75052)

As we've now finished parsing the constructs, we're moving onto
implementing 'clause' parsing. While some are complicated and require
their own patch, the handful added here are simple to parse (that is,
they are a single identifier).

This patch adds the infrastructure to parse these and a clause-list in
its entirety. This adds some complication to how we are diagnosing
parsing errors elsewhere, so a few changes were made to better recover
from errors.

show more ...


# 731361cd 08-Dec-2023 erichkeane <ekeane@nvidia.com>

[OpenACC] Fix bug with directive name being a 'special token'

If the 'directive name' is a special token instead of an identifier, we
end up asserting. This fixes that.


# 26f8e146 05-Dec-2023 erichkeane <ekeane@nvidia.com>

[OpenACC] NFC: Stop using 'getSpelling' while parsing OpenACC

It was brought up during the cache review that we shouldn't be using
'getSpelling', and instead should use the IdentifierInfo itself. T

[OpenACC] NFC: Stop using 'getSpelling' while parsing OpenACC

It was brought up during the cache review that we shouldn't be using
'getSpelling', and instead should use the IdentifierInfo itself. This
patch replaces all uses of it.

show more ...


Revision tags: llvmorg-17.0.6
# ba1c869f 27-Nov-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement 'routine' construct parsing (#73143)

The 'routine' construct applies either to a function directly, or, when
provided a name, applies to the function named (and is visible in th

[OpenACC] Implement 'routine' construct parsing (#73143)

The 'routine' construct applies either to a function directly, or, when
provided a name, applies to the function named (and is visible in the
current scope). This patch implements the parsing for this. The
identifier provided (or Id Expression) is required to be a valid,
declared identifier, though the semantic analysis portion of the Routine
directive will need to enforce it being a function/overload set.

show more ...


# 04e9b61c 21-Nov-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement Atomic construct variants (#73015)

`atomic` is required to be followed by a special `atomic clause`, so
this patch manages the parsing of that. We are representing each of the

[OpenACC] Implement Atomic construct variants (#73015)

`atomic` is required to be followed by a special `atomic clause`, so
this patch manages the parsing of that. We are representing each of the
variants of the atomic construct as separate kinds, because they have
distinct rules/application/etc, and this should make it easier to check
rules in the future.

show more ...


# 147b38b1 21-Nov-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement enter data/exit data construct parsing (#72916)

These two constructs, 'enter data' and 'exit data', are novel compared
to what is currently in the parser, as this is the first s

[OpenACC] Implement enter data/exit data construct parsing (#72916)

These two constructs, 'enter data' and 'exit data', are novel compared
to what is currently in the parser, as this is the first set implemented
where the first token is itself not a valid construct. Because of this,
it requires some additional work to do the first keyword parsing.

show more ...


# 70f41022 20-Nov-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement compound construct parsing (#72692)

This patch implements the compound construct parsing, which allows
'parallel loop', 'serial loop', and 'kernel loop' to act as their own
con

[OpenACC] Implement compound construct parsing (#72692)

This patch implements the compound construct parsing, which allows
'parallel loop', 'serial loop', and 'kernel loop' to act as their own
constructs.

show more ...


# 61683376 17-Nov-2023 erichkeane <ekeane@nvidia.com>

[OpenACC] Handle lack of construct/directive

Discovered while working on another patch, this patch fixes the case
where are construct/directive name isn't provided.


# 9bd5f808 17-Nov-2023 erichkeane <ekeane@nvidia.com>

[OpenACC] Implement 'trivial' construct/directive parsing.

Now that the `parallel` support has landed, add the other 'trivial' to
implement ones that don't require any additional work other than add

[OpenACC] Implement 'trivial' construct/directive parsing.

Now that the `parallel` support has landed, add the other 'trivial' to
implement ones that don't require any additional work other than adding
them to the StringSwitch.

show more ...


# 64b6ef02 17-Nov-2023 Erich Keane <ekeane@nvidia.com>

[OpenACC] Implement initial parsing for `parallel` construct (#72661)

As the first real parsing effort for the OpenACC implementation effort,
this implements the parsing for first construct/directi

[OpenACC] Implement initial parsing for `parallel` construct (#72661)

As the first real parsing effort for the OpenACC implementation effort,
this implements the parsing for first construct/directive name. This
does not do any semantic analysis, nor any of the clauses. Those will
come in a future patch.

For the time being, we warn when we hit a point that we don't implement
the parsing for either of these situations.

show more ...