aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2025-01-22 17:16:29 +0800
committerXi Ruoyao <xry111@xry111.site>2025-01-23 11:38:17 +0800
commit9ddf4a6cc650360e620c8fd97f550bf833cc177a (patch)
tree2e195a462b3606b4b398c528e662ee358036e519 /gcc/config
parent06b78732f7ce424ab7d8c619f1ea90936fedff51 (diff)
downloadgcc-9ddf4a6cc650360e620c8fd97f550bf833cc177a.zip
gcc-9ddf4a6cc650360e620c8fd97f550bf833cc177a.tar.gz
gcc-9ddf4a6cc650360e620c8fd97f550bf833cc177a.tar.bz2
LoongArch: Fix invalid subregs in xorsign [PR118501]
The test case added in r15-7073 now triggers an ICE, indicating we need the same fix as AArch64. gcc/ChangeLog: PR target/118501 * config/loongarch/loongarch.md (@xorsign<mode>3): Use force_lowpart_subreg.
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/loongarch/loongarch.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md
index 1392325..701f31f 100644
--- a/gcc/config/loongarch/loongarch.md
+++ b/gcc/config/loongarch/loongarch.md
@@ -1347,8 +1347,8 @@
machine_mode lsx_mode
= <MODE>mode == SFmode ? V4SFmode : V2DFmode;
rtx tmp = gen_reg_rtx (lsx_mode);
- rtx op1 = lowpart_subreg (lsx_mode, operands[1], <MODE>mode);
- rtx op2 = lowpart_subreg (lsx_mode, operands[2], <MODE>mode);
+ rtx op1 = force_lowpart_subreg (lsx_mode, operands[1], <MODE>mode);
+ rtx op2 = force_lowpart_subreg (lsx_mode, operands[2], <MODE>mode);
emit_insn (gen_xorsign3 (lsx_mode, tmp, op1, op2));
emit_move_insn (operands[0],
lowpart_subreg (<MODE>mode, tmp, lsx_mode));