From patchwork Thu Dec 8 18:35:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 31459 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp358629wrr; Thu, 8 Dec 2022 10:36:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf4apFTch/zuLm3xjUuCiIwrTp8T/dDoTIorn35slkd+iero9pQXRu07iDioTXFlZEWxxv5v X-Received: by 2002:a17:906:a410:b0:7c0:e5ca:411c with SMTP id l16-20020a170906a41000b007c0e5ca411cmr2396385ejz.17.1670524602221; Thu, 08 Dec 2022 10:36:42 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id gs10-20020a1709072d0a00b007ad69eba328si22989451ejc.539.2022.12.08.10.36.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Dec 2022 10:36:42 -0800 (PST) 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=iXjSR89w; 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 0D54A3890848 for ; Thu, 8 Dec 2022 18:36:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0D54A3890848 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1670524601; bh=nXgPLZcDSkSZTbcUMmw+t75xtX29XS9F+RH1K9Hi8o4=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=iXjSR89w/lS4n1VVQRGRQEJW+3Qj2d3tUUbLSZpcGJXiiuNi5BcqGrAYC9VCHaxjo BEzqEjcJrsFfWrPI4/LtLJgiJoUOl5chlriQMgYOGR3Xak4SqqtnQ7RcQyLYi++tn6 i59qC8rajI3yDrEPY7OPlauTcN67DHwMu1DO/qyo= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org 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 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 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 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 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 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: ff/jtnd+s34zjUigx9yzlHoBtF0XAdj+RfLPHboKPiRc9exldPe/Xx9eFtowbigFpD0Rk3TNTIkTx3M1wIF1jM3TxCQtNiEyIZNvA2QfobmdBaiSdtgrtEZnr0V6zQw0AjD4BuM51/O9nOIeVXtIY8NZTzb9w+XAa3IpsQDpU9heO8iw9nyMf3/HXaBcS0SZxClhtaBr+L13pQ5/6wRL7/MSGl5bSXkOY3Uc/qnY36a24MFAHHZo6dmcDbpn3N4IpbNKACOh8ldghL2Yi5yGtzzGbjWAbD+DHqvhdgBiw/jpFz9XLZ6lPfnjPt09/rC4eB2mTyCD1TUGB681/YeBxD1xu227tXIstzTaxJzRQxSk0hkzHY3zznrUb164WtWgAmXqLtxgxJTlRGa78xNw360Pmv89nZZif6LmqnFLHMioYtHf3M+irXNhRmzeA+QivXPOdt0Kf6QaBsr3MzbPqJNA1uk5yR7yXNraPY9a8C1uOJaZtxvn+Ri+Gb9JT6dfd9F+E22IdNwy+bz15sNdvvBpb84rpSJiQqFav3RSdcG34DI4QftQM+1hceUrf2LkofAdpJh4YyhF8N9J97LGwuGUY7BWikLPedpPACNnLCUyismP2si+XjaTRM4L0kh3qBzhDnBcQlNVtAANwqMCspH5L4g6AsJsO8iaZBEA92Xz18W2N+mkOc/TI/6cItSogYJHHB030T6/8wWxzLPJmI+sKrJQYvxZQTl3fbTd+ezQT4dlomvwoBsY/SNUHoCQ57NSOATECRUKHij0zbwHprpEr5fH9TVA4pWNCIPaAwKZcazpNGiNsCSVE7eyLcd7r4GB5Y0d7jakshI+3XEFCQBGTEXRffZ1tuS2dugcHpaq8qaJdWaCqaBh3lXe+exGWZ8FhA650s/r+jyC8idiKbkpKn2oXqMuKeFcMbp3wl8xs5/P4bPC0g5Ex2xKnEPYcFd5tAgizIzLQcU5/F4zr7Ci+5/TTYLueyBs1AwLLiIkfFLNiiXJnRRB0YmI3nnsam8O2A5IcGhnHfuTJx+nknRSzPlN/mXbQ5G9ZA04CLuwxKR7RRSaKvPJ4pPiajaSZ6vNU3jpoO3FCnPK4oLrHnsegeaVmLQrTLccbjm1e4Piq4I9xSS6ePPBVwAwk9Djlwvd2Cpq/W+RsSGK9KJjCvMThmgNvTmhyEKgiXBXU/+ZZLWGsEC9Oe1vKl8AFDQuAt7ee75NdGuT7GrsdiYnxBKsmWIfQV1p4eK8M77ShUqIDq0DqGnqttBdyEnYwm6xfz03VhG3u5zjrg5w7vLzQnYKkAgplVJVZJRocNn4z0sIkA9EW6gi5G/LsFSWTZLe5W6F3js9tBcfpZU3m/6g50qUwe+qhY/THTxCNQvp8Q3qQalj4P1AE55H4YbAeV8RAOW+6wDBGY+E0LYI8oNabT8vFl2eFISpBOZ+G9P/6Yv00k6plDm6T5sZDcYenqHFisYhSEAp1Irtp9A0ms3s/aiY1suS83z+zAJ6dj6QKozebl7ytMxgnTgfQYtjjxfZElFlKlP+vv37UvmrfNDBpIpiH6TxZKA0vlUuSuiwnkaJHKQEyvCYv8jq23SrESN4 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 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: David Faust via Gcc-patches From: David Faust Reply-To: David Faust Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1751672005242299002?= X-GMAIL-MSGID: =?utf-8?q?1751672005242299002?= 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" } } */