<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/TableGen/Basic/DirectiveEmitter.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[OpenMP] Introduce "loop sequence" as directive association (#168934)</title>
<updated>2025-11-21T13:40:44+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-11-21T13:40:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d69320e775a7c4af8f6e6bb6bd0574ead8e3d69c'/>
<id>d69320e775a7c4af8f6e6bb6bd0574ead8e3d69c</id>
<content type='text'>
OpenMP 6.0 introduced a `fuse` directive, and with it a "loop sequence"
as the associated code. What used to be "loop association" has become
"loop-nest association".

Rename Association::Loop to LoopNest, add Association::LoopSeq to
represent the "loop sequence" association.

Change the association of fuse from "block" to "loop sequence".</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
OpenMP 6.0 introduced a `fuse` directive, and with it a "loop sequence"
as the associated code. What used to be "loop association" has become
"loop-nest association".

Rename Association::Loop to LoopNest, add Association::LoopSeq to
represent the "loop sequence" association.

Change the association of fuse from "block" to "loop sequence".</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Remove `close` member from various CodeGenHelpers (#167904)</title>
<updated>2025-11-18T19:11:19+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-11-18T19:11:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8f67759585f7bd25cfebf2224680b131ffe5425b'/>
<id>8f67759585f7bd25cfebf2224680b131ffe5425b</id>
<content type='text'>
Always rely on local scopes to enforce the lifetime of these helper
objects and by extension where the "closing" of various C++ code
constructs happens.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Always rely on local scopes to enforce the lifetime of these helper
objects and by extension where the "closing" of various C++ code
constructs happens.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Adopt NamespaceEmitter in DirectiveEmitter (#165600)</title>
<updated>2025-11-05T15:46:12+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-11-05T15:46:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d568601d5a0c7c315d8038f4dc24e0ccd97a1ba0'/>
<id>d568601d5a0c7c315d8038f4dc24e0ccd97a1ba0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Emit empty lines after/before namespace scope (#166217)</title>
<updated>2025-11-04T15:11:26+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-11-04T15:11:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a2495ff991bdad98abca022e89eb93d5fb13a915'/>
<id>a2495ff991bdad98abca022e89eb93d5fb13a915</id>
<content type='text'>
Emit empty line after a namespace scope is opened and before its closed.
Adjust DirectiveEmitter code empty line emission in response to this to
avoid lot of unit test changes.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Emit empty line after a namespace scope is opened and before its closed.
Adjust DirectiveEmitter code empty line emission in response to this to
avoid lot of unit test changes.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Add `IncludeGuardEmitter` to emit header include guards (#163283)</title>
<updated>2025-10-14T19:51:38+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-10-14T19:51:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=43f901774529f8b86847238b60a8686831a4c7d6'/>
<id>43f901774529f8b86847238b60a8686831a4c7d6</id>
<content type='text'>
Add a RAII class `IncludeGuardEmitter` which is similar to
`IfDefEmitter` but emits header include guards and adopt it in
DirectiveEmitter.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a RAII class `IncludeGuardEmitter` which is similar to
`IfDefEmitter` but emits header include guards and adopt it in
DirectiveEmitter.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][TableGen] Migrate IfDef/Namespace emitter from MLIR to LLVM (#161744)</title>
<updated>2025-10-04T12:28:56+00:00</updated>
<author>
<name>Rahul Joshi</name>
<email>rjoshi@nvidia.com</email>
</author>
<published>2025-10-04T12:28:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e9330fd244f93c53b13a876769fe9555913e6028'/>
<id>e9330fd244f93c53b13a876769fe9555913e6028</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[utils][TableGen] Make some non-bitmask enums iterable (#148647)</title>
<updated>2025-07-17T16:27:47+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-07-17T16:27:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=661cbd5a5254de22ba87a49e89f54b30e2874fb3'/>
<id>661cbd5a5254de22ba87a49e89f54b30e2874fb3</id>
<content type='text'>
Additionally, add sentinel values &lt;Enum&gt;::First_ and &lt;Enum&gt;::Last_ to
each one of those enums.

This will allow using `enum_seq_inclusive` to generate the list of
enum-typed values of any generated scoped (non-bitmask) enum.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Additionally, add sentinel values &lt;Enum&gt;::First_ and &lt;Enum&gt;::Last_ to
each one of those enums.

This will allow using `enum_seq_inclusive` to generate the list of
enum-typed values of any generated scoped (non-bitmask) enum.</pre>
</div>
</content>
</entry>
<entry>
<title>[TableGen] Use `contains` instead of `count`. NFC. (#143156)</title>
<updated>2025-06-07T08:31:42+00:00</updated>
<author>
<name>Jay Foad</name>
<email>jay.foad@amd.com</email>
</author>
<published>2025-06-07T08:31:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bb9dcb27df133dd3788e7dfcd2bf31382673a2bc'/>
<id>bb9dcb27df133dd3788e7dfcd2bf31382673a2bc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[utils][TableGen] Handle versions on clause/directive spellings (#143021)</title>
<updated>2025-06-06T22:07:25+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-06-06T22:07:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7b2aa02a33df2ffd59fa1c043c10ec05dc411171'/>
<id>7b2aa02a33df2ffd59fa1c043c10ec05dc411171</id>
<content type='text'>
In "get&lt;lang&gt;DirectiveName(Kind, Version)", return the spelling that
corresponds to Version, and in "get&lt;lang&gt;DirectiveKindAndVersions(Name)"
return the pair {Kind, VersionRange}, where VersionRange contains the
minimum and the maximum versions that allow "Name" as a spelling. This
applies to clauses as well. In general it applies to classes that have
spellings (defined via TableGen class "Spelling").

Given a Kind and a Version, getting the corresponding spelling requires
a runtime search (which can fail in a general case). To avoid generating
the search function inline, a small additional component of
llvm/Frontent was added: LLVMFrontendDirective. The corresponding header
file also defines C++ classes "Spelling" and "VersionRange", which are
used in TableGen/DirectiveEmitter as well.

For background information see

https://discourse.llvm.org/t/rfc-alternative-spellings-of-openmp-directives/85507</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In "get&lt;lang&gt;DirectiveName(Kind, Version)", return the spelling that
corresponds to Version, and in "get&lt;lang&gt;DirectiveKindAndVersions(Name)"
return the pair {Kind, VersionRange}, where VersionRange contains the
minimum and the maximum versions that allow "Name" as a spelling. This
applies to clauses as well. In general it applies to classes that have
spellings (defined via TableGen class "Spelling").

Given a Kind and a Version, getting the corresponding spelling requires
a runtime search (which can fail in a general case). To avoid generating
the search function inline, a small additional component of
llvm/Frontent was added: LLVMFrontendDirective. The corresponding header
file also defines C++ classes "Spelling" and "VersionRange", which are
used in TableGen/DirectiveEmitter as well.

For background information see

https://discourse.llvm.org/t/rfc-alternative-spellings-of-openmp-directives/85507</pre>
</div>
</content>
</entry>
<entry>
<title>[utils][TableGen] Implement clause aliases as alternative spellings (#141765)</title>
<updated>2025-06-05T17:35:30+00:00</updated>
<author>
<name>Krzysztof Parzyszek</name>
<email>Krzysztof.Parzyszek@amd.com</email>
</author>
<published>2025-06-05T17:35:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4dcc159485e6b1ece15982dfe17656c8f9f11779'/>
<id>4dcc159485e6b1ece15982dfe17656c8f9f11779</id>
<content type='text'>
Use the spellings in the generated clause parser. The functions
`get&lt;lang&gt;ClauseKind` and `get&lt;lang&gt;ClauseName` are not yet updated.

The definitions of both clauses and directives now take a list of
"Spelling"s instead of a single string. For example
```
def ACCC_Copyin : Clause&lt;[Spelling&lt;"copyin"&gt;,
                          Spelling&lt;"present_or_copyin"&gt;,
                          Spelling&lt;"pcopyin"&gt;]&gt; { ... }
```

A "Spelling" is a versioned string, defaulting to "all versions".

For background information see

https://discourse.llvm.org/t/rfc-alternative-spellings-of-openmp-directives/85507</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use the spellings in the generated clause parser. The functions
`get&lt;lang&gt;ClauseKind` and `get&lt;lang&gt;ClauseName` are not yet updated.

The definitions of both clauses and directives now take a list of
"Spelling"s instead of a single string. For example
```
def ACCC_Copyin : Clause&lt;[Spelling&lt;"copyin"&gt;,
                          Spelling&lt;"present_or_copyin"&gt;,
                          Spelling&lt;"pcopyin"&gt;]&gt; { ... }
```

A "Spelling" is a versioned string, defaulting to "all versions".

For background information see

https://discourse.llvm.org/t/rfc-alternative-spellings-of-openmp-directives/85507</pre>
</div>
</content>
</entry>
</feed>
