From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id C5E5E385AFB0 for ; Mon, 24 Jul 2023 09:09:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C5E5E385AFB0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36O6o0wu007148 for ; Mon, 24 Jul 2023 09:09:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=ZnGtQbPMxzk7iOxTayllu7Y1uKs4iP7+TP3mDbLNnZ4=; b=fpKHxOC5nmFsbC434yVHEXsdIGKLZbfVksWro+qn308bZcaYeGhSvyZudmAWc+aYIX4F Tpk9CQpAfntzZecaTTbZLdn4yqrdhsRcLWkOVc8bc+VudcUKScmwfcRCbg/aKfHQJxgM f9Y0bpoOHgZ6/nfcRcb3vCKL+ix8kY94Wokopogni1eJ9b+tZFpDV6xD8OMnC5LagwtC PeLyZ8VjBbuXSqcDzPKmjJ05VfeWUelJSZEIshiG+sFVCBWXKTQSVtDeAw6VKbxCkEUs ZEmF3FYaeDi51A8+b6tEhW18ER5t87BBA7Zu2PqNLgH3oEmb6M1vguqBK7Mz+XvLAJGR Vw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3s07nuj7cw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 24 Jul 2023 09:09:37 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 36O7fgra029285 for ; Mon, 24 Jul 2023 09:09:25 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3s05j9e7nr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 24 Jul 2023 09:09:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QOBgdYw3EVomDUbFLSFPXIV1DXNW8T76hgQDLIkG4fWjAzsOhgadM+kpHhsFz60+QY8JWnSUQAMLioevj3/K9KWOb/z25Bm8h1MWUenSn8NYITQ8+I7Fd224NMtNPAv4ABn/5kadf8Pycdwny2sYuZmlkwUcsC6KsdF/AzM0SLoCyMVvXmmPQP84TzgPYqZsbaxooNAHIva7sh31FIa5OSn/zkzDfxvR0wiFWz3diOOopuI0lP+ytvK7m4OOzUhpdl7eSxyo6sJWyaGJ5G9/FT8UXDkS3kJ2RP7g/U4HEGnHua+ht8DSyPHLA/Or13qIGop6lVTSRetHHgSGcceGOw== 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=ZnGtQbPMxzk7iOxTayllu7Y1uKs4iP7+TP3mDbLNnZ4=; b=Mbd2RKSDcvKKuB0ynKK3BPOqPVrHgEbX8q7xm2eZ7A84g8ALnKRde1PLTt+Pg2zsGDCzSFtechqYpmGqGgHyJwjcfSBQDpNeW3e84UWOTL40jgkDTD8pDj0FVjRtx43OxAjlHOydoW+Q5aNmjQ7GN3HCNAvrvDp2L0PBvY3NtvymnbtpeP1Smf8qpnoHfaksY8FA5G1Z++XrMKcJM2YOZqUtyusVQP8AO1YbkaW7AXc6+axSxVmSom552bCTdAbNgTl9G2S0DxUZod0dM1FAjFSFHIEDGF7vw4cUd99PwXPDTImTKz3MfPvQRLxR1u4pnIxoNaTmiPzkZX/52U9NrA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZnGtQbPMxzk7iOxTayllu7Y1uKs4iP7+TP3mDbLNnZ4=; b=y8/KeR9d6p2b+C6G1K7RJHGA5TMOgB5asDZU4P3H+hzkCsdcM7CVhZpUjlqhWFIX2gECIp9QkEPHH2ZdKcMJECQG0AP0a/OU53AkZhPhbyxMvlHA1OUTqsJuMcJ5A/gBWFGusde3WVlvZb7TQUTzOrqxBhmcimzoC+211USQIr4= Received: from BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by CY5PR10MB5987.namprd10.prod.outlook.com (2603:10b6:930:29::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.32; Mon, 24 Jul 2023 09:09:22 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::4d0c:9857:9b42:2f6c]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::4d0c:9857:9b42:2f6c%4]) with mapi id 15.20.6609.031; Mon, 24 Jul 2023 09:09:22 +0000 From: "Jose E. Marchesi" To: gcc-patches@gcc.gnu.org Subject: [COMMITTED] bpf: make use of the bswap{16,32,64} V4 BPF instruction Date: Mon, 24 Jul 2023 11:09:15 +0200 Message-Id: <20230724090915.27231-1-jose.marchesi@oracle.com> X-Mailer: git-send-email 2.30.2 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO0P265CA0004.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:355::14) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB2888:EE_|CY5PR10MB5987:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d9179ec-a12e-4312-8a7a-08db8c25ab60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BeTXFnWXjpdKehZXGyfd0vcLJfortx6RG627HLTRuXJt+8zUGHM/8brK01WeNG+46TUv2uhHCkJ50OnmKLZ9laBLLh+5fERKAZVHhsdSujGN3fgCUrnDHel/jhM9dJdtFDSCnXXNC+6v8t0weS+MjzmPVUpC25OtUdGv4dZ6b9zY5CTrQdRBWHlX7EsMHfmTg495fMSvWYwoTMOVoTo9DF4JdpKfmBBGNUYb3eSBxqbqtd1BRVclmnuTWc7yWnqr972A21GKjBIUQJeEOru7VC63bI3DH1PKbLhD5jte1XS1Aq9UivfxoxkyYIdRulxD0L5DKW6KfUw9wk23/8KIElmJT6D9ly2zTkaOJqTYI0ULdz1hlqjyBorBWMu/24NLT+qXtK6Qzf/2Vh+Tt17fNkmmg/GCRJI6GXSlcTLspxNUaMUOblwUIDsgZiQTxFEicKYaTwclME8tBGQxIJZnhJk4hR7fdQA1cmrtUTPvyLE/0PF0jcruJlhGPeIXRHKIS8uw64wDzLK0hk8oE/CSynhtOzbtUqFH0U1f/1V/Re8= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2888.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(346002)(39860400002)(376002)(366004)(451199021)(186003)(26005)(1076003)(6506007)(5660300002)(36756003)(8936002)(8676002)(2906002)(2616005)(86362001)(38100700002)(83380400001)(6486002)(6666004)(6512007)(6916009)(316002)(66556008)(66946007)(66476007)(84970400001)(478600001)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Uw+PK1Q1pxIe0yL3p9C3GNYN9c2S6rAKZjPuzlRl2rjm8c/g0jXa+kX13+KE?= =?us-ascii?Q?uxjMGZAsE11BuYnOBKrtYGd0s2gAi3MCSId3EDd+JDmww4TrR30S+aoyCS24?= =?us-ascii?Q?ib5Iv4EmN9dGPtpBm6GaO0e5RMKvYWhux2WqBlCe0XKlAhfB7k5pycBE6ks4?= =?us-ascii?Q?hi0g1zHghKhRU7rzS3WAVjIbonjM/MOIGBRMUmw4FgYF5ec9jOQ4OVXPNJuP?= =?us-ascii?Q?BZP6aLu3snzInJK1/OnoluoYIMdVW9eTjIDj5EwIGjRCQv7xLFGO0hNxcrBN?= =?us-ascii?Q?GSQCb6TGPfGSq5CyVQZNVP3YqksIcj9Wq1u91YBWVdcFzs3Jmn1aCq3d0Fzv?= =?us-ascii?Q?0yPEqhNOBOmg0VFp2bjQq8FNuYpg30Vgii6GXY5CLR9XMaIJvih6562ahvMN?= =?us-ascii?Q?vYtigVd/KEOyaYzYUB7RSeoAxlvEXdN/Qdt18apAmsIw3K5LFJ/ToSDrEcEs?= =?us-ascii?Q?kmfv6igA0xpTFp3hNFCI/wjWMi9Ajq5T6AwuT72l4SIiqoGuKdsKScx+ngzl?= =?us-ascii?Q?RcdWpQKK0ljsBmpJN9aKBLOnFilfSX1/sMSTMiZ6UFczzmscrebwuzj1drGF?= =?us-ascii?Q?aIAoO8MCuzUfBijDefDcS85CcSAMMrEB7ksroazWb0d9BpQJjDQ5Xg1TM/bo?= =?us-ascii?Q?GEm6NJ4DdofR1lKUIB4fDVm9oP0eIys2bj8Lqoto/SusvKdpwuCAkCOZAy03?= =?us-ascii?Q?6+Mr8Yz3jAGWW/jw2M6J+87y8bbsvllW7HSePbWsz/P/3wZG8FR2P1HiDkT4?= =?us-ascii?Q?Go91H3uQgmadAEi+JbbmMQw9buOr/dE9iGRVyS6Or3t9q2ul7/LjxL1N8Qho?= =?us-ascii?Q?9cM/jH8ivCuEEhOPQYcoYuN1Ai43OXwUUVbCrnrd0hSyJkavBk4bRq7UDJCT?= =?us-ascii?Q?8afR4okAv9sjRbhhTkzSmGNhonHE42Nv3mOct1S8zMFm+WVCVpeIYEbOXpFV?= =?us-ascii?Q?jViGs1TNmwmSTp/V1CSXHqunjpJB46DQCKgu1IECu8af73bX+ZpTgzSiCjIy?= =?us-ascii?Q?kyqVSBakYfi5QY6isLN1fLDpnVULqDcpNNXg0bN9ZreQ7iqWGXjFP4nPGNz+?= =?us-ascii?Q?HdhFHZ3s3op+WOSciksi1PYDeX/UIJBBBbif9JWRp5VUoNh9YvTrvhr8jRKs?= =?us-ascii?Q?BTVuun2xwaM0yJp3UgkVxtMZgqfxz/aGFmM0OX97lmU5gSU4aMOoWVR5zTG7?= =?us-ascii?Q?kRxZIHhnTSkpzEwB/9d9JnD2oC7hrqjGaXT94ygp8gJ5GF2n3uCjzKjc9QLW?= =?us-ascii?Q?vuycFChuQgHgBtdGNVI3tiAu6J63q2/oCwqMamwtT1uo2xHUbD+63f9koIq3?= =?us-ascii?Q?vZ432aoHMXIjwVy7/PC+fSzA32QEVg214ZoARjXEdniQi+Tfo7uJAcEhst7C?= =?us-ascii?Q?U09eAhMXiXlqAwXcu6Fb3NIBiiZPf0E6k0jOPbCws+RKWRMAQzXRp95OiTVa?= =?us-ascii?Q?lMzlpToZf5ArgOoXacGm4UzvjzsKqTvFTxnai4wheQgXmK5ZnaEJBYnuwo6h?= =?us-ascii?Q?FwHktC43FjoDv1DlP0SHILULf+h740uSyEePNmXLGmXt7ZZRuwLbgCvR0sMA?= =?us-ascii?Q?zziDil/5JedtYnqc7pspgt6fb6S4ANC9jEOEdaGBE1PPT1TLzdi0IjwQdkSz?= =?us-ascii?Q?3g=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zIq6qKB1qMjC14VnsshWXYX9Y0JuYB2WI6TNjUuIOXm5Z56tnV5Dc98qnseg7mH4qGHgtsKNXWYkOiOsxmqnsFgNGnHntbrw3md6FaEGVwvzkg5VnrybIwLqCyXZbZ9HDTXcR2vDczdnuNJZ2NMomUsAccBlieAJ2JFzaam21pdipvopPEUjf1X+Dd6svpbtZZhF1/jytxMZurYBOwvfone/Devf+wgj/yf6VdgU0wDop2kdYxnRUFuk9iD5AVl5qsYlRvN2BvS9vJau3/AwRQWWwxg/34SKGY8FxYjAGcW9PgyCHLYx5IuYj/r2qqt0nofr12oFL+ONYFV6o4lARTIU6LrvAXfQa+S+Wlc1TlqzVd8uITCZekHqHTRVKA1YaXUcQYcEpiGA7nVWn7YHq7hPEIpFIVpnfVztyJi+s6Z77LlBgFmhyQ6nIiGWlvfs8jUTzrdN3NYezkD32nrqDRCnpdBur24p1BvtykjqUCGpTQxsjckXGiP7SAg71VJTZp+0wTLgNmeMZ5UxijuCx1/MHUj3qjleXlMkeiEiK4n7Id2ZWOYxrf//tUzNNZ/Go7jKR9BmLhPOh3ZOK7husvHWYfDZETf4vJQDLt4HkcfYGuKIwc1oF8TIl92uYZZjdtYqQsHnfqd87YXiZI2B5O+UjJWbZBrlGJK2dNC5Ays/nBYCY3oreFwjpYpTKe3FvtAnqIV0vO1yJ2s/xeJ6QlITSCIWq7vpC26BvdcJf4zQ/QJWiYFM6WQdWdx0Yy3/ X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d9179ec-a12e-4312-8a7a-08db8c25ab60 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2023 09:09:22.2462 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: l3Fws3gkB0ch866NJ/EKRRKe5hpfNyVyEhWeuLpIyESRpozvMXy5/Nq8z+Fit8PltnGf2CLVrrXHXY8EBKz2A+KIiEgmH4Bv/PkrxzxBEDc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB5987 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-24_06,2023-07-20_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 adultscore=0 suspectscore=0 phishscore=0 malwarescore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307240081 X-Proofpoint-ORIG-GUID: W3HZj0gLr-7XVIWIXcPN7lmxgnA2kZe8 X-Proofpoint-GUID: W3HZj0gLr-7XVIWIXcPN7lmxgnA2kZe8 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This patch makes the BPF backend to use the new V4 bswap{16,32,64} instructions in order to implement the __builtin_bswap{16,32,64} built-ins. It also adds support for -mcpu=v4 and -m[no]bswap command-line options. Tests and doc updates are includes. Tested in bpf-unknown-none. gcc/ChangeLog PR target/110786 * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default. (mbswap): New option. * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4. * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap. * config/bpf/bpf.md: Use bswap instructions if available for bswap* insn, and fix constraint. * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap. gcc/testsuite/ChangeLog PR target/110786 * gcc.target/bpf/bswap-1.c: Pass -mcpu=v3 to build test. * gcc.target/bpf/bswap-2.c: New test. --- gcc/config/bpf/bpf-opts.h | 1 + gcc/config/bpf/bpf.cc | 3 +++ gcc/config/bpf/bpf.md | 17 +++++++++++------ gcc/config/bpf/bpf.opt | 9 ++++++++- gcc/doc/invoke.texi | 11 ++++++++++- gcc/testsuite/gcc.target/bpf/bswap-1.c | 2 +- gcc/testsuite/gcc.target/bpf/bswap-2.c | 23 +++++++++++++++++++++++ 7 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 gcc/testsuite/gcc.target/bpf/bswap-2.c diff --git a/gcc/config/bpf/bpf-opts.h b/gcc/config/bpf/bpf-opts.h index 92db01ec4d5..e0be591b479 100644 --- a/gcc/config/bpf/bpf-opts.h +++ b/gcc/config/bpf/bpf-opts.h @@ -58,6 +58,7 @@ enum bpf_isa_version ISA_V1, ISA_V2, ISA_V3, + ISA_V4 }; enum bpf_asm_dialect diff --git a/gcc/config/bpf/bpf.cc b/gcc/config/bpf/bpf.cc index 1d3936871d6..6bc715429dc 100644 --- a/gcc/config/bpf/bpf.cc +++ b/gcc/config/bpf/bpf.cc @@ -253,6 +253,9 @@ bpf_option_override (void) if (bpf_has_jmp32 == -1) bpf_has_jmp32 = (bpf_isa >= ISA_V3); + if (bpf_has_bswap == -1) + bpf_has_bswap = (bpf_isa >= ISA_V4); + /* Disable -fstack-protector as it is not supported in BPF. */ if (flag_stack_protect) { diff --git a/gcc/config/bpf/bpf.md b/gcc/config/bpf/bpf.md index 80220f2ef37..81e2268c400 100644 --- a/gcc/config/bpf/bpf.md +++ b/gcc/config/bpf/bpf.md @@ -60,7 +60,7 @@ (define_constants ;; Instruction classes. ;; alu 64-bit arithmetic. ;; alu32 32-bit arithmetic. -;; end endianness conversion instructions. +;; end endianness conversion or byte swap instructions. ;; ld load instructions. ;; lddx load 64-bit immediate instruction. ;; ldx generic load instructions. @@ -354,20 +354,25 @@ (define_insn "lshr3" "{rsh\t%0,%2|%w0 >>= %w2}" [(set_attr "type" "")]) -;;;; Endianness conversion +;;;; Byte swapping (define_mode_iterator BSM [HI SI DI]) (define_mode_attr endmode [(HI "16") (SI "32") (DI "64")]) (define_insn "bswap2" [(set (match_operand:BSM 0 "register_operand" "=r") - (bswap:BSM (match_operand:BSM 1 "register_operand" " r")))] + (bswap:BSM (match_operand:BSM 1 "register_operand" " 0")))] "" { - if (TARGET_BIG_ENDIAN) - return "{endle\t%0, |%0 = le %0}"; + if (bpf_has_bswap) + return "{bswap\t%0, |%0 = bswap %1}"; else - return "{endbe\t%0, |%0 = be %0}"; + { + if (TARGET_BIG_ENDIAN) + return "{endle\t%0, |%0 = le %1}"; + else + return "{endbe\t%0, |%0 = be %1}"; + } } [(set_attr "type" "end")]) diff --git a/gcc/config/bpf/bpf.opt b/gcc/config/bpf/bpf.opt index ff805f9e083..1e4dcc871d7 100644 --- a/gcc/config/bpf/bpf.opt +++ b/gcc/config/bpf/bpf.opt @@ -146,8 +146,12 @@ mjmp32 Target Var(bpf_has_jmp32) Init(-1) Enable 32-bit jump instructions. +mbswap +Target Var(bpf_has_bswap) Init(-1) +Enable byte swap instructions. + mcpu= -Target RejectNegative Joined Var(bpf_isa) Enum(bpf_isa) Init(ISA_V3) +Target RejectNegative Joined Var(bpf_isa) Enum(bpf_isa) Init(ISA_V4) Enum Name(bpf_isa) Type(enum bpf_isa_version) @@ -161,6 +165,9 @@ Enum(bpf_isa) String(v2) Value(ISA_V2) EnumValue Enum(bpf_isa) String(v3) Value(ISA_V3) +EnumValue +Enum(bpf_isa) String(v4) Value(ISA_V4) + masm= Target RejectNegative Joined Var(asm_dialect) Enum(asm_dialect) Init(ASM_NORMAL) Use given assembler dialect. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index efd356e7ef6..a977a34db42 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -24707,10 +24707,14 @@ Enable 32-bit jump instructions. Enabled for CPU v3 and above. @item -malu32 Enable 32-bit ALU instructions. Enabled for CPU v3 and above. +@opindex mbswap +@item -mbswap +Enable byte swap instructions. Enabled for CPU v4 and above. + @opindex mcpu @item -mcpu=@var{version} This specifies which version of the eBPF ISA to target. Newer versions -may not be supported by all kernels. The default is @samp{v3}. +may not be supported by all kernels. The default is @samp{v4}. Supported values for @var{version} are: @@ -24728,6 +24732,11 @@ All features of v2, plus: @item 32-bit ALU operations, as in @option{-malu32} @end itemize +@item v4 +All features of v3, plus: +@itemize @minus +@item Byte swap instructions, as in @option{-mbswap} +@end itemize @end table @opindex mco-re diff --git a/gcc/testsuite/gcc.target/bpf/bswap-1.c b/gcc/testsuite/gcc.target/bpf/bswap-1.c index 4748143ada5..ba19eb60485 100644 --- a/gcc/testsuite/gcc.target/bpf/bswap-1.c +++ b/gcc/testsuite/gcc.target/bpf/bswap-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mlittle-endian" } */ +/* { dg-options "-mlittle-endian -mcpu=v3" } */ unsigned short in16 = 0x1234U; unsigned int in32 = 0x12345678U; diff --git a/gcc/testsuite/gcc.target/bpf/bswap-2.c b/gcc/testsuite/gcc.target/bpf/bswap-2.c new file mode 100644 index 00000000000..e5aef3845d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/bswap-2.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-mlittle-endian -mcpu=v4" } */ + +unsigned short in16 = 0x1234U; +unsigned int in32 = 0x12345678U; +unsigned long in64 = 0x123456789abcdef0ULL; + +unsigned short out16 = 0; +unsigned int out32 = 0; +unsigned long out64 = 0; + +int foo (void) +{ + out16 = __builtin_bswap16 (in16); + out32 = __builtin_bswap32 (in32); + out64 = __builtin_bswap64 (in64); + + return 0; +} + +/* { dg-final { scan-assembler "bswap\t%r., 16" } } */ +/* { dg-final { scan-assembler "bswap\t%r., 32" } } */ +/* { dg-final { scan-assembler "bswap\t%r., 64" } } */ -- 2.30.2