https://gcc.gnu.org/g:2ad277478620037103379ffad6a99dc00bf0bca7

commit r15-5103-g2ad277478620037103379ffad6a99dc00bf0bca7
Author: Claudio Bantaloukas <claudio.bantalou...@arm.com>
Date:   Mon Nov 11 18:08:28 2024 +0000

    aarch64: return scalar fp8 values in fp registers
    
    According to the aapcs64: If the argument is an 8-bit (...) precision
    Floating-point or short vector type and the NSRN is less than 8, then the
    argument is allocated to the least significant bits of register v[NSRN].
    
    gcc/
            * config/aarch64/aarch64.cc
            (aarch64_vfp_is_call_or_return_candidate): use fp registers to
            return svmfloat8_t parameters.
    
    gcc/testsuite/
            * gcc.target/aarch64/fp8_scalar_1.c:

Diff:
---
 gcc/config/aarch64/aarch64.cc                   | 3 ++-
 gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index e9cee0aa5801..00bcf18ae97c 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -22306,7 +22306,8 @@ aarch64_vfp_is_call_or_return_candidate (machine_mode 
mode,
 
   if ((!composite_p
        && (GET_MODE_CLASS (mode) == MODE_FLOAT
-          || GET_MODE_CLASS (mode) == MODE_DECIMAL_FLOAT))
+          || GET_MODE_CLASS (mode) == MODE_DECIMAL_FLOAT
+          || (type && TYPE_MAIN_VARIANT (type) == aarch64_mfp8_type_node)))
       || aarch64_short_vector_p (type, mode))
     {
       *count = 1;
diff --git a/gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c 
b/gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c
index 1bc2ac26b2a8..61edf06401b8 100644
--- a/gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/fp8_scalar_1.c
@@ -7,10 +7,10 @@
 
 /*
 **stacktest1:
+**     umov    w0, v0.b\[0\]
 **     sub     sp, sp, #16
-**     and     w0, w0, 255
 **     strb    w0, \[sp, 15\]
-**     ldrb    w0, \[sp, 15\]
+**     ldr     b0, \[sp, 15\]
 **     add     sp, sp, 16
 **     ret
 */

Reply via email to