From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 487A33858D1E; Tue, 21 May 2024 02:02:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 487A33858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1716256970; bh=F1lK/KSMuvLlZenbCMjZFa/IlfMiIbvuQOQn39cXTDs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=bxr/cOvAGm8XX5IJ81HzrNOv2S2aaL2FlKbriYi9K3EXqYysHVJHMxMj3GjyFk/ZI s/mphG8qJLWumftO1lYEWtAQdfVDxAAlWITiHg6PdXd7TTc/0/Wcm0SEVHob7ureVN Az2srmMnuOhD96bexzC4dRzusYyjH4RRXEa99MNk= From: "cvs-commit at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/114402] rs6000: ICE when long double is ieee128 format by default but without vsx Date: Tue, 21 May 2024 02:02:48 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: cvs-commit at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: linkw at gcc dot gnu.org X-Bugzilla-Target-Milestone: 15.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114402 --- Comment #2 from GCC Commits --- The master branch has been updated by Kewen Lin : https://gcc.gnu.org/g:c547e353597ac4e0af09c2faca8c5a16744dcea4 commit r15-702-gc547e353597ac4e0af09c2faca8c5a16744dcea4 Author: Kewen Lin Date: Mon May 20 21:01:06 2024 -0500 rs6000: Fix ICE on IEEE128 long double without vsx [PR114402] As PR114402 shows, we supports IEEE128 format long double even if there is no vsx support, but there is an ICE about cbranch as the test case shows. For now, we only supports compare:CCFP pattern for IEEE128 fp if TARGET_FLOAT128_HW, so in function rs6000_generate_compare we have a check with !TARGET_FLOAT128_HW && FLOAT128_VECTOR_P (mode) to make !TARGET_FLOAT128_HW IEEE128 fp handling go with libcall. But unfortunately the IEEE128 without vsx support doesn't meet FLOAT128_VECTOR_P (mode) so it goes further with an unmatched compare:CCFP pattern which triggers ICE. So this patch is to make rs6000_generate_compare consider IEEE128 without vsx as well then it can end up with libcall. PR target/114402 gcc/ChangeLog: * config/rs6000/rs6000.cc (rs6000_generate_compare): Make IEEE1= 28 handling without vsx go with libcall. gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr114402.c: New test.=