]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
LoongArch: Fix invalid subregs in xorsign [PR118501]
authorXi Ruoyao <xry111@xry111.site>
Wed, 16 Apr 2025 12:20:28 +0000 (13:20 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 16 Apr 2025 12:20:28 +0000 (13:20 +0100)
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.

(cherry picked from commit 9ddf4a6cc650360e620c8fd97f550bf833cc177a)

gcc/config/loongarch/loongarch.md

index 5c80c169cbf12306e9e5d7b51f9c04b73cb906b1..f467e310696eade4ece8b6f5e69ef3e7fca3b2fd 100644 (file)
   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));