diff options
| author | Lukacma <Marian.Lukac@arm.com> | 2025-09-25 14:39:30 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-25 14:39:30 +0100 |
| commit | c533017bcb576baff4016722d6498c1756e2bc0f (patch) | |
| tree | 081382ec87c6d36990e6b483e7c44203952d6e95 /libcxx/include/__algorithm/minmax.h | |
| parent | 2a82e71835f7b2258c42af9ad0ec67b6d007045c (diff) | |
| download | llvm-c533017bcb576baff4016722d6498c1756e2bc0f.zip llvm-c533017bcb576baff4016722d6498c1756e2bc0f.tar.gz llvm-c533017bcb576baff4016722d6498c1756e2bc0f.tar.bz2 | |
[AArch64][GlobalISel] Add codegen for simd fpcvt intrinsics (#157680)
This patch is a first in a series of patches that add codegen support
for fcvt instructions that keep the result in 32-bit or 64-bit SIMD&FP
registers. For a long time, LLVM primarily generated fpcvt instructions,
which store the result in GPRs, resulting in extra moves when the value
was used by NEON instructions that operate on SIMD&FP registers.
Although patterns existed for generating the SIMD variants, they relied
on single-element vector types (such as v1i32 or v1i64) to decide
whether the SIMD variant should be selected. This was not useful,
because many NEON intrinsics and other LLVM IR operations use scalar
types (i32/i64) even though they expect the result to be stored in
SIMD&FP registers.
This patch is part of a series that addresses this and also adds support
for generating these instructions in GlobalISel. To fix this in
SelectionDAG, bitcasts of the result to a floating-point type serve as a
hint that the SIMD variant of the conversion should be used, rather than
relying on single-element vector types. These bitcasts are not currently
generated by LLVM, but the goal is to add explicit bitcasts to the
inputs and outputs of NEON intrinsics operating on integers in follow-up
patches.
For GlobalISel, the register bank selection algorithm is used to
determine which variant to generate
Diffstat (limited to 'libcxx/include/__algorithm/minmax.h')
0 files changed, 0 insertions, 0 deletions
