Skip to content

Commit 99403ba

Browse files
authored
Add intrinsics for the new FP conversions introduced by the 2024 dpISA (#407)
FEAT_FPRCVT adds 4 new variants for each FCVTAS, FCVTAU, FCVTMS, FCVTMU, FCVTNS, FCVTNU, FCVTPS, FCVTPU, FCVTZS, and FCVTZU instruction. 1) Half Precision to 32-bit 2) Half Precision to 64-bit 3) Single Precision to 64-bit 4) Double Precision to 32-bit For the Single Precision to 64-bit and Double Precision to 32-bit variants, this patch adds two new intrinsics, that reduce to - Single Precision to 64-bit : <INST> Dd,Sn - Double Precision to 32-bit : <INST> Sd,Dn The intrinsics for conversions from Half Precision are already defined. However they are documented as reducing to the incorrect instruction format; <INST> Hd,Hn, so this patch fixes them to be - Half Precision to 32-bit : <INST> Sd,Hn - Half Precision to 64-bit : <INST> Dd,Hn
1 parent 422fee6 commit 99403ba

5 files changed

Lines changed: 158 additions & 75 deletions

File tree

main/acle.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,7 @@ Armv8.4-A [[ARMARMv84]](#ARMARMv84). Support is added for the Dot Product intrin
483483
support for SME2.2 (FEAT_SME2p2).
484484
* Added [**Alpha**](#current-status-and-anticipated-changes) support
485485
for FEAT_SVE_AES2, FEAT_SSVE_AES intrinsics.
486+
* Added support for FEAT_FPRCVT intrinsics and `__ARM_FEATURE_FPRCVT`.
486487

487488
### References
488489

@@ -2248,6 +2249,13 @@ ACLE intrinsics are available. This implies that `__ARM_FEATURE_SM4` and
22482249
floating-point absolute minimum and maximum instructions (FEAT_FAMINMAX)
22492250
and if the associated ACLE intrinsics are available.
22502251

2252+
### FPRCVT extension
2253+
2254+
`__ARM_FEATURE_FPRCVT` is defined to `1` if there is hardware
2255+
support for floating-point to/from integer conversion instructions
2256+
with only scalar SIMD&FP register operands and results, and with
2257+
different input and output register sizes.
2258+
22512259
### Lookup table extensions
22522260

22532261
`__ARM_FEATURE_LUT` is defined to 1 if there is hardware support for
@@ -2651,6 +2659,7 @@ be found in [[BA]](#BA).
26512659
| [`__ARM_FEATURE_FP8DOT2`](#modal-8-bit-floating-point-extensions) | Modal 8-bit floating-point extensions | 1 |
26522660
| [`__ARM_FEATURE_FP8DOT4`](#modal-8-bit-floating-point-extensions) | Modal 8-bit floating-point extensions | 1 |
26532661
| [`__ARM_FEATURE_FP8FMA`](#modal-8-bit-floating-point-extensions) | Modal 8-bit floating-point extensions | 1 |
2662+
| [`__ARM_FEATURE_FPRCVT`](#fprcvt-extension) | FPRCVT extension | 1 |
26542663
| [`__ARM_FEATURE_FRINT`](#availability-of-armv8.5-a-floating-point-rounding-intrinsics) | Floating-point rounding extension (Arm v8.5-A) | 1 |
26552664
| [`__ARM_FEATURE_GCS`](#guarded-control-stack) | Guarded Control Stack | 1 |
26562665
| [`__ARM_FEATURE_GCS_DEFAULT`](#guarded-control-stack) | Guarded Control Stack protection can be enabled | 1 |

0 commit comments

Comments
 (0)