From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1044.google.com (mail-pj1-x1044.google.com [IPv6:2607:f8b0:4864:20::1044]) by sourceware.org (Postfix) with ESMTPS id 84057388B80A for ; Thu, 2 Apr 2020 18:54:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 84057388B80A Received: by mail-pj1-x1044.google.com with SMTP id w9so1907683pjh.1 for ; Thu, 02 Apr 2020 11:54:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6XvKJpUKdrwL15T5x6yWFLpCMrUzA8nh04ziScEUXAk=; b=s++vfITGzt4mr5NpjwNuDIc7UI0C7RO1FPFMNZX1FmjUUsk1NSGSSLBBQKWspeFc/G LvN04DnTJKWf3jgqPylxvZHiQEiiDrUg+8UgXq9xI9+f7IhuP7KXRxAkUb4mq5qt1cVE YXYsiOLK703jZoK7w1aiKeh9XOueCU2z++5P/o0xdmjCKDLJvaaC2pr2oCqwLctU0sBH wR7ugLU4FUyW+5kc045RTkFxE5dgk9QVK2NfhTccqJ62R1TNEa0OYeRZdrAErwlV3rOX t10JPdKzg5iuq8l6AMJn4u9RQMmLtTv2PkOyW0YVdSiUkmIlEMUujHoIXgg/OrlHAijx 3NZA== X-Gm-Message-State: AGi0PuZZJ0V7xul1PMcDmknBdomIxEBaDYiJBkQq2fb8G8eU3+dIUWEm VQFerbgCjQla3IrEs4xHyca70VanLDM= X-Google-Smtp-Source: APiQypLxJ8yRA7K0J0dVI6PwZ9QAFJ2taqeF5M3NuqoCh+x4kWxWwuseT7f2kK4cn0XF9DAp3vwmDA== X-Received: by 2002:a17:90a:272d:: with SMTP id o42mr5383080pje.194.1585853639228; Thu, 02 Apr 2020 11:53:59 -0700 (PDT) Received: from localhost.localdomain (174-21-149-226.tukw.qwest.net. [174.21.149.226]) by smtp.gmail.com with ESMTPSA id r64sm4216973pjb.15.2020.04.02.11.53.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2020 11:53:58 -0700 (PDT) From: Richard Henderson To: gcc-patches@gcc.gnu.org Cc: richard.sandiford@arm.com, segher@kernel.crashing.org, richard.earnshaw@arm.com, Wilco.Dijkstra@arm.com, marcus.shawcroft@arm.com, kyrylo.tkachov@arm.com Subject: [PATCH v2 03/11] aarch64: Provide expander for sub3_compare1 Date: Thu, 2 Apr 2020 11:53:45 -0700 Message-Id: <20200402185353.11047-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200402185353.11047-1-richard.henderson@linaro.org> References: <20200402185353.11047-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-20.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, 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-List-Received-Date: Thu, 02 Apr 2020 18:54:01 -0000 In one place we open-code a special case of this pattern into the more specific sub3_compare1_imm, and miss this special case in other places. Centralize that special case into an expander. * config/aarch64/aarch64.md (*sub3_compare1): Rename from sub3_compare1. (sub3_compare1): New expander. * config/aarch64/aarch64.c (aarch64_expand_subvti): Remove call to gen_subdi3_compare1_imm. --- gcc/config/aarch64/aarch64.c | 11 ++--------- gcc/config/aarch64/aarch64.md | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index c90de65de12..7a13a8e8ec4 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -20333,16 +20333,9 @@ aarch64_expand_subvti (rtx op0, rtx low_dest, rtx low_in1, } else { - if (aarch64_plus_immediate (low_in2, DImode)) - emit_insn (gen_subdi3_compare1_imm (low_dest, low_in1, low_in2, - GEN_INT (-INTVAL (low_in2)))); - else - { - low_in2 = force_reg (DImode, low_in2); - emit_insn (gen_subdi3_compare1 (low_dest, low_in1, low_in2)); - } - high_in2 = force_reg (DImode, high_in2); + emit_insn (gen_subdi3_compare1 (low_dest, low_in1, low_in2)); + high_in2 = force_reg (DImode, high_in2); if (unsigned_p) emit_insn (gen_usubdi3_carryinC (high_dest, high_in1, high_in2)); else diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index b242f2b1c73..d6389cc8148 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -3120,7 +3120,7 @@ [(set_attr "type" "alus_imm")] ) -(define_insn "sub3_compare1" +(define_insn "*sub3_compare1" [(set (reg:CC CC_REGNUM) (compare:CC (match_operand:GPI 1 "aarch64_reg_or_zero" "rkZ") @@ -3132,6 +3132,26 @@ [(set_attr "type" "alus_sreg")] ) +(define_expand "sub3_compare1" + [(parallel + [(set (reg:CC CC_REGNUM) + (compare:CC + (match_operand:GPI 1 "aarch64_reg_or_zero") + (match_operand:GPI 2 "aarch64_reg_or_imm"))) + (set (match_operand:GPI 0 "register_operand") + (minus:GPI (match_dup 1) (match_dup 2)))])] + "" +{ + if (aarch64_plus_immediate (operands[2], mode)) + { + emit_insn (gen_sub3_compare1_imm + (operands[0], operands[1], operands[2], + GEN_INT (-INTVAL (operands[2])))); + DONE; + } + operands[2] = force_reg (mode, operands[2]); +}) + (define_peephole2 [(set (match_operand:GPI 0 "aarch64_general_reg") (minus:GPI (match_operand:GPI 1 "aarch64_reg_or_zero") -- 2.20.1