<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/TargetParser/AArch64TargetParser.cpp, branch users/chapuni/cov/single/condop</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>[FMV][AArch64] Simplify version selection according to ACLE. (#121921)</title>
<updated>2025-01-08T18:59:07+00:00</updated>
<author>
<name>Alexandros Lamprineas</name>
<email>alexandros.lamprineas@arm.com</email>
</author>
<published>2025-01-08T18:59:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8e65940161cd5a7dea5896fe4ae057d4cc07c703'/>
<id>8e65940161cd5a7dea5896fe4ae057d4cc07c703</id>
<content type='text'>
Currently, the more features a version has, the higher its priority is.
We are changing ACLE https://github.com/ARM-software/acle/pull/370 as
follows:

"Among any two versions, the higher priority version is determined by
 identifying the highest priority feature that is specified in exactly
 one of the versions, and selecting that version."</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, the more features a version has, the higher its priority is.
We are changing ACLE https://github.com/ARM-software/acle/pull/370 as
follows:

"Among any two versions, the higher priority version is determined by
 identifying the highest priority feature that is specified in exactly
 one of the versions, and selecting that version."</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][FMV] Add missing feature dependencies and detect at runtime. (#119231)</title>
<updated>2024-12-11T22:11:32+00:00</updated>
<author>
<name>Alexandros Lamprineas</name>
<email>alexandros.lamprineas@arm.com</email>
</author>
<published>2024-12-11T22:11:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6f013dbced67948119fe9ca71336f0284975ba4f'/>
<id>6f013dbced67948119fe9ca71336f0284975ba4f</id>
<content type='text'>
i8mm -&gt; simd
fp16fml -&gt; simd
frintts -&gt; fp
bf16 -&gt; simd
sme -&gt; fp16

Approved in ACLE as https://github.com/ARM-software/acle/pull/368</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
i8mm -&gt; simd
fp16fml -&gt; simd
frintts -&gt; fp
bf16 -&gt; simd
sme -&gt; fp16

Approved in ACLE as https://github.com/ARM-software/acle/pull/368</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][clang][FMV][TargetInfo] Refactor API for FMV feature priority. (#116257)</title>
<updated>2024-11-28T09:22:05+00:00</updated>
<author>
<name>Alexandros Lamprineas</name>
<email>alexandros.lamprineas@arm.com</email>
</author>
<published>2024-11-28T09:22:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=88c2af80fac423fc338027c007e1499333f05ddb'/>
<id>88c2af80fac423fc338027c007e1499333f05ddb</id>
<content type='text'>
Currently we have code with target hooks in CodeGenModule shared between
X86 and AArch64 for sorting MultiVersionResolverOptions. Those are used
when generating IFunc resolvers for FMV. The RISCV target has different
criteria for sorting, therefore it repeats sorting after calling
CodeGenFunction::EmitMultiVersionResolver.

I am moving the FMV priority logic in TargetInfo, so that it can be
implemented by the TargetParser which then makes it possible to query it
from llvm. Here is an example why this is handy:
https://github.com/llvm/llvm-project/pull/87939</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently we have code with target hooks in CodeGenModule shared between
X86 and AArch64 for sorting MultiVersionResolverOptions. Those are used
when generating IFunc resolvers for FMV. The RISCV target has different
criteria for sorting, therefore it repeats sorting after calling
CodeGenFunction::EmitMultiVersionResolver.

I am moving the FMV priority logic in TargetInfo, so that it can be
implemented by the TargetParser which then makes it possible to query it
from llvm. Here is an example why this is handy:
https://github.com/llvm/llvm-project/pull/87939</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Make +sve2-aes an alias of +sve2+sve-aes (#116026)</title>
<updated>2024-11-14T11:04:04+00:00</updated>
<author>
<name>SpencerAbson</name>
<email>Spencer.Abson@arm.com</email>
</author>
<published>2024-11-14T11:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=748b028540de67000345dfb3454ccd011ace4bb5'/>
<id>748b028540de67000345dfb3454ccd011ace4bb5</id>
<content type='text'>
This patch essentially re-lands
https://github.com/llvm/llvm-project/pull/114293 with the following
fixups

- `nosve2-aes` should disable the backend feature `FeatureSVEAES` such
that the set of existing instructions that this removes is unchanged.
- FMV dependencies now use the autogenerated `ExtensionDepencies`
structure (since https://github.com/llvm/llvm-project/pull/113281) so we
do not require the change to `AArch64FMV.td`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch essentially re-lands
https://github.com/llvm/llvm-project/pull/114293 with the following
fixups

- `nosve2-aes` should disable the backend feature `FeatureSVEAES` such
that the set of existing instructions that this removes is unchanged.
- FMV dependencies now use the autogenerated `ExtensionDepencies`
structure (since https://github.com/llvm/llvm-project/pull/113281) so we
do not require the change to `AArch64FMV.td`.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][AArch64][TableGen] Create a ProcessorAlias record (#96249)</title>
<updated>2024-06-28T19:45:02+00:00</updated>
<author>
<name>Jon Roelofs</name>
<email>jonathan_roelofs@apple.com</email>
</author>
<published>2024-06-28T19:45:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6b4a13a15aef64bf284612fcdbe07662b96a881b'/>
<id>6b4a13a15aef64bf284612fcdbe07662b96a881b</id>
<content type='text'>
... and use it to organize all of the AArch64 CPU aliases.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... and use it to organize all of the AArch64 CPU aliases.</pre>
</div>
</content>
</entry>
<entry>
<title>Re-land: "[AArch64] Add ability to list extensions enabled for a target" (#95805) (#96795)</title>
<updated>2024-06-28T08:20:16+00:00</updated>
<author>
<name>Lucas Duarte Prates</name>
<email>lucas.prates@arm.com</email>
</author>
<published>2024-06-28T08:20:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bb83a3df25a8c46dd586caf26635f5658e7b3316'/>
<id>bb83a3df25a8c46dd586caf26635f5658e7b3316</id>
<content type='text'>
This introduces the new `--print-enabled-extensions` command line option
to AArch64, which prints the list of extensions that are enabled for the
target specified by the combination of `--target`/`-march`/`-mcpu`
values.

The goal of the this option is both to enable the manual inspection of
the enabled extensions by users and to enhance the testability of
architecture versions and CPU targets implemented in the compiler.

As part of this change, a new field for `FEAT_*` architecture feature
names was added to the TableGen entries. The output of the existing
`--print-supported-extensions` option was updated accordingly to show
these in a separate column.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This introduces the new `--print-enabled-extensions` command line option
to AArch64, which prints the list of extensions that are enabled for the
target specified by the combination of `--target`/`-march`/`-mcpu`
values.

The goal of the this option is both to enable the manual inspection of
the enabled extensions by users and to enhance the testability of
architecture versions and CPU targets implemented in the compiler.

As part of this change, a new field for `FEAT_*` architecture feature
names was added to the TableGen entries. The output of the existing
`--print-supported-extensions` option was updated accordingly to show
these in a separate column.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[AArch64] Add ability to list extensions enabled for a target" (#96768)</title>
<updated>2024-06-26T13:59:01+00:00</updated>
<author>
<name>Lucas Duarte Prates</name>
<email>lucas.prates@arm.com</email>
</author>
<published>2024-06-26T13:59:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b579aacc30bc02e8430c0b59af644f52ece71160'/>
<id>b579aacc30bc02e8430c0b59af644f52ece71160</id>
<content type='text'>
Reverts llvm/llvm-project#95805 due to test failures caught by the
buildbots.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#95805 due to test failures caught by the
buildbots.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64] Add ability to list extensions enabled for a target (#95805)</title>
<updated>2024-06-26T13:28:26+00:00</updated>
<author>
<name>Lucas Duarte Prates</name>
<email>lucas.prates@arm.com</email>
</author>
<published>2024-06-26T13:28:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b6240c371522c701be8a7a143aa166d277508cbe'/>
<id>b6240c371522c701be8a7a143aa166d277508cbe</id>
<content type='text'>
This introduces the new `--print-enabled-extensions` command line option
to AArch64, which prints the list of extensions that are enabled for the
target specified by the combination of `--target`/`-march`/`-mcpu`
values.

The goal of the this option is both to enable the manual inspection of
the enabled extensions by users and to enhance the testability of
architecture versions and CPU targets implemented in the compiler.

As part of this change, a new field for `FEAT_*` architecture feature
names was added to the TableGen entries. The output of the existing
`--print-supported-extensions` option was updated accordingly to show
these in a separate column.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This introduces the new `--print-enabled-extensions` command line option
to AArch64, which prints the list of extensions that are enabled for the
target specified by the combination of `--target`/`-march`/`-mcpu`
values.

The goal of the this option is both to enable the manual inspection of
the enabled extensions by users and to enhance the testability of
architecture versions and CPU targets implemented in the compiler.

As part of this change, a new field for `FEAT_*` architecture feature
names was added to the TableGen entries. The output of the existing
`--print-supported-extensions` option was updated accordingly to show
these in a separate column.</pre>
</div>
</content>
</entry>
<entry>
<title>[AArch64][TargetParser] Split FMV and extensions (#92882)</title>
<updated>2024-06-20T14:33:21+00:00</updated>
<author>
<name>Tomas Matheson</name>
<email>Tomas.Matheson@arm.com</email>
</author>
<published>2024-06-20T14:33:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fa6d38d61afff695357977853ec17d0b7cc8e975'/>
<id>fa6d38d61afff695357977853ec17d0b7cc8e975</id>
<content type='text'>
FMV extensions are really just mappings from FMV feature names to lists
of backend features for codegen. Split them out into their own separate
file.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
FMV extensions are really just mappings from FMV feature names to lists
of backend features for codegen. Split them out into their own separate
file.</pre>
</div>
</content>
</entry>
<entry>
<title>Reland "[AArch64] Decouple feature dependency expansion. (#94279)" (#95519)</title>
<updated>2024-06-18T20:28:34+00:00</updated>
<author>
<name>Alexandros Lamprineas</name>
<email>alexandros.lamprineas@arm.com</email>
</author>
<published>2024-06-18T20:28:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a03d06a736fd8921c8f40637667d6af9c2c76505'/>
<id>a03d06a736fd8921c8f40637667d6af9c2c76505</id>
<content type='text'>
This is the second attempt. When parsing the target attribute
we should be letting cc1 features which don't correspond to
Extensions pass through to avoid errors like the following:

% cat neon.c
__attribute__((target("arch=armv8-a")))
uint64x2_t foo(uint64x2_t a, uint64x2_t b) { return veorq_u64(a, b); }

% clang --target=aarch64-linux-gnu -c neon.c
error: always_inline function 'veorq_u64' requires target feature
       'outline-atomics', but would be inlined into function 'foo'
       that is compiled without support for 'outline-atomics'

Co-authored-by: Tomas Matheson &lt;Tomas.Matheson@arm.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the second attempt. When parsing the target attribute
we should be letting cc1 features which don't correspond to
Extensions pass through to avoid errors like the following:

% cat neon.c
__attribute__((target("arch=armv8-a")))
uint64x2_t foo(uint64x2_t a, uint64x2_t b) { return veorq_u64(a, b); }

% clang --target=aarch64-linux-gnu -c neon.c
error: always_inline function 'veorq_u64' requires target feature
       'outline-atomics', but would be inlined into function 'foo'
       that is compiled without support for 'outline-atomics'

Co-authored-by: Tomas Matheson &lt;Tomas.Matheson@arm.com&gt;</pre>
</div>
</content>
</entry>
</feed>
