From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 027843858C36; Thu, 26 Oct 2023 20:07:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 027843858C36 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1698350837; bh=MNgvgH82xfmVfKHAT3nCIbIwvVsyGuYSth1IEHG9+8Q=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Ox/N784lILRaNFaFnrQyIb6CNyvuQmaZyrUaIC+zNvOMh0LPHfRfZp6t0nnhiwIg5 87/L96x74AWDc0KK+Di/tMWbK+DC9dVqokhrse2nwgNfA/bpZaNZ6D6XMTm4gLZCpm DlmT3XlZ1i2x0pH6iZ4jk5U22n6omQyoYIbTUr/Q= From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/112098] suboptimal optimization of inverted bit extraction Date: Thu, 26 Oct 2023 20:07:16 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 13.2.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: pinskia at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- 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=3D112098 --- Comment #3 from Andrew Pinski --- Trying 6, 7, 8 -> 9: 6: {r105:SI=3Dr108:SI 0>>0x9;clobber flags:CC;} REG_DEAD r108:SI REG_UNUSED flags:CC 7: {r106:SI=3Dr105:SI&0x1;clobber flags:CC;} REG_DEAD r105:SI REG_UNUSED flags:CC 8: {r107:SI=3Dr106:SI^0x1;clobber flags:CC;} REG_DEAD r106:SI REG_UNUSED flags:CC 9: {r103:SI=3Dr107:SI<<0x4;clobber flags:CC;} REG_DEAD r107:SI REG_UNUSED flags:CC Failed to match this instruction: (parallel [ (set (reg:SI 103) (and:SI (lshiftrt:SI (xor:SI (reg:SI 108) (const_int 512 [0x200])) (const_int 5 [0x5])) (const_int 16 [0x10]))) (clobber (reg:CC 17 flags)) ]) The xor here maybe should have been not. But I can't remember if we allow 4= ->3 combining or just 4->2.=