From patchwork Wed Jun 16 18:51:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aaron Sawdey X-Patchwork-Id: 1493030 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=u3wCaW5/; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4G4vSz4V8Qz9sWM for ; Thu, 17 Jun 2021 04:52:51 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4FE40397F43A for ; Wed, 16 Jun 2021 18:52:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4FE40397F43A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1623869568; bh=gsVLxJfFUFaEEuoV9VUrHt63deG3tD81jSRderz4r1Y=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=u3wCaW5/8JaK7+N9DCPGnxZPFZNhH6FRr/ykHVNzD/RlBGYNjyYxyMxywTAxiwMLV WNgBumVAOQLfZ9DzJ1rb9d42hAZyIl6DDnBVgQHxaJPMo8vJMU9S+Sz1ZWSF9sU09Q zOXZMBNnW1id9uo7B6kEcNljrD6sArUSz0Vb7clY= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from ragesh4.localdomain (24-220-95-200-dynamic.midco.net [24.220.95.200]) by sourceware.org (Postfix) with ESMTP id F2052398B164 for ; Wed, 16 Jun 2021 18:51:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F2052398B164 Received: by ragesh4.localdomain (Postfix, from userid 501) id 7E6F37CCF02B; Wed, 16 Jun 2021 13:51:19 -0500 (CDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH] Add needed earlyclobber to fusion patterns Date: Wed, 16 Jun 2021 13:51:16 -0500 Message-Id: <20210616185116.91229-1-acsawdey@linux.ibm.com> X-Mailer: git-send-email 2.30.1 (Apple Git-130) MIME-Version: 1.0 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KHOP_HELO_FCRDNS, RCVD_IN_PBL, RCVD_IN_SORBS_DUL, RDNS_DYNAMIC, SPF_HELO_NONE, SPF_SOFTFAIL, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Aaron Sawdey via Gcc-patches From: Aaron Sawdey Reply-To: Aaron Sawdey Cc: wschmidt@linux.ibm.com, segher@kernel.crashing.org Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" The add-logical and add-add fusion patterns all have constraint alternatives "=0,1,&r,r" for the output (3). The inputs 0 and 1 are used in the first fusion instruction and then either may be reused as a temp for the output of the first insn which is input to the second. However, if input 2 is the same as 0 or 1, it gets clobbered unexpectedly. So the first 2 alts need to be "=&0,&1,&r,r" instead to indicate that in alts 0 and 1, the register used for 3 is earlyclobber, hence can't be the same as input 2. This was actually encountered in the backport of the add-logical fusion patch to gcc-11. Some code in go hit this case: : andc r30,r30,r9 r30 now (~(x|((x&c)+c)))&(~c) --> this is new x : b : addi r31,r31,-1 r31 now m-1 : srd r31,r30,r31 r31 now x>>(m-1) : subf r30,r31,r30 r30 now x-(x>>(m-1)) : or r30,r30,r30 # mdoom nop : not r3,r30 r3 now ~(x-(x>>(m-1))) -- WHOOPS The or r30,r30,r30 was meant to be or-ing in the earlier value of r30 which was overwritten by the output of the subf. OK for trunk and backport to 11 if bootstrap and regtest pass? Separately I will be updating the fusion regtests because this change has again shifted which pattern alternatives get used and how many times. Thanks! Aaron gcc/ChangeLog * config/rs6000/genfusion.pl (gen_logical_addsubf): Add earlyclobber to alts 0/1. (gen_addadd): Add earlyclobber to alts 0/1. * config/rs6000/fusion.md: Regenerate file. --- gcc/config/rs6000/fusion.md | 300 ++++++++++++++++----------------- gcc/config/rs6000/genfusion.pl | 4 +- 2 files changed, 152 insertions(+), 152 deletions(-) diff --git a/gcc/config/rs6000/fusion.md b/gcc/config/rs6000/fusion.md index e642ff5f95f..516baa0bb0b 100644 --- a/gcc/config/rs6000/fusion.md +++ b/gcc/config/rs6000/fusion.md @@ -358,7 +358,7 @@ (define_insn_and_split "*lbz_cmpldi_cr0_QI_GPR_CCUNS_zero" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> and (define_insn "*fuse_and_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "%r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -376,7 +376,7 @@ (define_insn "*fuse_and_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> and (define_insn "*fuse_andc_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -394,7 +394,7 @@ (define_insn "*fuse_andc_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> and (define_insn "*fuse_eqv_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -412,7 +412,7 @@ (define_insn "*fuse_eqv_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> and (define_insn "*fuse_nand_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -430,7 +430,7 @@ (define_insn "*fuse_nand_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> and (define_insn "*fuse_nor_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -448,7 +448,7 @@ (define_insn "*fuse_nor_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> and (define_insn "*fuse_or_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -466,7 +466,7 @@ (define_insn "*fuse_or_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> and (define_insn "*fuse_orc_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -484,7 +484,7 @@ (define_insn "*fuse_orc_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> and (define_insn "*fuse_xor_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -502,7 +502,7 @@ (define_insn "*fuse_xor_and" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar add -> and (define_insn "*fuse_add_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (plus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -520,7 +520,7 @@ (define_insn "*fuse_add_and" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar subf -> and (define_insn "*fuse_subf_and" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (minus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -538,7 +538,7 @@ (define_insn "*fuse_subf_and" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> andc (define_insn "*fuse_and_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -556,7 +556,7 @@ (define_insn "*fuse_and_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> andc (define_insn "*fuse_andc_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -574,7 +574,7 @@ (define_insn "*fuse_andc_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> andc (define_insn "*fuse_eqv_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -592,7 +592,7 @@ (define_insn "*fuse_eqv_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> andc (define_insn "*fuse_nand_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -610,7 +610,7 @@ (define_insn "*fuse_nand_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> andc (define_insn "*fuse_nor_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -628,7 +628,7 @@ (define_insn "*fuse_nor_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> andc (define_insn "*fuse_or_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -646,7 +646,7 @@ (define_insn "*fuse_or_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> andc (define_insn "*fuse_orc_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -664,7 +664,7 @@ (define_insn "*fuse_orc_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> andc (define_insn "*fuse_xor_andc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -682,7 +682,7 @@ (define_insn "*fuse_xor_andc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> eqv (define_insn "*fuse_and_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -700,7 +700,7 @@ (define_insn "*fuse_and_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> eqv (define_insn "*fuse_andc_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -718,7 +718,7 @@ (define_insn "*fuse_andc_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> eqv (define_insn "*fuse_eqv_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "%r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -736,7 +736,7 @@ (define_insn "*fuse_eqv_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> eqv (define_insn "*fuse_nand_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -754,7 +754,7 @@ (define_insn "*fuse_nand_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> eqv (define_insn "*fuse_nor_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -772,7 +772,7 @@ (define_insn "*fuse_nor_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> eqv (define_insn "*fuse_or_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -790,7 +790,7 @@ (define_insn "*fuse_or_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> eqv (define_insn "*fuse_orc_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -808,7 +808,7 @@ (define_insn "*fuse_orc_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> eqv (define_insn "*fuse_xor_eqv" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (not:GPR (xor:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -826,7 +826,7 @@ (define_insn "*fuse_xor_eqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> nand (define_insn "*fuse_and_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -844,7 +844,7 @@ (define_insn "*fuse_and_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> nand (define_insn "*fuse_andc_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -862,7 +862,7 @@ (define_insn "*fuse_andc_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> nand (define_insn "*fuse_eqv_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -880,7 +880,7 @@ (define_insn "*fuse_eqv_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> nand (define_insn "*fuse_nand_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -898,7 +898,7 @@ (define_insn "*fuse_nand_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> nand (define_insn "*fuse_nor_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -916,7 +916,7 @@ (define_insn "*fuse_nor_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> nand (define_insn "*fuse_or_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -934,7 +934,7 @@ (define_insn "*fuse_or_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> nand (define_insn "*fuse_orc_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -952,7 +952,7 @@ (define_insn "*fuse_orc_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> nand (define_insn "*fuse_xor_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -970,7 +970,7 @@ (define_insn "*fuse_xor_nand" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar add -> nand (define_insn "*fuse_add_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (plus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -988,7 +988,7 @@ (define_insn "*fuse_add_nand" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar subf -> nand (define_insn "*fuse_subf_nand" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (minus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1006,7 +1006,7 @@ (define_insn "*fuse_subf_nand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> nor (define_insn "*fuse_and_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1024,7 +1024,7 @@ (define_insn "*fuse_and_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> nor (define_insn "*fuse_andc_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1042,7 +1042,7 @@ (define_insn "*fuse_andc_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> nor (define_insn "*fuse_eqv_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1060,7 +1060,7 @@ (define_insn "*fuse_eqv_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> nor (define_insn "*fuse_nand_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1078,7 +1078,7 @@ (define_insn "*fuse_nand_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> nor (define_insn "*fuse_nor_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1096,7 +1096,7 @@ (define_insn "*fuse_nor_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> nor (define_insn "*fuse_or_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1114,7 +1114,7 @@ (define_insn "*fuse_or_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> nor (define_insn "*fuse_orc_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1132,7 +1132,7 @@ (define_insn "*fuse_orc_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> nor (define_insn "*fuse_xor_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1150,7 +1150,7 @@ (define_insn "*fuse_xor_nor" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar add -> nor (define_insn "*fuse_add_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (plus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1168,7 +1168,7 @@ (define_insn "*fuse_add_nor" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar subf -> nor (define_insn "*fuse_subf_nor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (and:GPR (not:GPR (minus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1186,7 +1186,7 @@ (define_insn "*fuse_subf_nor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> or (define_insn "*fuse_and_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1204,7 +1204,7 @@ (define_insn "*fuse_and_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> or (define_insn "*fuse_andc_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1222,7 +1222,7 @@ (define_insn "*fuse_andc_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> or (define_insn "*fuse_eqv_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1240,7 +1240,7 @@ (define_insn "*fuse_eqv_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> or (define_insn "*fuse_nand_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1258,7 +1258,7 @@ (define_insn "*fuse_nand_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> or (define_insn "*fuse_nor_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1276,7 +1276,7 @@ (define_insn "*fuse_nor_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> or (define_insn "*fuse_or_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "%r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1294,7 +1294,7 @@ (define_insn "*fuse_or_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> or (define_insn "*fuse_orc_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1312,7 +1312,7 @@ (define_insn "*fuse_orc_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> or (define_insn "*fuse_xor_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1330,7 +1330,7 @@ (define_insn "*fuse_xor_or" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar add -> or (define_insn "*fuse_add_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (plus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1348,7 +1348,7 @@ (define_insn "*fuse_add_or" ;; add-logical fusion pattern generated by gen_logical_addsubf ;; scalar subf -> or (define_insn "*fuse_subf_or" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (minus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1366,7 +1366,7 @@ (define_insn "*fuse_subf_or" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> orc (define_insn "*fuse_and_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1384,7 +1384,7 @@ (define_insn "*fuse_and_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> orc (define_insn "*fuse_andc_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1402,7 +1402,7 @@ (define_insn "*fuse_andc_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> orc (define_insn "*fuse_eqv_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1420,7 +1420,7 @@ (define_insn "*fuse_eqv_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> orc (define_insn "*fuse_nand_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1438,7 +1438,7 @@ (define_insn "*fuse_nand_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> orc (define_insn "*fuse_nor_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1456,7 +1456,7 @@ (define_insn "*fuse_nor_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> orc (define_insn "*fuse_or_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1474,7 +1474,7 @@ (define_insn "*fuse_or_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> orc (define_insn "*fuse_orc_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1492,7 +1492,7 @@ (define_insn "*fuse_orc_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> orc (define_insn "*fuse_xor_orc" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (ior:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r")))) @@ -1510,7 +1510,7 @@ (define_insn "*fuse_xor_orc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar and -> xor (define_insn "*fuse_and_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1528,7 +1528,7 @@ (define_insn "*fuse_and_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar andc -> xor (define_insn "*fuse_andc_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1546,7 +1546,7 @@ (define_insn "*fuse_andc_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar eqv -> xor (define_insn "*fuse_eqv_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (not:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1564,7 +1564,7 @@ (define_insn "*fuse_eqv_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nand -> xor (define_insn "*fuse_nand_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1582,7 +1582,7 @@ (define_insn "*fuse_nand_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar nor -> xor (define_insn "*fuse_nor_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1600,7 +1600,7 @@ (define_insn "*fuse_nor_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar or -> xor (define_insn "*fuse_or_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1618,7 +1618,7 @@ (define_insn "*fuse_or_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar orc -> xor (define_insn "*fuse_orc_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1636,7 +1636,7 @@ (define_insn "*fuse_orc_xor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; scalar xor -> xor (define_insn "*fuse_xor_xor" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (xor:GPR (xor:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "%r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1654,7 +1654,7 @@ (define_insn "*fuse_xor_xor" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar and -> add (define_insn "*fuse_and_add" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (plus:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1672,7 +1672,7 @@ (define_insn "*fuse_and_add" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nand -> add (define_insn "*fuse_nand_add" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (plus:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1690,7 +1690,7 @@ (define_insn "*fuse_nand_add" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nor -> add (define_insn "*fuse_nor_add" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (plus:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1708,7 +1708,7 @@ (define_insn "*fuse_nor_add" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar or -> add (define_insn "*fuse_or_add" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (plus:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1726,7 +1726,7 @@ (define_insn "*fuse_or_add" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar and -> subf (define_insn "*fuse_and_subf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1744,7 +1744,7 @@ (define_insn "*fuse_and_subf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nand -> subf (define_insn "*fuse_nand_subf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1762,7 +1762,7 @@ (define_insn "*fuse_nand_subf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nor -> subf (define_insn "*fuse_nor_subf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1780,7 +1780,7 @@ (define_insn "*fuse_nor_subf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar or -> subf (define_insn "*fuse_or_subf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")) (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r"))) @@ -1798,7 +1798,7 @@ (define_insn "*fuse_or_subf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar and -> rsubf (define_insn "*fuse_and_rsubf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r") (and:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) @@ -1816,7 +1816,7 @@ (define_insn "*fuse_and_rsubf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nand -> rsubf (define_insn "*fuse_nand_rsubf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r") (ior:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))))) @@ -1834,7 +1834,7 @@ (define_insn "*fuse_nand_rsubf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar nor -> rsubf (define_insn "*fuse_nor_rsubf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r") (and:GPR (not:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r")) (not:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r"))))) @@ -1852,7 +1852,7 @@ (define_insn "*fuse_nor_rsubf" ;; logical-add fusion pattern generated by gen_logical_addsubf ;; scalar or -> rsubf (define_insn "*fuse_or_rsubf" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (minus:GPR (match_operand:GPR 2 "gpc_reg_operand" "r,r,r,r") (ior:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "r,r,r,r")))) @@ -1870,7 +1870,7 @@ (define_insn "*fuse_or_rsubf" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vand (define_insn "*fuse_vand_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "%v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1888,7 +1888,7 @@ (define_insn "*fuse_vand_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vand (define_insn "*fuse_vandc_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1906,7 +1906,7 @@ (define_insn "*fuse_vandc_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vand (define_insn "*fuse_veqv_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1924,7 +1924,7 @@ (define_insn "*fuse_veqv_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vand (define_insn "*fuse_vnand_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1942,7 +1942,7 @@ (define_insn "*fuse_vnand_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vand (define_insn "*fuse_vnor_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1960,7 +1960,7 @@ (define_insn "*fuse_vnor_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vand (define_insn "*fuse_vor_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1978,7 +1978,7 @@ (define_insn "*fuse_vor_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vand (define_insn "*fuse_vorc_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -1996,7 +1996,7 @@ (define_insn "*fuse_vorc_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vand (define_insn "*fuse_vxor_vand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2014,7 +2014,7 @@ (define_insn "*fuse_vxor_vand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vandc (define_insn "*fuse_vand_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2032,7 +2032,7 @@ (define_insn "*fuse_vand_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vandc (define_insn "*fuse_vandc_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2050,7 +2050,7 @@ (define_insn "*fuse_vandc_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vandc (define_insn "*fuse_veqv_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2068,7 +2068,7 @@ (define_insn "*fuse_veqv_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vandc (define_insn "*fuse_vnand_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2086,7 +2086,7 @@ (define_insn "*fuse_vnand_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vandc (define_insn "*fuse_vnor_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2104,7 +2104,7 @@ (define_insn "*fuse_vnor_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vandc (define_insn "*fuse_vor_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2122,7 +2122,7 @@ (define_insn "*fuse_vor_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vandc (define_insn "*fuse_vorc_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2140,7 +2140,7 @@ (define_insn "*fuse_vorc_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vandc (define_insn "*fuse_vxor_vandc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2158,7 +2158,7 @@ (define_insn "*fuse_vxor_vandc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> veqv (define_insn "*fuse_vand_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2176,7 +2176,7 @@ (define_insn "*fuse_vand_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> veqv (define_insn "*fuse_vandc_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2194,7 +2194,7 @@ (define_insn "*fuse_vandc_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> veqv (define_insn "*fuse_veqv_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "%v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2212,7 +2212,7 @@ (define_insn "*fuse_veqv_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> veqv (define_insn "*fuse_vnand_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2230,7 +2230,7 @@ (define_insn "*fuse_vnand_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> veqv (define_insn "*fuse_vnor_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2248,7 +2248,7 @@ (define_insn "*fuse_vnor_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> veqv (define_insn "*fuse_vor_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2266,7 +2266,7 @@ (define_insn "*fuse_vor_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> veqv (define_insn "*fuse_vorc_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2284,7 +2284,7 @@ (define_insn "*fuse_vorc_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> veqv (define_insn "*fuse_vxor_veqv" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (not:VM (xor:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2302,7 +2302,7 @@ (define_insn "*fuse_vxor_veqv" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vnand (define_insn "*fuse_vand_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2320,7 +2320,7 @@ (define_insn "*fuse_vand_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vnand (define_insn "*fuse_vandc_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2338,7 +2338,7 @@ (define_insn "*fuse_vandc_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vnand (define_insn "*fuse_veqv_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2356,7 +2356,7 @@ (define_insn "*fuse_veqv_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vnand (define_insn "*fuse_vnand_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2374,7 +2374,7 @@ (define_insn "*fuse_vnand_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vnand (define_insn "*fuse_vnor_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2392,7 +2392,7 @@ (define_insn "*fuse_vnor_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vnand (define_insn "*fuse_vor_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2410,7 +2410,7 @@ (define_insn "*fuse_vor_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vnand (define_insn "*fuse_vorc_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2428,7 +2428,7 @@ (define_insn "*fuse_vorc_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vnand (define_insn "*fuse_vxor_vnand" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2446,7 +2446,7 @@ (define_insn "*fuse_vxor_vnand" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vnor (define_insn "*fuse_vand_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2464,7 +2464,7 @@ (define_insn "*fuse_vand_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vnor (define_insn "*fuse_vandc_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2482,7 +2482,7 @@ (define_insn "*fuse_vandc_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vnor (define_insn "*fuse_veqv_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2500,7 +2500,7 @@ (define_insn "*fuse_veqv_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vnor (define_insn "*fuse_vnand_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2518,7 +2518,7 @@ (define_insn "*fuse_vnand_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vnor (define_insn "*fuse_vnor_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2536,7 +2536,7 @@ (define_insn "*fuse_vnor_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vnor (define_insn "*fuse_vor_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2554,7 +2554,7 @@ (define_insn "*fuse_vor_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vnor (define_insn "*fuse_vorc_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2572,7 +2572,7 @@ (define_insn "*fuse_vorc_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vnor (define_insn "*fuse_vxor_vnor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (and:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2590,7 +2590,7 @@ (define_insn "*fuse_vxor_vnor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vor (define_insn "*fuse_vand_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2608,7 +2608,7 @@ (define_insn "*fuse_vand_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vor (define_insn "*fuse_vandc_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2626,7 +2626,7 @@ (define_insn "*fuse_vandc_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vor (define_insn "*fuse_veqv_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2644,7 +2644,7 @@ (define_insn "*fuse_veqv_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vor (define_insn "*fuse_vnand_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2662,7 +2662,7 @@ (define_insn "*fuse_vnand_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vor (define_insn "*fuse_vnor_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2680,7 +2680,7 @@ (define_insn "*fuse_vnor_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vor (define_insn "*fuse_vor_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "%v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2698,7 +2698,7 @@ (define_insn "*fuse_vor_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vor (define_insn "*fuse_vorc_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2716,7 +2716,7 @@ (define_insn "*fuse_vorc_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vor (define_insn "*fuse_vxor_vor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2734,7 +2734,7 @@ (define_insn "*fuse_vxor_vor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vorc (define_insn "*fuse_vand_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2752,7 +2752,7 @@ (define_insn "*fuse_vand_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vorc (define_insn "*fuse_vandc_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2770,7 +2770,7 @@ (define_insn "*fuse_vandc_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vorc (define_insn "*fuse_veqv_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2788,7 +2788,7 @@ (define_insn "*fuse_veqv_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vorc (define_insn "*fuse_vnand_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2806,7 +2806,7 @@ (define_insn "*fuse_vnand_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vorc (define_insn "*fuse_vnor_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2824,7 +2824,7 @@ (define_insn "*fuse_vnor_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vorc (define_insn "*fuse_vor_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2842,7 +2842,7 @@ (define_insn "*fuse_vor_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vorc (define_insn "*fuse_vorc_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2860,7 +2860,7 @@ (define_insn "*fuse_vorc_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vorc (define_insn "*fuse_vxor_vorc" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (ior:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 2 "altivec_register_operand" "v,v,v,v")))) @@ -2878,7 +2878,7 @@ (define_insn "*fuse_vxor_vorc" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vand -> vxor (define_insn "*fuse_vand_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (and:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2896,7 +2896,7 @@ (define_insn "*fuse_vand_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vxor (define_insn "*fuse_vandc_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2914,7 +2914,7 @@ (define_insn "*fuse_vandc_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vxor (define_insn "*fuse_veqv_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (not:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2932,7 +2932,7 @@ (define_insn "*fuse_veqv_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnand -> vxor (define_insn "*fuse_vnand_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2950,7 +2950,7 @@ (define_insn "*fuse_vnand_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vnor -> vxor (define_insn "*fuse_vnor_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (not:VM (match_operand:VM 1 "altivec_register_operand" "v,v,v,v"))) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2968,7 +2968,7 @@ (define_insn "*fuse_vnor_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vor -> vxor (define_insn "*fuse_vor_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (ior:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -2986,7 +2986,7 @@ (define_insn "*fuse_vor_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vorc -> vxor (define_insn "*fuse_vorc_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (ior:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -3004,7 +3004,7 @@ (define_insn "*fuse_vorc_vxor" ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vxor (define_insn "*fuse_vxor_vxor" - [(set (match_operand:VM 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "%v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) @@ -3021,7 +3021,7 @@ (define_insn "*fuse_vxor_vxor" ;; add-add fusion pattern generated by gen_addadd (define_insn "*fuse_add_add" - [(set (match_operand:GPR 3 "gpc_reg_operand" "=0,1,&r,r") + [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") (plus:GPR (plus:GPR (match_operand:GPR 0 "gpc_reg_operand" "r,r,r,r") (match_operand:GPR 1 "gpc_reg_operand" "%r,r,r,r")) @@ -3039,7 +3039,7 @@ (define_insn "*fuse_add_add" ;; vaddudm-vaddudm fusion pattern generated by gen_addadd (define_insn "*fuse_vaddudm_vaddudm" - [(set (match_operand:V2DI 3 "altivec_register_operand" "=0,1,&v,v") + [(set (match_operand:V2DI 3 "altivec_register_operand" "=&0,&1,&v,v") (plus:V2DI (plus:V2DI (match_operand:V2DI 0 "altivec_register_operand" "v,v,v,v") (match_operand:V2DI 1 "altivec_register_operand" "%v,v,v,v")) diff --git a/gcc/config/rs6000/genfusion.pl b/gcc/config/rs6000/genfusion.pl index 577b9553deb..ac22852220e 100755 --- a/gcc/config/rs6000/genfusion.pl +++ b/gcc/config/rs6000/genfusion.pl @@ -263,7 +263,7 @@ sub gen_logical_addsubf ;; $ftype fusion pattern generated by gen_logical_addsubf ;; $kind $inner_op -> $outer_name (define_insn "*fuse_${inner_op}_${outer_name}" - [(set (match_operand:${mode} 3 "${pred}" "=0,1,&${constraint},${constraint}") + [(set (match_operand:${mode} 3 "${pred}" "=&0,&1,&${constraint},${constraint}") ${outer_exp}) (clobber (match_scratch:${mode} 4 "=X,X,X,&r"))] "(TARGET_P10_FUSION && $target_flag)" @@ -307,7 +307,7 @@ sub gen_addadd ;; ${op}-${op} fusion pattern generated by gen_addadd (define_insn "*fuse_${op}_${op}" - [(set (match_operand:${mode} 3 "${pred}" "=0,1,&${constraint},${constraint}") + [(set (match_operand:${mode} 3 "${pred}" "=&0,&1,&${constraint},${constraint}") (plus:${mode} (plus:${mode} (match_operand:${mode} 0 "${pred}" "${c4}") (match_operand:${mode} 1 "${pred}" "%${c4}"))