Thanks.

It has been added in v2.


在 2025/11/1 16:46, Xi Ruoyao 写道:
On Sat, 2025-11-01 at 15:39 +0800, Guo Jie wrote:
Support for conversion between scalar INT and scalar FP.

gcc/ChangeLog:

        * config/loongarch/loongarch.cc
        (loongarch_can_change_mode_class): Support for conversion
        between scalar INT and scalar FP.

gcc/testsuite/ChangeLog:

        * gcc.target/loongarch/extendsidi2-combine.c: New test.
        * gcc.target/loongarch/spill-less.c: New test.

---
  gcc/config/loongarch/loongarch.cc                  |  4 ++++
  .../gcc.target/loongarch/extendsidi2-combine.c     | 13 +++++++++++++
  gcc/testsuite/gcc.target/loongarch/spill-less.c    | 14 ++++++++++++++
  3 files changed, 31 insertions(+)
  create mode 100644 gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c
  create mode 100644 gcc/testsuite/gcc.target/loongarch/spill-less.c

diff --git a/gcc/config/loongarch/loongarch.cc 
b/gcc/config/loongarch/loongarch.cc
index 740c8611a71..a6550647bd7 100644
--- a/gcc/config/loongarch/loongarch.cc
+++ b/gcc/config/loongarch/loongarch.cc
@@ -7087,6 +7087,10 @@ static bool
  loongarch_can_change_mode_class (machine_mode from, machine_mode to,
                                 reg_class_t rclass)
  {
+  if ((INTEGRAL_MODE_P (from) && FLOAT_MODE_P (to))
+      || (INTEGRAL_MODE_P (to) && FLOAT_MODE_P (from)))
+    return true;
+
    /* Allow conversions between different LSX/LASX vector modes.  */
    if (LASX_SUPPORTED_MODE_P (from) && LASX_SUPPORTED_MODE_P (to))
      return true;
diff --git a/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c 
b/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c
new file mode 100644
index 00000000000..72de35e4769
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/extendsidi2-combine.c
@@ -0,0 +1,13 @@
+/* { dg-do compile { target { loongarch64*-*-* } } } */
+/* { dg-options "-O3" } */
Add -fno-strict-aliasing to avoid UB.

/* snip */

diff --git a/gcc/testsuite/gcc.target/loongarch/spill-less.c 
b/gcc/testsuite/gcc.target/loongarch/spill-less.c
new file mode 100644
index 00000000000..983b83da167
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/spill-less.c
@@ -0,0 +1,14 @@
+/* { dg-do compile { target { loongarch64*-*-* } } } */
+/* { dg-options "-O3" } */
Likewise.  Otherwise LGTM.


Reply via email to