From patchwork Mon Aug 21 17:00:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 136413 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b82d:0:b0:3f2:4152:657d with SMTP id z13csp3138998vqi; Mon, 21 Aug 2023 10:00:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGIheF76RhLusl7Lep1UPadInl6AhMWSmtpCgg8NjNohYmOJmRbwqPDrH2kiQEO1Qm4XlmI X-Received: by 2002:a17:906:76d8:b0:982:c8d0:683f with SMTP id q24-20020a17090676d800b00982c8d0683fmr5773248ejn.18.1692637247253; Mon, 21 Aug 2023 10:00:47 -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 k21-20020a1709063fd500b0098d6097599esi6222138ejj.872.2023.08.21.10.00.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Aug 2023 10:00:47 -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=l4oH6OYi; 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 E899938555A1 for ; Mon, 21 Aug 2023 17:00:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E899938555A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1692637244; bh=P5Hbh7McVH0yZ7assrkCdxlJJ1Guyw55NhlpSBbnT80=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=l4oH6OYi4Hf4UsMUiidbyNdKKrETnwlaAWKQWl8bmLXm4Ra55TPmNng0K+SFSNDnX Ink3RULI+OB/8imr0TLA8K0Jg/EhRT9e7RyWIXhO8Lh33x6gYR1UV0xLVy8myCLfL0 uVEKK4JDMDco7H1XawvGBLfaIJD5OzmvRcKrIjLU= 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 EC0FD3858C41 for ; Mon, 21 Aug 2023 17:00:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EC0FD3858C41 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 37LFxeqF023959 for ; Mon, 21 Aug 2023 17:00:29 GMT Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3sjnma3avq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 21 Aug 2023 17:00:28 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 37LFVA7g030436 for ; Mon, 21 Aug 2023 17:00:28 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3sjm63qg3p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 21 Aug 2023 17:00:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P3m1jOqkb77mEm6imw8dfWnQtiH2ZnZml66R59pA6ob6F0pPn4rq5PtbuRi0PvcryaWL17lqfnykPx9oZNBkp8G2Of+Z+QGbzhbCH2AX0wX4vq2GjF+doGSVrODYJsK3xIBzuDQlNhl9AmUg+HfrxGUfkoWjfiTjQke89IlCDJ1bCzVI0JLJPoGizunW2OVqtbAkeaRX+BKn9s1644UbvBU1udb75zQI3r3T/lI8NHmrvWB6PjaUj9jqnh3HasYM7rhvz9wBFOSuj+9w7Ot1sjU1BZE4iugl+Nk8mccpyTlV/OZznXuNxxG9nG7q/Jc+pMoO0A5nVBJj11igme13uQ== 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=P5Hbh7McVH0yZ7assrkCdxlJJ1Guyw55NhlpSBbnT80=; b=NLBWfVnT/DV8uVyP/GBTp3chn9mWv0VVRMqS+06lT4qR87xHXjxRFSIUoCzhZeaffpzrnd26BrBYcj9nXaSPTh6wf3BmYiqxd47y3I/djUakKV4bBbDSvVdOSmmHiXBtQ8ztruYl3lcb+8f5jQMU3pgmVsTvEnIGtCzXe82QHef7K9bNiwX9pYkUVNgnxdGElBhz6UzyzX5uDhANRxR9Eww/ksWBCwQ8PV/oKCRSPDBOoMrw+LM2QcF5RPRXTG5N258BPXZgpPRmcnOP1mhq8iXhhWh8Du7leB9/K5zYlpcJ25nDu3wuZRA0bo9N0AwDGeH8I7dDQT1fFbIh8ksr8A== 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 SJ0PR10MB4672.namprd10.prod.outlook.com (2603:10b6:a03:2af::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.24; Mon, 21 Aug 2023 17:00:24 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::6269:77c6:e6b9:ac03]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::6269:77c6:e6b9:ac03%6]) with mapi id 15.20.6699.022; Mon, 21 Aug 2023 17:00:24 +0000 To: binutils@sourceware.org Cc: jose.marchesi@oracle.com Subject: [PATCH] bpf: correct neg and neg32 instruction encoding Date: Mon, 21 Aug 2023 10:00:18 -0700 Message-ID: <20230821170018.5704-1-david.faust@oracle.com> X-Mailer: git-send-email 2.41.0 X-ClientProxiedBy: SJ0PR05CA0089.namprd05.prod.outlook.com (2603:10b6:a03:332::34) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB3213:EE_|SJ0PR10MB4672:EE_ X-MS-Office365-Filtering-Correlation-Id: 83972c63-ed3f-41e1-1ff0-08dba2681cb3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hnTgL2EqTal964dGV4wr2DPDDx7bVY8yRH0arR/YacAY3a6/PqTqHt4nEm/MCSGoaSV4Y9Mw9LLJ8fQS93ixUsgqbo9roy+RXnrPzEn12ayIkgcpq7Sg7oHaoVhMybdDX+lEvtqMDDXm2RQkzVa7p/f00Umf86p/2sxfE+MyHPnI4AggmMoi1GowuNpcgR5OQkgKB1Ay04+AOxuj9X3+fWpXNarC1MFwooOGiI93l/k48rQhqQgzM5xYTB9vYF6yPv8eYf82Xclz8NKKkp5QH7w392W5XE2LkRG62erhSWKEcOBXoklX0hmDqwCsk+zkXUwtUmk7o5L2TxDZpA9DL54FLYU5n68iMSAeXy19t+S9RfXZ3nwluEHSzS+01KGvcIHGZHu7jIOHo+l+pg9gvspYPxp9Yf7Q+WrXiUopwt0/IH2gSCNE4JW7mRzh1+53X/wA0ONvs0OyAx1D2xJycjgk7iqrdWoF2o8FehnfaZkvaGDSBG83RzYp9F2To3VkqkQsJT+aJ2azDJwuz+PUOVGLVjOoiBG7dIIE/or2OGYas5UbPAkMpHc0aBUwrZfe 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:(13230031)(376002)(366004)(346002)(136003)(39860400002)(396003)(451199024)(1800799009)(186009)(2906002)(30864003)(83380400001)(6506007)(38100700002)(6486002)(5660300002)(44832011)(26005)(86362001)(8676002)(8936002)(2616005)(107886003)(4326008)(6512007)(316002)(66476007)(6916009)(66556008)(66946007)(478600001)(6666004)(36756003)(41300700001)(1076003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fFkdAWYy6+EuKyv6Zx8Bq6Jdd0CNRmSasUoz/xvv84SWdB3E6VCPihuRWNEW/NIqr4YcCEdrSdn9PnXcwsSiy8cy5c7cGaPF8UcUjX7965dXqEPLsBkMDA1oxEqPqDdNdmy6lTVTYYAuwJGeNzJ72arW8NesYr1z6Q7vPk6U34/5jyBsV0iQXZdrh7+8PD5zy9/IUDnhum5bt7V58AO7M9fXPkyVLEDMcX/2jR39iJvYBZlrrZN3PuRfRQFTwzJ0CARfwRyUIlC2JvhiEf2FG+j36QuHq1eXbPIX6z1qnbPwwLfmLj0BRnMPIGATceWmP7sURhMhiFEvd3rX2YWydk544PnUD++46Ti2YQ3XekPnGucV5L/116CFtFvjdIll+aV56CSWXWLlYIuCBVksbCiyoYEwvHCh4Y4cJ+yx8vwVdgm4XAR5wxPMNjOUkLwh7IHeDTjSZDZAXQuQSeCXk5x8D/ialXc8H/wmKnEnB9ES5EPp22sM83k28AIGW845gqL4+23Zpv7MWevaSP4B1Z32BH7/OTUxtDhZFpfVAzjTGx6nF2R1nZbvdE6W1OOAqDahcAUADorDYPykPJdeuM2iFilS6UngHTIy3C6JBff27C741pGChjq9F8ABh2LAEShIdVQzIwgO9gZwxMzITd8IysPF3+tgVT4y5BXMJnAutjWXCw9IuPAv6Ye34z7CYpPeC7Xtm1La9nBOsoD8AhrVMYnboN50+2HBg03fSPj8MpGoZH4/ToJ0pX7tOoGLeUMet6GRYaOmZO2ct/DOKZs5uM0VMPvVmDRmxmrmrZZ+G1w5E8ItDsM7RaJ+3Qc6BbQwtb/n62Oz0cbp42u692V3UDVkp/v7A9RNRTYDyb9IHe5vg/SqoPNv3tRZ5o6n2I48W3acnjl0vIZKdU70FCyJKmIhSNCDA9ouXURlFS2BCmaNKjpyJvQREx+mKpO0B0pIaVAjgFJ8JhIppevtnuS+I+5Pf9M6Brb5Q20dbLAuMkJyGoT4rRsq9msQQzmWj7I/BTqdiHlmYKY8eHS8i1NJB0xUOH81ZDKJ7p7veuvCIUgrbutm+qeTxy7Wyuq5o4z7IiGSTUkIiWK+B5tSgTYWP371SFV2dxRjjEK1Z1ctJq2s8Rh/CDQ3fXOj1877SwrxctV+0qbN9TgswY3WjdNvl64AXh6VSbSknNL4J2+3sppA5Z6Sc4u6j4tctRHxHGwSVzbDblS70olTQSQSAP2fQNmP8xXsVf4vz362eNBe49wMEYEv8eaDKx3hzmkqqc3D5yonjJylNR08SNT9PXw0PjFddzIXPkb3oGEHSqj6k1pc658g3LumzfzWlloRxBNSE6wm9fChHfobJHTEb8XHywDQBGYIDYzz8/O4IQ8DYsDhp6ln3DnfodotOmIcSPINhuB/FNht+edbJoGr6iHog+gPVW/1lWTiHyW3pRz6OBQTr3YcQd8pd5Hac5qs2ul4HBn28p4UctqTO84Yqqa+KpvO3eLlYfjyqKhEbsZEWv2hvBABU/yTKbEfz4RhT79NBD7d8PlwHKwlNciA5UBsFv/QG0aNJzewJvqzOhsbXc3x/moLp6NQT+gwLHuy X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zuAudL+nR/9SkSFoDH/JGV2jhhd0b1JJNOo4Uw+zPNUIrSa6Smny6Y6qgFhoo12nvsudwlwtOnYEB3goQgS4aJe8yIl4QpqFNDHbyu4bQR5E4IRvI+5Kn7dm9B0+S5PZaFW6//SmVd6vytaFEMtexvYHYHA2RjU1jD44/D00GUaW70JIGFaId+S3ixL6TLWqGpGlq5WczdueeaM/OOk4KapdgWjuYW81cDA8dkCGcwrpwQhTxFBj3vE9XxhgtyvWsteV6jmKfeuUgHFJdjvTvOo7Lr7gYF3MjsEcYJ0SRUdyzzihovRiO8nB09KU2yyp/2Z7wgRTXCkUnNW8i6+qDfOpaTlMbFva7Gs0knTxjwcL5Gxzp2v0catYLXB1rPRgffqUcvZGPZ3tvAjQ7izCAN8Egb7W21hf74jQfe2q5XzYJ+kYmbxpc28OMqm0VU9YIU/wU7nt0Y/SqxSbqn3OhttmmNhz8hS80k1RQwVlQq+qpeVAtQwSUBQVkihSxngScSqEurVFvypcDroF5TfsK+y163ZCBSf5V8ZV2ldXKwr+N/OBeLsd/1bTurUEjnyhztTCZK8DSi4OkbuIQNoltu+ZBBW1hMWpiwRdCxu1TjMoyVsuXnXEPFnUQFn+XSOSOBp7TWgRJ25bgscy0mWrFbhzszxdMHz22GqbAvlX3eCJet7UCXrbZTlSqZxpU+M1nkn5kLSOp6y2tb8qAhKDaaYzUJOpizInisz7/MwXf6KQ4DmgSJOzta8IiHneq23P X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83972c63-ed3f-41e1-1ff0-08dba2681cb3 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2023 17:00:24.6404 (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: 52c8FvYCTknIoBD+lJBGpVYE/SmnCnEd5g5KMkBj5LxxvGEeodEj0KfsgVuT4H6k2w0HSI5M5AFIB72fVEUkiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4672 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-08-21_05,2023-08-18_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 spamscore=0 mlxlogscore=624 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2308210158 X-Proofpoint-ORIG-GUID: KywqKdUP9K1NKissg9c51EKvPF-7OaO0 X-Proofpoint-GUID: KywqKdUP9K1NKissg9c51EKvPF-7OaO0 X-Spam-Status: No, score=-13.4 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 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: David Faust via Binutils From: David Faust Reply-To: David Faust Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774858794256665544 X-GMAIL-MSGID: 1774858794256665544 The neg/neg32 BPF instructions always use BPF_SRC_K (=0) in their header source bit, despite operating on registers. If BPF_SRC_X (=1) is set, the instructions are rejected by the kernel. Because of this there are also no neg/neg32 instructions which operate on immediates, so remove them. bd434cc4d94ec3d2f9fc1e7c00c27b074f962bc1 was a similar fix in the old CGEN-based port, but was not carried forward in the new port. include/ * opcode/bpf.h (enum bpf_insn_id): Remove spurious entries BPF_INSN_NEGI and BPF_INSN_NEG32I. opcodes/ * bpf-opc.c (bpf_opcodes): Remove erroneous NEGI and NEG32I instructions. gas/ * doc/c-bpf.texi (BPF Instructions): Remove erroneous neg and neg32 instructions operating on immediates. * testsuite/gas/bpf/alu.s: Adapt accordingly. * testsuite/gas/bpf/alu.d: Likewise. * testsuite/gas/bpf/alu-be.d: Likewise * testsuite/gas/bpf/alu32.s: Likewise. * testsuite/gas/bpf/alu32.d: Likewise. * testsuite/gas/bpf/alu32-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. * testsuite/gas/bpf/alu32-pseudoc.s: Likewise. * testsuite/gas/bpf/alu32-pseudoc.d: Likewise. * testsuite/gas/bpf/alu32-be-pseudoc.d: Likewise. --- gas/doc/c-bpf.texi | 16 ---------------- 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 | 4 ---- gas/testsuite/gas/bpf/alu.d | 3 +-- gas/testsuite/gas/bpf/alu.s | 1 - gas/testsuite/gas/bpf/alu32-be-pseudoc.d | 3 +-- gas/testsuite/gas/bpf/alu32-be.d | 3 +-- gas/testsuite/gas/bpf/alu32-pseudoc.d | 3 +-- gas/testsuite/gas/bpf/alu32-pseudoc.s | 4 ---- gas/testsuite/gas/bpf/alu32.d | 3 +-- gas/testsuite/gas/bpf/alu32.s | 1 - include/opcode/bpf.h | 4 ++-- opcodes/bpf-opc.c | 4 ---- 15 files changed, 10 insertions(+), 48 deletions(-) diff --git a/gas/doc/c-bpf.texi b/gas/doc/c-bpf.texi index 75372de4ef4..bdd9fde0f5a 100644 --- a/gas/doc/c-bpf.texi +++ b/gas/doc/c-bpf.texi @@ -256,17 +256,9 @@ registers. 64-bit right arithmetic shift, by @code{rs} or @code{imm32} bits. @item neg rd -@itemx neg rd, imm32 @itemx rd = - rd -@itemx rd = - imm32 64-bit arithmetic negation. -Note that in the @code{rd = - imm32} syntax there must be at least -one white space between @code{-} and @code{imm32}. Otherwise the -instruction is parsed as a @code{mov rd, imm32} instruction with a -negative 32-bit immediate. This is a consequence of a syntactic -ambiguity in the pseudoc syntax. - @item mov rd, rs @itemx mov rd, imm32 @itemx rd = rs @@ -363,17 +355,9 @@ in the same instruction. 32-bit right arithmetic shift, by @code{rs} or @code{imm32} bits. @item neg32 rd -@itemx neg32 rd, imm32 @itemx rd = - rd -@itemx rd = - imm32 32-bit arithmetic negation. -Note that in the @code{rd = - imm32} syntax there must be at least -one white space between @code{-} and @code{imm32}. Otherwise the -instruction is parsed as a @code{mov32 rd, imm32} instruction with a -negative 32-bit immediate. This is a consequence of a syntactic -ambiguity in the pseudoc syntax. - @item mov32 rd, rs @itemx mov32 rd, imm32 @itemx rd = rs diff --git a/gas/testsuite/gas/bpf/alu-be-pseudoc.d b/gas/testsuite/gas/bpf/alu-be-pseudoc.d index 0e9df07eb15..4c0f6ba9ca6 100644 --- a/gas/testsuite/gas/bpf/alu-be-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu-be-pseudoc.d @@ -56,7 +56,7 @@ Disassembly of section .text: 168: c7 30 00 00 ff ff fd 66 r3 s>>=0xfffffd66 170: c7 40 00 00 7e ad be ef r4 s>>=0x7eadbeef 178: cf 56 00 00 00 00 00 00 r5 s>>=r6 - 180: 8f 20 00 00 00 00 00 00 r2=-r2 + 180: 87 20 00 00 00 00 00 00 r2=-r2 188: d4 90 00 00 00 00 00 10 r9=le16 r9 190: d4 80 00 00 00 00 00 20 r8=le32 r8 198: d4 70 00 00 00 00 00 40 r7=le64 r7 @@ -69,4 +69,3 @@ Disassembly of section .text: 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 - 1e8: b7 10 00 00 ff ff f1 00 r1=0xfffff100 \ No newline at end of file diff --git a/gas/testsuite/gas/bpf/alu-be.d b/gas/testsuite/gas/bpf/alu-be.d index b961f3fe474..0d6a10f8ca3 100644 --- a/gas/testsuite/gas/bpf/alu-be.d +++ b/gas/testsuite/gas/bpf/alu-be.d @@ -56,7 +56,7 @@ Disassembly of section .text: 168: c7 30 00 00 ff ff fd 66 arsh %r3,0xfffffd66 170: c7 40 00 00 7e ad be ef arsh %r4,0x7eadbeef 178: cf 56 00 00 00 00 00 00 arsh %r5,%r6 - 180: 8f 20 00 00 00 00 00 00 neg %r2 + 180: 87 20 00 00 00 00 00 00 neg %r2 188: d4 90 00 00 00 00 00 10 endle %r9,16 190: d4 80 00 00 00 00 00 20 endle %r8,32 198: d4 70 00 00 00 00 00 40 endle %r7,64 @@ -69,4 +69,3 @@ Disassembly of section .text: 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 - 1e8: 87 10 00 00 00 00 0f 00 neg %r1,0xf00 \ No newline at end of file diff --git a/gas/testsuite/gas/bpf/alu-pseudoc.d b/gas/testsuite/gas/bpf/alu-pseudoc.d index bbd222c83ae..b5ab569563c 100644 --- a/gas/testsuite/gas/bpf/alu-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu-pseudoc.d @@ -56,7 +56,7 @@ Disassembly of section .text: 168: c7 03 00 00 66 fd ff ff r3 s>>=0xfffffd66 170: c7 04 00 00 ef be ad 7e r4 s>>=0x7eadbeef 178: cf 65 00 00 00 00 00 00 r5 s>>=r6 - 180: 8f 02 00 00 00 00 00 00 r2=-r2 + 180: 87 02 00 00 00 00 00 00 r2=-r2 188: d4 09 00 00 10 00 00 00 r9=le16 r9 190: d4 08 00 00 20 00 00 00 r8=le32 r8 198: d4 07 00 00 40 00 00 00 r7=le64 r7 @@ -69,4 +69,3 @@ Disassembly of section .text: 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 - 1e8: b7 01 00 00 00 f1 ff ff r1=0xfffff100 diff --git a/gas/testsuite/gas/bpf/alu-pseudoc.s b/gas/testsuite/gas/bpf/alu-pseudoc.s index abd8ddcc38e..323a6522f22 100644 --- a/gas/testsuite/gas/bpf/alu-pseudoc.s +++ b/gas/testsuite/gas/bpf/alu-pseudoc.s @@ -61,7 +61,3 @@ r1 = bswap16 r1 r2 = bswap32 r2 r3 = bswap64 r3 - ;; Note that the next instruction gets processed by the GAS - ;; preprocessor into r1 =-0xf00, which parses into a %dr = %i32 - ;; instruction instead of a neg :/ - r1 = - 0xf00 diff --git a/gas/testsuite/gas/bpf/alu.d b/gas/testsuite/gas/bpf/alu.d index e4afdab0d50..f6bead38f4b 100644 --- a/gas/testsuite/gas/bpf/alu.d +++ b/gas/testsuite/gas/bpf/alu.d @@ -56,7 +56,7 @@ Disassembly of section .text: 168: c7 03 00 00 66 fd ff ff arsh %r3,0xfffffd66 170: c7 04 00 00 ef be ad 7e arsh %r4,0x7eadbeef 178: cf 65 00 00 00 00 00 00 arsh %r5,%r6 - 180: 8f 02 00 00 00 00 00 00 neg %r2 + 180: 87 02 00 00 00 00 00 00 neg %r2 188: d4 09 00 00 10 00 00 00 endle %r9,16 190: d4 08 00 00 20 00 00 00 endle %r8,32 198: d4 07 00 00 40 00 00 00 endle %r7,64 @@ -69,4 +69,3 @@ Disassembly of section .text: 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 - 1e8: 87 01 00 00 00 0f 00 00 neg %r1,0xf00 \ No newline at end of file diff --git a/gas/testsuite/gas/bpf/alu.s b/gas/testsuite/gas/bpf/alu.s index d0bf5600209..2d8d22da0e1 100644 --- a/gas/testsuite/gas/bpf/alu.s +++ b/gas/testsuite/gas/bpf/alu.s @@ -61,4 +61,3 @@ bswap %r1, 16 bswap %r2, 32 bswap %r3, 64 - neg %r1, 0xf00 diff --git a/gas/testsuite/gas/bpf/alu32-be-pseudoc.d b/gas/testsuite/gas/bpf/alu32-be-pseudoc.d index 7f5e70071fc..150ed4c0732 100644 --- a/gas/testsuite/gas/bpf/alu32-be-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu32-be-pseudoc.d @@ -56,8 +56,7 @@ Disassembly of section .text: 168: c4 30 00 00 ff ff fd 66 w3 s>>=0xfffffd66 170: c4 40 00 00 7e ad be ef w4 s>>=0x7eadbeef 178: cc 56 00 00 00 00 00 00 w5 s>>=w6 - 180: 8c 20 00 00 00 00 00 00 w2=-w2 + 180: 84 20 00 00 00 00 00 00 w2=-w2 188: bc 12 00 08 00 00 00 00 w1 = \(s8\) w2 190: bc 12 00 10 00 00 00 00 w1 = \(s16\) w2 198: bc 12 00 20 00 00 00 00 w1 = \(s32\) w2 - 1a0: b4 10 00 00 ff ff f1 00 w1=0xfffff100 \ No newline at end of file diff --git a/gas/testsuite/gas/bpf/alu32-be.d b/gas/testsuite/gas/bpf/alu32-be.d index 9799664b27a..650432dec10 100644 --- a/gas/testsuite/gas/bpf/alu32-be.d +++ b/gas/testsuite/gas/bpf/alu32-be.d @@ -56,8 +56,7 @@ Disassembly of section .text: 168: c4 30 00 00 ff ff fd 66 arsh32 %r3,0xfffffd66 170: c4 40 00 00 7e ad be ef arsh32 %r4,0x7eadbeef 178: cc 56 00 00 00 00 00 00 arsh32 %r5,%r6 - 180: 8c 20 00 00 00 00 00 00 neg32 %r2 + 180: 84 20 00 00 00 00 00 00 neg32 %r2 188: bc 12 00 08 00 00 00 00 movs32 %r1,%r2,8 190: bc 12 00 10 00 00 00 00 movs32 %r1,%r2,16 198: bc 12 00 20 00 00 00 00 movs32 %r1,%r2,32 - 1a0: 84 10 00 00 00 00 0f 00 neg32 %r1,0xf00 diff --git a/gas/testsuite/gas/bpf/alu32-pseudoc.d b/gas/testsuite/gas/bpf/alu32-pseudoc.d index cc4e010b201..4aa90a1a608 100644 --- a/gas/testsuite/gas/bpf/alu32-pseudoc.d +++ b/gas/testsuite/gas/bpf/alu32-pseudoc.d @@ -56,8 +56,7 @@ Disassembly of section .text: 168: c4 03 00 00 66 fd ff ff w3 s>>=0xfffffd66 170: c4 04 00 00 ef be ad 7e w4 s>>=0x7eadbeef 178: cc 65 00 00 00 00 00 00 w5 s>>=w6 - 180: 8c 02 00 00 00 00 00 00 w2=-w2 + 180: 84 02 00 00 00 00 00 00 w2=-w2 188: bc 21 08 00 00 00 00 00 w1 = \(s8\) w2 190: bc 21 10 00 00 00 00 00 w1 = \(s16\) w2 198: bc 21 20 00 00 00 00 00 w1 = \(s32\) w2 - 1a0: b4 01 00 00 00 f1 ff ff w1=0xfffff100 diff --git a/gas/testsuite/gas/bpf/alu32-pseudoc.s b/gas/testsuite/gas/bpf/alu32-pseudoc.s index 98d586a48e6..46c4e15a4b7 100644 --- a/gas/testsuite/gas/bpf/alu32-pseudoc.s +++ b/gas/testsuite/gas/bpf/alu32-pseudoc.s @@ -52,7 +52,3 @@ w1 = (s8) w2 w1 = (s16) w2 w1 = (s32) w2 - ;; Note that the next instruction gets processed by the GAS - ;; preprocessor into w1 =-0xf00, which parses into a %dw = %i32 - ;; instruction instead of a neg :/ - w1 = - 0xf00 diff --git a/gas/testsuite/gas/bpf/alu32.d b/gas/testsuite/gas/bpf/alu32.d index 25484381aeb..25f84a167e4 100644 --- a/gas/testsuite/gas/bpf/alu32.d +++ b/gas/testsuite/gas/bpf/alu32.d @@ -56,8 +56,7 @@ Disassembly of section .text: 168: c4 03 00 00 66 fd ff ff arsh32 %r3,0xfffffd66 170: c4 04 00 00 ef be ad 7e arsh32 %r4,0x7eadbeef 178: cc 65 00 00 00 00 00 00 arsh32 %r5,%r6 - 180: 8c 02 00 00 00 00 00 00 neg32 %r2 + 180: 84 02 00 00 00 00 00 00 neg32 %r2 188: bc 21 08 00 00 00 00 00 movs32 %r1,%r2,8 190: bc 21 10 00 00 00 00 00 movs32 %r1,%r2,16 198: bc 21 20 00 00 00 00 00 movs32 %r1,%r2,32 - 1a0: 84 01 00 00 00 0f 00 00 neg32 %r1,0xf00 \ No newline at end of file diff --git a/gas/testsuite/gas/bpf/alu32.s b/gas/testsuite/gas/bpf/alu32.s index fd1d528ba21..291f9ced6a7 100644 --- a/gas/testsuite/gas/bpf/alu32.s +++ b/gas/testsuite/gas/bpf/alu32.s @@ -52,4 +52,3 @@ movs32 %r1,%r2,8 movs32 %r1,%r2,16 movs32 %r1,%r2,32 - neg32 %r1, 0xf00 diff --git a/include/opcode/bpf.h b/include/opcode/bpf.h index 6decae4a9a3..a8a95955768 100644 --- a/include/opcode/bpf.h +++ b/include/opcode/bpf.h @@ -168,7 +168,7 @@ enum bpf_insn_id BPF_INSN_SMODR, BPF_INSN_SMODI, BPF_INSN_DIVR, BPF_INSN_DIVI, BPF_INSN_MODR, BPF_INSN_MODI, BPF_INSN_ORR, BPF_INSN_ORI, BPF_INSN_ANDR, BPF_INSN_ANDI, BPF_INSN_XORR, BPF_INSN_XORI, - BPF_INSN_NEGR, BPF_INSN_NEGI, BPF_INSN_LSHR, BPF_INSN_LSHI, + BPF_INSN_NEGR, BPF_INSN_LSHR, BPF_INSN_LSHI, BPF_INSN_RSHR, BPF_INSN_RSHI, BPF_INSN_ARSHR, BPF_INSN_ARSHI, BPF_INSN_MOVS8R, BPF_INSN_MOVS16R, BPF_INSN_MOVS32R, BPF_INSN_MOVR, BPF_INSN_MOVI, @@ -178,7 +178,7 @@ enum bpf_insn_id BPF_INSN_SMOD32R, BPF_INSN_SMOD32I, BPF_INSN_DIV32R, BPF_INSN_DIV32I, BPF_INSN_MOD32R, BPF_INSN_MOD32I, BPF_INSN_OR32R, BPF_INSN_OR32I, BPF_INSN_AND32R, BPF_INSN_AND32I, BPF_INSN_XOR32R, BPF_INSN_XOR32I, - BPF_INSN_NEG32R, BPF_INSN_NEG32I, BPF_INSN_LSH32R, BPF_INSN_LSH32I, + BPF_INSN_NEG32R, BPF_INSN_LSH32R, BPF_INSN_LSH32I, 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, diff --git a/opcodes/bpf-opc.c b/opcodes/bpf-opc.c index 3d6dccbd005..7fcec62234e 100644 --- a/opcodes/bpf-opc.c +++ b/opcodes/bpf-opc.c @@ -74,8 +74,6 @@ const struct bpf_opcode bpf_opcodes[] = {BPF_INSN_XORI, "xor%W%dr , %i32", "%dr ^= %i32", BPF_V1, BPF_CODE, BPF_CLASS_ALU64|BPF_CODE_XOR|BPF_SRC_K}, {BPF_INSN_NEGR, "neg%W%dr", "%dr = - %dr", - BPF_V1, BPF_CODE, BPF_CLASS_ALU64|BPF_CODE_NEG|BPF_SRC_X}, - {BPF_INSN_NEGI, "neg%W%dr , %i32", "%dr = -%W%i32", BPF_V1, BPF_CODE, BPF_CLASS_ALU64|BPF_CODE_NEG|BPF_SRC_K}, {BPF_INSN_LSHR, "lsh%W%dr , %sr", "%dr <<= %sr", BPF_V1, BPF_CODE, BPF_CLASS_ALU64|BPF_CODE_LSH|BPF_SRC_X}, @@ -142,8 +140,6 @@ const struct bpf_opcode bpf_opcodes[] = {BPF_INSN_XOR32I, "xor32%W%dr , %i32", "%dw ^= %i32", BPF_V1, BPF_CODE, BPF_CLASS_ALU|BPF_CODE_XOR|BPF_SRC_K}, {BPF_INSN_NEG32R, "neg32%W%dr", "%dw = - %dw", - BPF_V1, BPF_CODE, BPF_CLASS_ALU|BPF_CODE_NEG|BPF_SRC_X}, - {BPF_INSN_NEG32I, "neg32%W%dr , %i32", "%dw = -%W%i32", BPF_V1, BPF_CODE, BPF_CLASS_ALU|BPF_CODE_NEG|BPF_SRC_K}, {BPF_INSN_LSH32R, "lsh32%W%dr , %sr", "%dw <<= %sw", BPF_V1, BPF_CODE, BPF_CLASS_ALU|BPF_CODE_LSH|BPF_SRC_X},