From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 634493858D1E; Fri, 4 Mar 2022 22:05:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 634493858D1E From: "willschm at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/100693] PPC: missing 64-bit addg6s Date: Fri, 04 Mar 2022 22:05:40 +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: 8.3.1 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: willschm at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc 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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Mar 2022 22:05:40 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100693 Will Schmidt changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |willschm at gcc dot gnu.org --- Comment #2 from Will Schmidt --- (In reply to Segher Boessenkool from comment #1) > Confirmed. The define_insn for it is for SImode only as well. I see the SImode for the define as mentioned (define_insn "addg6s" [(set (match_operand:SI 0 "register_operand" "=3Dr") (unspec:SI [(match_operand:SI 1 "register_operand" "r") (match_operand:SI 2 "register_operand" "r")] UNSPEC_ADDG6S))] "TARGET_POPCNTD" "addg6s %0,%1,%2" [(set_attr "type" "integer")]) But.. a simple testcase with unsigned long long parms builds ok. (both gc= c 11 and older gcc 9).=20=20 unsigned long long bcd_arith_longlong (unsigned long long a, unsigned long = long b) { return __builtin_addg6s (a, b);=20 } Expand shows.. this instruction is using a subset, erm, subreg of the input= s.=20 Is this expected behavior? (insn 11 10 12 2 (set (reg:SI 128) (unspec:SI [ (subreg/s/v:SI (reg:DI 121 [ _1 ]) 0) (subreg/s/v:SI (reg:DI 122 [ _2 ]) 0) ] UNSPEC_ADDG6S)) "./addg6s.c":11:16 -1 (nil))=