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.
