From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) by sourceware.org (Postfix) with ESMTPS id B1AEE388B81C for ; Thu, 2 Apr 2020 18:54:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B1AEE388B81C Received: by mail-pl1-x642.google.com with SMTP id w3so1685090plz.5 for ; Thu, 02 Apr 2020 11:54:05 -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=r2ukRJ7ijspnpSOiajSm2J4VmxvNmbCwyRHGkbpY+yI=; b=Y+KRxJtW0TscdByoAzgTzR/TbwI95D+ts8HPs/l31qI3QkfjHlsm8AaHf3Tg8uhlnm tS9WEiUwJAShTwm2RJ+rss2HEZtENZfu7pnd39A2VNI8lLSYuVfdH2XS7Afx1KupQuuN OdiYOEAnHgThiiXeOcDRwMvvPk36pAZ/znAyfS2Er/qXivWO3OlvQ2ldm8rU9HQCi/Jm d5So6YaIqg8g6GpR+mI4YWdgb0PvYIGnTlSTsRqlwuwSSIzIXSP34y3imC1173lw1GXL 9JDRdU3rn3Mapw0EwJXdrocxo3xRcJF6cPgju9C8Atj2A/gvg/NpsQoXgPqscYSBSUqZ G/0g== X-Gm-Message-State: AGi0PuaG568aG6+CQVFpi82YYthOohq7imkR0unx1x29r/+NkbGuhN6a ggp2xKVVS5DYBujbb1k6yg0MYHYzaIU= X-Google-Smtp-Source: APiQypJk6RmUAx4bmbTR7Za1AFPP2q09StmwLCjxyp0FwQFKAUyNzJcF1wABnjMtaepcZOcKMfR0Xw== X-Received: by 2002:a17:902:bd02:: with SMTP id p2mr4216594pls.67.1585853644448; Thu, 02 Apr 2020 11:54:04 -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.54.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2020 11:54:03 -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 07/11] aarch64: Remove CC_ADCmode Date: Thu, 2 Apr 2020 11:53:49 -0700 Message-Id: <20200402185353.11047-8-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=-23.0 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, 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:07 -0000 Now that we're using UNSPEC_ADCS instead of rtl, there's no reason to distinguish CC_ADCmode from CC_Cmode. Both examine only the C bit. Within uaddvti4, using CC_Cmode is clearer, since it's the carry-outthat's relevant. * config/aarch64/aarch64-modes.def (CC_ADC): Remove. * config/aarch64/aarch64.c (aarch64_select_cc_mode): Do not look for unsigned overflow from add with carry. * config/aarch64/aarch64.md (uaddvti4): Use CC_Cmode. * config/aarch64/predicates.md (aarch64_carry_operation) Remove check for CC_ADCmode. (aarch64_borrow_operation): Likewise. --- gcc/config/aarch64/aarch64.c | 19 ------------------- gcc/config/aarch64/aarch64-modes.def | 1 - gcc/config/aarch64/aarch64.md | 2 +- gcc/config/aarch64/predicates.md | 4 ++-- 4 files changed, 3 insertions(+), 23 deletions(-) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 6263897c9a0..8e54506bc3e 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -9094,16 +9094,6 @@ aarch64_select_cc_mode (RTX_CODE code, rtx x, rtx y) && rtx_equal_p (XEXP (x, 0), y)) return CC_Cmode; - /* A test for unsigned overflow from an add with carry. */ - if ((mode_x == DImode || mode_x == TImode) - && (code == LTU || code == GEU) - && code_x == PLUS - && CONST_SCALAR_INT_P (y) - && (rtx_mode_t (y, mode_x) - == (wi::shwi (1, mode_x) - << (GET_MODE_BITSIZE (mode_x).to_constant () / 2)))) - return CC_ADCmode; - /* A test for signed overflow. */ if ((mode_x == DImode || mode_x == TImode) && code == NE @@ -9232,15 +9222,6 @@ aarch64_get_condition_code_1 (machine_mode mode, enum rtx_code comp_code) } break; - case E_CC_ADCmode: - switch (comp_code) - { - case GEU: return AARCH64_CS; - case LTU: return AARCH64_CC; - default: return -1; - } - break; - case E_CC_Vmode: switch (comp_code) { diff --git a/gcc/config/aarch64/aarch64-modes.def b/gcc/config/aarch64/aarch64-modes.def index af972e8f72b..32e4b6a35a9 100644 --- a/gcc/config/aarch64/aarch64-modes.def +++ b/gcc/config/aarch64/aarch64-modes.def @@ -38,7 +38,6 @@ CC_MODE (CC_NZC); /* Only N, Z and C bits of condition flags are valid. CC_MODE (CC_NZ); /* Only N and Z bits of condition flags are valid. */ CC_MODE (CC_Z); /* Only Z bit of condition flags is valid. */ CC_MODE (CC_C); /* C represents unsigned overflow of a simple addition. */ -CC_MODE (CC_ADC); /* Unsigned overflow from an ADC (add with carry). */ CC_MODE (CC_V); /* Only V bit of condition flags is valid. */ /* Half-precision floating point for __fp16. */ diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 99023494fa1..8d405b40173 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -2079,7 +2079,7 @@ CODE_FOR_adddi3_compareC, CODE_FOR_adddi3_compareC, CODE_FOR_adddi3_carryin_cmp); - aarch64_gen_unlikely_cbranch (GEU, CC_ADCmode, operands[3]); + aarch64_gen_unlikely_cbranch (LTU, CC_Cmode, operands[3]); DONE; }) diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md index 5f44ef7d672..42864cbf4dd 100644 --- a/gcc/config/aarch64/predicates.md +++ b/gcc/config/aarch64/predicates.md @@ -388,7 +388,7 @@ machine_mode ccmode = GET_MODE (op0); if (ccmode == CC_Cmode) return GET_CODE (op) == LTU; - if (ccmode == CC_ADCmode || ccmode == CCmode) + if (ccmode == CCmode) return GET_CODE (op) == GEU; return false; }) @@ -406,7 +406,7 @@ machine_mode ccmode = GET_MODE (op0); if (ccmode == CC_Cmode) return GET_CODE (op) == GEU; - if (ccmode == CC_ADCmode || ccmode == CCmode) + if (ccmode == CCmode) return GET_CODE (op) == LTU; return false; }) -- 2.20.1