Message ID | 20220907130239.155140-1-christophe.lyon@arm.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 h4csp1130797wrt; Wed, 7 Sep 2022 06:04:12 -0700 (PDT) X-Google-Smtp-Source: AA6agR5YrvTMKQVjZ23AywOD3+bt3njJBDRLTSKyKK9VgNhpA6zRDgtyNbP/vaSAhvjsGy1rW03d X-Received: by 2002:a17:906:4fd2:b0:742:133b:3522 with SMTP id i18-20020a1709064fd200b00742133b3522mr2415908ejw.21.1662555852827; Wed, 07 Sep 2022 06:04:12 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id sg7-20020a170907a40700b0072ae61935afsi9041415ejc.304.2022.09.07.06.04.12 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Sep 2022 06:04:12 -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=ryJrhA4r; arc=fail (signature failed); 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 82AC53850855 for <ouuuleilei@gmail.com>; Wed, 7 Sep 2022 13:04:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 82AC53850855 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1662555851; bh=dzzfAyt+NV9BCueOkyP+HP98x5RwbeJPNnqdaNphMWw=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=ryJrhA4rpcs/KdGGvSTAEVhWbBV744vuCIPbwV60tSCV2p09uIqBbd7d6pD3UzyhA Qrp7mKGxp7W6Nva9MDP8E27/O9oVd11yTDLQjNe0qXVq+BghyRaNE0KOmCXd90YT6v 9UUVOMe5NYXJT5kNWJo7W2gkiwxjKAAJE9ygdC2w= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10055.outbound.protection.outlook.com [40.107.1.55]) by sourceware.org (Postfix) with ESMTPS id D753B385841A for <gcc-patches@gcc.gnu.org>; Wed, 7 Sep 2022 13:03:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D753B385841A ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=OhkQ5S4jCrPbGcJWZLDsKjgmAL7fjK4I6XP98KOYkH2s4D5JxQWNsxPBx7MnzG3ggoHcHG0WqDzZLTLrG48ChH+/NFpwVXxJwLp157hQJETqDK+QxtzrXmKMozSdBjzvxqKT16xj314yS9XgGkXel9G7vj6Mu0SKdO8cU+UXHb9DTixB/CeFh6OOOaJ0ri3QuWJ5keWzoZo+vcctHkEPOO5E6mOpz+xBPQaPA7zFyRYxMIcYxmG48fCcOD9Se/4RVftUEDMQcrr5joIsJtecEmyC2aPZ8q2rbXILb810CI2ZyBQfumWYB3sEGZjnEgQvcm9nCa7bXAhKVGoY5lhfEw== ARC-Message-Signature: i=2; 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=dzzfAyt+NV9BCueOkyP+HP98x5RwbeJPNnqdaNphMWw=; b=MIaBFgof7QWkt8R+o4saprTWrvP3GXsttQlF77NROlOwBC+jrrlzypMdtrto+mxm22BXK0Zea6Wv/7P39EjFLTiq1ooi/4WuYNdJkDaviQHLnwMAZnqhuOHWSGTsFRTFs1mZKvuoAkvoXUhMgVeolR53pgjH/wSjlWZeJNX0Gqups/pzLc7gidmkKdiLeeRX9Lz7TAfFKgAKXD4S/mULVb73UGxnN3v02v+UY1ZimlFO17Qkv0V0XP8Is0wX1yVsy8U28LO/UprpD7216P4+ymByHHINKqmPU3Wra67Ayvo548/QdhXg9gZTjuuYbAJL2iSVz59cRMHFYcJxQs+gcw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from DB8P191CA0019.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:130::29) by AS2PR08MB9427.eurprd08.prod.outlook.com (2603:10a6:20b:5e9::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.12; Wed, 7 Sep 2022 13:03:05 +0000 Received: from DBAEUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:130:cafe::94) by DB8P191CA0019.outlook.office365.com (2603:10a6:10:130::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.12 via Frontend Transport; Wed, 7 Sep 2022 13:03:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT051.mail.protection.outlook.com (100.127.142.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.13 via Frontend Transport; Wed, 7 Sep 2022 13:03:04 +0000 Received: ("Tessian outbound fa99bf31ee7d:v123"); Wed, 07 Sep 2022 13:03:04 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 0c8e41e7fd66a5f6 X-CR-MTA-TID: 64aa7808 Received: from 2c86bb578de7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 84DF1F80-062E-4EC4-9012-A1B4CA2C67BF.1; Wed, 07 Sep 2022 13:02:58 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2c86bb578de7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 07 Sep 2022 13:02:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EqbXjD8kTRegaA7GK6RRhWXHbFXudXQMYsLxWIv7DmHG11VRGcSJGx8PJ3uCXKwXX09/bI8KJ7nNaTzRv+8UiWz3NDoXCAPWi6t1/hF14ZPaSHFkZWRmZyCITgcg6oLxVhPTIwUtMsKVTIWpUSx3rANEYXrqz+5/hp4jKn+uCjP7dRgF8CUpRfF1aiIM8wGGxz97f6ZS6F8xqeBFtssvOfYcmKXDEJPFKxCYd6OAZJx0HZqZMqWWblPmXeii4wpPOzWgmJ5a0fjvLacNNWTD4lxUQWID60rdQQws5si4V0LPVYTjNQXRY2Kvl23wiAgG3x3hGgg4fdJ8T/yuWXfG0g== 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=dzzfAyt+NV9BCueOkyP+HP98x5RwbeJPNnqdaNphMWw=; b=CE+G1fiIJk8uC3EQbcZpgXlRGIj5FKfZ7yt9d/AD6UCRHw8vsRodhmkj/NjnsUECpYHxLrwXSKn7GD1oswG4+T2Lh0n6VgRKf45yq56RmX8CiJQ1jObxDfRv59zm7d/+b9fB2ST3Ptn3IRJBZT1iex437nVcKM4hhPIvLbMXftmWE+cu9eiEUbJOPaNC6FSQ8UDfjqF/N+XritatL4FXXmonXwLoTqFRwW9G3H4qYkJY1u1XQeiyPc4mkNbxCusP++8tEzm+OqslAjFFJ2KF6gTQHawkYgMrrSOzyysx9EYJunqkwts6CLAFN2xn7BzFIMcXn8stOk8kgRjJaMeldA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AM6PR04CA0002.eurprd04.prod.outlook.com (2603:10a6:20b:92::15) by DU0PR08MB9461.eurprd08.prod.outlook.com (2603:10a6:10:42f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.16; Wed, 7 Sep 2022 13:02:55 +0000 Received: from VE1EUR03FT040.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:92:cafe::98) by AM6PR04CA0002.outlook.office365.com (2603:10a6:20b:92::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.18 via Frontend Transport; Wed, 7 Sep 2022 13:02:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by VE1EUR03FT040.mail.protection.outlook.com (10.152.18.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5588.10 via Frontend Transport; Wed, 7 Sep 2022 13:02:54 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.9; Wed, 7 Sep 2022 13:02:54 +0000 Received: from gnu-x86-64-dev-02-dev.lab.cambridge.arm.com (10.7.24.25) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.9 via Frontend Transport; Wed, 7 Sep 2022 13:02:54 +0000 To: <gcc-patches@gcc.gnu.org> Subject: [PATCH] arm: Fix constant immediates predicates and constraints for some MVE builtins Date: Wed, 7 Sep 2022 13:02:39 +0000 Message-ID: <20220907130239.155140-1-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-Office365-Filtering-Correlation-Id: 4975aac8-e1e9-45e9-0cb3-08da90d14d88 X-MS-TrafficTypeDiagnostic: DU0PR08MB9461:EE_|DBAEUR03FT051:EE_|AS2PR08MB9427:EE_ x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: JWCY88g9x2SW1R0qAkYhw4wypNDuu1e4JIxbP+h042JdfP86ZGyy6g/TXIDDv5neMaUKm6xUeVIMneoIpUxveGM9fFAZbSMgroOxo15c0ObchjZer3O3hz4CHQa5gudxihIgYSoBxxJp/QTRrZpZs5bJJdOrWtlofMWrn7XgKbUBdkyXpwUbm23syVb0C0DZxxeTKw0xkV3K2ESllFXGvGHx+N8KV0auuwO/HRWvxoMHYZIbA/BL9I4tuqwWGQZAukTQOZjOFyonH8DNJjpAt8uAXXVXDJ0Xu4ZnffrJH7lr373tihVAT6px/YhqQpf6jjojP8UhTpgH92/SLwKTV7KJJR7S+0X6uoWxV/h4ZyYb0OKv0GD5lfoqCjfOO4AjWmnIj+fO4qJHXbGgTLfqthbFVrueFogHDtmVTWsta3x8dN7nMf200ZmpyIhL8JeR+K9NK6BUtBTvpPjtTh7o0jGTHckjMhqd6YMQl9Hm7TNQZXu7DJuEa1u95MZY3Anhjf8ZGPqm9vIR1zm1aGBEnEnBg9tU8v3Z0YrZp5avxHS+cs9ezeuoFM1UzTPiGd3K0RDwTs9lwon09kPaNYf3rHEbH8SovrcpC9C3pH4aIoS56NsB9SMfu3utvdmeosFihPVSUvCG7YjK5qgnFTWuPT8weatoi+x4dpNFTSz7M73AzoRcNkfFcYg3eHnYLfiLitJwQgdq5umN5ni/oSO+lMRgj1qoH07+9sBu7y0PeX7FyVqsz7lyPbk3ajjHGJ0/k4pf0CVZHQ7H75v9k4exDP1hD+L93VS5K7zcl5a/pPY4liQ2caSUaLB7FoCCPzQQYlx01LAO35obipA+4t14ZQ== X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230016)(4636009)(346002)(376002)(39860400002)(396003)(136003)(36840700001)(40470700004)(46966006)(6916009)(83380400001)(356005)(40460700003)(81166007)(82740400003)(8676002)(4326008)(82310400005)(70206006)(316002)(2906002)(44832011)(36860700001)(70586007)(5660300002)(336012)(8936002)(36756003)(26005)(2616005)(40480700001)(186003)(1076003)(6666004)(478600001)(7696005)(47076005)(41300700001)(86362001)(426003)(14773001)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9461 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0daf55ff-f30f-4695-bb71-08da90d1479e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kcj7j+91sYi02Wa7jEsEmYHaozhAuLF97C16PQfLtqqvmJgTplbCyKHWMpexZrJI7MHicfojMJZU2835flQFPxZnWUlOdKujLy6o1De3irYBTDTM0A4BX0/eYJS5NTzjB2XQOIce4LhxQTOL7V0qLyu+5wsQ5NnpSWgu6tHOOdqm1EdibP0ZThRShmbWlIudIX2VVL3/RQpDCvnR/5dLntHIjPXOpvGNB+fqmi42GYcV1j+fq1lsHAEfJjOCusN8AL/97/O8wpJqEBo80eBglhYVcFQLE0jovaxYn1spk7Pr/adBn5GOee4ZHZKWS9+x4VcmMKIK/1j802TGfJF97WaqHCqNlJXlzuAJiSgW6xeGddw8sMi6WjA+m1dFU1umodxplXpx1mGkknOjhbIlo38g6uTyodVGHj3M7WMwyNd26P0tme9FqzHbFHeGvRA4GHudR6IOwAg4Pwrbp+zsSAdsBhXQtXglJXvaolfrOHtW3CH3Y1HyN+o8iV/9mHRyGLDA7hOW8gKHTYNj/rDTL2nQPV/Mu1smaalUlnwfLAomnqZiAaCyD5A8qlyUnmyEq1crqhCajiDavy2c11dSL8HzYB9jbrXgsjck4DpD+1th3NmMihOQjl0G40KXWiu5pt6eKdcheO3KC3qnoFkcWHvMFKY3lmvX5cp/lk7nMbk2u6xpxxAeIO8LYgZb5M4JljMB6/e+cYh/ZC3CQNozCKh+u+/FLSETFK7s6ixa/lxVVtQAGGmQspwl/1tE7T3rbyCtjve2b9unAuNrLUmQM44p4u+I//J11lsB0VgqEkw= 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:(13230016)(4636009)(136003)(396003)(39860400002)(376002)(346002)(40470700004)(36840700001)(46966006)(41300700001)(336012)(316002)(7696005)(26005)(6666004)(478600001)(83380400001)(426003)(47076005)(2616005)(2906002)(1076003)(8936002)(82310400005)(44832011)(5660300002)(40480700001)(6916009)(186003)(40460700003)(4326008)(8676002)(70206006)(70586007)(36860700001)(82740400003)(86362001)(81166007)(36756003)(14773001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Sep 2022 13:03:04.9672 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4975aac8-e1e9-45e9-0cb3-08da90d14d88 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: DBAEUR03FT051.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9427 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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: Christophe Lyon via Gcc-patches <gcc-patches@gcc.gnu.org> Reply-To: Christophe Lyon <christophe.lyon@arm.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?1743316165986960722?= X-GMAIL-MSGID: =?utf-8?q?1743316165986960722?= |
Series |
arm: Fix constant immediates predicates and constraints for some MVE builtins
|
|
Commit Message
Christophe Lyon
Sept. 7, 2022, 1:02 p.m. UTC
Several MVE builtins incorrectly use the same predicate/constraint pair for several modes, which does not match the specification. This patch uses the appropriate iterator instead. 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> gcc/ * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use MVE_pred/MVE_constraint instead of mve_imm_7/Ra. (mve_vqshluq_m_n_s<mode>): Likewise. (mve_vqrshrnbq_n_<supf><mode>): Use MVE_pred3/MVE_constraint3 instead of mve_imm_8/Rb. (mve_vqrshrunbq_n_s<mode>): Likewise. (mve_vqrshrntq_n_<supf><mode>): Likewise. (mve_vqrshruntq_n_s<mode>): Likewise. (mve_vrshrnbq_n_<supf><mode>): Likewise. (mve_vrshrntq_n_<supf><mode>): Likewise. (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. (mve_vqrshrntq_m_n_<supf><mode>): Likewise. (mve_vrshrnbq_m_n_<supf><mode>): Likewise. (mve_vrshrntq_m_n_<supf><mode>): Likewise. (mve_vqrshrunbq_m_n_s<mode>): Likewise. (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 instead of mve_imm_selective_upto_8/Rg. (mve_vsriq_m_n_<supf><mode>): Likewise. --- gcc/config/arm/mve.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
Comments
Hi Christophe, > -----Original Message----- > From: Gcc-patches <gcc-patches- > bounces+kyrylo.tkachov=arm.com@gcc.gnu.org> On Behalf Of Christophe > Lyon via Gcc-patches > Sent: Wednesday, September 7, 2022 2:03 PM > To: gcc-patches@gcc.gnu.org > Subject: [PATCH] arm: Fix constant immediates predicates and constraints for > some MVE builtins > > Several MVE builtins incorrectly use the same predicate/constraint > pair for several modes, which does not match the specification. > This patch uses the appropriate iterator instead. > This looks ok to me. I presume you've tested this appropriately? If so, ok for trunk. Thanks, Kyrill > 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> > > gcc/ > * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use > MVE_pred/MVE_constraint instead of mve_imm_7/Ra. > (mve_vqshluq_m_n_s<mode>): Likewise. > (mve_vqrshrnbq_n_<supf><mode>): Use > MVE_pred3/MVE_constraint3 > instead of mve_imm_8/Rb. > (mve_vqrshrunbq_n_s<mode>): Likewise. > (mve_vqrshrntq_n_<supf><mode>): Likewise. > (mve_vqrshruntq_n_s<mode>): Likewise. > (mve_vrshrnbq_n_<supf><mode>): Likewise. > (mve_vrshrntq_n_<supf><mode>): Likewise. > (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. > (mve_vqrshrntq_m_n_<supf><mode>): Likewise. > (mve_vrshrnbq_m_n_<supf><mode>): Likewise. > (mve_vrshrntq_m_n_<supf><mode>): Likewise. > (mve_vqrshrunbq_m_n_s<mode>): Likewise. > (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 > instead > of mve_imm_selective_upto_8/Rg. > (mve_vsriq_m_n_<supf><mode>): Likewise. > --- > gcc/config/arm/mve.md | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md > index c4dec01baac..714178609f7 100644 > --- a/gcc/config/arm/mve.md > +++ b/gcc/config/arm/mve.md > @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" > [ > (set (match_operand:MVE_2 0 "s_register_operand" "=w") > (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "w") > - (match_operand:SI 2 "mve_imm_7" "Ra")] > + (match_operand:SI 2 "<MVE_pred>" > "<MVE_constraint>")] > VQSHLUQ_N_S)) > ] > "TARGET_HAVE_MVE" > @@ -2615,7 +2615,7 @@ (define_insn "mve_vqrshrnbq_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 > "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VQRSHRNBQ_N)) > ] > "TARGET_HAVE_MVE" > @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 > "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VQRSHRUNBQ_N_S)) > ] > "TARGET_HAVE_MVE" > @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" > (set (match_operand:MVE_2 0 "s_register_operand" "=w") > (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "0") > (match_operand:MVE_2 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_selective_upto_8" > "Rg")] > + (match_operand:SI 3 "<MVE_pred2>" > "<MVE_constraint2>")] > VSRIQ_N)) > ] > "TARGET_HAVE_MVE" > @@ -4473,7 +4473,7 @@ (define_insn "mve_vqrshrntq_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VQRSHRNTQ_N)) > ] > "TARGET_HAVE_MVE" > @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VQRSHRUNTQ_N_S)) > ] > "TARGET_HAVE_MVE" > @@ -4777,7 +4777,7 @@ (define_insn "mve_vrshrnbq_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VRSHRNBQ_N)) > ] > "TARGET_HAVE_MVE" > @@ -4793,7 +4793,7 @@ (define_insn "mve_vrshrntq_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb")] > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>")] > VRSHRNTQ_N)) > ] > "TARGET_HAVE_MVE" > @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" > (set (match_operand:MVE_2 0 "s_register_operand" "=w") > (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "0") > (match_operand:MVE_2 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_7" "Ra") > + (match_operand:SI 3 "<MVE_pred>" > "<MVE_constraint>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VQSHLUQ_M_N_S)) > ] > @@ -5019,7 +5019,7 @@ (define_insn "mve_vsriq_m_n_<supf><mode>" > (set (match_operand:MVE_2 0 "s_register_operand" "=w") > (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > "0") > (match_operand:MVE_2 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") > + (match_operand:SI 3 "<MVE_pred2>" > "<MVE_constraint2>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VSRIQ_M_N)) > ] > @@ -6138,7 +6138,7 @@ (define_insn > "mve_vqrshrnbq_m_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb") > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VQRSHRNBQ_M_N)) > ] > @@ -6155,7 +6155,7 @@ (define_insn > "mve_vqrshrntq_m_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb") > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VQRSHRNTQ_M_N)) > ] > @@ -6223,7 +6223,7 @@ (define_insn > "mve_vrshrnbq_m_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb") > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VRSHRNBQ_M_N)) > ] > @@ -6240,7 +6240,7 @@ (define_insn "mve_vrshrntq_m_n_<supf><mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb") > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VRSHRNTQ_M_N)) > ] > @@ -6461,7 +6461,7 @@ (define_insn "mve_vqrshrunbq_m_n_s<mode>" > (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > "s_register_operand" "0") > (match_operand:MVE_5 2 "s_register_operand" "w") > - (match_operand:SI 3 "mve_imm_8" "Rb") > + (match_operand:SI 3 "<MVE_pred3>" > "<MVE_constraint3>") > (match_operand:<MVE_VPRED> 4 > "vpr_register_operand" "Up")] > VQRSHRUNBQ_M_N_S)) > ] > -- > 2.34.1
On 9/7/22 15:34, Kyrylo Tkachov wrote: > Hi Christophe, > >> -----Original Message----- >> From: Gcc-patches <gcc-patches- >> bounces+kyrylo.tkachov=arm.com@gcc.gnu.org> On Behalf Of Christophe >> Lyon via Gcc-patches >> Sent: Wednesday, September 7, 2022 2:03 PM >> To: gcc-patches@gcc.gnu.org >> Subject: [PATCH] arm: Fix constant immediates predicates and constraints for >> some MVE builtins >> >> Several MVE builtins incorrectly use the same predicate/constraint >> pair for several modes, which does not match the specification. >> This patch uses the appropriate iterator instead. >> > > This looks ok to me. > I presume you've tested this appropriately? I tested it manually with an offending testcase. Unfortunately, the existing testcases all use '1' as immediate, so this does not really check the boundaries. We do plan to improve the existing tests in a later patch that will more generally improve the MVE tests. Christophe > If so, ok for trunk. > Thanks, > Kyrill > >> 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> >> >> gcc/ >> * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use >> MVE_pred/MVE_constraint instead of mve_imm_7/Ra. >> (mve_vqshluq_m_n_s<mode>): Likewise. >> (mve_vqrshrnbq_n_<supf><mode>): Use >> MVE_pred3/MVE_constraint3 >> instead of mve_imm_8/Rb. >> (mve_vqrshrunbq_n_s<mode>): Likewise. >> (mve_vqrshrntq_n_<supf><mode>): Likewise. >> (mve_vqrshruntq_n_s<mode>): Likewise. >> (mve_vrshrnbq_n_<supf><mode>): Likewise. >> (mve_vrshrntq_n_<supf><mode>): Likewise. >> (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. >> (mve_vqrshrntq_m_n_<supf><mode>): Likewise. >> (mve_vrshrnbq_m_n_<supf><mode>): Likewise. >> (mve_vrshrntq_m_n_<supf><mode>): Likewise. >> (mve_vqrshrunbq_m_n_s<mode>): Likewise. >> (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 >> instead >> of mve_imm_selective_upto_8/Rg. >> (mve_vsriq_m_n_<supf><mode>): Likewise. >> --- >> gcc/config/arm/mve.md | 30 +++++++++++++++--------------- >> 1 file changed, 15 insertions(+), 15 deletions(-) >> >> diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md >> index c4dec01baac..714178609f7 100644 >> --- a/gcc/config/arm/mve.md >> +++ b/gcc/config/arm/mve.md >> @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" >> [ >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >> "w") >> - (match_operand:SI 2 "mve_imm_7" "Ra")] >> + (match_operand:SI 2 "<MVE_pred>" >> "<MVE_constraint>")] >> VQSHLUQ_N_S)) >> ] >> "TARGET_HAVE_MVE" >> @@ -2615,7 +2615,7 @@ (define_insn "mve_vqrshrnbq_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 >> "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VQRSHRNBQ_N)) >> ] >> "TARGET_HAVE_MVE" >> @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 >> "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VQRSHRUNBQ_N_S)) >> ] >> "TARGET_HAVE_MVE" >> @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >> "0") >> (match_operand:MVE_2 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_selective_upto_8" >> "Rg")] >> + (match_operand:SI 3 "<MVE_pred2>" >> "<MVE_constraint2>")] >> VSRIQ_N)) >> ] >> "TARGET_HAVE_MVE" >> @@ -4473,7 +4473,7 @@ (define_insn "mve_vqrshrntq_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VQRSHRNTQ_N)) >> ] >> "TARGET_HAVE_MVE" >> @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VQRSHRUNTQ_N_S)) >> ] >> "TARGET_HAVE_MVE" >> @@ -4777,7 +4777,7 @@ (define_insn "mve_vrshrnbq_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VRSHRNBQ_N)) >> ] >> "TARGET_HAVE_MVE" >> @@ -4793,7 +4793,7 @@ (define_insn "mve_vrshrntq_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb")] >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>")] >> VRSHRNTQ_N)) >> ] >> "TARGET_HAVE_MVE" >> @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >> "0") >> (match_operand:MVE_2 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_7" "Ra") >> + (match_operand:SI 3 "<MVE_pred>" >> "<MVE_constraint>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VQSHLUQ_M_N_S)) >> ] >> @@ -5019,7 +5019,7 @@ (define_insn "mve_vsriq_m_n_<supf><mode>" >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >> "0") >> (match_operand:MVE_2 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") >> + (match_operand:SI 3 "<MVE_pred2>" >> "<MVE_constraint2>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VSRIQ_M_N)) >> ] >> @@ -6138,7 +6138,7 @@ (define_insn >> "mve_vqrshrnbq_m_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb") >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VQRSHRNBQ_M_N)) >> ] >> @@ -6155,7 +6155,7 @@ (define_insn >> "mve_vqrshrntq_m_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb") >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VQRSHRNTQ_M_N)) >> ] >> @@ -6223,7 +6223,7 @@ (define_insn >> "mve_vrshrnbq_m_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb") >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VRSHRNBQ_M_N)) >> ] >> @@ -6240,7 +6240,7 @@ (define_insn "mve_vrshrntq_m_n_<supf><mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb") >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VRSHRNTQ_M_N)) >> ] >> @@ -6461,7 +6461,7 @@ (define_insn "mve_vqrshrunbq_m_n_s<mode>" >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >> "s_register_operand" "0") >> (match_operand:MVE_5 2 "s_register_operand" "w") >> - (match_operand:SI 3 "mve_imm_8" "Rb") >> + (match_operand:SI 3 "<MVE_pred3>" >> "<MVE_constraint3>") >> (match_operand:<MVE_VPRED> 4 >> "vpr_register_operand" "Up")] >> VQRSHRUNBQ_M_N_S)) >> ] >> -- >> 2.34.1 >
> -----Original Message----- > From: Christophe Lyon <Christophe.Lyon@arm.com> > Sent: Wednesday, September 7, 2022 2:41 PM > To: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>; gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] arm: Fix constant immediates predicates and > constraints for some MVE builtins > > > > On 9/7/22 15:34, Kyrylo Tkachov wrote: > > Hi Christophe, > > > >> -----Original Message----- > >> From: Gcc-patches <gcc-patches- > >> bounces+kyrylo.tkachov=arm.com@gcc.gnu.org> On Behalf Of Christophe > >> Lyon via Gcc-patches > >> Sent: Wednesday, September 7, 2022 2:03 PM > >> To: gcc-patches@gcc.gnu.org > >> Subject: [PATCH] arm: Fix constant immediates predicates and constraints > for > >> some MVE builtins > >> > >> Several MVE builtins incorrectly use the same predicate/constraint > >> pair for several modes, which does not match the specification. > >> This patch uses the appropriate iterator instead. > >> > > > > This looks ok to me. > > I presume you've tested this appropriately? > > I tested it manually with an offending testcase. > > Unfortunately, the existing testcases all use '1' as immediate, so this > does not really check the boundaries. We do plan to improve the existing > tests in a later patch that will more generally improve the MVE tests. Sure, improving the tests is definitely worth it here. I meant more in the context of a standard bootstrap and testsuite run. Thanks, Kyrill > > Christophe > > > If so, ok for trunk. > > Thanks, > > Kyrill > > > >> 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> > >> > >> gcc/ > >> * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use > >> MVE_pred/MVE_constraint instead of mve_imm_7/Ra. > >> (mve_vqshluq_m_n_s<mode>): Likewise. > >> (mve_vqrshrnbq_n_<supf><mode>): Use > >> MVE_pred3/MVE_constraint3 > >> instead of mve_imm_8/Rb. > >> (mve_vqrshrunbq_n_s<mode>): Likewise. > >> (mve_vqrshrntq_n_<supf><mode>): Likewise. > >> (mve_vqrshruntq_n_s<mode>): Likewise. > >> (mve_vrshrnbq_n_<supf><mode>): Likewise. > >> (mve_vrshrntq_n_<supf><mode>): Likewise. > >> (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. > >> (mve_vqrshrntq_m_n_<supf><mode>): Likewise. > >> (mve_vrshrnbq_m_n_<supf><mode>): Likewise. > >> (mve_vrshrntq_m_n_<supf><mode>): Likewise. > >> (mve_vqrshrunbq_m_n_s<mode>): Likewise. > >> (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 > >> instead > >> of mve_imm_selective_upto_8/Rg. > >> (mve_vsriq_m_n_<supf><mode>): Likewise. > >> --- > >> gcc/config/arm/mve.md | 30 +++++++++++++++--------------- > >> 1 file changed, 15 insertions(+), 15 deletions(-) > >> > >> diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md > >> index c4dec01baac..714178609f7 100644 > >> --- a/gcc/config/arm/mve.md > >> +++ b/gcc/config/arm/mve.md > >> @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" > >> [ > >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >> "w") > >> - (match_operand:SI 2 "mve_imm_7" "Ra")] > >> + (match_operand:SI 2 "<MVE_pred>" > >> "<MVE_constraint>")] > >> VQSHLUQ_N_S)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -2615,7 +2615,7 @@ (define_insn > "mve_vqrshrnbq_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 > >> "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VQRSHRNBQ_N)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 > >> "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VQRSHRUNBQ_N_S)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" > >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >> "0") > >> (match_operand:MVE_2 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_selective_upto_8" > >> "Rg")] > >> + (match_operand:SI 3 "<MVE_pred2>" > >> "<MVE_constraint2>")] > >> VSRIQ_N)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -4473,7 +4473,7 @@ (define_insn > "mve_vqrshrntq_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VQRSHRNTQ_N)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VQRSHRUNTQ_N_S)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -4777,7 +4777,7 @@ (define_insn > "mve_vrshrnbq_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VRSHRNBQ_N)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -4793,7 +4793,7 @@ (define_insn "mve_vrshrntq_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>")] > >> VRSHRNTQ_N)) > >> ] > >> "TARGET_HAVE_MVE" > >> @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" > >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >> "0") > >> (match_operand:MVE_2 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_7" "Ra") > >> + (match_operand:SI 3 "<MVE_pred>" > >> "<MVE_constraint>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VQSHLUQ_M_N_S)) > >> ] > >> @@ -5019,7 +5019,7 @@ (define_insn "mve_vsriq_m_n_<supf><mode>" > >> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >> "0") > >> (match_operand:MVE_2 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") > >> + (match_operand:SI 3 "<MVE_pred2>" > >> "<MVE_constraint2>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VSRIQ_M_N)) > >> ] > >> @@ -6138,7 +6138,7 @@ (define_insn > >> "mve_vqrshrnbq_m_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb") > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VQRSHRNBQ_M_N)) > >> ] > >> @@ -6155,7 +6155,7 @@ (define_insn > >> "mve_vqrshrntq_m_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb") > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VQRSHRNTQ_M_N)) > >> ] > >> @@ -6223,7 +6223,7 @@ (define_insn > >> "mve_vrshrnbq_m_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb") > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VRSHRNBQ_M_N)) > >> ] > >> @@ -6240,7 +6240,7 @@ (define_insn > "mve_vrshrntq_m_n_<supf><mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb") > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VRSHRNTQ_M_N)) > >> ] > >> @@ -6461,7 +6461,7 @@ (define_insn > "mve_vqrshrunbq_m_n_s<mode>" > >> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") > >> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >> "s_register_operand" "0") > >> (match_operand:MVE_5 2 "s_register_operand" "w") > >> - (match_operand:SI 3 "mve_imm_8" "Rb") > >> + (match_operand:SI 3 "<MVE_pred3>" > >> "<MVE_constraint3>") > >> (match_operand:<MVE_VPRED> 4 > >> "vpr_register_operand" "Up")] > >> VQRSHRUNBQ_M_N_S)) > >> ] > >> -- > >> 2.34.1 > >
On 9/7/22 15:42, Kyrylo Tkachov wrote: > > >> -----Original Message----- >> From: Christophe Lyon <Christophe.Lyon@arm.com> >> Sent: Wednesday, September 7, 2022 2:41 PM >> To: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>; gcc-patches@gcc.gnu.org >> Subject: Re: [PATCH] arm: Fix constant immediates predicates and >> constraints for some MVE builtins >> >> >> >> On 9/7/22 15:34, Kyrylo Tkachov wrote: >>> Hi Christophe, >>> >>>> -----Original Message----- >>>> From: Gcc-patches <gcc-patches- >>>> bounces+kyrylo.tkachov=arm.com@gcc.gnu.org> On Behalf Of Christophe >>>> Lyon via Gcc-patches >>>> Sent: Wednesday, September 7, 2022 2:03 PM >>>> To: gcc-patches@gcc.gnu.org >>>> Subject: [PATCH] arm: Fix constant immediates predicates and constraints >> for >>>> some MVE builtins >>>> >>>> Several MVE builtins incorrectly use the same predicate/constraint >>>> pair for several modes, which does not match the specification. >>>> This patch uses the appropriate iterator instead. >>>> >>> >>> This looks ok to me. >>> I presume you've tested this appropriately? >> >> I tested it manually with an offending testcase. >> >> Unfortunately, the existing testcases all use '1' as immediate, so this >> does not really check the boundaries. We do plan to improve the existing >> tests in a later patch that will more generally improve the MVE tests. > > Sure, improving the tests is definitely worth it here. > I meant more in the context of a standard bootstrap and testsuite run. OK, just ran a bootstrap on arm-linux-gnueabihf, no issue, and regression tested on a cross arm-eabi with the default RUNTESTFLAGS/target-board, no issue either. Thanks, Christophe > Thanks, > Kyrill > >> >> Christophe >> >>> If so, ok for trunk. >>> Thanks, >>> Kyrill >>> >>>> 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> >>>> >>>> gcc/ >>>> * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use >>>> MVE_pred/MVE_constraint instead of mve_imm_7/Ra. >>>> (mve_vqshluq_m_n_s<mode>): Likewise. >>>> (mve_vqrshrnbq_n_<supf><mode>): Use >>>> MVE_pred3/MVE_constraint3 >>>> instead of mve_imm_8/Rb. >>>> (mve_vqrshrunbq_n_s<mode>): Likewise. >>>> (mve_vqrshrntq_n_<supf><mode>): Likewise. >>>> (mve_vqrshruntq_n_s<mode>): Likewise. >>>> (mve_vrshrnbq_n_<supf><mode>): Likewise. >>>> (mve_vrshrntq_n_<supf><mode>): Likewise. >>>> (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. >>>> (mve_vqrshrntq_m_n_<supf><mode>): Likewise. >>>> (mve_vrshrnbq_m_n_<supf><mode>): Likewise. >>>> (mve_vrshrntq_m_n_<supf><mode>): Likewise. >>>> (mve_vqrshrunbq_m_n_s<mode>): Likewise. >>>> (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 >>>> instead >>>> of mve_imm_selective_upto_8/Rg. >>>> (mve_vsriq_m_n_<supf><mode>): Likewise. >>>> --- >>>> gcc/config/arm/mve.md | 30 +++++++++++++++--------------- >>>> 1 file changed, 15 insertions(+), 15 deletions(-) >>>> >>>> diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md >>>> index c4dec01baac..714178609f7 100644 >>>> --- a/gcc/config/arm/mve.md >>>> +++ b/gcc/config/arm/mve.md >>>> @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" >>>> [ >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >>>> "w") >>>> - (match_operand:SI 2 "mve_imm_7" "Ra")] >>>> + (match_operand:SI 2 "<MVE_pred>" >>>> "<MVE_constraint>")] >>>> VQSHLUQ_N_S)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -2615,7 +2615,7 @@ (define_insn >> "mve_vqrshrnbq_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 >>>> "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VQRSHRNBQ_N)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 >>>> "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VQRSHRUNBQ_N_S)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >>>> "0") >>>> (match_operand:MVE_2 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_selective_upto_8" >>>> "Rg")] >>>> + (match_operand:SI 3 "<MVE_pred2>" >>>> "<MVE_constraint2>")] >>>> VSRIQ_N)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -4473,7 +4473,7 @@ (define_insn >> "mve_vqrshrntq_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VQRSHRNTQ_N)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VQRSHRUNTQ_N_S)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -4777,7 +4777,7 @@ (define_insn >> "mve_vrshrnbq_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VRSHRNBQ_N)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -4793,7 +4793,7 @@ (define_insn "mve_vrshrntq_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>")] >>>> VRSHRNTQ_N)) >>>> ] >>>> "TARGET_HAVE_MVE" >>>> @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >>>> "0") >>>> (match_operand:MVE_2 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_7" "Ra") >>>> + (match_operand:SI 3 "<MVE_pred>" >>>> "<MVE_constraint>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VQSHLUQ_M_N_S)) >>>> ] >>>> @@ -5019,7 +5019,7 @@ (define_insn "mve_vsriq_m_n_<supf><mode>" >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" >>>> "0") >>>> (match_operand:MVE_2 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") >>>> + (match_operand:SI 3 "<MVE_pred2>" >>>> "<MVE_constraint2>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VSRIQ_M_N)) >>>> ] >>>> @@ -6138,7 +6138,7 @@ (define_insn >>>> "mve_vqrshrnbq_m_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VQRSHRNBQ_M_N)) >>>> ] >>>> @@ -6155,7 +6155,7 @@ (define_insn >>>> "mve_vqrshrntq_m_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VQRSHRNTQ_M_N)) >>>> ] >>>> @@ -6223,7 +6223,7 @@ (define_insn >>>> "mve_vrshrnbq_m_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VRSHRNBQ_M_N)) >>>> ] >>>> @@ -6240,7 +6240,7 @@ (define_insn >> "mve_vrshrntq_m_n_<supf><mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VRSHRNTQ_M_N)) >>>> ] >>>> @@ -6461,7 +6461,7 @@ (define_insn >> "mve_vqrshrunbq_m_n_s<mode>" >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 >>>> "s_register_operand" "0") >>>> (match_operand:MVE_5 2 "s_register_operand" "w") >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") >>>> + (match_operand:SI 3 "<MVE_pred3>" >>>> "<MVE_constraint3>") >>>> (match_operand:<MVE_VPRED> 4 >>>> "vpr_register_operand" "Up")] >>>> VQRSHRUNBQ_M_N_S)) >>>> ] >>>> -- >>>> 2.34.1 >>>
> -----Original Message----- > From: Christophe Lyon <Christophe.Lyon@arm.com> > Sent: Wednesday, September 7, 2022 5:59 PM > To: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>; gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] arm: Fix constant immediates predicates and > constraints for some MVE builtins > > > > On 9/7/22 15:42, Kyrylo Tkachov wrote: > > > > > >> -----Original Message----- > >> From: Christophe Lyon <Christophe.Lyon@arm.com> > >> Sent: Wednesday, September 7, 2022 2:41 PM > >> To: Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>; gcc-patches@gcc.gnu.org > >> Subject: Re: [PATCH] arm: Fix constant immediates predicates and > >> constraints for some MVE builtins > >> > >> > >> > >> On 9/7/22 15:34, Kyrylo Tkachov wrote: > >>> Hi Christophe, > >>> > >>>> -----Original Message----- > >>>> From: Gcc-patches <gcc-patches- > >>>> bounces+kyrylo.tkachov=arm.com@gcc.gnu.org> On Behalf Of > Christophe > >>>> Lyon via Gcc-patches > >>>> Sent: Wednesday, September 7, 2022 2:03 PM > >>>> To: gcc-patches@gcc.gnu.org > >>>> Subject: [PATCH] arm: Fix constant immediates predicates and > constraints > >> for > >>>> some MVE builtins > >>>> > >>>> Several MVE builtins incorrectly use the same predicate/constraint > >>>> pair for several modes, which does not match the specification. > >>>> This patch uses the appropriate iterator instead. > >>>> > >>> > >>> This looks ok to me. > >>> I presume you've tested this appropriately? > >> > >> I tested it manually with an offending testcase. > >> > >> Unfortunately, the existing testcases all use '1' as immediate, so this > >> does not really check the boundaries. We do plan to improve the existing > >> tests in a later patch that will more generally improve the MVE tests. > > > > Sure, improving the tests is definitely worth it here. > > I meant more in the context of a standard bootstrap and testsuite run. > > OK, just ran a bootstrap on arm-linux-gnueabihf, no issue, and > regression tested on a cross arm-eabi with the default > RUNTESTFLAGS/target-board, no issue either. > Ok, thanks for testing. Kyrill > Thanks, > > Christophe > > > Thanks, > > Kyrill > > > >> > >> Christophe > >> > >>> If so, ok for trunk. > >>> Thanks, > >>> Kyrill > >>> > >>>> 2022-09-06 Christophe Lyon <christophe.lyon@arm.com> > >>>> > >>>> gcc/ > >>>> * config/arm/mve.md (mve_vqshluq_n_s<mode>): Use > >>>> MVE_pred/MVE_constraint instead of mve_imm_7/Ra. > >>>> (mve_vqshluq_m_n_s<mode>): Likewise. > >>>> (mve_vqrshrnbq_n_<supf><mode>): Use > >>>> MVE_pred3/MVE_constraint3 > >>>> instead of mve_imm_8/Rb. > >>>> (mve_vqrshrunbq_n_s<mode>): Likewise. > >>>> (mve_vqrshrntq_n_<supf><mode>): Likewise. > >>>> (mve_vqrshruntq_n_s<mode>): Likewise. > >>>> (mve_vrshrnbq_n_<supf><mode>): Likewise. > >>>> (mve_vrshrntq_n_<supf><mode>): Likewise. > >>>> (mve_vqrshrnbq_m_n_<supf><mode>): Likewise. > >>>> (mve_vqrshrntq_m_n_<supf><mode>): Likewise. > >>>> (mve_vrshrnbq_m_n_<supf><mode>): Likewise. > >>>> (mve_vrshrntq_m_n_<supf><mode>): Likewise. > >>>> (mve_vqrshrunbq_m_n_s<mode>): Likewise. > >>>> (mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 > >>>> instead > >>>> of mve_imm_selective_upto_8/Rg. > >>>> (mve_vsriq_m_n_<supf><mode>): Likewise. > >>>> --- > >>>> gcc/config/arm/mve.md | 30 +++++++++++++++--------------- > >>>> 1 file changed, 15 insertions(+), 15 deletions(-) > >>>> > >>>> diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md > >>>> index c4dec01baac..714178609f7 100644 > >>>> --- a/gcc/config/arm/mve.md > >>>> +++ b/gcc/config/arm/mve.md > >>>> @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" > >>>> [ > >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >>>> "w") > >>>> - (match_operand:SI 2 "mve_imm_7" "Ra")] > >>>> + (match_operand:SI 2 "<MVE_pred>" > >>>> "<MVE_constraint>")] > >>>> VQSHLUQ_N_S)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -2615,7 +2615,7 @@ (define_insn > >> "mve_vqrshrnbq_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 > >>>> "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VQRSHRNBQ_N)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 > >>>> "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VQRSHRUNBQ_N_S)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" > >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >>>> "0") > >>>> (match_operand:MVE_2 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_selective_upto_8" > >>>> "Rg")] > >>>> + (match_operand:SI 3 "<MVE_pred2>" > >>>> "<MVE_constraint2>")] > >>>> VSRIQ_N)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -4473,7 +4473,7 @@ (define_insn > >> "mve_vqrshrntq_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VQRSHRNTQ_N)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VQRSHRUNTQ_N_S)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -4777,7 +4777,7 @@ (define_insn > >> "mve_vrshrnbq_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VRSHRNBQ_N)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -4793,7 +4793,7 @@ (define_insn > "mve_vrshrntq_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb")] > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>")] > >>>> VRSHRNTQ_N)) > >>>> ] > >>>> "TARGET_HAVE_MVE" > >>>> @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" > >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >>>> "0") > >>>> (match_operand:MVE_2 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_7" "Ra") > >>>> + (match_operand:SI 3 "<MVE_pred>" > >>>> "<MVE_constraint>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VQSHLUQ_M_N_S)) > >>>> ] > >>>> @@ -5019,7 +5019,7 @@ (define_insn > "mve_vsriq_m_n_<supf><mode>" > >>>> (set (match_operand:MVE_2 0 "s_register_operand" "=w") > >>>> (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" > >>>> "0") > >>>> (match_operand:MVE_2 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") > >>>> + (match_operand:SI 3 "<MVE_pred2>" > >>>> "<MVE_constraint2>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VSRIQ_M_N)) > >>>> ] > >>>> @@ -6138,7 +6138,7 @@ (define_insn > >>>> "mve_vqrshrnbq_m_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VQRSHRNBQ_M_N)) > >>>> ] > >>>> @@ -6155,7 +6155,7 @@ (define_insn > >>>> "mve_vqrshrntq_m_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VQRSHRNTQ_M_N)) > >>>> ] > >>>> @@ -6223,7 +6223,7 @@ (define_insn > >>>> "mve_vrshrnbq_m_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VRSHRNBQ_M_N)) > >>>> ] > >>>> @@ -6240,7 +6240,7 @@ (define_insn > >> "mve_vrshrntq_m_n_<supf><mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VRSHRNTQ_M_N)) > >>>> ] > >>>> @@ -6461,7 +6461,7 @@ (define_insn > >> "mve_vqrshrunbq_m_n_s<mode>" > >>>> (set (match_operand:<V_narrow_pack> 0 "s_register_operand" > "=w") > >>>> (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 > >>>> "s_register_operand" "0") > >>>> (match_operand:MVE_5 2 "s_register_operand" "w") > >>>> - (match_operand:SI 3 "mve_imm_8" "Rb") > >>>> + (match_operand:SI 3 "<MVE_pred3>" > >>>> "<MVE_constraint3>") > >>>> (match_operand:<MVE_VPRED> 4 > >>>> "vpr_register_operand" "Up")] > >>>> VQRSHRUNBQ_M_N_S)) > >>>> ] > >>>> -- > >>>> 2.34.1 > >>>
diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md index c4dec01baac..714178609f7 100644 --- a/gcc/config/arm/mve.md +++ b/gcc/config/arm/mve.md @@ -1624,7 +1624,7 @@ (define_insn "mve_vqshluq_n_s<mode>" [ (set (match_operand:MVE_2 0 "s_register_operand" "=w") (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w") - (match_operand:SI 2 "mve_imm_7" "Ra")] + (match_operand:SI 2 "<MVE_pred>" "<MVE_constraint>")] VQSHLUQ_N_S)) ] "TARGET_HAVE_MVE" @@ -2615,7 +2615,7 @@ (define_insn "mve_vqrshrnbq_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VQRSHRNBQ_N)) ] "TARGET_HAVE_MVE" @@ -2630,7 +2630,7 @@ (define_insn "mve_vqrshrunbq_n_s<mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VQRSHRUNBQ_N_S)) ] "TARGET_HAVE_MVE" @@ -3570,7 +3570,7 @@ (define_insn "mve_vsriq_n_<supf><mode>" (set (match_operand:MVE_2 0 "s_register_operand" "=w") (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")] + (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")] VSRIQ_N)) ] "TARGET_HAVE_MVE" @@ -4473,7 +4473,7 @@ (define_insn "mve_vqrshrntq_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VQRSHRNTQ_N)) ] "TARGET_HAVE_MVE" @@ -4489,7 +4489,7 @@ (define_insn "mve_vqrshruntq_n_s<mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VQRSHRUNTQ_N_S)) ] "TARGET_HAVE_MVE" @@ -4777,7 +4777,7 @@ (define_insn "mve_vrshrnbq_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VRSHRNBQ_N)) ] "TARGET_HAVE_MVE" @@ -4793,7 +4793,7 @@ (define_insn "mve_vrshrntq_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb")] + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")] VRSHRNTQ_N)) ] "TARGET_HAVE_MVE" @@ -4987,7 +4987,7 @@ (define_insn "mve_vqshluq_m_n_s<mode>" (set (match_operand:MVE_2 0 "s_register_operand" "=w") (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_7" "Ra") + (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VQSHLUQ_M_N_S)) ] @@ -5019,7 +5019,7 @@ (define_insn "mve_vsriq_m_n_<supf><mode>" (set (match_operand:MVE_2 0 "s_register_operand" "=w") (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg") + (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VSRIQ_M_N)) ] @@ -6138,7 +6138,7 @@ (define_insn "mve_vqrshrnbq_m_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb") + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VQRSHRNBQ_M_N)) ] @@ -6155,7 +6155,7 @@ (define_insn "mve_vqrshrntq_m_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb") + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VQRSHRNTQ_M_N)) ] @@ -6223,7 +6223,7 @@ (define_insn "mve_vrshrnbq_m_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb") + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VRSHRNBQ_M_N)) ] @@ -6240,7 +6240,7 @@ (define_insn "mve_vrshrntq_m_n_<supf><mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb") + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VRSHRNTQ_M_N)) ] @@ -6461,7 +6461,7 @@ (define_insn "mve_vqrshrunbq_m_n_s<mode>" (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w") (unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0") (match_operand:MVE_5 2 "s_register_operand" "w") - (match_operand:SI 3 "mve_imm_8" "Rb") + (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>") (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")] VQRSHRUNBQ_M_N_S)) ]