https://gcc.gnu.org/g:005424e3337a3234f95755e57ee41c061b6e4185

commit r16-373-g005424e3337a3234f95755e57ee41c061b6e4185
Author: Jeff Law <j...@ventanamicro.com>
Date:   Sun May 4 08:28:56 2025 -0600

    [to-be-committed][RISC-V] Adjust testcases and finish register move costing 
fix
    
    The recent adjustment to more correctly cost register moves tripped a few
    testsuite regressions.
    
    I'm pretty torn on the thead test adjustments.  But in reality they only 
worked
    because the register move costing was broken.  So I've reverted the scan-asm
    part of those to a prior state for two of those tests.  The other was only
    failing at -Og/-Oz which was added to the exclude list.
    
    The other Zfa test is similar, but we can make the test behave with a 
suitable
    -mtune option and thus preserve the test.
    
    While investigating I also noted that vector moves aren't being handled
    correctly for subclasses of the integer/fp register files.  So I fixed those
    while I was in there.
    
    Note this may have an impact on some of your work Pan.  I haven't followed 
the
    changes from the last week or so due to illness.
    
    Waiting on pre-commit's verdict, though it did spin through my tester
    successfully, though not all of the regressions related to that change are
    addressed (there's still one for rv32 I'll look at shortly).
    
    gcc/
            * config/riscv/riscv.cc (riscv_register_move_cost): Handle
            subclasses with vector registers as well.
    
    gcc/testsuite/
    
            * gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c: Adjust expected
            output.
            * gcc.target/riscv/xtheadfmemidx-zfa-medany.c: Likewise.
            * gcc.target/riscv/xtheadfmv-fmv.c: Skip for -Os and -Oz.
            * gcc.target/riscv/zfa-fmovh-fmovp.c: Use sifive-p400 tuning.

Diff:
---
 gcc/config/riscv/riscv.cc                                       | 8 ++++----
 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c | 4 +---
 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-zfa-medany.c       | 4 +---
 gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c                  | 2 +-
 gcc/testsuite/gcc.target/riscv/zfa-fmovh-fmovp.c                | 2 +-
 5 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 10e0f4adbdcf..064c12c49f3a 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -9659,17 +9659,17 @@ riscv_register_move_cost (machine_mode mode,
 
   if (from == V_REGS)
     {
-      if (to == GR_REGS)
+      if (to_is_gpr)
        return get_vector_costs ()->regmove->VR2GR;
-      else if (to == FP_REGS)
+      else if (to_is_fpr)
        return get_vector_costs ()->regmove->VR2FR;
     }
 
   if (to == V_REGS)
     {
-      if (from == GR_REGS)
+      if (from_is_gpr)
        return get_vector_costs ()->regmove->GR2VR;
-      else if (from == FP_REGS)
+      else if (from_is_fpr)
        return get_vector_costs ()->regmove->FR2VR;
     }
 
diff --git a/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c 
b/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c
index 6746c3140578..38966fefad5d 100644
--- a/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c
+++ b/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-xtheadfmv-medany.c
@@ -35,6 +35,4 @@ double foo (int i, int j)
   return z;
 }
 
-/* { dg-final { scan-assembler-not {\mth\.flrd\M} } } */
-/* { dg-final { scan-assembler-times {\mlw\M} 2 } } */
-/* { dg-final { scan-assembler-times {\mth\.fmv\.hw\.x\M} 3 } } */
+/* { dg-final { scan-assembler-times {\mth\.flrd\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-zfa-medany.c 
b/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-zfa-medany.c
index fb1ac2b735c3..f0d9c80d16f2 100644
--- a/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-zfa-medany.c
+++ b/gcc/testsuite/gcc.target/riscv/xtheadfmemidx-zfa-medany.c
@@ -35,6 +35,4 @@ double foo (int i, int j)
   return z;
 }
 
-/* { dg-final { scan-assembler-not {\mth\.flrd\M} } } */
-/* { dg-final { scan-assembler-times {\mlw\M} 2 } } */
-/* { dg-final { scan-assembler-times {\mfmvp\.d\.x\M} 3 } } */
+/* { dg-final { scan-assembler-times {\mth\.flrd\M} 1 } } */
diff --git a/gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c 
b/gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c
index 9b4e23784480..81b240eac577 100644
--- a/gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c
+++ b/gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c
@@ -1,6 +1,6 @@
 /* { dg-do compile { target { rv32 } } } */
 /* { dg-options "-march=rv32gc_xtheadfmv -mabi=ilp32d" } */
-/* { dg-skip-if "" { *-*-* } { "-O0" } } */
+/* { dg-skip-if "" { *-*-* } { "-O0" "-Os" "-Oz"} } */
 
 double
 ll2d (long long ll)
diff --git a/gcc/testsuite/gcc.target/riscv/zfa-fmovh-fmovp.c 
b/gcc/testsuite/gcc.target/riscv/zfa-fmovh-fmovp.c
index 5a52adce36ac..150cfd7fc058 100644
--- a/gcc/testsuite/gcc.target/riscv/zfa-fmovh-fmovp.c
+++ b/gcc/testsuite/gcc.target/riscv/zfa-fmovh-fmovp.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-march=rv32g_zfa -mabi=ilp32 -O0" } */
+/* { dg-options "-march=rv32g_zfa -mabi=ilp32 -O0 -mtune=sifive-p400-series" } 
*/
 
 double foo(long long a)
 {

Reply via email to