From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id E75E23884F90 for ; Thu, 8 Dec 2022 18:35:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E75E23884F90 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 (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2B8HhhHw013527 for ; Thu, 8 Dec 2022 18:35:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=nXgPLZcDSkSZTbcUMmw+t75xtX29XS9F+RH1K9Hi8o4=; b=oBGR015wNMkrCRevJRJemlCXccM0cAdDwb5QD1FHSy8JUxRsJV7Y+MRcyESk5lr8HicO QoWIuED9nCvdYcrVZBanUiznkFEf8bFxCxapSoxFNjJE42MDrTX4WTqtZs22Vx9gdHBI mR4NHeQNqvjeoF8MdJbziM6VTZVsONngP1LAGoFileV8UFd63oCZgr8aiIWRo7VvSVFA RxxMbIjr0hSABCCohG7jiVBeyNYF41ZG6576iOQ7G+mLBrXhqSItQlATuwUNnwlSFJOv RCxuol5VkUUkPIf34A79dMccnTA85tAO6pp7lwwREIf8SuFBoikiCrJNpCV6qoav97FZ iA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mawj6tmbn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 08 Dec 2022 18:35:52 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2B8IO9rB025371 for ; Thu, 8 Dec 2022 18:35:51 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2169.outbound.protection.outlook.com [104.47.58.169]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3maa7yy4yq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 08 Dec 2022 18:35:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jpB/KEtYj440B7MgzgtXTkajTUuAxdv24Zrove5+HYJL0hLXINDeIHhn7C3dH8m32g4o6Jj4ZLfE01gPAGRV7MTsQNRNsniA7cFvI8wU0JrZbr097IiuQer9NBG9RcKelMtuWdq69G/wW0iXI2yl9zXOH8lH6WzAU8Dtb8Idkwq5/zxcEeeji84bw/SaKMERCheWXxG9nJgvY/8cwqW/jmduNMmArfi//gRMrlhkquNV+oUWi17DHouWv0tEFhmoKUPbgqb3qQeY0fSO7mrB+7pOJ8yAWEE5hvZqYt1WQuWu98NhDLnx9kNJFGZhJfUN+cw7K8F8gUjdxmdmEpFgEg== 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=nXgPLZcDSkSZTbcUMmw+t75xtX29XS9F+RH1K9Hi8o4=; b=NoFPNlRS2dPKysetNfi5d+jp8Hc6yvbbSK9qVNAEGphuy8TOXpzdj8111c4rP15aUfkAKz0PZ3GgfjFWKs4JKZdTfATahpCMK7XTyl3BTWz49iEv//DYze8ehWzpciT6bVMqepJ2RFriJHX/tOGDD6LTCQaFhIoNmddPzYOlOwC1d+gT6z3eBke9zuyBendDmENpNFkAbV9xfv7QMBbY+wPoFIVYFmv1QzssrU8G9hknL+6u45krsV0p0HeubTyKF1wNJ4ABtgNy9gl+ovtqwAK5p9NtQ83lNk2xups7vlLtIiUUlhrnmMTO2Ek51uADGSgTFhT0OTd3UXI9GrDgCA== 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=nXgPLZcDSkSZTbcUMmw+t75xtX29XS9F+RH1K9Hi8o4=; b=ZuNkEFMp/I4F/KFV1EoWm2zR7BvaPsBnWl59kOcGycx0s+3L4LKw64L5njCpwXOTHJFcGPprjZW7fMEoy7bn1B+Bh6kt+W1OZjwRU9c61T++ivtfJieTk2360n9pPmX+5ZTkOrxKCnqp1ptnZESffph+jsFE/S8TiCt1m3L9waI= Received: from MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) by CH3PR10MB6836.namprd10.prod.outlook.com (2603:10b6:610:14f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Thu, 8 Dec 2022 18:35:50 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::dd41:a422:5763:8848]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::dd41:a422:5763:8848%7]) with mapi id 15.20.5880.014; Thu, 8 Dec 2022 18:35:50 +0000 From: David Faust To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com Subject: [PATCH] bpf: add define_insn for bswap Date: Thu, 8 Dec 2022 10:35:40 -0800 Message-Id: <20221208183540.8667-1-david.faust@oracle.com> X-Mailer: git-send-email 2.38.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SN6PR16CA0055.namprd16.prod.outlook.com (2603:10b6:805:ca::32) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB3213:EE_|CH3PR10MB6836:EE_ X-MS-Office365-Filtering-Correlation-Id: 45b5441e-f239-4a24-de8f-08dad94b07a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N+ZELFK4423aTs5nCfaLuU2UXfEKselOpYh9IMkVy7v+WSXmdQLLY6TGwsY/IWNO0fLHndjrHjuxxFOTLAdw2SmTl27EG8jn6s+xSipP7Z8GKbcPEOpeo/WjDiCaGdDxGldiqATRWxqYMaj/BirhEGt8qc2j9u+NCpbqU4FNORtohu4t31amXx1RxO9Q0XT4BavPwAM9baozGOdT116fRhGnOrFyVNSnpGeDWzM2qd6jE4KVNFkmqjyr4niGCSJBDNDgFlE5ndwK+aNVkPfc5tGRaf+NdYF+BMjvF4s14N0L9m2vzq7Tji4ywDe9D7Wi+CrbMYVYuuVC98RCHobpzD6VonbdaZ7u/lW0OxVghMsEanAdFbyM2S5tPdxaTZssgUOSmjPqFq4IxTLnrgYbpjff427C4Uwlu/KMPbYm9Srlnf+D4sJhsR4aBsLythKALnbbqsWJoKi4C+6B/2dx8dRw4wgVltn4+gU3HdIQ+Z3VbsS4TQaklJLjN0+QkQq+y5z9TYNKcJrexlQLvktzdq/gutf5DM2yBk4UIuwvPsojihj/uqWgOlLlkme66CMDKBxDit+xAgRU4rAJM1Q8Zdrzlphymeb6Ifgg7LpMZK8tIYflVmvKWZBPWpFtatXBd52W2+qCwRAQRSiTtJ9xxOVRmmzl44YrS91AZpS7r1U= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN2PR10MB3213.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(376002)(366004)(346002)(136003)(39860400002)(396003)(451199015)(1076003)(66556008)(41300700001)(186003)(2616005)(66946007)(66476007)(478600001)(107886003)(6666004)(84970400001)(36756003)(44832011)(26005)(6512007)(6486002)(5660300002)(8936002)(316002)(6506007)(2906002)(86362001)(8676002)(4326008)(6916009)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ff/jtnd+s34zjUigx9yzlHoBtF0XAdj+RfLPHboKPiRc9exldPe/Xx9eFtow?= =?us-ascii?Q?bigFpD0Rk3TNTIkTx3M1wIF1jM3TxCQtNiEyIZNvA2QfobmdBaiSdtgrtEZn?= =?us-ascii?Q?r0V6zQw0AjD4BuM51/O9nOIeVXtIY8NZTzb9w+XAa3IpsQDpU9heO8iw9nyM?= =?us-ascii?Q?f3/HXaBcS0SZxClhtaBr+L13pQ5/6wRL7/MSGl5bSXkOY3Uc/qnY36a24MFA?= =?us-ascii?Q?HHZo6dmcDbpn3N4IpbNKACOh8ldghL2Yi5yGtzzGbjWAbD+DHqvhdgBiw/jp?= =?us-ascii?Q?Fz9XLZ6lPfnjPt09/rC4eB2mTyCD1TUGB681/YeBxD1xu227tXIstzTaxJzR?= =?us-ascii?Q?QxSk0hkzHY3zznrUb164WtWgAmXqLtxgxJTlRGa78xNw360Pmv89nZZif6Lm?= =?us-ascii?Q?qnFLHMioYtHf3M+irXNhRmzeA+QivXPOdt0Kf6QaBsr3MzbPqJNA1uk5yR7y?= =?us-ascii?Q?XNraPY9a8C1uOJaZtxvn+Ri+Gb9JT6dfd9F+E22IdNwy+bz15sNdvvBpb84r?= =?us-ascii?Q?pSJiQqFav3RSdcG34DI4QftQM+1hceUrf2LkofAdpJh4YyhF8N9J97LGwuGU?= =?us-ascii?Q?Y7BWikLPedpPACNnLCUyismP2si+XjaTRM4L0kh3qBzhDnBcQlNVtAANwqMC?= =?us-ascii?Q?spH5L4g6AsJsO8iaZBEA92Xz18W2N+mkOc/TI/6cItSogYJHHB030T6/8wWx?= =?us-ascii?Q?zLPJmI+sKrJQYvxZQTl3fbTd+ezQT4dlomvwoBsY/SNUHoCQ57NSOATECRUK?= =?us-ascii?Q?Hij0zbwHprpEr5fH9TVA4pWNCIPaAwKZcazpNGiNsCSVE7eyLcd7r4GB5Y0d?= =?us-ascii?Q?7jakshI+3XEFCQBGTEXRffZ1tuS2dugcHpaq8qaJdWaCqaBh3lXe+exGWZ8F?= =?us-ascii?Q?hA650s/r+jyC8idiKbkpKn2oXqMuKeFcMbp3wl8xs5/P4bPC0g5Ex2xKnEPY?= =?us-ascii?Q?cFd5tAgizIzLQcU5/F4zr7Ci+5/TTYLueyBs1AwLLiIkfFLNiiXJnRRB0YmI?= =?us-ascii?Q?3nnsam8O2A5IcGhnHfuTJx+nknRSzPlN/mXbQ5G9ZA04CLuwxKR7RRSaKvPJ?= =?us-ascii?Q?4pPiajaSZ6vNU3jpoO3FCnPK4oLrHnsegeaVmLQrTLccbjm1e4Piq4I9xSS6?= =?us-ascii?Q?ePPBVwAwk9Djlwvd2Cpq/W+RsSGK9KJjCvMThmgNvTmhyEKgiXBXU/+ZZLWG?= =?us-ascii?Q?sEC9Oe1vKl8AFDQuAt7ee75NdGuT7GrsdiYnxBKsmWIfQV1p4eK8M77ShUqI?= =?us-ascii?Q?Dq0DqGnqttBdyEnYwm6xfz03VhG3u5zjrg5w7vLzQnYKkAgplVJVZJRocNn4?= =?us-ascii?Q?z0sIkA9EW6gi5G/LsFSWTZLe5W6F3js9tBcfpZU3m/6g50qUwe+qhY/THTxC?= =?us-ascii?Q?NQvp8Q3qQalj4P1AE55H4YbAeV8RAOW+6wDBGY+E0LYI8oNabT8vFl2eFISp?= =?us-ascii?Q?BOZ+G9P/6Yv00k6plDm6T5sZDcYenqHFisYhSEAp1Irtp9A0ms3s/aiY1suS?= =?us-ascii?Q?83z+zAJ6dj6QKozebl7ytMxgnTgfQYtjjxfZElFlKlP+vv37UvmrfNDBpIpi?= =?us-ascii?Q?H6TxZKA0vlUuSuiwnkaJHKQEyvCYv8jq23SrESN4?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 45b5441e-f239-4a24-de8f-08dad94b07a1 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Dec 2022 18:35:50.1888 (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: rBKTU4Kms20sRMCJl8nkHge81606Qe9cCuyuwu2JToM0GsiDCGNrYrMUbzXYmsafEnW+z3IxF/+9U6E5SDUR0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB6836 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-08_11,2022-12-08_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2212080157 X-Proofpoint-GUID: 4unYqMNUwo1PY1yjN4_5yD4m5dKdIHi2 X-Proofpoint-ORIG-GUID: 4unYqMNUwo1PY1yjN4_5yD4m5dKdIHi2 X-Spam-Status: No, score=-13.1 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_H2,SPF_HELO_NONE,SPF_NONE,TXREP 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: The eBPF architecture provides 'end[be,le]' instructions for endianness swapping. Add a define_insn for bswap2 to use them instaed of falling back on a libcall. Tested on bpf-unknown-none, no known regressions. OK to commit? Thanks gcc/ * config/bpf/bpf.md (bswap2): New define_insn. gcc/testsuite/ * gcc.target/bpf/bswap-1.c: New test. --- gcc/config/bpf/bpf.md | 17 +++++++++++++++++ gcc/testsuite/gcc.target/bpf/bswap-1.c | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 gcc/testsuite/gcc.target/bpf/bswap-1.c diff --git a/gcc/config/bpf/bpf.md b/gcc/config/bpf/bpf.md index a28021aef26..22a133f1c79 100644 --- a/gcc/config/bpf/bpf.md +++ b/gcc/config/bpf/bpf.md @@ -341,6 +341,23 @@ (define_insn "lshr3" "rsh\t%0,%2" [(set_attr "type" "")]) +;;;; Endianness conversion + +(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")))] + "" +{ + if (TARGET_BIG_ENDIAN) + return "endle\t%0, "; + else + return "endbe\t%0, "; +} + [(set_attr "type" "end")]) + ;;;; Conditional branches ;; The eBPF jump instructions use 64-bit arithmetic when evaluating diff --git a/gcc/testsuite/gcc.target/bpf/bswap-1.c b/gcc/testsuite/gcc.target/bpf/bswap-1.c new file mode 100644 index 00000000000..4748143ada5 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/bswap-1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-mlittle-endian" } */ + +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 "endbe\t%r., 16" } } */ +/* { dg-final { scan-assembler "endbe\t%r., 32" } } */ +/* { dg-final { scan-assembler "endbe\t%r., 64" } } */ -- 2.38.1