From patchwork Fri Mar 31 15:06:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Makarov X-Patchwork-Id: 77812 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp632018vqo; Fri, 31 Mar 2023 08:07:35 -0700 (PDT) X-Google-Smtp-Source: AKy350bzSOhLA0T0b0QvNrVVefrKtcVVCQbBr8r3LGjMA2xksYndQXUgJjX7lU/LYQePoseUJtoC X-Received: by 2002:a17:907:3183:b0:947:76b4:f243 with SMTP id xe3-20020a170907318300b0094776b4f243mr6213625ejb.39.1680275254914; Fri, 31 Mar 2023 08:07:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680275254; cv=none; d=google.com; s=arc-20160816; b=imlN7mFLQfGQGdZ8Lz08oecuHMLB3QgELZptz+EWpqg9aA0dhSF8ZgPce7AtTEEeEB Lh0J14kv85/XZbOUdKbkivkzJR1OjRGJkr5jknjNmrOeR0f4Cy4MR6672BvlLp8kPymY lSDfPNYAiVtyOZwxADIbVYANaF4JRh1qL42D7nOLFR0XzbYJJYU+Lfr5IX3jRwD7UG32 FkzZEVMrdV4NIMTlT5W/aBB6B+zRtEsCs+xY9ZsEh5MdDkmk1NT0xe+uRnT0187Psj35 t8QzEdrUTJlbSTr84k+omcJHtVLIfXhpjhvgnAkoU977qn+HwU+qPefYz9blaiQcncpk kfHA== 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:content-language :to:subject:user-agent:mime-version:date:message-id:dmarc-filter :delivered-to:dkim-signature:dkim-filter; bh=2tvI4p11DgRz65+9ETDLtV4yBtiQtwAzY6Lv0lf+qVQ=; b=owB4eAXYPUw7fHBlS2uc2e3mqlnMAhG1kS2lsZYUFdj68UAWHr5r1VXF88yGbY5kgR wPb9bHBZpQ0+DIXyvrlbxyLt5qxl+uCEHEyOcIz2sAkf63mK3LqbSO8pdlmneSR7fy5+ 0PU7vZI/RhnGo2lZZEH3SCiLKmofD8zHklTiE+yuBh+XC026frdAIRr1XYT3Nv+ys5lq QNf6+27HlNpFtEtOeqNlDLqJpM0aca25LE7rP8aQjwSNvU7/HWI0Sj/7as1e1r6ufsu3 ecMhVXxUYOvqQKnh5QSMhKm/TaoUZqtiRpL1dmWKCkei/+i8iNluEORlFJlvzCa2o86+ yAhQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gcs8wGaK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id gh23-20020a170906e09700b00931cee88d3esi1623309ejb.259.2023.03.31.08.07.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Mar 2023 08:07:34 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Gcs8wGaK; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 5F8F838582A3 for ; Fri, 31 Mar 2023 15:07:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5F8F838582A3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1680275253; bh=2tvI4p11DgRz65+9ETDLtV4yBtiQtwAzY6Lv0lf+qVQ=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=Gcs8wGaKbR/ZrEGD0R0G4vrnKLnRdIUCpxd+DZH7KTx0+aY3R4lQpe97uwdy1JlCE WMI66WS+SxwZkxRP7ia6oQPp/oI5OpGjMHGkwtXtfb8AcgGO6tb4eQt/Gq7V8qiz2I e0kU7qu5zF3kLALW6OtNRf8r2OF6yLrXHOEc2fA4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id AB69D3858D28 for ; Fri, 31 Mar 2023 15:06:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AB69D3858D28 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-397-MaUPYaTVNz6HlEQGBNb3iA-1; Fri, 31 Mar 2023 11:06:45 -0400 X-MC-Unique: MaUPYaTVNz6HlEQGBNb3iA-1 Received: by mail-qk1-f199.google.com with SMTP id 72-20020a37064b000000b007467c5d3abeso10575872qkg.19 for ; Fri, 31 Mar 2023 08:06:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680275204; h=to:subject:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XwIj0JZkMCa0WyWC86Qp4F33JxJToKqOrB72aBRDjgo=; b=IAIYsqP0wlSi+5ud5Xc1xqCCAUgx1Vu6IeebKlkYK++UP0idcevZwMHMuFRSRVB37a F6QHxbfcazRMSdx7//kML99YGi9hVkCo+GpD+h9hJpeOTZxlQKzLhokldM30dYXOPJFj RsV5wU0ZfCu/tJX2AgnCSO7yIkx7zGGWDH3TiBxFN5+iiffSO1xQCA89eW9Tt1UFYry8 pLSZnsK8Y0d8h3S6qlDBwqeLABmZv9zq0IxTJsKQiZN1cuTZaIcTmx8QTdGfBM/ELYeR AEgszx/FKvzeo6OGZ2yx+7GK+R9G6v+cciJYaj+hmC8UxUZSpcYI+CDDzhtspweBwpwd GHxg== X-Gm-Message-State: AAQBX9fvc4rbshKIk/20pj6f+fB8WgH93yDzr2o1B4qYZTQwLydCd86v wRsygXMqegE3YyFSLfdFZ6j5Q+OXD3voFL4NmZTUnb0VFapyjxQ6Ne+lLUJat+VCIA62cvjmHUa 1MoauqnC6b/wN6YxxLvPTeGLryjxx9NePT03rV6MI1SR3leijsyjwXziC4BEnP7H1Nucd430ciH mYHg== X-Received: by 2002:a05:6214:27e4:b0:5e0:f92c:4558 with SMTP id jt4-20020a05621427e400b005e0f92c4558mr8411091qvb.10.1680275203871; Fri, 31 Mar 2023 08:06:43 -0700 (PDT) X-Received: by 2002:a05:6214:27e4:b0:5e0:f92c:4558 with SMTP id jt4-20020a05621427e400b005e0f92c4558mr8411028qvb.10.1680275203268; Fri, 31 Mar 2023 08:06:43 -0700 (PDT) Received: from [192.168.1.104] (192-0-143-139.cpe.teksavvy.com. [192.0.143.139]) by smtp.gmail.com with ESMTPSA id x1-20020ad44581000000b005dd8b934591sm661915qvu.41.2023.03.31.08.06.42 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 31 Mar 2023 08:06:42 -0700 (PDT) Message-ID: <006d8e44-ade0-afc3-453f-05ff9d8e7f7a@redhat.com> Date: Fri, 31 Mar 2023 11:06:41 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: [pushed][PR109052] LRA: Implement commutative operands exchange for combining secondary memory reload and original insn To: "gcc-patches@gcc.gnu.org" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP 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: Vladimir Makarov via Gcc-patches From: Vladimir Makarov Reply-To: Vladimir Makarov Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761896305997238364?= X-GMAIL-MSGID: =?utf-8?q?1761896305997238364?= This is one more patch for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109052 The patch adds trying commutative operands exchange for recently implemented combining secondary memory reload and original insn: The patch was successfully bootstrapped and tested on x86_64. commit 378d19cfebfa2bc4f693dfc9e6f0dd993e7c45f7 Author: Vladimir N. Makarov Date: Fri Mar 31 11:04:44 2023 -0400 LRA: Implement commutative operands exchange for combining secondary memory reload and original insn The patch implements trying commutative operands exchange for combining secondary memory reload and original insn. PR rtl-optimization/109052 gcc/ChangeLog: * lra-constraints.cc: (combine_reload_insn): New function. gcc/testsuite/ChangeLog: * gcc.target/i386/pr109052-2.c: New. diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc index 405b8b92f5e..ff4e8f06063 100644 --- a/gcc/lra-constraints.cc +++ b/gcc/lra-constraints.cc @@ -5061,7 +5061,23 @@ combine_reload_insn (rtx_insn *from, rtx_insn *to) curr_insn = to; curr_id = lra_get_insn_recog_data (curr_insn); curr_static_id = curr_id->insn_static_data; - ok_p = !curr_insn_transform (true); + for (bool swapped_p = false;;) + { + ok_p = !curr_insn_transform (true); + if (ok_p || curr_static_id->commutative < 0) + break; + swap_operands (curr_static_id->commutative); + if (lra_dump_file != NULL) + { + fprintf (lra_dump_file, + " Swapping %scombined insn operands:\n", + swapped_p ? "back " : ""); + dump_insn_slim (lra_dump_file, to); + } + if (swapped_p) + break; + swapped_p = true; + } curr_insn = saved_insn; curr_id = lra_get_insn_recog_data (curr_insn); curr_static_id = curr_id->insn_static_data; diff --git a/gcc/testsuite/gcc.target/i386/pr109052-2.c b/gcc/testsuite/gcc.target/i386/pr109052-2.c new file mode 100644 index 00000000000..337d1f49c2b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr109052-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -mfpmath=both -mavx -fno-math-errno" } */ + +double foo (double a, double b) +{ + double z = __builtin_fmod (a, 3.14); + return z * b; +} + +/* { dg-final { scan-assembler-not "vmulsd\[ \t]\+%xmm\[0-9]\+, %xmm\[0-9]\+, %xmm\[0-9]\+"} } */