From patchwork Tue Apr 18 13:45:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 67936 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B4FA3851C23 for ; Tue, 18 Apr 2023 13:53:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B4FA3851C23 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681826000; bh=wpvYNlknvG9j76k+3A2t4sN3Mf7t1nPnpVN0uw53LH8=; h=To:CC:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=VLk4b5J8nfWOtdi9jHdJH8CAWYR0LSfA2fRwontRBy9OaByaqzmtc4XAnqpedU2VF AiLhgwEZKehN1s6cIYFYiVo/Dvp81quIowRQTekPBkiGVShdDaSV3VviFjEvAA/KUo JHHXD0MnDvipdB4ofyMTXYEpIMD2VX91WPvXOFrE= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2075.outbound.protection.outlook.com [40.107.104.75]) by sourceware.org (Postfix) with ESMTPS id 201323857036 for ; Tue, 18 Apr 2023 13:47:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 201323857036 Received: from DB6PR0301CA0008.eurprd03.prod.outlook.com (2603:10a6:4:3e::18) by AS2PR08MB10155.eurprd08.prod.outlook.com (2603:10a6:20b:62d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 13:47:42 +0000 Received: from DBAEUR03FT028.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:3e:cafe::c8) by DB6PR0301CA0008.outlook.office365.com (2603:10a6:4:3e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.46 via Frontend Transport; Tue, 18 Apr 2023 13:47:42 +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 DBAEUR03FT028.mail.protection.outlook.com (100.127.142.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:42 +0000 Received: ("Tessian outbound 3570909035da:v136"); Tue, 18 Apr 2023 13:47:42 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 169208a602e1c9d5 X-CR-MTA-TID: 64aa7808 Received: from ee5292f6a9da.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 78EEB47D-734F-48C9-9EC7-2DFB875C62D5.1; Tue, 18 Apr 2023 13:47:32 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ee5292f6a9da.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 18 Apr 2023 13:47:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GLC9Xwieu/N6cKYZKZQrdikc6S5cuqeOqUelsHHIsVVDVSrrpRa7p6XazOEkDm1h1nzagqRDEpoPcL0B9/kiA4otKTewSttEeBi4OqCNJSOGoUyY58UjwqEtpcXq+E/gtHrtCN+XXI6fnyHgraMf0YxHu6MXTspOxGAFlzLIC3l0w0U2t5iA8YuMHKF6DBf8FlbjR54FYSE4yOB2kkoPGZXNuQ65r4pfeZZGTqVzsZssovJ3fjz5Kjhl+FGSNhneaHc1Vwc1Rm7VPO/30T0Yjc75FmXog7rpCdm4OT6OJU8/StG7xsHXIuuQcyZGMmEryXJ0rmWXen4n29XB3kIHJA== 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=wpvYNlknvG9j76k+3A2t4sN3Mf7t1nPnpVN0uw53LH8=; b=DsmxY+8haC+MvDgOMk3AAL8KC5A0EBO9GJ5tmpEMmd8EFK6cgiiXD6mZ98rTDq+QzrRQsnjCNy5XGTKE3XfqLTY9wuhTTd1s/3PRs4OrJIacjzTjL2M6DI6Ex/rgw+iv7BTtRjFs0n5FvHWW6xOryoqPHM9QkpPxAeg+4ACpuTTPYHHqoDA0+o/jKDzOYNyKw/K9sZXXLMNdd0QeDA8Nqtol3l+bZ58mw/GTfeiqyXBR5saTgYiGqkMkc1Ca+jiKxlwVrxxz6Q8mzI4btI5oj1H2Ow5zuoqXsWp39jSz/6HW80KSrKYMbyH1iZsNhTdZhxz5b+aPb4VfD8FTYD/gZQ== 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 AS9PR05CA0070.eurprd05.prod.outlook.com (2603:10a6:20b:499::6) by DBAPR08MB5783.eurprd08.prod.outlook.com (2603:10a6:10:1a3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 13:47:22 +0000 Received: from AM7EUR03FT016.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:499:cafe::24) by AS9PR05CA0070.outlook.office365.com (2603:10a6:20b:499::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.46 via Frontend Transport; Tue, 18 Apr 2023 13:47:22 +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 AM7EUR03FT016.mail.protection.outlook.com (100.127.140.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:22 +0000 Received: from AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) 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.23; Tue, 18 Apr 2023 13:47:18 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 18 Apr 2023 13:47:18 +0000 Received: from e129018.arm.com (10.57.54.117) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.23 via Frontend Transport; Tue, 18 Apr 2023 13:47:18 +0000 To: , , , CC: Christophe Lyon Subject: [PATCH 12/22] arm: [MVE intrinsics] add binary_orrq shape Date: Tue, 18 Apr 2023 15:45:58 +0200 Message-ID: <20230418134608.244751-13-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230418134608.244751-1-christophe.lyon@arm.com> References: <20230418134608.244751-1-christophe.lyon@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM7EUR03FT016:EE_|DBAPR08MB5783:EE_|DBAEUR03FT028:EE_|AS2PR08MB10155:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d100c96-e061-46ff-4c16-08db40137b7b 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: U8QxUDDBcDeP2tOthbuMWR+SjqgMp9l0cU/wTvdfqW07BAChfpFmqjQjamFORvaSuqa/eLuUWjMLiIGDyWHrlfi9Fi+J6S8Guk3GGKm0EmPjCf58w0e/a7kHOHqoB+ugTZy0A09IJPlm53EgsiEr1KEDw7xG2F3xwvlrm8ULaa+V2N693wBwoqTlPNcTVvJxB8QgloDgjLF7cNToTUbKBgUHOLYmDpZLbbBIgkMtk97wX/LsqlMYd458DCjvqA+fBRIiWJ7utQHAwj3gmR+qu0ZIn+t5SI8Lix3Hbt714ddgswM/erWk1SPKVfbYBPTZPrlXiAxC51mzXBKyfWxp8ocNOU2lmAq4OzM0IQ3xM1OyMnmD2Q8Q0JAwj7sUlVaOC7ZKOp1714TiXJvVeenSqWOTzq7oR9dZDhXETQAhsSROcMShDnXsBsR2swP6lwHrWaBFNRt13a06sm9eMli0FH5CtLObaCb1WDnEOsJyQUQqK9vT37UmFU6sPVLpHPFVdRr1NPiJVpXp/SQ/1zngfd0mSfYfuDCd1jLntf40gU40aAJwXdpheo30SmVTM8t2CtwDGD6cFY7cf5XAlVOzIKMj+H3BmW2icmCsTkwycQ3E6YW9rCXZIQbf+hr82s986p1YtXB2aMpTG2ADKH6vbPerc9E3702iYxSmRtJZjjZ8Iu6gfhNr0ou+OyZgVvODEZ8jg9mjoVcFQFJL9JInHw== 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:(13230028)(4636009)(376002)(136003)(346002)(396003)(39850400004)(451199021)(36840700001)(46966006)(336012)(6666004)(7696005)(478600001)(86362001)(110136005)(2616005)(47076005)(36756003)(426003)(36860700001)(40480700001)(26005)(83380400001)(1076003)(186003)(82740400003)(356005)(70586007)(70206006)(81166007)(316002)(2906002)(4326008)(8936002)(5660300002)(8676002)(44832011)(41300700001)(82310400005)(6636002)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5783 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4fdc07ef-2622-46b7-c82a-08db40136f72 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KNMbdGsSavcv+P7Jhheg5WT1XBQWV4qw+Ml0PFrNe0UDYMfH1E2FfSLBG3CvCxRHZu3O4Rp0N2VClmUejc42uXiaMKuWPSzTexmi//ABuxGw2Q+PTr5ibtI369+2Y00g7BQoacBZAM0smIsIhUUvMdwu1PBoBdLMObPFD2pRbOCN/FjTKBjaC0CBukkaESmeKht97fjfFoiIX1vsJwpKCJtr4gqh7fKBMTjtt6O6t11CrMq9GkmskS+Z9Pe5Yo+FrjDQf6zOIhiN+4uG8diwLyBrlm3pcyOv3TIzeu3kUyk0Xvr25IHYqolNOc9g2swtQ5ddrY1lquc97REOcj5JzZ7Ab7/Ux1kcbt7bEGhRkZv/8Y7xYAYSZK6V3fBRR1TufDP+7iaApSUdsc1je2Yu5VGissdJGpKj/PqWtwACe8JW1YTgxkBHnKK88j5iDI5lHAMeXSzFRp87jK0vvesZwT6S8PveIpvME61RyJI6/BA0OQLaDG+KmarV+2G0jeDCW25kcN3IDuRBLsSu+m3c4hVhn5r+qNAZe69r5bkPMfG50g+HT9fhCBa3Fc6RPq1Er/sH1VlHG9qRAwrJKsLPjVXtiqMjaG2OuAsljWnFEfHq6sZYyIUz08qvKNBOTxwPUp9e9/AhLDZrmBxRZ3MwVujkpPBhfr+tJtnv6Nrf+crnvJlcOxxAw5lfY7hoz2vb+UyZYo60EEkVboEQTsehzg== 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:(13230028)(4636009)(346002)(396003)(136003)(376002)(39860400002)(451199021)(40470700004)(36840700001)(46966006)(40480700001)(40460700003)(41300700001)(316002)(70206006)(4326008)(6636002)(70586007)(44832011)(81166007)(82740400003)(2906002)(336012)(8936002)(8676002)(5660300002)(426003)(83380400001)(1076003)(26005)(2616005)(110136005)(186003)(6666004)(36860700001)(478600001)(7696005)(47076005)(86362001)(36756003)(82310400005); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 13:47:42.3135 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3d100c96-e061-46ff-4c16-08db40137b7b 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: DBAEUR03FT028.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10155 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Christophe Lyon via Gcc-patches From: Christophe Lyon Reply-To: Christophe Lyon Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" patch adds the binary_orrq shape description. MODE_n intrinsics use a set of predicates (preds_m_or_none) different the MODE_none ones, so we explicitly reference preds_m_or_none from the shape, thus we need to make it a global array. 2022-09-08 Christophe Lyon gcc/ * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New. * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New. * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static. * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare. --- gcc/config/arm/arm-mve-builtins-shapes.cc | 61 +++++++++++++++++++++++ gcc/config/arm/arm-mve-builtins-shapes.h | 1 + gcc/config/arm/arm-mve-builtins.cc | 2 +- gcc/config/arm/arm-mve-builtins.h | 3 ++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/gcc/config/arm/arm-mve-builtins-shapes.cc b/gcc/config/arm/arm-mve-builtins-shapes.cc index e69faae4e2c..83410bbc51a 100644 --- a/gcc/config/arm/arm-mve-builtins-shapes.cc +++ b/gcc/config/arm/arm-mve-builtins-shapes.cc @@ -397,6 +397,67 @@ struct binary_opt_n_def : public overloaded_base<0> }; SHAPE (binary_opt_n) +/* _t vfoo[t0](_t, _t) + _t vfoo[_n_t0](_t, _t) + + Where the _n form has only supports s16/s32/u16/u32 types as for vorrq. + + Example: vorrq. + int16x8_t [__arm_]vorrq[_s16](int16x8_t a, int16x8_t b) + int16x8_t [__arm_]vorrq_m[_s16](int16x8_t inactive, int16x8_t a, int16x8_t b, mve_pred16_t p) + int16x8_t [__arm_]vorrq_x[_s16](int16x8_t a, int16x8_t b, mve_pred16_t p) + int16x8_t [__arm_]vorrq[_n_s16](int16x8_t a, const int16_t imm) + int16x8_t [__arm_]vorrq_m_n[_s16](int16x8_t a, const int16_t imm, mve_pred16_t p) */ +struct binary_orrq_def : public overloaded_base<0> +{ + bool + explicit_mode_suffix_p (enum predication_index pred, enum mode_suffix_index mode) const override + { + return (mode == MODE_n + && pred == PRED_m); + } + + bool + skip_overload_p (enum predication_index pred, enum mode_suffix_index mode) const override + { + switch (mode) + { + case MODE_none: + return false; + + /* For MODE_n, share the overloaded instance with MODE_none, except for PRED_m. */ + case MODE_n: + return pred != PRED_m; + + default: + gcc_unreachable (); + } + } + + void + build (function_builder &b, const function_group_info &group, + bool preserve_user_namespace) const override + { + b.add_overloaded_functions (group, MODE_none, preserve_user_namespace); + b.add_overloaded_functions (group, MODE_n, preserve_user_namespace); + build_all (b, "v0,v0,v0", group, MODE_none, preserve_user_namespace); + build_16_32 (b, "v0,v0,s0", group, MODE_n, preserve_user_namespace, false, preds_m_or_none); + } + + tree + resolve (function_resolver &r) const override + { + unsigned int i, nargs; + type_suffix_index type; + if (!r.check_gp_argument (2, i, nargs) + || (type = r.infer_vector_type (0)) == NUM_TYPE_SUFFIXES) + return error_mark_node; + + return r.finish_opt_n_resolution (i, 0, type); + } +}; +SHAPE (binary_orrq) + /* [xN]_t vfoo_t0(). Example: vuninitializedq. diff --git a/gcc/config/arm/arm-mve-builtins-shapes.h b/gcc/config/arm/arm-mve-builtins-shapes.h index b00ee5eb57a..618b3226050 100644 --- a/gcc/config/arm/arm-mve-builtins-shapes.h +++ b/gcc/config/arm/arm-mve-builtins-shapes.h @@ -36,6 +36,7 @@ namespace arm_mve extern const function_shape *const binary; extern const function_shape *const binary_opt_n; + extern const function_shape *const binary_orrq; extern const function_shape *const inherent; extern const function_shape *const unary_convert; diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc index e409a029346..c74e890bd3d 100644 --- a/gcc/config/arm/arm-mve-builtins.cc +++ b/gcc/config/arm/arm-mve-builtins.cc @@ -285,7 +285,7 @@ static const predication_index preds_none[] = { PRED_none, NUM_PREDS }; /* Used by functions that have the m (merging) predicated form, and in addition have an unpredicated form. */ -static const predication_index preds_m_or_none[] = { +const predication_index preds_m_or_none[] = { PRED_m, PRED_none, NUM_PREDS }; diff --git a/gcc/config/arm/arm-mve-builtins.h b/gcc/config/arm/arm-mve-builtins.h index a20d2fb5d86..c9b51a0c77b 100644 --- a/gcc/config/arm/arm-mve-builtins.h +++ b/gcc/config/arm/arm-mve-builtins.h @@ -135,6 +135,9 @@ enum predication_index NUM_PREDS }; +/* Some shapes need access to some predicate sets. */ +extern const predication_index preds_m_or_none[]; + /* Classifies element types, based on type suffixes with the bit count removed. */ enum type_class_index