From patchwork Tue Jul 18 09:50:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Serval Martinot-Lagarde X-Patchwork-Id: 121912 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1622707vqt; Tue, 18 Jul 2023 02:51:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlGqkha+isBR42fAbgxnq7mtKVWnyZdB605HWfTExXgvRqR8gNtbFRBm2AR2jAslhtRUgcAP X-Received: by 2002:a17:907:98d8:b0:993:d6e8:2386 with SMTP id kd24-20020a17090798d800b00993d6e82386mr11832270ejc.16.1689673870107; Tue, 18 Jul 2023 02:51:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689673870; cv=none; d=google.com; s=arc-20160816; b=YvOMlDrkVikpFuqqhqO+tZEI7z12Au03cE/9wUkXtSVh0nOxUMCocLMn0EFdh00ng2 Lv9pCxfztMyYJGpYLrUBlaswcJHugIbLaTSkBMLn6DaC5biXwi/0IR64brgu3WSz0EWC tXqDTmYQF9GYpZ6pqHXyPs/is5kogAf4WJHpMW+b9r+mS7M7yvgP+gYZ/QKp0hj2iY+U hg8nnro6UXhSkdMBIGTAnHvUoNGUL83clQQLV/fK8D7xaOSodM4RwAstve7ZG3zGWdz9 WsG6G+40TiluGGmTdHBaeK0ft3HYwz340uh8kGj0hBOpvrpL1ZjIhzcEK8ds4pXOcM1S aC8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:mime-version :content-transfer-encoding:content-language:accept-language :message-id:date:thread-index:thread-topic:subject:cc:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=/k1a2vPYGUTGfVMMY1Kff9/UhpiymnuM1JA0CFONLHw=; fh=fwq2CzLGLG/uXoSrcOy0ll2VLGnYLg5vhJCFhzHJO1s=; b=hhoWKIxh4QmbrPlV0Y0f6nnvZH+zvj14ykSz/xgiOM5kdlwhbs678tVZr46n8t3m6M FrvpQkDaIJeLl9E3in/cUFFP1TLfjDx0s5QYfrNjUyyFjxp+0VXVWURio1JHRxXXU4jI Hg9ZIQaecUU+zNrm36lEigzOUfyb+6MDuiWzIPbZJ0lVBPGpFcEcNegDBNTJCKT6Nrf3 wH6o72N0ejfxdMBNPcCGsGS+eRKihotJ2vN6QJvcfQWyr3pfuL3y1ZZNCUBuFmUVGD8S gB7018RcGfIhlTQz/2NHjFIyhUN4RS6ehOltoFqVKBiGtktWaKG8Q2jzm28pfvMvGeTH qrRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=nTC0YGmp; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id e25-20020a170906081900b00997672cb9d7si909581ejd.411.2023.07.18.02.51.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Jul 2023 02:51:10 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=nTC0YGmp; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C9C7A3857734 for ; Tue, 18 Jul 2023 09:51:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C9C7A3857734 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1689673868; bh=/k1a2vPYGUTGfVMMY1Kff9/UhpiymnuM1JA0CFONLHw=; h=To:CC:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=nTC0YGmpi71PfwIETIKKkE2XqPZJHKUlbSpFYf958eFOhp+VYS7+cRK7MC4Qbtd88 a7deJQVpdb9C4UcuD0fSbOgvaapNhlhORze9tVDSXU3/lYXfgyhzK6UU6wX+mDcy/r FpYJVmkSG8gWhtd9IVdT7S1riu/98ydJIPPcH/Iw= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp.ex10.biz (ikhexhub04.ex10.biz [178.170.125.68]) by sourceware.org (Postfix) with ESMTPS id 663973858430 for ; Tue, 18 Jul 2023 09:50:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 663973858430 Received: from ex13mbxc01n02.ikhex.ikoula.com (178.170.74.67) by ikhexhub04.ikhex.ikoula.com (178.170.125.68) with Microsoft SMTP Server (TLS) id 14.3.487.0; Tue, 18 Jul 2023 11:50:30 +0200 Received: from ex13mbxc01n01.ikhex.ikoula.com (2002:b2aa:4a42::b2aa:4a42) by ex13mbxc01n02.ikhex.ikoula.com (2002:b2aa:4a43::b2aa:4a43) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Tue, 18 Jul 2023 11:50:18 +0200 Received: from ex13mbxc01n01.ikhex.ikoula.com ([fe80::7cfa:8f3a:5d4b:2d27]) by ex13mbxc01n01.ikhex.ikoula.com ([fe80::7cfa:8f3a:5d4b:2d27%15]) with mapi id 15.00.1497.044; Tue, 18 Jul 2023 11:50:18 +0200 To: "gcc-patches@gcc.gnu.org" CC: Etienne Renault Subject: [PATCH] aarch64: remove useless pairs of rev instructions Thread-Topic: [PATCH] aarch64: remove useless pairs of rev instructions Thread-Index: Adm5WVcvhBV9J1WoShmM7LuU7QskIQ== Date: Tue, 18 Jul 2023 09:50:18 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [178.170.125.114] MIME-Version: 1.0 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Serval Martinot-Lagarde via Gcc-patches From: Serval Martinot-Lagarde Reply-To: Serval Martinot-Lagarde Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771751467780763317 X-GMAIL-MSGID: 1771751467780763317 SVE generates superflous rev instructions that can be replaced by single mov instruction or a pair of (rev, mov) instructions gcc/ * config/aarch64/aarch64-sve.md: New peephole2. * testsuite/gcc.target/aarch64/sve/revrev.c: New dg test. Signed-off-by: Serval Martinot-Lagarde --- gcc/config/aarch64/aarch64-sve.md | 21 +++++++++++++++++++ gcc/testsuite/gcc.target/aarch64/sve/revrev.c | 13 ++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/revrev.c diff --git a/gcc/config/aarch64/aarch64-sve.md b/gcc/config/aarch64/aarch64-sve.md index da5534c3e32..e5e0c7ddfc5 100644 --- a/gcc/config/aarch64/aarch64-sve.md +++ b/gcc/config/aarch64/aarch64-sve.md @@ -8836,6 +8836,27 @@ "TARGET_SVE" "rev\t%0., %1.") +(define_peephole2 + [(set (match_operand:SVE_ALL 0 "register_operand" "") + (unspec:SVE_ALL + [(match_operand:SVE_ALL 1 "register_operand" "")] UNSPEC_REV)) + (set (match_operand:SVE_ALL 2 "register_operand" "") + (unspec:SVE_ALL + [(match_dup 0)] UNSPEC_REV))] + "TARGET_SVE" + [(const_int 0)] + { + if (REGNO (operands[2]) != REGNO (operands[0])) + { + emit_insn (gen_rtx_SET (operands[2], operands[1])); + rtx rev = gen_rtx_UNSPEC (mode, gen_rtvec (1, operands[1]), UNSPEC_REV); + emit_insn (gen_rtx_SET (operands[0], rev)); + } + else + emit_insn (gen_rtx_SET (operands[0], operands[1])); + DONE; + }) + ;; ------------------------------------------------------------------------- ;; ---- [INT,FP] Special-purpose binary permutes ;; ------------------------------------------------------------------------- diff --git a/gcc/testsuite/gcc.target/aarch64/sve/revrev.c b/gcc/testsuite/gcc.target/aarch64/sve/revrev.c new file mode 100644 index 00000000000..04af6eed291 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sve/revrev.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +#include + +void +test (uint8_t a[], uint8_t b[], uint64_t N) +{ + for (uint64_t i = N; i > 0; i--) + a[i - 1] = b[i - 1]; +} + +/* { dg-final { scan-assembler-not {\trev\t(z[0-9]+\.h), \1\n\trev\t\1, \1\n} } } */