From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2053.outbound.protection.outlook.com [40.107.20.53]) by sourceware.org (Postfix) with ESMTPS id 9B1B43861010 for ; Wed, 26 May 2021 08:48:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9B1B43861010 Received: from AM6P192CA0082.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:8d::23) by AM9PR08MB7216.eurprd08.prod.outlook.com (2603:10a6:20b:3df::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20; Wed, 26 May 2021 08:48:48 +0000 Received: from AM5EUR03FT032.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8d:cafe::4b) by AM6P192CA0082.outlook.office365.com (2603:10a6:209:8d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Wed, 26 May 2021 08:48:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT032.mail.protection.outlook.com (10.152.16.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Wed, 26 May 2021 08:48:48 +0000 Received: ("Tessian outbound 0f1e4509c199:v92"); Wed, 26 May 2021 08:48:47 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8a20cc2f637b0bad X-CR-MTA-TID: 64aa7808 Received: from 0ced7d519385.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C7B6C24B-D553-432B-AE54-E38A3486AE46.1; Wed, 26 May 2021 08:48:41 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0ced7d519385.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 26 May 2021 08:48:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LkvEiqivEOO8uQikvV43Pu/BzwPSb7bGTXd+QmGVFgSFp1oVKpo3i765nsBllVx9/wMOoaCYdeLDGHy4kGqM7CmCYzTmgjTOWX+fMfS3uMwkLWIK9NqS/P53LdTjIM95h19T45aqrdaQvHAGGU064lfeZXjHApWxoGdCJPHXWdmTBRKtGzM3TTkXoIIf6f/8DVml0kmcPkdbCKUyDxJpG8Ra838TrxpSHLhHMdwe3irZqyyx00D8FOQDPty800bX+E6wK+vgtl36TBm/MJFzUsfXlZQWtYmFihwENdb5mSQ+UIfpSRGxNQGwftg79J8TxLDPFyBRr7uf098Y/YgT1Q== 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-SenderADCheck; bh=VLWvc9N1oIVdUY5gR3JLq5jZbxopO+EJT3rGJgWto5w=; b=aqDeymnVGdwpUBBBlb5aaWXYFL6ju9IT7LC6zjc9ZIib6f2JExBHjfjp39Iz2YNUuhEWiIVnzETybMXH3fJIrR3O5z3RnJQPY6JWgh2ClaKKQ8DNaDoje9a4Liw/kjBODXYRhsRtKoCFemPofl7Th8tGdwE4EchYDU34LoyrsP48MAV00CekzV7UH6hioACpBERa7+izPoZsPjssL4oypnQXveRLaybZxRuXL6MlOnjyWk7LeLMPe33S7L+5eaLDz6rDEOAvCP6Q3e6PG5XCfMl+UNi2CLqCqe12EElWUWF3N9d/PjMeUBxn17ExVily+60OH7q1yNvPREIqneohTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR08MB3438.eurprd08.prod.outlook.com (2603:10a6:803:82::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Wed, 26 May 2021 08:48:37 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f557:1fb2:62cc:5243]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::f557:1fb2:62cc:5243%9]) with mapi id 15.20.4150.027; Wed, 26 May 2021 08:48:37 +0000 From: Tamar Christina To: Richard Biener CC: nd , GCC Patches Subject: Re: [PATCH 4/4]middle-end: Add tests middle end generic tests for sign differing dotproduct. Thread-Topic: [PATCH 4/4]middle-end: Add tests middle end generic tests for sign differing dotproduct. Thread-Index: AQHXQdWl2GMA01eht0ml/Iq9yRCX9qr0eRuAgAEY2wCAAAH11A== Date: Wed, 26 May 2021 08:48:37 +0000 Message-ID: References: <20210505173947.GA24190@arm.com> , <11s2181-8856-30rq-26or-84q8o7qrr2o@fhfr.qr> In-Reply-To: <11s2181-8856-30rq-26or-84q8o7qrr2o@fhfr.qr> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.11.185.166] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: bcc34867-b84e-4a19-94cd-08d9202313ff x-ms-traffictypediagnostic: VI1PR08MB3438:|AM9PR08MB7216: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:5797;OLM:5797; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: +nDQr3Ln7G3YbMZDrW30LupAPgJMy7hOM6JnJ3RKlirfAjLFVYrpHysHXTQyrYvWOiUV56e0F1xyApu8u0tx9Ro0l3/TKBF7YAHkUmZ71Gr+Vee6iG5bYl2sdpZ8tP3gsqt1zsEaitWIWz8tkFNUSS7SmMTQ/VWbYhevUXiKzuVZQfYrZ4MlIEYmAGbyDyqqUQz0dMXemxcznB50smyjCnui6IWC/6aNKcQIu+2LIXnf/1/jd+L0tQXkT2k6rWbzRXiWloMykXQODbtKTvZhZCOn+RtvqvMjNUWE7aYqUJ3mBToD1g3VAVNWEmhkJlE3FqssrkzUpL8Puen/fuvXsz9To9l+9oT9wlABYOggi1T21kDStOck5lZdgjwUnU7Kr+UdFlNc6MAorpzboraUOe+bMH5ulbG+cHfv40Uy4roWRsC8p0yk8xL9NSRtuoLr6phU5SuBy82Z461C/1Xy/hDjwhn6L7aPFwTi0Um8yq3M3h5ryYSnmtekuujuP9Ph2cCeHm3Tql/1xd9d++utTREIgfSLcoIMVPAFUlmRvb1eikxZqsu3D6duWLRBQjR2N+2fBcxEJ/97kJVoYLXM7sta8q+8t0S7Dpy/EidqvkldYd8srsCcAjwv5yXy1gbynXDfOuXFWf8uz6VPaBKW8g== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(136003)(376002)(39850400004)(346002)(366004)(52536014)(5660300002)(66476007)(66946007)(66556008)(64756008)(76116006)(91956017)(33656002)(66446008)(9686003)(71200400001)(86362001)(2906002)(30864003)(83380400001)(186003)(6916009)(26005)(478600001)(4326008)(53546011)(6506007)(8936002)(54906003)(316002)(122000001)(38100700002)(7696005)(8676002)(55016002)(41533002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?EnnHSsziP1VCpXT0BSV+BnY5ziUzl7zajmYpm1GJD7Th88EzMO0AC9YhNU1x?= =?us-ascii?Q?OLgG8XoUx23lc+K8Z2JjkWJx3W0eORJyoH9GdnY/1k0/KgS/bFz8zq21pB0b?= =?us-ascii?Q?UpOSBMRs4eM5hU+ndMWWMJylqhTuRTpTw3jOvlb4Wl7mKsAyVUHo5K26Neld?= =?us-ascii?Q?kCRE2rW1bVBlEXa41XXS2YAYRcvLIjLal1jXwdXoHjRF7rNMvoPoflB+OMNk?= =?us-ascii?Q?LZbvDtaALzcXgZisMg+TDHOh9UqxgnTOqYrxaEKJfxIYMpMOv5Wnrhud0Jec?= =?us-ascii?Q?ZgPDIhLjX/1Xc5zV2Wo4eW3sqCp2xysNBCR3ErN2G2SRRoAWnG7x+Fg/5N7I?= =?us-ascii?Q?nxU2EwepP2AstdbOzehKdtkPeEAVrfdopAfbBTN57tw+ddgfOfLEwEA1H+0Q?= =?us-ascii?Q?vikMOJ41JFcnhAlzqatgTKwTbEgn3OZKBwAGP8o7A9FXDXzohVkFzEffJQk9?= =?us-ascii?Q?LVkqaAwWWqAwq64xei94gnDZY0RriNMFCJCHN2oadhyjcxu81yDk14+Y9n+9?= =?us-ascii?Q?b3+/xGe7R85DbXx+Lhk4xh4iG1jXwdgzyXJWCutRmAHH1Sgg48C7QkknosC3?= =?us-ascii?Q?3Y0LnlvmfpCTrTrOk1F8limZmhH5S9+9UFTLBseS7OUmnOsRO3FL0UZUjK8K?= =?us-ascii?Q?gAji9h1jUXILIjKo6hrXwgkujt3F/EhE9LMYbJdCiPQ0sOBFzY1wmuGA2wdB?= =?us-ascii?Q?5WdOUnze9b44nruvTLn+lQ/Ih4kyVTgflcXfn0y4YJ9yB1Ulr8xnPdFVVCow?= =?us-ascii?Q?vMI5qzy1p/NmrJN7eXISASJ9+pFE195uF6LWWsKcmfJq23G746Q2Rvs/MarY?= =?us-ascii?Q?EjTZ7M4W0W9FX6vpky+IjFkl6SI2DdBz4z3hiyY2rM6XZ9fHbRcRZ5JlB1Bp?= =?us-ascii?Q?LZ0GamHlA4Jwx8jYJTRrzkerAC0C8J3v8dJsW505CDsU2QPW9yTtHnPaBZ1q?= =?us-ascii?Q?OUQUQlWRkPYJbr9G8FY/BM7PToEr2AHwlRWIludqL3T2ER1ryBXG9OCX+HOC?= =?us-ascii?Q?Z1uJ3upOl1SirxYQ5y/Jp2ZrNdHtPt/eG5iCHohGpR82aWhQv/cXKI7lnHi5?= =?us-ascii?Q?Er//z0/NHlm/pbqZNA4EyXfA3k6EA2T4+5LZHbhoNaZrPRnwu2ucxHyT+LXW?= =?us-ascii?Q?jyMwW8s7nEmEgvCAMC46vG2Vw6hlEwFKD9gHxETEvnwq4/eL/LBq8ybA/kAj?= =?us-ascii?Q?xBPO9K6sSjlCVbIcBw6VESQ18biQHdniDPjHM7YkWyaWVfFNXqsNK+miNxGa?= =?us-ascii?Q?7U5qRcFHE3YhcjIvdCFb0dz38myvkrAok0cYMOEAkYv6261I9Mk6TtHIecXC?= =?us-ascii?Q?/2FT4AhppqNRcI6adHoevaCu?= x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3438 Original-Authentication-Results: suse.de; dkim=none (message not signed) header.d=none;suse.de; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: de22ee96-b593-46fa-777b-08d920230dd7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: O6SynQ4t8Nepc9ABk3m7Bo1FoEewpfICsziSbna/qQc1xUCtOi9dMXH2DCqpJF1EatJSuCfKfoSrLNIhDqNnNLCHdhFMek4aZoTRxmtCdTFvfco4V+bxQUVKXbgdj63/TT1vsTlmfiazh6Wa/TQUD34zjPgeUFsKQOQX76f/m+KR+dBxiob2tn+hSz2ra7HI4ihnL3BUJrkewSR2oPhgMrTdJuXjnuB2mDvcK3oAFb37AGLQ+knHhmDJFqhlC86veERaHJhoIDXkoCKkoY3kCTxmUaAStmQJc9FjZYlqF+goeiL6BfVALDo0lIr61VoGQxhXSlZGZfC9rH52nnORxEnC7vAQYAAYAPNAh7MbpB77O3MuVimU+4yVCYMhli1Sup5axDWXM1eDtJyKOL8P+iEDai+Ik6uniSGtek96qzAzjxjWWW2bye1GiqQ6gQRSLgAe8IqCZ1frSH6HFnCenZUhyOB/cMJDy8Ot4qsa2aaKQB6Yep5bcFPThQTrEE0hJzWPa1RX/dbOlNV9vizCw8r3vYpPDWgk6dQ6FicIIJUykH7zBt3fbIF0k6fiKuMUoZFNfaVXXuKoYXrGYowrkitjp8bWBorny3ofpsfdaBlYnH6DjH1xs69OOKw905guEKNMcev2cMnI7Nzm3FAySbVuAlM/gy72Vf1HO8NgXhDObJGV7r6lxT/0or/RxVmV X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(346002)(39850400004)(396003)(376002)(46966006)(36840700001)(86362001)(82310400003)(47076005)(33656002)(83380400001)(81166007)(478600001)(356005)(26005)(70586007)(30864003)(6862004)(7696005)(9686003)(55016002)(336012)(70206006)(186003)(316002)(54906003)(6506007)(53546011)(5660300002)(52536014)(8676002)(36860700001)(4326008)(8936002)(2906002)(82740400003)(41533002)(579004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2021 08:48:48.0267 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bcc34867-b84e-4a19-94cd-08d9202313ff X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB7216 X-Spam-Status: No, score=-14.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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-List-Received-Date: Wed, 26 May 2021 08:48:55 -0000 Think list got dropped on my last reply. Forwarding to archive the OK. ________________________________ From: Richard Biener Sent: Wednesday, May 26, 2021 9:40 AM To: Tamar Christina Cc: nd Subject: RE: [PATCH 4/4]middle-end: Add tests middle end generic tests for = sign differing dotproduct. On Tue, 25 May 2021, Tamar Christina wrote: > Hi All, > > Adding a few more tests > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > Ok for master? OK. > Thanks, > Tamar > > gcc/ChangeLog: > > * doc/sourcebuild.texi (arm_v8_2a_i8mm_neon_hw): Document. > > gcc/testsuite/ChangeLog: > > * lib/target-supports.exp > (check_effective_target_arm_v8_2a_imm8_neon_ok_nocache, > check_effective_target_arm_v8_2a_i8mm_neon_hw, > check_effective_target_vect_usdot_qi): New. > * gcc.dg/vect/vect-reduc-dot-9.c: New test. > * gcc.dg/vect/vect-reduc-dot-10.c: New test. > * gcc.dg/vect/vect-reduc-dot-11.c: New test. > * gcc.dg/vect/vect-reduc-dot-12.c: New test. > * gcc.dg/vect/vect-reduc-dot-13.c: New test. > * gcc.dg/vect/vect-reduc-dot-14.c: New test. > * gcc.dg/vect/vect-reduc-dot-15.c: New test. > * gcc.dg/vect/vect-reduc-dot-16.c: New test. > * gcc.dg/vect/vect-reduc-dot-17.c: New test. > * gcc.dg/vect/vect-reduc-dot-18.c: New test. > > > -----Original Message----- > > From: Gcc-patches On Behalf Of Tamar > > Christina via Gcc-patches > > Sent: Wednesday, May 5, 2021 6:40 PM > > To: gcc-patches@gcc.gnu.org > > Cc: nd ; rguenther@suse.de > > Subject: [PATCH 4/4]middle-end: Add tests middle end generic tests for = sign > > differing dotproduct. > > > > Hi All, > > > > This adds testcases to test for auto-vect detection of the new sign dif= fering > > dot product. > > > > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. > > > > Ok for master? > > > > Thanks, > > Tamar > > > > gcc/ChangeLog: > > > > * doc/sourcebuild.texi (arm_v8_2a_i8mm_neon_hw): Document. > > > > gcc/testsuite/ChangeLog: > > > > * lib/target-supports.exp > > (check_effective_target_arm_v8_2a_imm8_neon_ok_nocache, > > check_effective_target_arm_v8_2a_i8mm_neon_hw, > > check_effective_target_vect_usdot_qi): New. > > * gcc.dg/vect/vect-reduc-dot-10.c: New test. > > * gcc.dg/vect/vect-reduc-dot-11.c: New test. > > * gcc.dg/vect/vect-reduc-dot-12.c: New test. > > * gcc.dg/vect/vect-reduc-dot-13.c: New test. > > * gcc.dg/vect/vect-reduc-dot-14.c: New test. > > * gcc.dg/vect/vect-reduc-dot-15.c: New test. > > * gcc.dg/vect/vect-reduc-dot-16.c: New test. > > * gcc.dg/vect/vect-reduc-dot-9.c: New test. > > > > --- inline copy of patch -- > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index > > b0001247795947c9dcab1a14884ecd585976dfdd..0034ac9d86b26e6674d71090b > > 9d04b6148f99e17 100644 > > --- a/gcc/doc/sourcebuild.texi > > +++ b/gcc/doc/sourcebuild.texi > > @@ -1672,6 +1672,10 @@ Target supports a vector dot-product of > > @code{signed char}. > > @item vect_udot_qi > > Target supports a vector dot-product of @code{unsigned char}. > > > > +@item vect_usdot_qi > > +Target supports a vector dot-product where one operand of the multiply > > +is @code{signed char} and the other of @code{unsigned char}. > > + > > @item vect_sdot_hi > > Target supports a vector dot-product of @code{signed short}. > > > > @@ -1947,6 +1951,11 @@ ARM target supports executing instructions from > > ARMv8.2-A with the Dot Product extension. Some multilibs may be > > incompatible with these options. > > Implies arm_v8_2a_dotprod_neon_ok. > > > > +@item arm_v8_2a_i8mm_neon_hw > > +ARM target supports executing instructions from ARMv8.2-A with the > > +8-bit Matrix Multiply extension. Some multilibs may be incompatible > > +with these options. Implies arm_v8_2a_i8mm_ok. > > + > > @item arm_fp16fml_neon_ok > > @anchor{arm_fp16fml_neon_ok} > > ARM target supports extensions to generate the @code{VFMAL} and > > @code{VFMLS} diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..7ce86965ea97d37c43d96b4d2 > > 271df667dcb2aae > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 unsigned > > +#define SIGNEDNESS_2 unsigned > > +#define SIGNEDNESS_3 unsigned > > +#define SIGNEDNESS_4 signed > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > +detected" "vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..0f7cbbb87ef028f166366aea55 > > bc4ef49d2f8e9b > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 unsigned > > +#define SIGNEDNESS_2 signed > > +#define SIGNEDNESS_3 unsigned > > +#define SIGNEDNESS_4 signed > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" > > +"vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..08412614fc67045d3067b5b55 > > ba032d297595237 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 unsigned > > +#define SIGNEDNESS_2 signed > > +#define SIGNEDNESS_3 signed > > +#define SIGNEDNESS_4 unsigned > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" > > +"vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..7ee0f45f64296442204ee13d5f > > 880f4b7716fb85 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 signed > > +#define SIGNEDNESS_2 unsigned > > +#define SIGNEDNESS_3 signed > > +#define SIGNEDNESS_4 unsigned > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > +detected" "vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..2de1434528b87f0c32c54150b1 > > 6791f3f2a469b5 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 signed > > +#define SIGNEDNESS_2 unsigned > > +#define SIGNEDNESS_3 unsigned > > +#define SIGNEDNESS_4 signed > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > +detected" "vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..dc48f95a32bf76c54a906ee81d > > dee99b16aea84a > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 signed > > +#define SIGNEDNESS_2 signed > > +#define SIGNEDNESS_3 unsigned > > +#define SIGNEDNESS_4 signed > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" > > +"vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..aec628789366673321aea88c60 > > 316a68fe16cbc5 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c > > @@ -0,0 +1,13 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#define SIGNEDNESS_1 signed > > +#define SIGNEDNESS_2 signed > > +#define SIGNEDNESS_3 signed > > +#define SIGNEDNESS_4 unsigned > > + > > +#include "vect-reduc-dot-9.c" > > + > > +/* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" > > +"vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > new file mode 100644 > > index > > 0000000000000000000000000000000000000000..cbbeedec3bfd0810a8ce8036e > > 6670585d9334924 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c > > @@ -0,0 +1,52 @@ > > +/* { dg-require-effective-target vect_int } */ > > +/* { dg-require-effective-target arm_v8_2a_i8mm_neon_hw { target { > > +aarch64*-*-* || arm*-*-* } } } */ > > +/* { dg-add-options arm_v8_2a_i8mm } */ > > + > > +#include "tree-vect.h" > > + > > +#define N 50 > > + > > +#ifndef SIGNEDNESS_1 > > +#define SIGNEDNESS_1 unsigned > > +#define SIGNEDNESS_2 unsigned > > +#define SIGNEDNESS_3 signed > > +#define SIGNEDNESS_4 unsigned > > +#endif > > + > > +SIGNEDNESS_1 int __attribute__ ((noipa)) f (SIGNEDNESS_1 int res, > > +SIGNEDNESS_3 char *restrict a, > > + SIGNEDNESS_4 char *restrict b) > > +{ > > + for (__INTPTR_TYPE__ i =3D 0; i < N; ++i) > > + { > > + int av =3D a[i]; > > + int bv =3D b[i]; > > + SIGNEDNESS_2 short mult =3D av * bv; > > + res +=3D mult; > > + } > > + return res; > > +} > > + > > +#define BASE ((SIGNEDNESS_3 int) -1 < 0 ? -126 : 4) #define OFFSET 20 > > + > > +int > > +main (void) > > +{ > > + check_vect (); > > + > > + SIGNEDNESS_3 char a[N], b[N]; > > + int expected =3D 0x12345; > > + for (int i =3D 0; i < N; ++i) > > + { > > + a[i] =3D BASE + i * 5; > > + b[i] =3D BASE + OFFSET + i * 4; > > + asm volatile ("" ::: "memory"); > > + expected +=3D (SIGNEDNESS_2 short) (a[i] * b[i]); > > + } > > + if (f (0x12345, a, b) !=3D expected) > > + __builtin_abort (); > > +} > > + > > +/* { dg-final { scan-tree-dump-not "vect_recog_dot_prod_pattern: > > +detected" "vect" } } */ > > +/* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" { > > +target vect_usdot_qi } } } */ > > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/= target- > > supports.exp > > index > > ad323107f2ec5d55a77214beca5e4135643528b4..db9bd605ab4c838f65667fa61 > > 6da334a171d9dfb 100644 > > --- a/gcc/testsuite/lib/target-supports.exp > > +++ b/gcc/testsuite/lib/target-supports.exp > > @@ -5240,6 +5240,36 @@ proc > > check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache { } { > > return 0; > > } > > > > +# Return 1 if the target supports ARMv8.2 Adv.SIMD imm8 # instructions= , > > +0 otherwise. The test is valid for ARM and for AArch64. > > +# Record the command line options needed. > > + > > +proc check_effective_target_arm_v8_2a_imm8_neon_ok_nocache { } { > > + global et_arm_v8_2a_imm8_neon_flags > > + set et_arm_v8_2a_imm8_neon_flags "" > > + > > + if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } { > > + return 0; > > + } > > + > > + # Iterate through sets of options to find the compiler flags that > > + # need to be added to the -march option. > > + foreach flags {"" "-mfloat-abi=3Dsoftfp -mfpu=3Dneon-fp-armv8" "-m= float- > > abi=3Dhard -mfpu=3Dneon-fp-armv8"} { > > + if { [check_no_compiler_messages_nocache \ > > + arm_v8_2a_imm8_neon_ok object { > > + #include > > + #if !defined (__ARM_FEATURE_MATMUL_INT8) > > + #error "__ARM_FEATURE_MATMUL_INT8 not defined" > > + #endif > > + } "$flags -march=3Darmv8.2-a+imm8"] } { > > + set et_arm_v8_2a_imm8_neon_flags "$flags -march=3Darmv8.2- > > a+imm8" > > + return 1 > > + } > > + } > > + > > + return 0; > > +} > > + > > # Return 1 if the target supports ARMv8.1-M MVE # instructions, 0 > > otherwise. The test is valid for ARM. > > # Record the command line options needed. > > @@ -5667,6 +5697,43 @@ proc > > check_effective_target_arm_v8_2a_dotprod_neon_hw { } { > > } [add_options_for_arm_v8_2a_dotprod_neon ""]] } > > > > +# Return 1 if the target supports executing AdvSIMD instructions from > > +ARMv8.2 # with the i8mm extension, 0 otherwise. The test is valid for > > +ARM and for # AArch64. > > + > > +proc check_effective_target_arm_v8_2a_i8mm_neon_hw { } { > > + if { ![check_effective_target_arm_v8_2a_i8mm_ok] } { > > + return 0; > > + } > > + return [check_runtime arm_v8_2a_i8mm_neon_hw_available { > > + #include "arm_neon.h" > > + int > > + main (void) > > + { > > + > > + uint32x2_t results =3D {0,0}; > > + uint8x8_t a =3D {1,1,1,1,2,2,2,2}; > > + int8x8_t b =3D {2,2,2,2,3,3,3,3}; > > + > > + #ifdef __ARM_ARCH_ISA_A64 > > + asm ("usdot %0.2s, %1.8b, %2.8b" > > + : "=3Dw"(results) > > + : "w"(a), "w"(b) > > + : /* No clobbers. */); > > + > > + #else > > + asm ("vusdot.u8 %P0, %P1, %P2" > > + : "=3Dw"(results) > > + : "w"(a), "w"(b) > > + : /* No clobbers. */); > > + #endif > > + > > + return (vget_lane_u32 (results, 0) =3D=3D 8 > > + && vget_lane_u32 (results, 1) =3D=3D 24) ? 1 : 0; > > + } > > + } [add_options_for_arm_v8_2a_i8mm ""]] } > > + > > # Return 1 if this is a ARM target with NEON enabled. > > > > proc check_effective_target_arm_neon { } { @@ -7022,6 +7089,19 @@ proc > > check_effective_target_vect_udot_qi { } { > > && [et-is-effective-target mips_msa]) }}] } > > > > +# Return 1 if the target plus current options supports a vector # > > +dot-product where one operand of the multiply is signed char # and the > > +other unsigned chars, 0 otherwise. > > +# > > +# This won't change for different subtargets so cache the result. > > + > > +proc check_effective_target_vect_usdot_qi { } { > > + return [check_cached_effective_target_indexed vect_usdot_qi { > > + expr { [istarget aarch64*-*-*] > > + || [istarget arm*-*-*] }}] > > +} > > + > > + > > # Return 1 if the target plus current options supports a vector # dot= -product > > of signed shorts, 0 otherwise. > > # > > > > > > -- > -- Richard Biener SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imend