From patchwork Fri Nov 5 07:09:34 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: 47091 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 7829E385803A for ; Fri, 5 Nov 2021 07:10:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7829E385803A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1636096210; bh=wCggXkMhL2tt9sjXltoY+C4lEboklAuDfGAC4G1luEc=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=jSg2awTQSkesE+3myKtMgkqCw4B5fky894C5skXHJ6NGyUtlFTiZK9nk+s9zRL6px v9HchG5FZCmLwlsp+ywTEqbO3xbf5H64EyV7+OlhlFMZ23Oh/WDU1OAh0EMIMmqlXV ePFSGIlFq9+nQaMAjSO+7jmPfo4JiVMiKk8Wg5U8= 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 BDFC73857C5D for ; Fri, 5 Nov 2021 07:09:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BDFC73857C5D X-IronPort-AV: E=McAfee;i="6200,9189,10158"; a="212601628" X-IronPort-AV: E=Sophos;i="5.87,210,1631602800"; d="scan'208";a="212601628" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Nov 2021 00:09:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,210,1631602800"; d="scan'208";a="501846009" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga008.jf.intel.com with ESMTP; 05 Nov 2021 00:09:37 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 5 Nov 2021 00:09:36 -0700 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 5 Nov 2021 00:09:36 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Fri, 5 Nov 2021 00:09:36 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.102) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Fri, 5 Nov 2021 00:09:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j/SMzoVp/9QnzdNoNjgnYrcpOSBlgGW64baHWH2X1ETxplH1BBQuWHaJc1SF+ZN2JiAMrx6K8zS8Ifhrt//nn1I/YJQZ3fJPt2fbnkSFwVyvxbon+p4eWIAG2z0/CN5Dyw1igmZM4f46wXYGTMzXBistJcBVZWrg3fz9EWt94rohwkNEUSUNuuQwu+w+LYZfVbewz7LflJZEoKNBgvjjZH7rPz76bYbuuZgalQKy2SpKu1oeDyOxGGFL8/HpbkMY9JXpPtmFa53IXmFOJFJGMdA0CLPg3XAQFhshPTnsKMx+XcZjNnwVE7OXFVzLK0ylvgr0Y75VQgL19exybZVJtw== 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=wCggXkMhL2tt9sjXltoY+C4lEboklAuDfGAC4G1luEc=; b=nXUW74o8sD+WMEq6T+vRMjTII/1shBAkhuQizbynhE3OrPQZUBajHQ6uKdekETAU5w4D8fht/gyGMz5tIU7f8aGyUGLJ2JvM93Ksj1KsWtVa6FWOYbrAvclnvVFUf91aegN0tZKlyVGFNZ48GA5qzca5uZY+PAJ28LyUF3lPZzOKrZkIyGMeCVBbiRGklKdXobngQq4zcyxF/CDRxcVMSprIdVhOXxbBbmrqDI2UkPVTj+MGIuiQYDG/2OeoR/tOtmBKaty737yP77wF562g+XApPDTQ6zozYJH92QIGH/HhCG+GXYAIFcRf5n3BwFkfxfunXvsp5j9z4KwEI2+vQw== 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 DM8PR11MB5702.namprd11.prod.outlook.com (2603:10b6:8:21::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.13; Fri, 5 Nov 2021 07:09:35 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6024:2ac4:7bf1:173]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6024:2ac4:7bf1:173%8]) with mapi id 15.20.4669.013; Fri, 5 Nov 2021 07:09:35 +0000 To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] i386: Support complex fma/conj_fma for _Float16. Thread-Topic: [PATCH] i386: Support complex fma/conj_fma for _Float16. Thread-Index: AdfSE9c70J9JwetxQrmW/cZ7lcZfRg== Date: Fri, 5 Nov 2021 07:09:34 +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: 067dfc42-b465-4bc6-f7f2-08d9a02b3904 x-ms-traffictypediagnostic: DM8PR11MB5702: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2958; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Q6F3oCGLjaoibWeuxxFS7sZlsfJVEc4fGkoTJgfqKL1y3KZdznYZODak+in2szWAQIu0wqVnSUtNFfXf72crenkQTpIscaHYvgB4wMOBLgQL3FyvtWTNWrbMQul87EYqdeeEjjyuesJOBjoLVErHSjZb5kgRIMVgnS5fDGt3imoDg2wgh15HGvjMIs2rsXKIDtCbaLVkqoZJOUcoZvCgN5LEJtu1gMmVwQCK7m6/maiLCOXIKfg1tQvrEgb+kHnOMTXRI8UY/NqQ8SlfUujOKZfZapbKmfrB7hwWraH9L8yQYra7165cZn4QAwwPa7fNw4YD3joynF1ObpAfqJOuD5ENpdA6sr5o/IEWFmDPXFOslzuhArdq0DqsxMZkQiqdYwPPqurPqbp4AnPalc5XMQDo44JmgBeBJnn/y6yXRuLzaiKtmNZQKRoIQc3nJaHBPvhFEq/EyEayj4CXnzho5M+nrD5K1qT1QnW//fAQ3jtkHeWRwXWMg32uhTBZ5k00jzxwvY1BbaPve7+wPEoHmgqRNjANxBmphm9emYl57BPDrpDozfLIaPXqcmfH2zAgAVutwEszKtiqsbDbgPbkYoiAjrO1xmxk7LnLKo6yTpyiafjg8sllbeP1JskDVAYrgRJCzL02ZHr7zxuXa4sHkDpcV+bNmVCsVRv6XRvZansU+FA6ZguGqJCNQUHCcPXdmq23TRame5DEMDueop+x0UW9qCbBbQdasmYIXrbC1loQFUGKIG3e2JCh5xjkmwwknk9MCkz9E8e44Df0W4GJArnBLHrMrlzPD8oxAhb2zbo= 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)(7696005)(82960400001)(33656002)(6916009)(71200400001)(66946007)(122000001)(54906003)(86362001)(316002)(9686003)(38100700002)(76116006)(4326008)(26005)(66476007)(55016002)(66446008)(64756008)(8676002)(66556008)(5660300002)(2906002)(508600001)(107886003)(186003)(52536014)(8936002)(38070700005)(6506007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: PUNVv0jzOhdxHQc2ueWwVZYp1/ADKYzJ7UbDYpQz5T6Gm/y1E5Muzb63+C7gZ9uD5aCPg/hj9UHakmLugmTO9YM2IAlIVLoh5KPGmxsgO/CLRDXp6RoH/3dkaZYShdxiAHSk3uq06HIBwl08sht4fNnGQX5M0q6OWuhcRvAfV0+90d3o/fqtqdn4MqSHGv9Wwv3VR6JZSU5jWIqxXOH2woOAGqo0h42GAfsCDSrvau6MomUx7SvaQSHE3Wue7qmhky/h7E17SwlfbvWXublxcMzqlPblbnjc7ocMFxTN4Mhp2EnqRGdaBy6V+4uZaWPoYlc//E0RvU7JEDCTD1fRq83sHjRBW1ITa+6LIEeU8ROpnxLYKtKI/Sgt2coi3aJGyCBTeajTqxpszYKwF7lJ/bzwGTa5COA1p0PNUiY9I4XLoeDQhocIPO/iI8+g+1NqCB88yJqQH9m5q1vm1fQ8WZGc3qjv77+YYj2nf2eCNZ7yHjOpdUv5YWFH60i7Xl6fQB1BfDEwT3Cc+Nki8jX+rqeTvyd0z6IZolPLOWHlLyvbJBijlZlCfu9nMUZlGvAPBvONwKE6wDegQi56jAEESm7JEOxUEFvhh+yfyn14Pd2cEsa+8o0Jux8ZCe+adDZLEfq1vy45+Wit9bIAULrGkBmRio+vJc/yDEZZoEuFMcifBKJCzWu2jYb3ov5Izz9nwjh5dAP8aPhOLyZ3mrF3blmDXapsAQJj56nf34WTZjAtE/9hXKI6iJeTBpgpQWy6tBceldC6JALA686xtk99J4MyMAffuypFQ7q6AjLbfh+ozWM7kDVeaERbeHm6pXaRiFZWRFlEda/E5ynlJ+O60IP6KK0pC6L/daHN8PpVLZ1dLbGD+MFbiz457ZsR1FX+CrFc3FYDrjGWrS0AHdPqo34aeWzGgu5HVoDmZbgoZnxtpuO6LHfSb5YBNQ3QSlgVsLSEWks2DkRq3LkFVFPD6vmUVGbJu8FfH04iVSyqr6RYQdMdakylo1Edieqb6GEPlnhkhqOaVVF8xGm2SoHnhY8jA4NJYzOm6MjCfBqQYNbZ6GyAOPyOEnsRHfgKUhfzGuOzntyj4vMB5/qAm8c2OW6Ls+KPxzbA4ecJY/Z6fNanGvSOH84DtkstNWtVuCO1u1MIAsWdtsy6U7YSpWDJpk6GkSYYdoxlN9mPuWs+nalFNURG2AeULLia1M/Wi+amP+yxWzU0fCJKgCHw27PzOMzhTyR6KRi+gL6s8s9FMCIsYVF+sQId215GlI4NHfstxK0kX7umY3IvztgIoOiIdGmQS0bbbK9391soLD/oFAQxL/68q13HEvIsnnNDMXhVIgOj6dniXvjl2ue8uvJilmnFw+M4WWaENkjVR884B0e64aS5c1sv+l5TvVuDMHMNWzcFtojBHZcCQ/gps+7vpyvtRAgcIHAjgJMHUfIN/OQV9hYovG5KF4boSenQkvv5iHQa26bL89YaC/HVsVuL+cZYSF7hulO9UzV7D3nsVcu0rkrx9/Id7534iJUzVAG/8atu/Zv+nEFZFy6jUgDjfgDExU0NK9shByU3HpQ+2kkM9TVrXuNH3O7lo3UXYOpI/tfEHiHHIqZ55QGsogbuELGO+YmRohNf8YcbUcnbvVM= 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: 067dfc42-b465-4bc6-f7f2-08d9a02b3904 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2021 07:09:34.9364 (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: 1An+SirSnfb7AUnawxoRIIyTVZkPOHV8I4Q1cyy2fr3HNZb8S+5gAm9DxoNw5ahqq6+91xIVby2HXyGjskM9hA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5702 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 cmla_optab, cmul_optab, cmla_conj_optab, cmul_conj_optab for vector _Float16. Ok for master? gcc/ChangeLog: * config/i386/sse.md (cmul3): add new define_expand. (cmla4): Likewise gcc/testsuite/ChangeLog: * gcc.target/i386/avx512fp16-vector-complex-float.c: New test. --- gcc/config/i386/sse.md | 23 +++++++++++ .../i386/avx512fp16-vector-complex-float.c | 40 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c -- 2.18.1 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0a7f5b178f9..8d3fef0a31a 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -5922,6 +5922,12 @@ (UNSPEC_COMPLEX_FMUL "fmulc") (UNSPEC_COMPLEX_FCMUL "fcmulc")]) +(define_int_attr conj_op + [(UNSPEC_COMPLEX_FMA "") + (UNSPEC_COMPLEX_FCMA "_conj") + (UNSPEC_COMPLEX_FMUL "") + (UNSPEC_COMPLEX_FCMUL "_conj")]) + (define_mode_attr complexmove [(V32HF "avx512f_loadv16sf") (V16HF "avx512vl_loadv8sf") @@ -6003,6 +6009,15 @@ DONE; }) +(define_expand "cmla4" + [(set (match_operand:VF_AVX512FP16VL 0 "register_operand") + (unspec:VF_AVX512FP16VL + [(match_operand:VF_AVX512FP16VL 1 "vector_operand") + (match_operand:VF_AVX512FP16VL 2 "vector_operand") + (match_operand:VF_AVX512FP16VL 3 "vector_operand")] + UNSPEC_COMPLEX_F_C_MA))] + "TARGET_AVX512FP16") + (define_insn "fma__" [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") (unspec:VF_AVX512FP16VL @@ -6084,6 +6099,14 @@ [(set_attr "type" "ssemuladd") (set_attr "mode" "")]) +(define_expand "cmul3" + [(set (match_operand:VF_AVX512FP16VL 0 "register_operand") + (unspec:VF_AVX512FP16VL + [(match_operand:VF_AVX512FP16VL 1 "vector_operand") + (match_operand:VF_AVX512FP16VL 2 "vector_operand")] + UNSPEC_COMPLEX_F_C_MUL))] + "TARGET_AVX512FP16") + (define_insn "__" [(set (match_operand:VF_AVX512FP16VL 0 "register_operand" "=&v") (unspec:VF_AVX512FP16VL diff --git a/gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c b/gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c new file mode 100644 index 00000000000..bcb957f0de0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512fp16-vector-complex-float.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512fp16 -mavx512vl" } */ +/* { dg-final { scan-assembler-times "vfmaddcph\[ \\t\]" 1 } } */ +/* { dg-final { scan-assembler-not "vfmadd\[123]*ph\[ \\t\]"} } */ +/* { dg-final { scan-assembler-not "vfmadd\[123]*sh\[ \\t\]"} } */ +/* { dg-final { scan-assembler-times "vfcmaddcph\[ \\t\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfmulcph\[ \\t\]" 1 } } */ +/* { dg-final { scan-assembler-times "vfcmulcph\[ \\t\]" 1 } } */ + +#include +#define TYPE _Float16 +#define N 16 + +void fma0 (_Complex TYPE *a, _Complex TYPE *b, + _Complex TYPE *c) +{ + for (int i = 0; i < N; i++) + c[i] += a[i] * b[i]; +} + +void fmaconj (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], + _Complex TYPE c[restrict N]) +{ + for (int i = 0; i < N; i++) + c[i] += a[i] * ~b[i]; +} + +void fmul (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], + _Complex TYPE c[restrict N]) +{ + for (int i = 0; i < N; i++) + c[i] = a[i] * b[i]; +} + +void fmulconj (_Complex TYPE a[restrict N], _Complex TYPE b[restrict N], + _Complex TYPE c[restrict N]) +{ + for (int i = 0; i < N; i++) + c[i] = a[i] * ~b[i]; +}