From patchwork Fri Oct 22 05:56:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Pan2 via Gcc-patches" X-Patchwork-Id: 46524 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6A6DC385783D for ; Fri, 22 Oct 2021 05:57:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6A6DC385783D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1634882233; bh=1KrvCHrACxVD+cFmaPfetNQod/uwBtOllZNvHSj6cSQ=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=Va+zH6zggEjYPfQ4ixb7eAum86a1N0GBCj+eC+MeIk1WZrKbxF6uAX2ZkdpQmjPwD f0JkoYFRbgy2vEoF6xTm5Eu7x+sgNlKeBLI5mc6rg4swngsUKj8zNkoYy0iWTCTobv RklI5OXhpMaQxWjum//VWJsRWGPBqRfEo2vcysGc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by sourceware.org (Postfix) with ESMTPS id 1D59E3858416 for ; Fri, 22 Oct 2021 05:56:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1D59E3858416 X-IronPort-AV: E=McAfee;i="6200,9189,10144"; a="210019675" X-IronPort-AV: E=Sophos;i="5.87,171,1631602800"; d="scan'208";a="210019675" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2021 22:56:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,171,1631602800"; d="scan'208";a="495526079" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga008.jf.intel.com with ESMTP; 21 Oct 2021 22:56:39 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 21 Oct 2021 22:56:39 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 21 Oct 2021 22:56:38 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 21 Oct 2021 22:56:38 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 21 Oct 2021 22:56:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HWC/trpEyaGwVjEsGRvmFVYrn+1DvUeVornK+pxkGfamNIvQmgNXj7jOMWJ7zySHsSFInLWq9yTDZhdXru/PuvGPN69ckEB/tsIwKjMcd0dzsz9p97kLdIbKATX2fTEWFZSFZHdsZ1qhxPYhHynm4SqH9YXvplACSdMTIw2gVklpFD5y7n4bTsKHrpYgf8BJsdhHPr/cSNkadGvgasKwa3hQKNzy3qlD2PsZ5nI/HXMxJFGUUJ5qYZUG0x6ZBfDYvqmjKxCnSGL+nJYhlv57MwD7P+SJEyaNuVu9PBtGrCc2Rfj/sS2A7VC6e+b3PIuQ/jvSrmd9m6snZ4Af8iK73w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1KrvCHrACxVD+cFmaPfetNQod/uwBtOllZNvHSj6cSQ=; b=ZDF8PFcKAdbSvQN5WFKQzY1a5xnxO21SBPtzO7L1yadlXlWh7MzQH4TflUn3ZAJa9CzYIut1S0OKC/7UOSLeJSjs4L/MB3uaWLQUF5OL1Fc0ciE9XHkHmXWrFUXufCq+PzUZmgEj4n72T5HHj7LgU06xnKG9h4Kl8ZfVroIImdqMRchQ6gx+t1+5TesnvNiUfYA3gsqG1Fs6ABYeq9jLrAp1YYAr+E0fqa3FGY5aCB4td4bDoM02d9h1bZPWWKIcDWGdsfOyHuNhtHGupfraEeVkO0eEw+oIZLf7wSG8F5tpFShXX3U+U1svpu//g4M6ke/dO0xfH0pq38GRsJw/Cw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM4PR11MB5487.namprd11.prod.outlook.com (2603:10b6:5:39f::22) by DM5PR1101MB2235.namprd11.prod.outlook.com (2603:10b6:4:52::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4608.18; Fri, 22 Oct 2021 05:56:36 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6024:2ac4:7bf1:173]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6024:2ac4:7bf1:173%9]) with mapi id 15.20.4628.018; Fri, 22 Oct 2021 05:56:36 +0000 To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] i386: Combine the FADD(A, FMA(B, C, 0)) to FMA(B, C, A) and combine FADD(A, FMUL(B, C)) to FMA(B, C, A). Thread-Topic: [PATCH] i386: Combine the FADD(A, FMA(B, C, 0)) to FMA(B, C, A) and combine FADD(A, FMUL(B, C)) to FMA(B, C, A). Thread-Index: AdfHCVoc3tmQZZPvQSKdj1vjI+UUfA== Date: Fri, 22 Oct 2021 05:56:36 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.200.16 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a54896be-5bc5-4b7f-3555-08d99520b545 x-ms-traffictypediagnostic: DM5PR1101MB2235: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:378; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /3L/j9s2WWStgJUOTKHDoSKmLzYKYNccCXycaIoP1VtKwP6BT+xJqc2xAswpURgvnb6y62NSLsY4114wCsd+x9/F5aQwQdXH5n7uOPFwfDkLNkw93e8FY+ogrfyW6+Np+97ZZhg+Y/YhGzDgNVjIDnvFY2IRsBfNdqPSi7NwgGzZhgvDcsgE/GC19MgbPM5lLcNfpWu7S5H3IpCrGh+RRQSeBBGEEsfJlCeM0lRNFkeiflQaCxS5wKhIZ6d06cC7at6XEHkm/OTEEr8XqLx82azQS0TKEW/WVryXV8s+K0GjVfDzEz+0CObvmKt7nQzReHy/+CUQT7H1pWKuexDOG9xblkKJHV56ea8zZRPisIZDhbmkQS76c1mwnZ2zN40Ca9qdSOT+54jrwE9PfQP6FFHDxTT9H9u7s5vgPpQiu4Q05XgRwX7gUOkkc2z8cFiS6swFtNSnQokQoFPG/BgfGY3EbYfCsa53xIa0e9fZeR5vwOkiKEmkIEJH/aQg91VYmuHpAYZaMmPUv2H31M6yeYf4c8x6WH87hHJKwiR/tjTx1Bou1tMtH8i74lbXy/07Wt/XGzVBmoyWDNaAJerIOhRwPpzcJNc73mO1iQB55EZ4pdQS7lUFyGpHDTbGTpBrxB7nG53DKbtnfurDtFDpB/QzPmIWi8dA3gZ9640MIB25mVaF5T4BQ/R4JeZtOMJAYjFBp5ptHP7/aeWarIhY6izXn3B3deWDrJeoVKyFQa1xZSPpLByLWbu3N+D20+SDiK5I8W9c85MuXLv7PyBDS5tvH8ZqY7oHM4rDnz4+/aU= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(5660300002)(186003)(54906003)(66446008)(4326008)(6506007)(86362001)(8676002)(6916009)(7696005)(82960400001)(52536014)(71200400001)(76116006)(66946007)(9686003)(26005)(38070700005)(66556008)(64756008)(2906002)(508600001)(316002)(66476007)(38100700002)(122000001)(8936002)(55016002)(107886003)(33656002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: my021fUcssgPr+L7G9qwmjFAmtK2+I3Sgxus5kFJeXsBpVVH/6TAzOSuoLE8tfbENlPpDh0tmQA5i/InY4Xd5CRTyfJ2GngeE5tA9ExTaizLea9kpjFgsy0iKFvXdamdurGyB0PIG16skRjYt1VXjL7DjjmSTaBZE/H/ZESHZhTVQAQ3Vt1KB9MrPWRi6BpGSfL3rOlxFcsnpACt4/jOvZFpx8qL3xitmzT04bYKRWLwE6DZhtpwoLgjq0O/qYAT96znFXubqn4CUDTeRqhqfUp9mLooG3GtIyPQAAPl38UD+w8BZldw4B0xM73MDQaVAOaFJTg8XetslpVzR9GAuqX7dl8QBnAEYxQxnmnGty1BtrTLohWtG2kLPcoBRrfzQwE6+Aw5RFshXV394/WTO5fEvVfGc3NJXhjUT5mZEqZE602YO/LUdp96BemqSy0y4rJgYcjuEEiUXkzKULloQzy+VRZJ2ei4wNb/0r1Dg0JpSKbvxe2os5LSsUWA0KuD1tV94TFjP2ScWhQvbQ90hkH4hZQCocWsSqhJnrjNScq0hZBrALtll3EAL9zL3OvyEWPXrmatbF62eJIOw7/9g7ISxmPOuK8SOn+asfoDB4q+sK15fJ9gZSTAa4aJk16huUi7MqtWkMqD9yMt4zC705anpZ/FClJ80L9zAHoA0WPpwvhCtOK2Hh3ZlYmct1G2+v2l13g6wXRTJk9JVczZIgVKuFTDRIlwz8nVueSbXh6/V6I2fwD6k/2wnSCZVLXL59vjotljs5gQ5vaLyUVxYVNA1T+toSeIwDTVKt2FKqVT+t2ds6i2D9+ofg0Tme3wMFHd0SrWvg23FrVKULOIkUv76BDExLCxcIvM/gbzo4HoD/6Va4alFzOh/oenwd7oXLU5uGSPhjtui38gtZMaceoAZQ/8ipHS7TR7azxEbOL4aQ01tbLwE+iWOxeMWc5A0T48AYz6nXf1KWaP8qe63ZSeIpO5KikJJ6Tt/GfizfVzRTk+8fiCPx/l3tMmsC9+cANMIcujj9FwCsrGkD6FiJKOP9UaU1rj7uZNaeUSQaQVcvGe3TBi3MJOaosdZ9Es9noXX/TP9yA8uxSq7Gg8l+x3Uf+mFy2rvqMcIlP6zl8RivzFEJFrRwPropPoEpcYRbDkEw1MRPVSYbqs7FrDPkjHfxnMZnLjcckm77zSgtEp8MwEDvkSsbOEc6eDlOAMWUwKgnQAu93iNiQqFhNYAANu+0cnzG+WyUscmpF5mJfyl0w05zXPr0tuZ0b3+5XN/LftBFQAUKbPxOL2CiSzUE7KdCDPasErLixFLFj6x6EJUSS9BBBGZaZz3CM6Mkjf MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a54896be-5bc5-4b7f-3555-08d99520b545 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2021 05:56:36.1234 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lingling.kong@intel.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1101MB2235 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_DMARC_NONE, KAM_SHORT, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: "Kong, Lingling via Gcc-patches" From: "Li, Pan2 via Gcc-patches" Reply-To: "Kong, Lingling" Cc: "Liu, Hongtao" , "Kong, Lingling" Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi, This patch is to support transform in fast-math something like _mm512_add_ph(x1, _mm512_fmadd_pch(a, b, _mm512_setzero_ph())) to _mm512_fmadd_pch(a, b, x1). And support transform _mm512_add_ph(x1, _mm512_fmul_pch(a, b)) to _mm512_fmadd_pch(a, b, x1). Ok for master? gcc/ChangeLog: * config/i386/sse.md (fma__fadd_fmul): Add new define_insn_and_split. (fma__fadd_fcmul):Likewise (fma___fma_zero):Likewise gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-complex-fma.c: New test. --- gcc/config/i386/sse.md | 52 +++++++++++++++++++ .../gcc.target/i386/avx512fp16-complex-fma.c | 18 +++++++ 2 files changed, 70 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c +avx512f_test (void) +{ + res = _mm512_add_ph (x1, _mm512_fmadd_pch (a, b, +_mm512_setzero_ph())); + res = _mm512_add_ph (x1, _mm512_fcmadd_pch (a, b, +_mm512_setzero_ph())); + + res = _mm512_add_ph (x1, _mm512_fmul_pch (a, b)); + res = _mm512_add_ph (x1, _mm512_fcmul_pch (a, b)); } -- 2.18.1 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index fbf056bf9e6..36407ca4a59 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -5958,6 +5958,58 @@ [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) +(define_insn_and_split "fma__fadd_fmul" + [(set (match_operand:VF_AVX512FP16VL 0 "register_operand") + (plus:VF_AVX512FP16VL + (unspec:VF_AVX512FP16VL + [(match_operand:VF_AVX512FP16VL 1 "vector_operand") + (match_operand:VF_AVX512FP16VL 2 "vector_operand")] + UNSPEC_COMPLEX_FMUL) + (match_operand:VF_AVX512FP16VL 3 "vector_operand")))] + "TARGET_AVX512FP16 && flag_unsafe_math_optimizations + && ix86_pre_reload_split()" + "#" + "&& 1" + [(set (match_dup 0) + (unspec:VF_AVX512FP16VL + [(match_dup 1) (match_dup 2) (match_dup 3)] + UNSPEC_COMPLEX_FMA))]) + +(define_insn_and_split "fma__fadd_fcmul" + [(set (match_operand:VF_AVX512FP16VL 0 "register_operand") + (plus:VF_AVX512FP16VL + (unspec:VF_AVX512FP16VL + [(match_operand:VF_AVX512FP16VL 1 "vector_operand") + (match_operand:VF_AVX512FP16VL 2 "vector_operand")] + UNSPEC_COMPLEX_FCMUL) + (match_operand:VF_AVX512FP16VL 3 "vector_operand")))] + "TARGET_AVX512FP16 && flag_unsafe_math_optimizations + && ix86_pre_reload_split()" + "#" + "&& 1" + [(set (match_dup 0) + (unspec:VF_AVX512FP16VL + [(match_dup 1) (match_dup 2) (match_dup 3)] + UNSPEC_COMPLEX_FCMA))]) + +(define_insn_and_split "fma___fma_zero" + [(set (match_operand:VF_AVX512FP16VL 0 "register_operand") + (plus:VF_AVX512FP16VL + (unspec:VF_AVX512FP16VL + [(match_operand:VF_AVX512FP16VL 1 "vector_operand") + (match_operand:VF_AVX512FP16VL 2 "vector_operand") + (match_operand:VF_AVX512FP16VL 3 "const0_operand")] + UNSPEC_COMPLEX_F_C_MA) + (match_operand:VF_AVX512FP16VL 4 "vector_operand")))] + "TARGET_AVX512FP16 && flag_unsafe_math_optimizations + && ix86_pre_reload_split()" + "#" + "&& 1" + [(set (match_dup 0) + (unspec:VF_AVX512FP16VL + [(match_dup 1) (match_dup 2) (match_dup 4)] + UNSPEC_COMPLEX_F_C_MA))]) + (define_insn "___mask" [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") (vec_merge:VF_AVX512FP16VL diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c b/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c new file mode 100644 index 00000000000..2dfd369e785 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512fp16-complex-fma.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512fp16 -O2 -Ofast" } */ +/* { dg-final { scan-assembler-times "vfmaddcph\[ +\\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+( +?:\n|\[ \\t\]+#)" 2 } } */ +/* { dg-final { scan-assembler-not "vaddph\[ +\\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+( +?:\n|\[ \\t\]+#)"} } */ +/* { dg-final { scan-assembler-not "vfmulcph\[ +\\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+( +?:\n|\[ \\t\]+#)"} } */ +/* { dg-final { scan-assembler-times "vfcmaddcph\[ +\\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+( +?:\n|\[ \\t\]+#)" 2 } } */ + +#include +volatile __m512h x1, x2, res, a, b; +void extern