Message ID | DM4PR11MB548726F51948DD72BB8532B8EC499@DM4PR11MB5487.namprd11.prod.outlook.com |
---|---|
State | New, archived |
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5044:0:0:0:0:0 with SMTP id h4csp94107wrt; Wed, 14 Sep 2022 20:37:16 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5c2Ik4g6S1FiQYkLwxRjpih0bWdIWkb8mllM78GZ35opDU238rb/1rXMHpGwQc+OlTQ0P8 X-Received: by 2002:a17:907:9495:b0:780:6ace:7a97 with SMTP id dm21-20020a170907949500b007806ace7a97mr72693ejc.123.1663213036765; Wed, 14 Sep 2022 20:37:16 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id y24-20020a056402171800b00452b762b5dasi3280959edu.571.2022.09.14.20.37.16 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 20:37:16 -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="Sp4HyE+/"; arc=fail (signature failed); 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 28DD7384D154 for <ouuuleilei@gmail.com>; Thu, 15 Sep 2022 03:37:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 28DD7384D154 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1663213034; bh=44kweO2QiuC7FY1vus2WlbV495nRRPNpt6lgpvUtgZ0=; h=To:Subject:Date:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Sp4HyE+/tmMkM3FgFkjACYP1XPHci/pUeGkuIGfRR/KM40Vee2QO7khUhEhtojt24 iwlxApCwHW+BIVno6ik4fx+8Jlq0MzgbzfJJkipKbFP284hmC3Q/Q/F58EWHpD2nu8 Cq/hTl1CJZ7qvKYbWoLeuZwlOA+hqY6eEkYDRdbY= 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 B38EC385802A for <gcc-patches@gcc.gnu.org>; Thu, 15 Sep 2022 03:36:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B38EC385802A X-IronPort-AV: E=McAfee;i="6500,9779,10470"; a="278987202" X-IronPort-AV: E=Sophos;i="5.93,316,1654585200"; d="scan'208";a="278987202" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 20:36:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,316,1654585200"; d="scan'208";a="685557610" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga004.fm.intel.com with ESMTP; 14 Sep 2022 20:36:27 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 14 Sep 2022 20:36:27 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Wed, 14 Sep 2022 20:36:27 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.46) 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.2375.31; Wed, 14 Sep 2022 20:36:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IbD6j2Ls1ib4ZtVVJj58k+TORpzX61rrHW5LH+/lISz/HvnWuiXf1rVEazYWZBFaEAplGBBJ8Iw19nHeOeBCqbNa8nnjgogfrIp+4mD20dZHWbijoiPyhWjOkUpK3tUSbyKUI6rvws1TjM43JbURNBLPDavzRzxL58NnZpuCXQYHPFvWMjxw6bwa+6gY6aOb7nfLTsaSTneWLO2rKHHyCJBK3e/9ASaj19pgTMvfx5TU2XE/vkl40N1bOWnpnAkJRb7Exw/mcf3LiELdAmf4ak6ctLgEVZJJlNH9tuPRbLbhtXbvCejSxugCaQ8jryRTKTGCo6nMCG053LSHjEqPQg== 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=44kweO2QiuC7FY1vus2WlbV495nRRPNpt6lgpvUtgZ0=; b=USTOjR/PsV+VeZCOgkXZxvys1ED/eOuXEoXf2SK+iEUn1NH+zOBUI3sAa3Pl3L0pnjWR9lBfhksi3rFPWMiQaCcFgUSLBXGWoZuKdcb5pUWHP1LkaM00xyTOPrNuOqWGxAaCxzytm7GPJxJpAnOLmYd+Qu21uPboA+u15knjuZhQdIzcOwkqspH6CddJBCa0epZHP7LKNMTH+QKZ8Jfv52wkpy0m9StAel45pEIUzw3ySnM+bkrbajq60Txdy/XoxSk+C4ZYg2iy6H5zOuZjPq9aG257+B9HHc3DGdNN1twbWkpC1FPabEaXqiva69eHIk5YrQZr0tl5Dpt2mO8PWA== 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 MN0PR11MB6279.namprd11.prod.outlook.com (2603:10b6:208:3c1::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Thu, 15 Sep 2022 03:36:20 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::1cf5:eb50:5eb:a1c3]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::1cf5:eb50:5eb:a1c3%9]) with mapi id 15.20.5612.022; Thu, 15 Sep 2022 03:36:20 +0000 To: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>, "Liu, Hongtao" <hongtao.liu@intel.com> Subject: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] Thread-Topic: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] Thread-Index: AQHYyLOVa+NTwGXhmEahS6IvczocCa3f1dcQ Date: Thu, 15 Sep 2022 03:36:19 +0000 Message-ID: <DM4PR11MB548726F51948DD72BB8532B8EC499@DM4PR11MB5487.namprd11.prod.outlook.com> References: <20220915033043.3484071-1-lingling.kong@intel.com> In-Reply-To: <20220915033043.3484071-1-lingling.kong@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.500.17 dlp-reaction: no-action x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5487:EE_|MN0PR11MB6279:EE_ x-ms-office365-filtering-correlation-id: 1197aede-d4fb-42a9-3a70-08da96cb7458 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hBDG9047rMbdG+i6gHchrVH3OlxJLoJDmajszRdjCZnYH1YimlZbqb0EnuDIt7UAXEZOjtOrFBpuP0iGNXbOrW0zY4TcZZdeBGmUG7vsH8pQuUksUZcdhzAmA91+RgoRe4Ypw7Q80Z7RMkoKLHEi6MtDoQxu0jlzpp8zudxHTesz7Tjc7+TJioVOxQ4/ha/qN7K1B9MxxO5p+GgmVHDKAOizMRiIIxTOFqAL/j8OBFZ/cr1IA/yTxKCtjO7+ruzUz6q817IFSUWw22fP5W9fhJJQxRIRdjoW8k5+I9VeckCENxI0WjuXOC9yt3cTQRBk8W/XdbCQSZPqQwtdrKTIbAucPBzhznZUBG7gxZIp1ktCuQCj9OEydlGXGPsgW7D7TbSdnkmRDPQ4LltqEW9bgeyyYQEd9Zo9GNvqkmnWaKj9Vky/OzGvFtRbe2feS8nium3Ro32um9URi1e0VmNHCp/FUHzzjpG20lVIigtrdgzyVkc3AjvZjGbPyiuOUuNErK1rJ8yh2v07AToLsx1KmL+o2hePE72XARmtqRlVhtFS3v2NtQ2F6iTfpbdCzv2vTmJUFyiOQhRpWg6eR9UpCATA9XGrUT04OQzdF+/eLXENg0vbP2kHOMwNcU9G2zgHkadwd0bSN3OJeGUajf51Cpk9Nm4TDdhX3q8q8UvQfnIHX896Wp0qypPrV/J7xDO6ed9sk/w5WHfguV04CNnr/Ct051MsRW4CGSmI0mN7ASkHeV/D/i3+BKXB9sc5KecHI5RtR7RJYe1+lpNIg1IBmfvkafupB8UH8mPCGPOnUWU= 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:(13230022)(39860400002)(366004)(346002)(396003)(136003)(376002)(451199015)(38070700005)(6506007)(9686003)(84970400001)(33656002)(66476007)(66556008)(122000001)(2906002)(41300700001)(52536014)(82960400001)(38100700002)(478600001)(26005)(7696005)(64756008)(55016003)(86362001)(66446008)(76116006)(66946007)(71200400001)(8936002)(8676002)(5660300002)(6636002)(110136005)(186003)(316002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: taY5iI7/TsYMRAnq/KPQ5fnjvUxXY4wuvGhVmZC6HoSIp4BKAzA2Ok/O3wWqk19dHNKmJuYwLsNupdiv3Y7G0aq1jWGZpYvZljM0769U6hD12bbL1dPTkiGDarbonDZDMggD0hHdJcB6rNJ4z5WDa8TxUvOz38jh2Y0Gs9y4K92f5TttHCJ/69DGEpHd8vOD4m9O5Zjh52VnnqukMZTGGWlb3+vR7c5NGlrYudQ8/3uvfjYsYpoDSrBUd8Ipr+jj5OCL/Y7zpZD6LMMq3jQNRzkF5bvSTY7fgt4uZ0W4+/mE9wujb1+QBz9ooU+dSrSyNdHaNwmURxTV673niUtcx/N4tgwrEp6ybUIbhobEti/aCw0fjnE6tKcWRF6gboBhE8Nw0Buw1R8VUnVwHQA785rsUqnd3CPATZq5SZzSeEPD7/9UwTks9zynF1UhU6Aq4h3yv2yygTh2PGB3Zko6M9eaW1GxRI9C2gXBuB9GJGhTouac8XJPOAJ5F9ArE1XDPVG078E1jU3E6yDJsNccE+ecYdLis6D0dAM1ae4wsFdlOI+q9CEdtZaO86VCMpLeeRKYfPDGyIykKkXGF9w3/c0Vnap/7tblL5b78JKS5lcde5wINQLD/ginT0xqtmQQfPBUqjou+ewGqG6VVswj6j+w7F1E02EviKkwOwx9Ma7OT3jEtY5FKxJc9oENkpTFU0qH8Q/zBr2KYvtmSiPf3p6OjYiK2yczOGIBC5AdURE9AFpOGq+FhSm16j+cFzuf7OWgTBc+OxVsNFqdtw0+FcEsFZiBQT0PPVeK732oW5JX4hBu3DuZEM+5QpXglkD04eIPbiyslUHz2Y6XylrSJL/B4WfKcvB2yAOwIuA41b7oxkWQruJblDP5X3+5l2KyMuQ/LmbeHb0L+eoe/+uc65YMzN/09RZroJzZKIEwEJbR8ZEHbS7eHa2IVzr1iu8awVdP5Gg1b1fPlbjn4czL+NBoIUrHgsjE1JFWPPYNxp8fcLPOcmQ5GJcgt7mLUawxZxEc/s9HgdIrhNp5/jC5dMJlY4gBrx9yFtvu0X8lE+ApuOs32HTLCtvF4qbnWv5IByKcuWeQ02J1cLYt3Q7+18vAic4VXaVmQFeJZeYu7hr/CS9DdzFsgueVPYYsdtSk+XTgq28b9pbnDwESaDSTuuQOx4JNtNNA1YSAFfiR1Z5dw7dOw8XJ2HgNa0ny+HGlBigrjxTlbFtqwe9hBKVtwj+XDNusswVOHO4S7wio5nBGo5GOZBexOz5H9KegRpd6ZxQG+8fIpVFIAZY0D5g/4QmVRDB0n5lIkWGIq2at9YHR4CAozoMBRbuY5JVcSa46RaS6m4pIbLdKlTZKB2QSH0ep6KgTGqOjr6BlMHzQ6/gphjGXHfTEGBZ1I6iPmfyBh6B7WHykxHF213WKBs3Iw9W52J1B5BrmOPF8oNgoQLdnL1TBpvDHy9AD5hbdEkhBwwRLKPyNNTroDk+nt3zKufDer6JcP2I1AGyehy7vVVUZgnK3AQXdlfjWLyekhGCJ17uDan5u6eQRJJJDPOXGOLImFX4MdGJhCFJ1LOUu3NUe1wSbicrrD8PBdF6UbdP4 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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: 1197aede-d4fb-42a9-3a70-08da96cb7458 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2022 03:36:20.0344 (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: TCOsxA+O88b4VQBN45AzeBLsXn6i743nYWV9/c9TCQTnsmHBqA/lRqya752iTF2vJm5sURZ+hLybQJvi+stWpw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR11MB6279 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_NONE, 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> From: "Kong, Lingling via Gcc-patches" <gcc-patches@gcc.gnu.org> Reply-To: "Kong, Lingling" <lingling.kong@intel.com> Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1744005273050799686?= X-GMAIL-MSGID: =?utf-8?q?1744005273050799686?= |
Series |
i386: Fixed vec_init_dup_v16bf [PR106887]
|
|
Commit Message
Li, Pan2 via Gcc-patches
Sept. 15, 2022, 3:36 a.m. UTC
Hi The patch is to fix vec_init_dup_v16bf, add correct handle for v16bf mode in ix86_expand_vector_init_duplicate. Add testcase with sse2 without avx2. OK for master? gcc/ChangeLog: PR target/106887 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): Fixed V16BF mode case. gcc/testsuite/ChangeLog: PR target/106887 * gcc.target/i386/vect-bfloat16-2c.c: New test. --- gcc/config/i386/i386-expand.cc | 1 + .../gcc.target/i386/vect-bfloat16-2c.c | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c
Comments
On Thu, Sep 15, 2022 at 11:36 AM Kong, Lingling via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Hi > > The patch is to fix vec_init_dup_v16bf, add correct handle for v16bf mode in ix86_expand_vector_init_duplicate. > Add testcase with sse2 without avx2. > > OK for master? > > gcc/ChangeLog: > > PR target/106887 > * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): > Fixed V16BF mode case. > > gcc/testsuite/ChangeLog: > > PR target/106887 > * gcc.target/i386/vect-bfloat16-2c.c: New test. > --- > gcc/config/i386/i386-expand.cc | 1 + > .../gcc.target/i386/vect-bfloat16-2c.c | 76 +++++++++++++++++++ > 2 files changed, 77 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index d7b49c99dc8..9451c561489 100644 > --- a/gcc/config/i386/i386-expand.cc > +++ b/gcc/config/i386/i386-expand.cc > @@ -15111,6 +15111,7 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, machine_mode mode, > { > machine_mode hvmode = (mode == V16HImode ? V8HImode > : mode == V16HFmode ? V8HFmode > + : mode == V16BFmode ? V8BFmode Can it be written as switch case? > : V16QImode); > rtx x = gen_reg_rtx (hvmode); > > diff --git a/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > new file mode 100644 > index 00000000000..bead94e46a1 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > @@ -0,0 +1,76 @@ > +/* { dg-do compile } */ > +/* { dg-options "-mf16c -msse2 -mno-avx2 -O2" } */ > + > +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); typedef > +__bf16 v16bf __attribute__ ((__vector_size__ (32))); > + > +#define VEC_EXTRACT(V,S,IDX) \ > + S \ > + __attribute__((noipa)) \ > + vec_extract_##V##_##IDX (V v) \ > + { \ > + return v[IDX]; \ > + } > + > +#define VEC_SET(V,S,IDX) \ > + V \ > + __attribute__((noipa)) \ > + vec_set_##V##_##IDX (V v, S s) \ > + { \ > + v[IDX] = s; \ > + return v; \ > + } > + > +v8bf > +vec_init_v8bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8) { > + return __extension__ (v8bf) {a1, a2, a3, a4, a5, a6, a7, a8}; } > + > +v16bf > +vec_init_v16bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8, > + __bf16 a9, __bf16 a10, __bf16 a11, __bf16 a12, > + __bf16 a13, __bf16 a14, __bf16 a15, __bf16 a16) { > + return __extension__ (v16bf) {a1, a2, a3, a4, a5, a6, a7, a8, > + a9, a10, a11, a12, a13, a14, a15, a16}; } > + > +v8bf > +vec_init_dup_v8bf (__bf16 a1) > +{ > + return __extension__ (v8bf) {a1, a1, a1, a1, a1, a1, a1, a1}; } > + > +v16bf > +vec_init_dup_v16bf (__bf16 a1) > +{ > + return __extension__ (v16bf) {a1, a1, a1, a1, a1, a1, a1, a1, > + a1, a1, a1, a1, a1, a1, a1, a1}; > +} > + > +/* { dg-final { scan-assembler-times "vpunpcklwd" 12 } } */ > +/* { dg-final { scan-assembler-times "vpunpckldq" 6 } } */ > +/* { dg-final { scan-assembler-times "vpunpcklqdq" 3 } } */ > + > +VEC_EXTRACT (v8bf, __bf16, 0); > +VEC_EXTRACT (v8bf, __bf16, 4); > +VEC_EXTRACT (v16bf, __bf16, 0); > +VEC_EXTRACT (v16bf, __bf16, 3); > +VEC_EXTRACT (v16bf, __bf16, 8); > +VEC_EXTRACT (v16bf, __bf16, 15); > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$8" 1 } } */ > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$6" 1 } } */ > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$14" 1 } } */ > +/* { dg-final { scan-assembler-times "vextract" 4 } } */ > + > +VEC_SET (v8bf, __bf16, 4); > +VEC_SET (v16bf, __bf16, 3); > +VEC_SET (v16bf, __bf16, 8); > +VEC_SET (v16bf, __bf16, 15); > +/* { dg-final { scan-assembler-times "vpblendw" 3 { target { ! ia32 } } > +} } */ > + > +/* { dg-final { scan-assembler-times "vpinsrw" 30 { target ia32 } } } > +*/ > + > -- > 2.18.2 >
Hi, > > machine_mode hvmode = (mode == V16HImode ? V8HImode > > : mode == V16HFmode ? V8HFmode > > + : mode == V16BFmode ? V8BFmode > Can it be written as switch case? Sure, I fixed it in new patch. Thanks again for take a look. OK for master ? Thanks, Lingling > -----Original Message----- > From: Hongtao Liu <crazylht@gmail.com> > Sent: Thursday, September 15, 2022 11:46 AM > To: Kong, Lingling <lingling.kong@intel.com> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@intel.com> > Subject: Re: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] > > On Thu, Sep 15, 2022 at 11:36 AM Kong, Lingling via Gcc-patches <gcc- > patches@gcc.gnu.org> wrote: > > > > Hi > > > > The patch is to fix vec_init_dup_v16bf, add correct handle for v16bf mode in > ix86_expand_vector_init_duplicate. > > Add testcase with sse2 without avx2. > > > > OK for master? > > > > gcc/ChangeLog: > > > > PR target/106887 > > * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): > > Fixed V16BF mode case. > > > > gcc/testsuite/ChangeLog: > > > > PR target/106887 > > * gcc.target/i386/vect-bfloat16-2c.c: New test. > > --- > > gcc/config/i386/i386-expand.cc | 1 + > > .../gcc.target/i386/vect-bfloat16-2c.c | 76 +++++++++++++++++++ > > 2 files changed, 77 insertions(+) > > create mode 100644 gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > > > diff --git a/gcc/config/i386/i386-expand.cc > > b/gcc/config/i386/i386-expand.cc index d7b49c99dc8..9451c561489 100644 > > --- a/gcc/config/i386/i386-expand.cc > > +++ b/gcc/config/i386/i386-expand.cc > > @@ -15111,6 +15111,7 @@ ix86_expand_vector_init_duplicate (bool > mmx_ok, machine_mode mode, > > { > > machine_mode hvmode = (mode == V16HImode ? V8HImode > > : mode == V16HFmode ? V8HFmode > > + : mode == V16BFmode ? V8BFmode > Can it be written as switch case? > > : V16QImode); > > rtx x = gen_reg_rtx (hvmode); > > > > diff --git a/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > new file mode 100644 > > index 00000000000..bead94e46a1 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > @@ -0,0 +1,76 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-mf16c -msse2 -mno-avx2 -O2" } */ > > + > > +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); typedef > > +__bf16 v16bf __attribute__ ((__vector_size__ (32))); > > + > > +#define VEC_EXTRACT(V,S,IDX) \ > > + S \ > > + __attribute__((noipa)) \ > > + vec_extract_##V##_##IDX (V v) \ > > + { \ > > + return v[IDX]; \ > > + } > > + > > +#define VEC_SET(V,S,IDX) \ > > + V \ > > + __attribute__((noipa)) \ > > + vec_set_##V##_##IDX (V v, S s) \ > > + { \ > > + v[IDX] = s; \ > > + return v; \ > > + } > > + > > +v8bf > > +vec_init_v8bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8) { > > + return __extension__ (v8bf) {a1, a2, a3, a4, a5, a6, a7, a8}; } > > + > > +v16bf > > +vec_init_v16bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8, > > + __bf16 a9, __bf16 a10, __bf16 a11, __bf16 a12, > > + __bf16 a13, __bf16 a14, __bf16 a15, __bf16 a16) { > > + return __extension__ (v16bf) {a1, a2, a3, a4, a5, a6, a7, a8, > > + a9, a10, a11, a12, a13, a14, a15, > > +a16}; } > > + > > +v8bf > > +vec_init_dup_v8bf (__bf16 a1) > > +{ > > + return __extension__ (v8bf) {a1, a1, a1, a1, a1, a1, a1, a1}; } > > + > > +v16bf > > +vec_init_dup_v16bf (__bf16 a1) > > +{ > > + return __extension__ (v16bf) {a1, a1, a1, a1, a1, a1, a1, a1, > > + a1, a1, a1, a1, a1, a1, a1, a1}; } > > + > > +/* { dg-final { scan-assembler-times "vpunpcklwd" 12 } } */ > > +/* { dg-final { scan-assembler-times "vpunpckldq" 6 } } */ > > +/* { dg-final { scan-assembler-times "vpunpcklqdq" 3 } } */ > > + > > +VEC_EXTRACT (v8bf, __bf16, 0); > > +VEC_EXTRACT (v8bf, __bf16, 4); > > +VEC_EXTRACT (v16bf, __bf16, 0); > > +VEC_EXTRACT (v16bf, __bf16, 3); > > +VEC_EXTRACT (v16bf, __bf16, 8); > > +VEC_EXTRACT (v16bf, __bf16, 15); > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$8" 1 } } */ > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$6" 1 } } */ > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$14" 1 } } */ > > +/* { dg-final { scan-assembler-times "vextract" 4 } } */ > > + > > +VEC_SET (v8bf, __bf16, 4); > > +VEC_SET (v16bf, __bf16, 3); > > +VEC_SET (v16bf, __bf16, 8); > > +VEC_SET (v16bf, __bf16, 15); > > +/* { dg-final { scan-assembler-times "vpblendw" 3 { target { ! ia32 } > > +} } } */ > > + > > +/* { dg-final { scan-assembler-times "vpinsrw" 30 { target ia32 } } } > > +*/ > > + > > -- > > 2.18.2 > > > > > -- > BR, > Hongtao
> -----Original Message----- > From: Kong, Lingling <lingling.kong@intel.com> > Sent: Friday, September 16, 2022 3:40 PM > To: Hongtao Liu <crazylht@gmail.com> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@intel.com> > Subject: RE: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] > > Hi, > > > > machine_mode hvmode = (mode == V16HImode ? V8HImode > > > : mode == V16HFmode ? V8HFmode > > > + : mode == V16BFmode ? V8BFmode > > Can it be written as switch case? > Sure, I fixed it in new patch. Thanks again for take a look. > OK for master ? + switch (mode) + { + case V16HImode: + hvmode = V8HImode; + break; + case V16HFmode: + hvmode = V8HFmode; + break; + case V16BFmode: + hvmode = V8BFmode; + break; + case V32QImode: + hvmode = V16QImode; + break; + default: + gcc_unreachable (); + } > For the format, case aligns with {? Others LGTM. > Thanks, > Lingling > > > -----Original Message----- > > From: Hongtao Liu <crazylht@gmail.com> > > Sent: Thursday, September 15, 2022 11:46 AM > > To: Kong, Lingling <lingling.kong@intel.com> > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@intel.com> > > Subject: Re: [PATCH] i386: Fixed vec_init_dup_v16bf [PR106887] > > > > On Thu, Sep 15, 2022 at 11:36 AM Kong, Lingling via Gcc-patches <gcc- > > patches@gcc.gnu.org> wrote: > > > > > > Hi > > > > > > The patch is to fix vec_init_dup_v16bf, add correct handle for v16bf > > > mode in > > ix86_expand_vector_init_duplicate. > > > Add testcase with sse2 without avx2. > > > > > > OK for master? > > > > > > gcc/ChangeLog: > > > > > > PR target/106887 > > > * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate): > > > Fixed V16BF mode case. > > > > > > gcc/testsuite/ChangeLog: > > > > > > PR target/106887 > > > * gcc.target/i386/vect-bfloat16-2c.c: New test. > > > --- > > > gcc/config/i386/i386-expand.cc | 1 + > > > .../gcc.target/i386/vect-bfloat16-2c.c | 76 +++++++++++++++++++ > > > 2 files changed, 77 insertions(+) > > > create mode 100644 gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > > > > > diff --git a/gcc/config/i386/i386-expand.cc > > > b/gcc/config/i386/i386-expand.cc index d7b49c99dc8..9451c561489 > > > 100644 > > > --- a/gcc/config/i386/i386-expand.cc > > > +++ b/gcc/config/i386/i386-expand.cc > > > @@ -15111,6 +15111,7 @@ ix86_expand_vector_init_duplicate (bool > > mmx_ok, machine_mode mode, > > > { > > > machine_mode hvmode = (mode == V16HImode ? V8HImode > > > : mode == V16HFmode ? V8HFmode > > > + : mode == V16BFmode ? V8BFmode > > Can it be written as switch case? > > > : V16QImode); > > > rtx x = gen_reg_rtx (hvmode); > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > > b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > > new file mode 100644 > > > index 00000000000..bead94e46a1 > > > --- /dev/null > > > +++ b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c > > > @@ -0,0 +1,76 @@ > > > +/* { dg-do compile } */ > > > +/* { dg-options "-mf16c -msse2 -mno-avx2 -O2" } */ > > > + > > > +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); typedef > > > +__bf16 v16bf __attribute__ ((__vector_size__ (32))); > > > + > > > +#define VEC_EXTRACT(V,S,IDX) \ > > > + S \ > > > + __attribute__((noipa)) \ > > > + vec_extract_##V##_##IDX (V v) \ > > > + { \ > > > + return v[IDX]; \ > > > + } > > > + > > > +#define VEC_SET(V,S,IDX) \ > > > + V \ > > > + __attribute__((noipa)) \ > > > + vec_set_##V##_##IDX (V v, S s) \ > > > + { \ > > > + v[IDX] = s; \ > > > + return v; \ > > > + } > > > + > > > +v8bf > > > +vec_init_v8bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > > > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8) { > > > + return __extension__ (v8bf) {a1, a2, a3, a4, a5, a6, a7, a8}; } > > > + > > > +v16bf > > > +vec_init_v16bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, > > > + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8, > > > + __bf16 a9, __bf16 a10, __bf16 a11, __bf16 a12, > > > + __bf16 a13, __bf16 a14, __bf16 a15, __bf16 a16) { > > > + return __extension__ (v16bf) {a1, a2, a3, a4, a5, a6, a7, a8, > > > + a9, a10, a11, a12, a13, a14, a15, > > > +a16}; } > > > + > > > +v8bf > > > +vec_init_dup_v8bf (__bf16 a1) > > > +{ > > > + return __extension__ (v8bf) {a1, a1, a1, a1, a1, a1, a1, a1}; } > > > + > > > +v16bf > > > +vec_init_dup_v16bf (__bf16 a1) > > > +{ > > > + return __extension__ (v16bf) {a1, a1, a1, a1, a1, a1, a1, a1, > > > + a1, a1, a1, a1, a1, a1, a1, a1}; } > > > + > > > +/* { dg-final { scan-assembler-times "vpunpcklwd" 12 } } */ > > > +/* { dg-final { scan-assembler-times "vpunpckldq" 6 } } */ > > > +/* { dg-final { scan-assembler-times "vpunpcklqdq" 3 } } */ > > > + > > > +VEC_EXTRACT (v8bf, __bf16, 0); > > > +VEC_EXTRACT (v8bf, __bf16, 4); > > > +VEC_EXTRACT (v16bf, __bf16, 0); > > > +VEC_EXTRACT (v16bf, __bf16, 3); > > > +VEC_EXTRACT (v16bf, __bf16, 8); > > > +VEC_EXTRACT (v16bf, __bf16, 15); > > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$8" 1 } } */ > > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$6" 1 } } */ > > > +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$14" 1 } } > > > +*/ > > > +/* { dg-final { scan-assembler-times "vextract" 4 } } */ > > > + > > > +VEC_SET (v8bf, __bf16, 4); > > > +VEC_SET (v16bf, __bf16, 3); > > > +VEC_SET (v16bf, __bf16, 8); > > > +VEC_SET (v16bf, __bf16, 15); > > > +/* { dg-final { scan-assembler-times "vpblendw" 3 { target { ! ia32 > > > +} } } } */ > > > + > > > +/* { dg-final { scan-assembler-times "vpinsrw" 30 { target ia32 } } > > > +} */ > > > + > > > -- > > > 2.18.2 > > > > > > > > > -- > > BR, > > Hongtao
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index d7b49c99dc8..9451c561489 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -15111,6 +15111,7 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, machine_mode mode, { machine_mode hvmode = (mode == V16HImode ? V8HImode : mode == V16HFmode ? V8HFmode + : mode == V16BFmode ? V8BFmode : V16QImode); rtx x = gen_reg_rtx (hvmode); diff --git a/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c new file mode 100644 index 00000000000..bead94e46a1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c @@ -0,0 +1,76 @@ +/* { dg-do compile } */ +/* { dg-options "-mf16c -msse2 -mno-avx2 -O2" } */ + +typedef __bf16 v8bf __attribute__ ((__vector_size__ (16))); typedef +__bf16 v16bf __attribute__ ((__vector_size__ (32))); + +#define VEC_EXTRACT(V,S,IDX) \ + S \ + __attribute__((noipa)) \ + vec_extract_##V##_##IDX (V v) \ + { \ + return v[IDX]; \ + } + +#define VEC_SET(V,S,IDX) \ + V \ + __attribute__((noipa)) \ + vec_set_##V##_##IDX (V v, S s) \ + { \ + v[IDX] = s; \ + return v; \ + } + +v8bf +vec_init_v8bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8) { + return __extension__ (v8bf) {a1, a2, a3, a4, a5, a6, a7, a8}; } + +v16bf +vec_init_v16bf (__bf16 a1, __bf16 a2, __bf16 a3, __bf16 a4, + __bf16 a5, __bf16 a6, __bf16 a7, __bf16 a8, + __bf16 a9, __bf16 a10, __bf16 a11, __bf16 a12, + __bf16 a13, __bf16 a14, __bf16 a15, __bf16 a16) { + return __extension__ (v16bf) {a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16}; } + +v8bf +vec_init_dup_v8bf (__bf16 a1) +{ + return __extension__ (v8bf) {a1, a1, a1, a1, a1, a1, a1, a1}; } + +v16bf +vec_init_dup_v16bf (__bf16 a1) +{ + return __extension__ (v16bf) {a1, a1, a1, a1, a1, a1, a1, a1, + a1, a1, a1, a1, a1, a1, a1, a1}; +} + +/* { dg-final { scan-assembler-times "vpunpcklwd" 12 } } */ +/* { dg-final { scan-assembler-times "vpunpckldq" 6 } } */ +/* { dg-final { scan-assembler-times "vpunpcklqdq" 3 } } */ + +VEC_EXTRACT (v8bf, __bf16, 0); +VEC_EXTRACT (v8bf, __bf16, 4); +VEC_EXTRACT (v16bf, __bf16, 0); +VEC_EXTRACT (v16bf, __bf16, 3); +VEC_EXTRACT (v16bf, __bf16, 8); +VEC_EXTRACT (v16bf, __bf16, 15); +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$8" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$6" 1 } } */ +/* { dg-final { scan-assembler-times "vpsrldq\[\t ]*\\\$14" 1 } } */ +/* { dg-final { scan-assembler-times "vextract" 4 } } */ + +VEC_SET (v8bf, __bf16, 4); +VEC_SET (v16bf, __bf16, 3); +VEC_SET (v16bf, __bf16, 8); +VEC_SET (v16bf, __bf16, 15); +/* { dg-final { scan-assembler-times "vpblendw" 3 { target { ! ia32 } } +} } */ + +/* { dg-final { scan-assembler-times "vpinsrw" 30 { target ia32 } } } +*/ + -- 2.18.2