From patchwork Mon Jul 24 00:56:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jose E. Marchesi" X-Patchwork-Id: 124571 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp1499829vqg; Sun, 23 Jul 2023 17:57:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlEvunwR5J8/5ULiu0d9aLyxozFdFWrQTtVBEORMvYtKstJkv3mkitUHzrHOTgbhuZYIK0AV X-Received: by 2002:a17:906:15b:b0:991:c842:2ca2 with SMTP id 27-20020a170906015b00b00991c8422ca2mr8088938ejh.15.1690160234819; Sun, 23 Jul 2023 17:57:14 -0700 (PDT) Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id q15-20020a170906360f00b00992ac6d88acsi5757878ejb.274.2023.07.23.17.57.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Jul 2023 17:57:14 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="J/sfdscd"; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A4433385783F for ; Mon, 24 Jul 2023 00:57:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A4433385783F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1690160233; bh=tcLwEA8JHcyKimmNIYFjdZieQqCUSPC4wBgyuDevHjc=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=J/sfdscddeShKTSMjag8aFKEWUZY5lhOehs04nAnhOgmGKsxhnCon2i9vEt8gAkqC JGRLRYLHvHfCLy85/wBuZc3bc5Jso4AkwpY1x700+K4/s+fl73rFeaSYD0VOIXIUjZ k8q3Qe/GKguX3mYOGWGzEIUftD3vUCF27Xff75Q0= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 7EC243858C62 for ; Mon, 24 Jul 2023 00:57:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7EC243858C62 Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36NNSAvk011646 for ; Mon, 24 Jul 2023 00:57:00 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3s061c1pep-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 24 Jul 2023 00:57:00 +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 36O0n7pt029093 for ; Mon, 24 Jul 2023 00:56:59 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2174.outbound.protection.outlook.com [104.47.57.174]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3s05j92n7s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 24 Jul 2023 00:56:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RvMkATiYnqdcQ00ColuHQLRbjdChsj7OYsVIZvK+X3TG8X56BhC1muOoE5CG3MwDDd2ZrCV8JKgV+Czoi53TDXRtxmViuPbBaON4rT/3+wEWboDLIWP7O1Iabo/ORyTTO2nB5Jul7T5XdPtONkuDu5GApgjIddvvtZmii8emQnlcEJ1kCmzYx2wNJgVB7YZpiztlkPK20ng1ApCapBh1XjVpH3D/E8d/Iczwrvd9Uu2Siq8Nw+DI+AJufphERwUQs0l7KdAMK8VmtUx903P8CuP8+xn0gbj0AI+ShbbC30QVExJl+6q0Wh4qS29BCEDod13b3elTp2eSMpAMDInAXQ== 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=tcLwEA8JHcyKimmNIYFjdZieQqCUSPC4wBgyuDevHjc=; b=nH1wVkovr5DboZRFIT/QZKPyQC3q/f2a6+9FPXTVAwKE4VpJXbovxLb3Rih/vy6c9Lpz2VdaCbZymaDmGKDu9sBpHb00ovCoazwnRx2Eu/rFyYLYamNt7fwDVQQByIsNfLCx7emATNHT9Z0xYUPT2nQPcWp/n6TH8KoSXb4rFSb2qbZeiQsr2r8Q5ccoe61YskTD4zu6oI1eLjofDCUyE6rT1YtMHrFG0aPZOvjVilsepygCf5ugDRGpnoHh9+a/dPDKdwI+4hNjO0r9+Xshovimq62YlTa9YXGj/iWBQl5iubYDys4FpFmqzfVbVmfh+YbPXDo+DQrGGZLMxNaHPQ== 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 BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by CH3PR10MB7306.namprd10.prod.outlook.com (2603:10b6:610:12c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.28; Mon, 24 Jul 2023 00:56:56 +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 00:56:56 +0000 To: binutils@sourceware.org Subject: [COMMITTED] bpf: gas, include, opcode: add suppor for instructions BSWAP{16, 32, 64} Date: Mon, 24 Jul 2023 02:56:51 +0200 Message-Id: <20230724005651.15597-1-jose.marchesi@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: AM0PR04CA0068.eurprd04.prod.outlook.com (2603:10a6:208:1::45) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BYAPR10MB2888:EE_|CH3PR10MB7306:EE_ X-MS-Office365-Filtering-Correlation-Id: abb5df37-8733-4260-4cf3-08db8be0e09d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aRS+sORkvtp0dVHRt72G2q4055ZQK1OD9YBmil/EWTEOOp3Lecn7x8akzAPXRb6ukqNJlnN+YokCE2bu/y56qNYXNo83eLIWvqDdqLoZrijJf9HMLK3vVyebdK967iGjE8AAXaaqIep3nc6ndMKnJlzGexjYraxUSg1Yy3wCTicYfN1SgHne9/hbeObO0HQMel5USAI0qDdJ0uvrXCQOdZ2vEQPCcqrtDIAq8xW8fTODbSDy2B9rob+S5oR4OWYSh+IM4gVw7jTDetT+tdaqGYq1/U95Zm4Roi+YWUoa50CELm0sY9A33RsXk7fCeV6rQQ7yCS7l2o4zebqU/KaGrHzVYehqaKlEoehVjLaUrCTRwRpwcbsU0gbga+rTxyJkjGC6YCGcOXb36wpFpujM3EEBNTPQI7Q0z+3EFNJ0kdwMlLNuw4YJHNNgn3zqtp4NDIw50Llj8/94HiUD8jkNs2SzR+uKQKKXg6KXeHzBSsWRUkmmPKj877VgdCSXfxVI65WQxoUof9q4y8e/HywReUR92xV6BhO0MbbaiaLLEWnQv7Nnczb4Jzlqq4B9i9f6 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)(366004)(376002)(39860400002)(451199021)(6666004)(6512007)(6486002)(6506007)(478600001)(38100700002)(26005)(186003)(1076003)(6916009)(66476007)(66556008)(66946007)(41300700001)(316002)(5660300002)(2616005)(8936002)(8676002)(86362001)(2906002)(83380400001)(36756003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +6Jofa9h8+enChZ+HRgVlpUhfbky3IFGZfOhiBYN9cCHvnNNsvDNrHwFrVt07mHI3q+Ydzu6Mroeytfahm/Hzf3Op2ISBQOY+PW1AVqy7IvXAmcRKWc8vOtdjV7kRD9EcW1L5N55dyN1kjOzg6Tf44tjrvYhhAZodu1vTweYVeLNfWEBOlwFvZd0Yn8fRUUtmQnKrxijKEBFN8tRhYtrclb8AEU5CMRUaN91mund3FqNkzqyXE9wqcuEv5CIT1qYv1X9tJOZK5IZjLpVmISv57DDe4lw8ysvH+xqbQKeRWMaB7bwuL5ZYMb0Bc34MHPjS1fsAv5I7j+pXLtb0Ya2oyGBOef0LdN5yBe6D+2TZ2zm6MgqqSkrGyFPyE8JsWgnXnQneB8FvB1sM8OgUm+7JNI/r1QK+NRHNgNf+sinO5sEpLMa2479lJpSj0VzgIzx/Iki2znVo3ygKfStpybSgmvTJr9UcCkkh8Ro6eBsIGHXoODtRB1v34jmL6R0TSdkPaU+X7wPDKSobVEdVXXlwk0pngRWmAEyW5TxqaoO/PKA6W6aZKUiZfsJGXRGNPJtULhSM+dwlcVGYpBKmQV6z3FFlaWIb/1iX7PSWuh+SNruxtIAmr9tWwyrX2NHpc+/nON9qRnReMcBk1leSZojGcppP5o/jV+5fE+z63Kuz3yR3jwz0nuAeQZHwZzXudSyU7o2zarWXIxRQCWielPD3/TuqzRVv3AM210a2qkAJRCzyo6w131nK0Z/jnig99ops3QvfzRW1aLK4AFYlVQSmdvcHcYUd+w/nYnc1S2G5PC0cMsCsgjpMWNQmurOW7Yo1iqdk9fc3UH4NZjx5vq298Jn1vzlCVa01HV9KCeKPGulqcIaTmxr82lph0ynihhDfw+qekAYU03PN5QJ1b0bVt3vsJv/in0DRCZOah2MLoaQ6guV79I95vOan80mzhMvAg+6Y/JcapQvk/evd/EzOqN32+Tu3HLYGMS3vYBsNkTABPPahk0WAzsD00oQxiswxnYq5SNDWOIuc7RaGcVGfmBClKwUsorGUix62Z+cCuuYEU0DM8fq8pD7qj3hJhSDbSFFO8ypJMFBxc00Yg7Gm59Pps/KJfboNsiSELQjwvL1JI+kcGtspRmQtdR2FJXUgpuXXUia4/G4dD3bvY7bXX3NYWHCzU2cRaUmJV3pLYBs5tx3YV4qaAu+n7FZobAL09t5lF6eH1CNHsYO9PRs7ODrKZLJAeQXO4vL1yeuPytBX3TS9wkISkLpa1wsa9c7718zlgKS1SSSNEpS9I9Wi1bOleK0yzMv6uBh8HLPzyaNa5D3Ym1J+DTUiGs9R5nIGwcAb7+j2Z+CFfg5OQBB1MmZ8K2UviJm8W6Ll+ObnCc7Eh+zETqcvdVeh4G6YFn/nacoynLYEcQLeuh+H5OH3BipG7s7n2aDPIROkNb78BtkuU8UuUf+hw9FeZUvSo1DsTwEWUc7hPzRGpOqgRZQNNHy0U2+tPh91o0YTZ8Kvf7cu97E9YvnfOpODpJ7tWAkbY7gKsN1X8bhIaK2k7NP27lcUxmixyyz2gdAy9TBFOqHvC/28jPMN8vSfjvFMQldPe6kI98VxkHVPUI5nJtO/A== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: XH2nFtvRSqInOo9lYU07pqEmkL1LjAmEi4bwQBSMMA53tBX9tW7qCId7/wfqNO4tg/+VaIUz+exCnmFjtOmYFo/+hFkZ5Ld/DkzAJ1Gox5tXafTpcLjXHynxir2GNHKhcQ7r7X19e1lrHv2fs+UsoaL3yinXqZRQGnRLeKJHlx+URcMazDW1KcFq+p9+9fdoSbVNtFJlDRWXRhstaOeCfeapyeH28+i1Ra/rmwvjl84OdH8fXHE+5pfqpbwQKp7Z2QH1VNeg0Agt29jSBzxj08/UFpM+cRZpfFy8936YgfjGazenNw8GPieZrk5Lf5g3+oY66oM9y+dY62Zuq+z9LYezXEt7cXBSnDCy9uqEjPvONfkt1UppabKrTXnHDHZmd/qWVojocWrgLj/IAGn0CzNjc12JBf7Xu2znvdxcxeUXWGqADT3YNOQ1yPPq7kD3gGU5PnGZcJl0sWZagOCZyO1RVBPkD6+pPcNfl/XBkurcgxdn8Ux2FLkMwIFH5JAMhV+I3fl6C+NMMotbw+VwKXvnU8i3tdPHU5LmRiMRvh0JFqf6QgmibDn2Iv8Tzbn95ymyjQCB8bQSw5dROx9vF8k6JZ8j89Kit1B6p8LTfBswQkBMMNLYAH6GaDBNNESHzugyMMH3fpUXhLfCIkcBWXheDK4lJ1o8QkXJ4DPQbrhoXkBuzs8lJhEfv4tIwvW9xk9Ian2VC4wJyg3MhEQLRY+lpLYFjz5VXaTOb2v/6LVlXWqorV6bYnpGsCgIf2Zw7IKx2B/Yz3FSl3uAAOL7QA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: abb5df37-8733-4260-4cf3-08db8be0e09d X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jul 2023 00:56:56.2411 (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: BcUuqrxqHR0wC1yPsGCLHdWBHRTdJGZgD3Z+a6pdVIXoSXGq6E5nxncg9xA/xppndi5qWhlUQoF5+0Bo6FKaqUaZ33CqF8TUup0u0/KCYRk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7306 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-23_12,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-2307240006 X-Proofpoint-ORIG-GUID: 2_FnKBhaIe9AGG8tLeYYnnPgUXfq3qFU X-Proofpoint-GUID: 2_FnKBhaIe9AGG8tLeYYnnPgUXfq3qFU X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "Jose E. Marchesi via Binutils" From: "Jose E. Marchesi" Reply-To: "Jose E. Marchesi" Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772261458355939268 X-GMAIL-MSGID: 1772261458355939268 This patch adds support for the BPF V4 ISA byte swap instructions to opcodes, assembler and disassembler. Tested in bpf-unknown-none. include/ChangeLog: 2023-07-24 Jose E. Marchesi * opcode/bpf.h (BPF_IMM32_BSWAP16): Define. (BPF_IMM32_BSWAP32): Likewise. (BPF_IMM32_BSWAP64): Likewise. (enum bpf_insn_id): New entries BPF_INSN_BSWAP{16,32,64}. opcodes/ChangeLog: 2023-07-24 Jose E. Marchesi * bpf-opc.c (bpf_opcodes): Add entries for the BSWAP* instructions. gas/ChangeLog: 2023-07-24 Jose E. Marchesi * doc/c-bpf.texi (BPF Instructions): Document BSWAP* instructions. * testsuite/gas/bpf/alu.s: Test BSWAP{16,32,64} instructions. * testsuite/gas/bpf/alu.d: Likewise. * testsuite/gas/bpf/alu-be.d: Likewise. * testsuite/gas/bpf/alu-pseudoc.s: Likewise. * testsuite/gas/bpf/alu-pseudoc.d: Likewise. * testsuite/gas/bpf/alu-be-pseudoc.d: Likewise. --- gas/ChangeLog | 10 ++++++++++ gas/doc/c-bpf.texi | 20 ++++++++++++++++++++ gas/testsuite/gas/bpf/alu-be-pseudoc.d | 3 +++ gas/testsuite/gas/bpf/alu-be.d | 3 +++ gas/testsuite/gas/bpf/alu-pseudoc.d | 3 +++ gas/testsuite/gas/bpf/alu-pseudoc.s | 3 +++ gas/testsuite/gas/bpf/alu.d | 3 +++ gas/testsuite/gas/bpf/alu.s | 3 +++ include/ChangeLog | 7 +++++++ include/opcode/bpf.h | 6 ++++++ opcodes/ChangeLog | 5 +++++ opcodes/bpf-opc.c | 8 ++++++++ 12 files changed, 74 insertions(+) diff --git a/gas/ChangeLog b/gas/ChangeLog index 5538cd236b3..ef87eea33b6 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2023-07-24 Jose E. Marchesi + + * doc/c-bpf.texi (BPF Instructions): Document BSWAP* instructions. + * testsuite/gas/bpf/alu.s: Test BSWAP{16,32,64} instructions. + * testsuite/gas/bpf/alu.d: Likewise. + * testsuite/gas/bpf/alu-be.d: Likewise. + * testsuite/gas/bpf/alu-pseudoc.s: Likewise. + * testsuite/gas/bpf/alu-pseudoc.d: Likewise. + * testsuite/gas/bpf/alu-be-pseudoc.d: Likewise. + 2023-07-24 Jose E. Marchesi * doc/c-bpf.texi (BPF Instructions): The pseudoc syntax for MOVS* diff --git a/gas/doc/c-bpf.texi b/gas/doc/c-bpf.texi index be29d8d2a56..4cb15616515 100644 --- a/gas/doc/c-bpf.texi +++ b/gas/doc/c-bpf.texi @@ -404,6 +404,26 @@ Convert the 16-bit, 32-bit or 64-bit value in @code{rd} to big-endian and store it back in @code{rd}. @end table +@subsection Byte swap instructions + +@table @code +@item bswap rd, 16 +@itemx rd = bswap16 rd +Swap the least-significant 16-bit word in @code{rd} with the +most-significant 16-bit word. + +@item bswap rd, 32 +@itemx rd = bswap32 rd +Swap the least-significant 32-bit word in @code{rd} with the +most-significant 32-bit word. + +@item bswap rd, 64 +@itemx rd = bswap64 rd +Swap the least-significant 64-bit word in @code{rd} with the +most-significant 64-bit word. +@end table + + @subsection 64-bit load and pseudo maps @table @code diff --git a/gas/testsuite/gas/bpf/alu-be-pseudoc.d b/gas/testsuite/gas/bpf/alu-be-pseudoc.d index 5eb7f39aebd..1d83eaccd1e 100644 --- a/gas/testsuite/gas/bpf/alu-be-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu-be-pseudoc.d @@ -66,3 +66,6 @@ Disassembly of section .text: 1b8: bf 12 00 08 00 00 00 00 r1 = \(s8\) r2 1c0: bf 12 00 10 00 00 00 00 r1 = \(s16\) r2 1c8: bf 12 00 20 00 00 00 00 r1 = \(s32\) r2 + 1d0: d7 10 00 00 00 00 00 10 r1 = bswap16 r1 + 1d8: d7 20 00 00 00 00 00 20 r2 = bswap32 r2 + 1e0: d7 30 00 00 00 00 00 40 r3 = bswap64 r3 diff --git a/gas/testsuite/gas/bpf/alu-be.d b/gas/testsuite/gas/bpf/alu-be.d index a082c46af1c..2911d8b0445 100644 --- a/gas/testsuite/gas/bpf/alu-be.d +++ b/gas/testsuite/gas/bpf/alu-be.d @@ -66,3 +66,6 @@ Disassembly of section .text: 1b8: bf 12 00 08 00 00 00 00 movs %r1,%r2,8 1c0: bf 12 00 10 00 00 00 00 movs %r1,%r2,16 1c8: bf 12 00 20 00 00 00 00 movs %r1,%r2,32 + 1d0: d7 10 00 00 00 00 00 10 bswap %r1,16 + 1d8: d7 20 00 00 00 00 00 20 bswap %r2,32 + 1e0: d7 30 00 00 00 00 00 40 bswap %r3,64 diff --git a/gas/testsuite/gas/bpf/alu-pseudoc.d b/gas/testsuite/gas/bpf/alu-pseudoc.d index 586fc0937fd..bfc2493fdd4 100644 --- a/gas/testsuite/gas/bpf/alu-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu-pseudoc.d @@ -66,3 +66,6 @@ Disassembly of section .text: 1b8: bf 21 08 00 00 00 00 00 r1 = \(s8\) r2 1c0: bf 21 10 00 00 00 00 00 r1 = \(s16\) r2 1c8: bf 21 20 00 00 00 00 00 r1 = \(s32\) r2 + 1d0: d7 01 00 00 10 00 00 00 r1 = bswap16 r1 + 1d8: d7 02 00 00 20 00 00 00 r2 = bswap32 r2 + 1e0: d7 03 00 00 40 00 00 00 r3 = bswap64 r3 diff --git a/gas/testsuite/gas/bpf/alu-pseudoc.s b/gas/testsuite/gas/bpf/alu-pseudoc.s index 4a47ba6bd64..172a93cb0ec 100644 --- a/gas/testsuite/gas/bpf/alu-pseudoc.s +++ b/gas/testsuite/gas/bpf/alu-pseudoc.s @@ -58,3 +58,6 @@ r1 = (s8) r2 r1 = (s16) r2 r1 = (s32) r2 + r1 = bswap16 r1 + r2 = bswap32 r2 + r3 = bswap64 r3 diff --git a/gas/testsuite/gas/bpf/alu.d b/gas/testsuite/gas/bpf/alu.d index 409018ddf55..65f32803536 100644 --- a/gas/testsuite/gas/bpf/alu.d +++ b/gas/testsuite/gas/bpf/alu.d @@ -66,3 +66,6 @@ Disassembly of section .text: 1b8: bf 21 08 00 00 00 00 00 movs %r1,%r2,8 1c0: bf 21 10 00 00 00 00 00 movs %r1,%r2,16 1c8: bf 21 20 00 00 00 00 00 movs %r1,%r2,32 + 1d0: d7 01 00 00 10 00 00 00 bswap %r1,16 + 1d8: d7 02 00 00 20 00 00 00 bswap %r2,32 + 1e0: d7 03 00 00 40 00 00 00 bswap %r3,64 diff --git a/gas/testsuite/gas/bpf/alu.s b/gas/testsuite/gas/bpf/alu.s index 6f8c30fff68..3e8a3cf4001 100644 --- a/gas/testsuite/gas/bpf/alu.s +++ b/gas/testsuite/gas/bpf/alu.s @@ -58,3 +58,6 @@ movs %r1,%r2,8 movs %r1,%r2,16 movs %r1,%r2,32 + bswap %r1, 16 + bswap %r2, 32 + bswap %r3, 64 diff --git a/include/ChangeLog b/include/ChangeLog index 8cad8e2ea7a..11c1c09306b 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,10 @@ +2023-07-24 Jose E. Marchesi + + * opcode/bpf.h (BPF_IMM32_BSWAP16): Define. + (BPF_IMM32_BSWAP32): Likewise. + (BPF_IMM32_BSWAP64): Likewise. + (enum bpf_insn_id): New entries BPF_INSN_BSWAP{16,32,64}. + 2023-07-24 Jose E. Marchesi * opcode/bpf.h (enum bpf_insn_id): Add entry BPF_INSN_JAL. diff --git a/include/opcode/bpf.h b/include/opcode/bpf.h index dc1b6e7ae57..ed344427f1b 100644 --- a/include/opcode/bpf.h +++ b/include/opcode/bpf.h @@ -140,6 +140,10 @@ typedef uint64_t bpf_insn_word; #define BPF_IMM32_END32 ((uint64_t)0x00000020) #define BPF_IMM32_END64 ((uint64_t)0x00000040) +#define BPF_IMM32_BSWAP16 ((uint64_t)0x00000010) +#define BPF_IMM32_BSWAP32 ((uint64_t)0x00000020) +#define BPF_IMM32_BSWAP64 ((uint64_t)0x00000040) + #define BPF_IMM32_AADD ((uint64_t)0x00000000) #define BPF_IMM32_AOR ((uint64_t)0x00000040) #define BPF_IMM32_AAND ((uint64_t)0x00000050) @@ -178,6 +182,8 @@ enum bpf_insn_id BPF_INSN_RSH32R, BPF_INSN_RSH32I, BPF_INSN_ARSH32R, BPF_INSN_ARSH32I, BPF_INSN_MOVS328R, BPF_INSN_MOVS3216R, BPF_INSN_MOVS3232R, BPF_INSN_MOV32R, BPF_INSN_MOV32I, + /* Byte swap instructions. */ + BPF_INSN_BSWAP16, BPF_INSN_BSWAP32, BPF_INSN_BSWAP64, /* Endianness conversion instructions. */ BPF_INSN_ENDLE16, BPF_INSN_ENDLE32, BPF_INSN_ENDLE64, BPF_INSN_ENDBE16, BPF_INSN_ENDBE32, BPF_INSN_ENDBE64, diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index e3848151e28..973b17edc2b 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2023-07-24 Jose E. Marchesi + + * bpf-opc.c (bpf_opcodes): Add entries for the BSWAP* + instructions. + 2023-07-24 Jose E. Marchesi * bpf-opc.c (bpf_opcodes): Fix pseudo-c syntax for MOVS* and LDXS* diff --git a/opcodes/bpf-opc.c b/opcodes/bpf-opc.c index e2691eaad64..00a21c6039c 100644 --- a/opcodes/bpf-opc.c +++ b/opcodes/bpf-opc.c @@ -182,6 +182,14 @@ const struct bpf_opcode bpf_opcodes[] = {BPF_INSN_ENDBE64, "endbe%W%dr , 64", "%dr = be64%w%dr", BPF_V1, BPF_CODE|BPF_IMM32, BPF_CLASS_ALU|BPF_CODE_END|BPF_SRC_X|BPF_IMM32_END64}, + /* Byte-swap instructions. */ + {BPF_INSN_BSWAP16, "bswap%W%dr , 16", "%dr%w=%wbswap16%w%dr", + BPF_V4, BPF_CODE|BPF_IMM32, BPF_CLASS_ALU64|BPF_CODE_END|BPF_SRC_K|BPF_IMM32_BSWAP16}, + {BPF_INSN_BSWAP32, "bswap%W%dr , 32", "%dr%w=%wbswap32%w%dr", + BPF_V4, BPF_CODE|BPF_IMM32, BPF_CLASS_ALU64|BPF_CODE_END|BPF_SRC_K|BPF_IMM32_BSWAP32}, + {BPF_INSN_BSWAP64, "bswap%W%dr , 64", "%dr%w=%wbswap64%w%dr", + BPF_V4, BPF_CODE|BPF_IMM32, BPF_CLASS_ALU64|BPF_CODE_END|BPF_SRC_K|BPF_IMM32_BSWAP64}, + /* 64-bit load instruction. */ {BPF_INSN_LDDW, "lddw%W%dr , %i64", "%dr = %i64%wll", BPF_V1, BPF_CODE, BPF_CLASS_LD|BPF_SIZE_DW|BPF_MODE_IMM},