105 lines
3.7 KiB
Diff
105 lines
3.7 KiB
Diff
|
|
From 6c4a2fbdabab053a2a0fb1041e3ffccc3d853c97 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Chenghui Pan <panchenghui@loongson.cn>
|
||
|
|
Date: Fri, 15 Mar 2024 09:30:27 +0800
|
||
|
|
Subject: [PATCH 153/188] LoongArch: Combine UNITS_PER_FP_REG and
|
||
|
|
UNITS_PER_FPREG macros.
|
||
|
|
|
||
|
|
These macros are completely same in definition, so we can keep the previous one
|
||
|
|
and eliminate later one.
|
||
|
|
|
||
|
|
gcc/ChangeLog:
|
||
|
|
|
||
|
|
* config/loongarch/loongarch.cc
|
||
|
|
(loongarch_hard_regno_mode_ok_uncached): Combine UNITS_PER_FP_REG and
|
||
|
|
UNITS_PER_FPREG macros.
|
||
|
|
(loongarch_hard_regno_nregs): Ditto.
|
||
|
|
(loongarch_class_max_nregs): Ditto.
|
||
|
|
(loongarch_get_separate_components): Ditto.
|
||
|
|
(loongarch_process_components): Ditto.
|
||
|
|
* config/loongarch/loongarch.h (UNITS_PER_FPREG): Ditto.
|
||
|
|
(UNITS_PER_HWFPVALUE): Ditto.
|
||
|
|
(UNITS_PER_FPVALUE): Ditto.
|
||
|
|
---
|
||
|
|
gcc/config/loongarch/loongarch.cc | 10 +++++-----
|
||
|
|
gcc/config/loongarch/loongarch.h | 7 ++-----
|
||
|
|
2 files changed, 7 insertions(+), 10 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc
|
||
|
|
index dbb318660..8d9cda165 100644
|
||
|
|
--- a/gcc/config/loongarch/loongarch.cc
|
||
|
|
+++ b/gcc/config/loongarch/loongarch.cc
|
||
|
|
@@ -6773,7 +6773,7 @@ loongarch_hard_regno_mode_ok_uncached (unsigned int regno, machine_mode mode)
|
||
|
|
and TRUNC. There's no point allowing sizes smaller than a word,
|
||
|
|
because the FPU has no appropriate load/store instructions. */
|
||
|
|
if (mclass == MODE_INT)
|
||
|
|
- return size >= MIN_UNITS_PER_WORD && size <= UNITS_PER_FPREG;
|
||
|
|
+ return size >= MIN_UNITS_PER_WORD && size <= UNITS_PER_FP_REG;
|
||
|
|
}
|
||
|
|
|
||
|
|
return false;
|
||
|
|
@@ -6816,7 +6816,7 @@ loongarch_hard_regno_nregs (unsigned int regno, machine_mode mode)
|
||
|
|
if (LASX_SUPPORTED_MODE_P (mode))
|
||
|
|
return 1;
|
||
|
|
|
||
|
|
- return (GET_MODE_SIZE (mode) + UNITS_PER_FPREG - 1) / UNITS_PER_FPREG;
|
||
|
|
+ return (GET_MODE_SIZE (mode) + UNITS_PER_FP_REG - 1) / UNITS_PER_FP_REG;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* All other registers are word-sized. */
|
||
|
|
@@ -6851,7 +6851,7 @@ loongarch_class_max_nregs (enum reg_class rclass, machine_mode mode)
|
||
|
|
else if (LSX_SUPPORTED_MODE_P (mode))
|
||
|
|
size = MIN (size, UNITS_PER_LSX_REG);
|
||
|
|
else
|
||
|
|
- size = MIN (size, UNITS_PER_FPREG);
|
||
|
|
+ size = MIN (size, UNITS_PER_FP_REG);
|
||
|
|
}
|
||
|
|
left &= ~reg_class_contents[FP_REGS];
|
||
|
|
}
|
||
|
|
@@ -8227,7 +8227,7 @@ loongarch_get_separate_components (void)
|
||
|
|
if (IMM12_OPERAND (offset))
|
||
|
|
bitmap_set_bit (components, regno);
|
||
|
|
|
||
|
|
- offset -= UNITS_PER_FPREG;
|
||
|
|
+ offset -= UNITS_PER_FP_REG;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Don't mess with the hard frame pointer. */
|
||
|
|
@@ -8306,7 +8306,7 @@ loongarch_process_components (sbitmap components, loongarch_save_restore_fn fn)
|
||
|
|
if (bitmap_bit_p (components, regno))
|
||
|
|
loongarch_save_restore_reg (mode, regno, offset, fn);
|
||
|
|
|
||
|
|
- offset -= UNITS_PER_FPREG;
|
||
|
|
+ offset -= UNITS_PER_FP_REG;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
diff --git a/gcc/config/loongarch/loongarch.h b/gcc/config/loongarch/loongarch.h
|
||
|
|
index 8bcdb8729..698e42aec 100644
|
||
|
|
--- a/gcc/config/loongarch/loongarch.h
|
||
|
|
+++ b/gcc/config/loongarch/loongarch.h
|
||
|
|
@@ -138,19 +138,16 @@ along with GCC; see the file COPYING3. If not see
|
||
|
|
/* Width of a LASX vector register in bits. */
|
||
|
|
#define BITS_PER_LASX_REG (UNITS_PER_LASX_REG * BITS_PER_UNIT)
|
||
|
|
|
||
|
|
-/* For LARCH, width of a floating point register. */
|
||
|
|
-#define UNITS_PER_FPREG (TARGET_DOUBLE_FLOAT ? 8 : 4)
|
||
|
|
-
|
||
|
|
/* The largest size of value that can be held in floating-point
|
||
|
|
registers and moved with a single instruction. */
|
||
|
|
#define UNITS_PER_HWFPVALUE \
|
||
|
|
- (TARGET_SOFT_FLOAT ? 0 : UNITS_PER_FPREG)
|
||
|
|
+ (TARGET_SOFT_FLOAT ? 0 : UNITS_PER_FP_REG)
|
||
|
|
|
||
|
|
/* The largest size of value that can be held in floating-point
|
||
|
|
registers. */
|
||
|
|
#define UNITS_PER_FPVALUE \
|
||
|
|
(TARGET_SOFT_FLOAT ? 0 \
|
||
|
|
- : TARGET_SINGLE_FLOAT ? UNITS_PER_FPREG \
|
||
|
|
+ : TARGET_SINGLE_FLOAT ? UNITS_PER_FP_REG \
|
||
|
|
: LONG_DOUBLE_TYPE_SIZE / BITS_PER_UNIT)
|
||
|
|
|
||
|
|
/* The number of bytes in a double. */
|
||
|
|
--
|
||
|
|
2.43.0
|
||
|
|
|