From: Xi Ruoyao Date: Wed, 22 Jan 2025 09:16:29 +0000 (+0800) Subject: LoongArch: Fix invalid subregs in xorsign [PR118501] X-Git-Tag: basepoints/gcc-16~2408 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ddf4a6cc650360e620c8fd97f550bf833cc177a;p=thirdparty%2Fgcc.git 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 (@xorsign3): Use force_lowpart_subreg. --- diff --git a/gcc/config/loongarch/loongarch.md b/gcc/config/loongarch/loongarch.md index 1392325038c..701f31fbb17 100644 --- a/gcc/config/loongarch/loongarch.md +++ b/gcc/config/loongarch/loongarch.md @@ -1347,8 +1347,8 @@ machine_mode lsx_mode = mode == SFmode ? V4SFmode : V2DFmode; rtx tmp = gen_reg_rtx (lsx_mode); - rtx op1 = lowpart_subreg (lsx_mode, operands[1], mode); - rtx op2 = lowpart_subreg (lsx_mode, operands[2], mode); + rtx op1 = force_lowpart_subreg (lsx_mode, operands[1], mode); + rtx op2 = force_lowpart_subreg (lsx_mode, operands[2], mode); emit_insn (gen_xorsign3 (lsx_mode, tmp, op1, op2)); emit_move_insn (operands[0], lowpart_subreg (mode, tmp, lsx_mode));