From patchwork Sun Oct 8 22:29:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Segher Boessenkool X-Patchwork-Id: 823043 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-463727-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.b="qotsAVdz"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3y9J2h6FW8z9t3Z for ; Mon, 9 Oct 2017 09:29:31 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; q=dns; s=default; b=Ln+K/QRxZFdi lc2Gm0DBPYl14wFwQ+7n6nxGKacWLLtAQMswcAq+rMQZNTy/WFLot1LAN2hyo8Nr 2WXO8Ufj06TJmp9kViBpJAsaHMEydxZPvHiDJ6J2eSz576MBGNcctJiLyqvLFR5V Pq2BibLk6h4yrKqQ1Ge+4gNSNNDdJwk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; s=default; bh=Kx9iU+GMIEw+buWanV 0Q/jTM4DI=; b=qotsAVdzX32nT3WE7dY05ZAGbgDfu9v9jcDFZ096YH6JRrzI0x j/+Im5d1N45oWwrqxPdl9tBYU1UEo4Snqe5/UIyJa8kyUdLmzzkGsl4m7+QjLtf8 emDXxjTmt7eHWlrZBuRgrVSKCLy0fGR37G5xwJRkIy9c8P+G7aeqRss8Q= Received: (qmail 126240 invoked by alias); 8 Oct 2017 22:29:22 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 126230 invoked by uid 89); 8 Oct 2017 22:29:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=our X-HELO: gcc1-power7.osuosl.org Received: from gcc1-power7.osuosl.org (HELO gcc1-power7.osuosl.org) (140.211.15.137) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 08 Oct 2017 22:29:20 +0000 Received: by gcc1-power7.osuosl.org (Postfix, from userid 10019) id 18FC8124028A; Sun, 8 Oct 2017 22:29:17 +0000 (UTC) From: Segher Boessenkool To: gcc-patches@gcc.gnu.org Cc: dje.gcc@gmail.com, Segher Boessenkool Subject: [PATCH 1/2] rs6000: Update conditional jump patterns, no more (pc) (label_ref) Date: Sun, 8 Oct 2017 22:29:15 +0000 Message-Id: <3fa5f0578433a3995264bcf466c8b92ea4769070.1507497573.git.segher@kernel.crashing.org> X-IsSubscribed: yes Currently we have two patterns for every conditional jump: one jumping if some condition is met, and the other jumping if it is not met. We don't need that second form because all our conditions have an opposite already, and the generic code can deal with that just fine. This patch deletes that second form. We generated it directly in one case; adjusted here. Bootstrapped and regression checked on powerpc64-linux {-m32,-m64}; also compared the generated binaries for cc1 and vmlinux, no changes (other than the obvious ones for cc1). Committing to trunk. Segher 2017-10-08 Segher Boessenkool * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert a conditional jump (and the compare for it) so that pc_rtx is the last operand. * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust for the deleted and renamed ctr_internal[234] patterns. * config/rs6000/rs6000.md: Delete second conditional branch pattern. Delete second conditional return pattern. (ctr_internal2): Delete this second bdnz pattern. (ctr_internal3): Rename to ctr_internal2. (ctr_internal4): Delete this second bdz pattern. --- gcc/config/rs6000/rs6000-string.c | 4 +- gcc/config/rs6000/rs6000.c | 6 +-- gcc/config/rs6000/rs6000.md | 81 +-------------------------------------- 3 files changed, 4 insertions(+), 87 deletions(-) diff --git a/gcc/config/rs6000/rs6000-string.c b/gcc/config/rs6000/rs6000-string.c index 19463c9..8c2a93e 100644 --- a/gcc/config/rs6000/rs6000-string.c +++ b/gcc/config/rs6000/rs6000-string.c @@ -674,10 +674,10 @@ expand_strncmp_align_check (rtx strncmp_label, rtx src, HOST_WIDE_INT bytes) emit_move_insn (cond, gen_rtx_COMPARE (CCmode, src_check, GEN_INT (4096 - bytes))); - rtx cmp_rtx = gen_rtx_LT (VOIDmode, cond, const0_rtx); + rtx cmp_rtx = gen_rtx_GE (VOIDmode, cond, const0_rtx); rtx ifelse = gen_rtx_IF_THEN_ELSE (VOIDmode, cmp_rtx, - pc_rtx, lab_ref); + lab_ref, pc_rtx); rtx j = emit_jump_insn (gen_rtx_SET (pc_rtx, ifelse)); JUMP_LABEL (j) = strncmp_label; LABEL_NUSES (strncmp_label) += 1; diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b903f47..104f2ed 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9051,11 +9051,7 @@ rs6000_legitimate_combined_insn (rtx_insn *insn) && (icode == CODE_FOR_ctrsi_internal1 || icode == CODE_FOR_ctrdi_internal1 || icode == CODE_FOR_ctrsi_internal2 - || icode == CODE_FOR_ctrdi_internal2 - || icode == CODE_FOR_ctrsi_internal3 - || icode == CODE_FOR_ctrdi_internal3 - || icode == CODE_FOR_ctrsi_internal4 - || icode == CODE_FOR_ctrdi_internal4)) + || icode == CODE_FOR_ctrdi_internal2)) return false; return true; diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index d8767de..e3132c2 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -12626,37 +12626,6 @@ (define_insn "" [(set_attr "type" "jmpreg") (set_attr "length" "4")]) -(define_insn "" - [(set (pc) - (if_then_else (match_operator 1 "branch_comparison_operator" - [(match_operand 2 - "cc_reg_operand" "y") - (const_int 0)]) - (pc) - (label_ref (match_operand 0 "" ""))))] - "" - "* -{ - return output_cbranch (operands[1], \"%l0\", 1, insn); -}" - [(set_attr "type" "branch")]) - -(define_insn "" - [(set (pc) - (if_then_else (match_operator 0 "branch_comparison_operator" - [(match_operand 1 - "cc_reg_operand" "y") - (const_int 0)]) - (pc) - (any_return)))] - "" - "* -{ - return output_cbranch (operands[0], NULL, 1, insn); -}" - [(set_attr "type" "jmpreg") - (set_attr "length" "4")]) - ;; Logic on condition register values. ; This pattern matches things like @@ -12933,33 +12902,9 @@ (define_insn "ctr_internal1" [(set_attr "type" "branch") (set_attr "length" "*,16,20,20")]) -(define_insn "ctr_internal2" - [(set (pc) - (if_then_else (ne (match_operand:P 1 "register_operand" "c,*b,*b,*b") - (const_int 1)) - (pc) - (label_ref (match_operand 0 "" "")))) - (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") - (plus:P (match_dup 1) - (const_int -1))) - (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:P 4 "=X,X,&r,r"))] - "" - "* -{ - if (which_alternative != 0) - return \"#\"; - else if (get_attr_length (insn) == 4) - return \"bdz %l0\"; - else - return \"bdnz $+8\;b %l0\"; -}" - [(set_attr "type" "branch") - (set_attr "length" "*,16,20,20")]) - ;; Similar but use EQ -(define_insn "ctr_internal3" +(define_insn "ctr_internal2" [(set (pc) (if_then_else (eq (match_operand:P 1 "register_operand" "c,*b,*b,*b") (const_int 1)) @@ -12983,30 +12928,6 @@ (define_insn "ctr_internal3" [(set_attr "type" "branch") (set_attr "length" "*,16,20,20")]) -(define_insn "ctr_internal4" - [(set (pc) - (if_then_else (eq (match_operand:P 1 "register_operand" "c,*b,*b,*b") - (const_int 1)) - (pc) - (label_ref (match_operand 0 "" "")))) - (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") - (plus:P (match_dup 1) - (const_int -1))) - (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:P 4 "=X,X,&r,r"))] - "" - "* -{ - if (which_alternative != 0) - return \"#\"; - else if (get_attr_length (insn) == 4) - return \"bdnz %l0\"; - else - return \"bdz $+8\;b %l0\"; -}" - [(set_attr "type" "branch") - (set_attr "length" "*,16,20,20")]) - ;; Now the splitters if we could not allocate the CTR register (define_split From patchwork Sun Oct 8 22:29:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Segher Boessenkool X-Patchwork-Id: 823044 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-463728-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.b="yRcX7/MD"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3y9J2y4yyzz9t3Z for ; Mon, 9 Oct 2017 09:29:46 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; q=dns; s=default; b=nVTxVsnM8XOSW7ImBUG VI7re8HZynFt1hEvXycjMmiBMHRiPrNpZR5h9FfeXIOaS7qED59gZFjYW0fNznb/ KNBQ9c87Wc6Fk9SXTHDXqUdqlTJgrZdp3Arr48lZIAGU28jtML4JrBsDgwl7Wk7a G/L15B1IruAuF7F854d8tnmM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; s=default; bh=BnFpCnoJUCltqSYJemCnbXyZ8 YQ=; b=yRcX7/MD/DmtNgC0Haob+oonYyxKxFHCMxQoJminXqRQ2WrKIgZCFZmyn TwDkqHCDVaV/OgyyS5g+EombwWrD547XBs2HZeX/5talRzgi78vqpl+J85r4tqGh DzrTb2HYeVcEIjvLGwzHkmDoCB94rb+sJ3tXeh+etXQeocLbQU= Received: (qmail 126585 invoked by alias); 8 Oct 2017 22:29:25 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 126503 invoked by uid 89); 8 Oct 2017 22:29:25 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy= X-HELO: gcc1-power7.osuosl.org Received: from gcc1-power7.osuosl.org (HELO gcc1-power7.osuosl.org) (140.211.15.137) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 08 Oct 2017 22:29:22 +0000 Received: by gcc1-power7.osuosl.org (Postfix, from userid 10019) id 8E18512402C4; Sun, 8 Oct 2017 22:29:21 +0000 (UTC) From: Segher Boessenkool To: gcc-patches@gcc.gnu.org Cc: dje.gcc@gmail.com, Segher Boessenkool Subject: [PATCH 2/2] rs6000: Cleanup of various jump patterns Date: Sun, 8 Oct 2017 22:29:16 +0000 Message-Id: <12c49923070ff49b5da4a338a4398a53cd4bffd1.1507497573.git.segher@kernel.crashing.org> In-Reply-To: <3fa5f0578433a3995264bcf466c8b92ea4769070.1507497573.git.segher@kernel.crashing.org> References: <3fa5f0578433a3995264bcf466c8b92ea4769070.1507497573.git.segher@kernel.crashing.org> In-Reply-To: <3fa5f0578433a3995264bcf466c8b92ea4769070.1507497573.git.segher@kernel.crashing.org> References: <3fa5f0578433a3995264bcf466c8b92ea4769070.1507497573.git.segher@kernel.crashing.org> X-IsSubscribed: yes This cleans up formatting of many jump patterns. Mostly it is writing output statements as brace blocks, and deleting default arguments. It also makes indentation a little bit more consistent, and uses b%T0 (instead of bctr/blr alternatives) in two more places. Tested as usual; committing to trunk. Segher 2017-10-08 Segher Boessenkool * config/rs6000/rs6000.md (conditional branch): Clean up formatting. Remove empty default arguments. Use a brace block as output statement. (conditional return): Ditto. (jump): Ditto. (indirect_jump): Ditto. Use b%T0 instead of bctr/blr. (tablejump, tablejumpsi, tablejumpdi, *tablejump_internal1): Ditto. (group_ending_nop): Ditto. (doloop_end): Ditto. (ctr, ctr_internal1, ctr_internal2): Ditto. (splitters for those): Ditto. --- gcc/config/rs6000/rs6000.md | 174 ++++++++++++++++++++++---------------------- 1 file changed, 85 insertions(+), 89 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index e3132c2..97a75a2 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -12598,31 +12598,27 @@ (define_insn_and_split "*nesi3_ext" (define_insn "" [(set (pc) (if_then_else (match_operator 1 "branch_comparison_operator" - [(match_operand 2 - "cc_reg_operand" "y") + [(match_operand 2 "cc_reg_operand" "y") (const_int 0)]) - (label_ref (match_operand 0 "" "")) + (label_ref (match_operand 0)) (pc)))] "" - "* { - return output_cbranch (operands[1], \"%l0\", 0, insn); -}" + return output_cbranch (operands[1], "%l0", 0, insn); +} [(set_attr "type" "branch")]) (define_insn "" [(set (pc) (if_then_else (match_operator 0 "branch_comparison_operator" - [(match_operand 1 - "cc_reg_operand" "y") + [(match_operand 1 "cc_reg_operand" "y") (const_int 0)]) (any_return) (pc)))] "" - "* { return output_cbranch (operands[0], NULL, 0, insn); -}" +} [(set_attr "type" "jmpreg") (set_attr "length" "4")]) @@ -12743,7 +12739,7 @@ (define_insn_and_split "" (define_insn "jump" [(set (pc) - (label_ref (match_operand 0 "" "")))] + (label_ref (match_operand 0)))] "" "b %l0" [(set_attr "type" "branch")]) @@ -12755,66 +12751,64 @@ (define_insn "return" [(set_attr "type" "jmpreg")]) (define_expand "indirect_jump" - [(set (pc) (match_operand 0 "register_operand" ""))]) + [(set (pc) (match_operand 0 "register_operand"))]) (define_insn "*indirect_jump" - [(set (pc) (match_operand:P 0 "register_operand" "c,*l"))] + [(set (pc) + (match_operand:P 0 "register_operand" "c,*l"))] "" - "@ - bctr - blr" + "b%T0" [(set_attr "type" "jmpreg")]) ;; Table jump for switch statements: (define_expand "tablejump" - [(use (match_operand 0 "" "")) - (use (label_ref (match_operand 1 "" "")))] + [(use (match_operand 0)) + (use (label_ref (match_operand 1)))] "" - " { if (TARGET_32BIT) emit_jump_insn (gen_tablejumpsi (operands[0], operands[1])); else emit_jump_insn (gen_tablejumpdi (operands[0], operands[1])); DONE; -}") +}) (define_expand "tablejumpsi" [(set (match_dup 3) - (plus:SI (match_operand:SI 0 "" "") + (plus:SI (match_operand:SI 0) (match_dup 2))) - (parallel [(set (pc) (match_dup 3)) - (use (label_ref (match_operand 1 "" "")))])] + (parallel [(set (pc) + (match_dup 3)) + (use (label_ref (match_operand 1)))])] "TARGET_32BIT" - " -{ operands[0] = force_reg (SImode, operands[0]); +{ + operands[0] = force_reg (SImode, operands[0]); operands[2] = force_reg (SImode, gen_rtx_LABEL_REF (SImode, operands[1])); operands[3] = gen_reg_rtx (SImode); -}") +}) (define_expand "tablejumpdi" [(set (match_dup 4) - (sign_extend:DI (match_operand:SI 0 "lwa_operand" ""))) + (sign_extend:DI (match_operand:SI 0 "lwa_operand"))) (set (match_dup 3) (plus:DI (match_dup 4) (match_dup 2))) - (parallel [(set (pc) (match_dup 3)) - (use (label_ref (match_operand 1 "" "")))])] + (parallel [(set (pc) + (match_dup 3)) + (use (label_ref (match_operand 1)))])] "TARGET_64BIT" - " -{ operands[2] = force_reg (DImode, gen_rtx_LABEL_REF (DImode, operands[1])); +{ + operands[2] = force_reg (DImode, gen_rtx_LABEL_REF (DImode, operands[1])); operands[3] = gen_reg_rtx (DImode); operands[4] = gen_reg_rtx (DImode); -}") +}) (define_insn "*tablejump_internal1" [(set (pc) (match_operand:P 0 "register_operand" "c,*l")) - (use (label_ref (match_operand 1 "" "")))] + (use (label_ref (match_operand 1)))] "" - "@ - bctr - blr" + "b%T0" [(set_attr "type" "jmpreg")]) (define_insn "nop" @@ -12825,21 +12819,19 @@ (define_insn "nop" (define_insn "group_ending_nop" [(unspec [(const_int 0)] UNSPEC_GRP_END_NOP)] "" - "* { if (rs6000_cpu_attr == CPU_POWER6) - return \"ori 1,1,0\"; - return \"ori 2,2,0\"; -}") + return "ori 1,1,0"; + return "ori 2,2,0"; +}) ;; Define the subtract-one-and-jump insns, starting with the template ;; so loop.c knows what to generate. (define_expand "doloop_end" - [(use (match_operand 0 "" "")) ; loop pseudo - (use (match_operand 1 "" ""))] ; label + [(use (match_operand 0)) ; loop pseudo + (use (match_operand 1))] ; label "" - " { if (TARGET_64BIT) { @@ -12854,19 +12846,19 @@ (define_expand "doloop_end" emit_jump_insn (gen_ctrsi (operands[0], operands[1])); } DONE; -}") +}) (define_expand "ctr" [(parallel [(set (pc) - (if_then_else (ne (match_operand:P 0 "register_operand" "") + (if_then_else (ne (match_operand:P 0 "register_operand") (const_int 1)) - (label_ref (match_operand 1 "" "")) + (label_ref (match_operand 1)) (pc))) (set (match_dup 0) (plus:P (match_dup 0) (const_int -1))) - (clobber (match_scratch:CC 2 "")) - (clobber (match_scratch:P 3 ""))])] + (clobber (match_scratch:CC 2)) + (clobber (match_scratch:P 3))])] "" "") @@ -12882,23 +12874,22 @@ (define_insn "ctr_internal1" [(set (pc) (if_then_else (ne (match_operand:P 1 "register_operand" "c,*b,*b,*b") (const_int 1)) - (label_ref (match_operand 0 "" "")) + (label_ref (match_operand 0)) (pc))) (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (plus:P (match_dup 1) - (const_int -1))) + (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:P 4 "=X,X,&r,r"))] "" - "* { if (which_alternative != 0) - return \"#\"; + return "#"; else if (get_attr_length (insn) == 4) - return \"bdnz %l0\"; + return "bdnz %l0"; else - return \"bdz $+8\;b %l0\"; -}" + return "bdz $+8\;b %l0"; +} [(set_attr "type" "branch") (set_attr "length" "*,16,20,20")]) @@ -12908,23 +12899,22 @@ (define_insn "ctr_internal2" [(set (pc) (if_then_else (eq (match_operand:P 1 "register_operand" "c,*b,*b,*b") (const_int 1)) - (label_ref (match_operand 0 "" "")) + (label_ref (match_operand 0)) (pc))) (set (match_operand:P 2 "nonimmediate_operand" "=1,*r,m,*d*wi*c*l") (plus:P (match_dup 1) - (const_int -1))) + (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) (clobber (match_scratch:P 4 "=X,X,&r,r"))] "" - "* { if (which_alternative != 0) - return \"#\"; + return "#"; else if (get_attr_length (insn) == 4) - return \"bdz %l0\"; + return "bdz %l0"; else - return \"bdnz $+8\;b %l0\"; -}" + return "bdnz $+8\;b %l0"; +} [(set_attr "type" "branch") (set_attr "length" "*,16,20,20")]) @@ -12933,14 +12923,15 @@ (define_insn "ctr_internal2" (define_split [(set (pc) (if_then_else (match_operator 2 "comparison_operator" - [(match_operand:P 1 "gpc_reg_operand" "") + [(match_operand:P 1 "gpc_reg_operand") (const_int 1)]) - (match_operand 5 "" "") - (match_operand 6 "" ""))) - (set (match_operand:P 0 "int_reg_operand" "") - (plus:P (match_dup 1) (const_int -1))) - (clobber (match_scratch:CC 3 "")) - (clobber (match_scratch:P 4 ""))] + (match_operand 5) + (match_operand 6))) + (set (match_operand:P 0 "int_reg_operand") + (plus:P (match_dup 1) + (const_int -1))) + (clobber (match_scratch:CC 3)) + (clobber (match_scratch:P 4))] "reload_completed" [(set (match_dup 3) (compare:CC (match_dup 1) @@ -12948,25 +12939,28 @@ (define_split (set (match_dup 0) (plus:P (match_dup 1) (const_int -1))) - (set (pc) (if_then_else (match_dup 7) - (match_dup 5) - (match_dup 6)))] - " -{ operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[2]), VOIDmode, - operands[3], const0_rtx); }") + (set (pc) + (if_then_else (match_dup 7) + (match_dup 5) + (match_dup 6)))] +{ + operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[2]), VOIDmode, operands[3], + const0_rtx); +}) (define_split [(set (pc) (if_then_else (match_operator 2 "comparison_operator" - [(match_operand:P 1 "gpc_reg_operand" "") + [(match_operand:P 1 "gpc_reg_operand") (const_int 1)]) - (match_operand 5 "" "") - (match_operand 6 "" ""))) - (set (match_operand:P 0 "nonimmediate_operand" "") - (plus:P (match_dup 1) (const_int -1))) - (clobber (match_scratch:CC 3 "")) - (clobber (match_scratch:P 4 ""))] - "reload_completed && ! gpc_reg_operand (operands[0], SImode)" + (match_operand 5) + (match_operand 6))) + (set (match_operand:P 0 "nonimmediate_operand") + (plus:P (match_dup 1) + (const_int -1))) + (clobber (match_scratch:CC 3)) + (clobber (match_scratch:P 4))] + "reload_completed && !gpc_reg_operand (operands[0], SImode)" [(set (match_dup 3) (compare:CC (match_dup 1) (const_int 1))) @@ -12975,12 +12969,14 @@ (define_split (const_int -1))) (set (match_dup 0) (match_dup 4)) - (set (pc) (if_then_else (match_dup 7) - (match_dup 5) - (match_dup 6)))] - " -{ operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[2]), VOIDmode, - operands[3], const0_rtx); }") + (set (pc) + (if_then_else (match_dup 7) + (match_dup 5) + (match_dup 6)))] +{ + operands[7] = gen_rtx_fmt_ee (GET_CODE (operands[2]), VOIDmode, operands[3], + const0_rtx); +}) (define_insn "trap" [(trap_if (const_int 1) (const_int 0))]