From patchwork Thu Sep 9 21:36:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 1526334 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=gdR5SAeA; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H5C9b3y9Tz9sXV for ; Fri, 10 Sep 2021 07:40:51 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 64BC7384A88A for ; Thu, 9 Sep 2021 21:40:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 64BC7384A88A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1631223649; bh=nje9lRIZPimCzH4LD5z8skAaZX1zfnw550kTt/hLQA4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=gdR5SAeAGbLOu+G5qozAWam2szrz3ayCRMohH9RoVAtP21rzr5NoKtWiOZUR6Sc21 crOlbtHfJHsMKzDylmr9GbaUafJ0Fy2jARYta3u/St7EOoj5GFhlMZ8yt3xOQyhfkd CfcakOJNBnne9rj77PpyhjPsnJJFsSit/fY/S8cs= 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 B75BF3858C2C for ; Thu, 9 Sep 2021 21:37:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B75BF3858C2C Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 189LTRbl009895 for ; Thu, 9 Sep 2021 21:37:06 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3ayfe9281t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:05 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 189LYstr025355 for ; Thu, 9 Sep 2021 21:37:04 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by userp3020.oracle.com with ESMTP id 3axst62f03-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cigT23I2jLXHAmzEuK0xafW773CbiIBeYuOshrmw182ouzxa0zw9LB71C99qL9+2hj2XZVGuuR1Q77xcjnvw/+kRqN61UeRWyjDuEch6bn8ZH2/htIYbMLlheXOtvb89UdE6x3EP9EhN95mACEkHtdUbVCNkjrA5oFDnT2I13SeYvxE5JsmoU6Bn5tA3cvun2jHWmckxl3tCLiTaJdGRjoAdcjTL0DiCn7hygSbGBUVkdkQ445kJ+zFF02LnwDUkE6CwH0WCA7ygn7NSqkZP/M5XTjNasQw+hNCdP7rfWU3EYjkRs+GskBCkEpC2lZXqyZeg5ZTRUxpLLbzhCZ81bQ== 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; bh=nje9lRIZPimCzH4LD5z8skAaZX1zfnw550kTt/hLQA4=; b=E9Z1LH5Om0iKTH2KpH1pSYKzNTD01N9JJbswXwKagFIJcJtJ6aZOdzeskmMLIK/Yj1RSyBIDr0XpayRddk8xPfnuTVQHvyDW2SDmuH8GtkXVSuUTzSuoVo/qj1f/bO4yb3lxZaDglbwdmwBjBPwSuSnON87MjyUFsKGB9Sxh8jhcnOnLHhhGJzxk5xJPjzcKMZOc3iFbih/d/92sLC8M63q9d8U8XX3vHd6HRYX+hijggFnNsjirtmPK15LowdoUDZviDyWwHTSr885aEkWMGQcFyre9LqauG44vCYgaI5jGnxCknvmANmjUW3DvzqTmDF8vIupCxFgIKB7x8JZWVg== 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 SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) by SN6PR10MB2607.namprd10.prod.outlook.com (2603:10b6:805:4e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.17; Thu, 9 Sep 2021 21:37:02 +0000 Received: from SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e]) by SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e%4]) with mapi id 15.20.4500.017; Thu, 9 Sep 2021 21:37:02 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 1/3] bpf: add -mcpu and related feature options Date: Thu, 9 Sep 2021 14:36:43 -0700 Message-Id: <20210909213645.11605-2-david.faust@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210909213645.11605-1-david.faust@oracle.com> References: <20210909213645.11605-1-david.faust@oracle.com> X-ClientProxiedBy: SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) To SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) MIME-Version: 1.0 Received: from sequence.us.oracle.com (2606:b400:8301:1041::12) by SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Thu, 9 Sep 2021 21:37:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d4ae5577-9490-4355-306f-08d973d9f5d7 X-MS-TrafficTypeDiagnostic: SN6PR10MB2607: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:619; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tacgbJk8dmwwdDtE5UQOWf7qml2KA0qusUBwneLRU3CF+e9MCmYsQnNmyZYFGYm/7LldI/h/vldwUA/XbPMs71oggEGCLU/Pzi93YwrGBrEN9Q8lOHlIvdOwaHhyLtJo6Ja1tXHzBXRKF8BPHp7L+d/fw0YEXi2Mw9uPKK9hbnRznF2FeWh3jPhOHsb3grvgYQ2Iz/RtOJywAKJqAMK5EXp0Dej8QqsHCX5DqorRYZ0tTr9eLJtwY/CCAbwMJRe8+Itcn1i3wTPmJ4pEUeFD3mgxZ+Ju73+V7VdJVzRzgBixtxx98weJ5IWG3kEHy28wHSY9jxde/3bb6AkjpMo0A2ZmGkLI/v82VycpFOtmgR8DoWDKsM4rh9lO9YyvrmE2+ZYvH9HHl7mQ/OKTHKJucCPWPc+xFWrnnLQ6DD/P8llAVCyMl6QUo/b0wtaSp7IOSdUzVbvFpGcGtxXTLWWm04/kbXE0/cBLaE18TyDV3REgTJ6recwsDJJtjy/iOXcQsNtXo57Injwdd3/CUfHE2S9Ppe9AlkUjfUtAajxNHOd+Ev5BLPSKFgGwQbPvmWy55F7k3tJC3AINX0bJqEajznFFs2cfaH6zaNy7FZJgxMVWLJ3SJVdms80DRwvjdKZzX/xwqZdMiRX/od7Lsa8sHQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA2PR10MB4458.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(396003)(346002)(376002)(136003)(366004)(2616005)(36756003)(316002)(86362001)(6666004)(52116002)(7696005)(478600001)(66946007)(66476007)(8676002)(38100700002)(8936002)(2906002)(83380400001)(44832011)(1076003)(186003)(5660300002)(6916009)(66556008)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tYs4/djXZzNjgIsEJ2wqi0pAJoY72XUTtZlJnz5556SFyo9nBNUxa89jO3lFI8fjUuSO3VdN1DfoJ6maQRne0LkYgddc5bwXK67RMEmjvDl+gwFA0vT9KbGH2kl5h14qmfpuDWCFmgOYojaGK6GxiGfhRe8W+pUu55ERRCEvWpbwCv7fHfItYn0ZiGY4ayn+dwSjbMFSes6asedaghZW3tFdLaUpJhiEF3IzGZg6GsUQiQy7aPWR4xn+xdyNmPej1ul+jf3KVDl9zITJkLtskiMGHiC/2w3wPSeGN9gG4DIFqXbCsZhtLoGZp8vpPzVZmgXTDkEYNMZ46bFnBarYBzfRa7/zMPdrF8Uyprp4GbYDVaY0tEGh+NTiYgk3ojQJgHDqoY4DFyCD5Sk28+dI70cwrFQV4ygnlhyGq6SqZZ48Ml4KmU+VLfrf0HMbQGe+SNzk8NwneoJU+RRos1nBqz0wDizHMkarANT4Q3IZAdaYkEon+s0+Xcy3IWB+Sfy8RkKdTMKc7r2ifj3u6+vde/PMxBBxCdfOSQOpRuyspCfbd+960eW9OIdKH+gMaMFvVQngVa8PiqU47cobGtPvNabS6kpcwLMbBmZJvOmPWjCb82OutOc1ZzV7OKUzPiJGgN8O8Yoy6lXvBgmm2v1XX96CJILxBETdj0zoZhdWyIh6PT2cKkGvVEShkV7p6/8fKCY0VS0/8LWKHoMlkZblsNxy+y1YoJTU5OWXHDhsyycd/U6lXXoZF7q8W6/JL6xl+CyNUBCx7CiNueFl2d6xR4Ltw5+uRgkL6nKDZABYzmr776Z0wcb+aV4xU2FWfejlsxqrFeqfGt2TBl1qJsijfQ+Ey5GZLAYh7H0JI3F6hwFeyt2bWLszxspneM0NvYJPpcZOb4QHJuR2rNnYpDzZ4CsZ5xk72U8pdeQlUuXYfmNhQ0n0U0dmmez5Nbk1HVOXQGVrSNmm35swQZsWt71Rw9o7sV8TGxt0ij4A890ZikawtMEzBLa0jzV6/CBp+i0BCKU2PnHfEcFz6ipp34egkEcpHiudC7Pr5jZJy36umqy6KtcBgoE6tZWyNV1hagK++y3dTIp2c/6bT6hJO+HUn6QgD6kz+kdALhW5tHAFpNvwKz9/0p7p540ya7Mtd1VNKu2Da0ICSDzJw1Eys26YPbV4UwwRO6Yr7cPDu+qYNLpHIvcoyBrkj/Na6ol4RVIV1X3sVOvYLoborT5Rfc/Nc0QQ3oM4BB2BDZQKo2oghhY7+nNc0AZ9mJLQqr2A6AXEKxSoIMOgOCdpHy0oneEwOSops3V8+1bRDR1PT+mydoRh1X5m185JKOFMCRcgIQ932ItzOTbPy3/Yt3X8YArNkQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d4ae5577-9490-4355-306f-08d973d9f5d7 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4458.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2021 21:37:02.0906 (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: ldFAqNtAXizBv5S+V9L+MlEYlRiMxKESmmE8VKgXFwdFsbILbAoDvS+8NWyKTQlTQSo+Et++Y0hxODl45QUPtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2607 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10102 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109030001 definitions=main-2109090132 X-Proofpoint-GUID: y8tx4Qr06OPjs1FYJQcl1jurnEQoua2_ X-Proofpoint-ORIG-GUID: y8tx4Qr06OPjs1FYJQcl1jurnEQoua2_ 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, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" New instructions have been added over time to the eBPF ISA, but previously there has been no good method to select which version to target in GCC. This patch adds the following options to the BPF backend: -mcpu={v1, v2, v3} Select which version of the eBPF ISA to target. This enables or disables generation of certain instructions. The default is v3. -mjmpext Enable extra conditional branch instructions. Enabled for CPU v2 and above. -mjmp32 Enable 32-bit jump/branch instructions. Enabled for CPU v3 and above. -malu32 Enable 32-bit ALU instructions. Enabled for CPU v3 and above. gcc/ChangeLog: * config/bpf/bpf-opts.h (bpf_isa_version): New enum. * config/bpf/bpf-protos.h (bpf_expand_cbranch): New. * config/bpf/bpf.c (bpf_option_override): Handle -mcpu option. (bpf_expand_cbranch): New function. * config/bpf/bpf.md (AM mode iterator): Conditionalize support for SI mode. (zero_extendsidi2): Only use mov32 instruction if it is available. (SIM mode iterator): Conditionalize support for SI mode. (JM mode iterator): New. (cbranchdi4): Update name, use new JM iterator. Use bpf_expand_cbranch. (*branch_on_di): Update name, use new JM iterator. * config/bpf/bpf.opt: (mjmpext): New option. (malu32): Likewise. (mjmp32): Likewise. (mcpu): Likewise. (bpf_isa): New enum. --- gcc/config/bpf/bpf-opts.h | 7 ++++++ gcc/config/bpf/bpf-protos.h | 1 + gcc/config/bpf/bpf.c | 41 ++++++++++++++++++++++++++++++++++ gcc/config/bpf/bpf.md | 44 ++++++++++++++++++++----------------- gcc/config/bpf/bpf.opt | 29 ++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 20 deletions(-) diff --git a/gcc/config/bpf/bpf-opts.h b/gcc/config/bpf/bpf-opts.h index 1bc930cd194..456e39c2200 100644 --- a/gcc/config/bpf/bpf-opts.h +++ b/gcc/config/bpf/bpf-opts.h @@ -53,4 +53,11 @@ enum bpf_kernel_version LINUX_NATIVE, }; +enum bpf_isa_version +{ + ISA_V1, + ISA_V2, + ISA_V3, +}; + #endif /* ! BPF_OPTS_H */ diff --git a/gcc/config/bpf/bpf-protos.h b/gcc/config/bpf/bpf-protos.h index 7ce3386ffda..e6bb9015449 100644 --- a/gcc/config/bpf/bpf-protos.h +++ b/gcc/config/bpf/bpf-protos.h @@ -29,6 +29,7 @@ extern void bpf_print_operand (FILE *, rtx, int); extern void bpf_print_operand_address (FILE *, rtx); extern void bpf_expand_prologue (void); extern void bpf_expand_epilogue (void); +extern void bpf_expand_cbranch (machine_mode, rtx *); rtl_opt_pass * make_pass_bpf_core_attr (gcc::context *); diff --git a/gcc/config/bpf/bpf.c b/gcc/config/bpf/bpf.c index 01d9c03479e..82bb698bd91 100644 --- a/gcc/config/bpf/bpf.c +++ b/gcc/config/bpf/bpf.c @@ -242,6 +242,17 @@ bpf_option_override (void) target_flags |= MASK_BPF_CORE; write_symbols |= BTF_WITH_CORE_DEBUG; } + + /* Determine available features from ISA setting (-mcpu=). */ + if (bpf_has_jmpext == -1) + bpf_has_jmpext = (bpf_isa >= ISA_V2); + + if (bpf_has_alu32 == -1) + bpf_has_alu32 = (bpf_isa >= ISA_V3); + + if (bpf_has_jmp32 == -1) + bpf_has_jmp32 = (bpf_isa >= ISA_V3); + } #undef TARGET_OPTION_OVERRIDE @@ -540,6 +551,36 @@ bpf_expand_epilogue (void) emit_jump_insn (gen_exit ()); } +/* Expand to the instructions for a conditional branch. This function + is called when expanding the 'cbranch4' pattern in bpf.md. */ + +void +bpf_expand_cbranch (machine_mode mode, rtx *operands) +{ + /* If all jump instructions are available, nothing special to do here. */ + if (bpf_has_jmpext) + return; + + enum rtx_code code = GET_CODE (operands[0]); + + /* Without the conditional branch instructions jslt, jsle, jlt, jle, we need + to convert conditional branches that would use them to an available + operation instead by reversing the comparison. */ + if ((code == LT || code == LE || code == LTU || code == LEU)) + { + /* Reverse the condition. */ + PUT_CODE (operands[0], reverse_condition (code)); + + /* Swap the operands, and ensure that the first is a register. */ + if (!register_operand (operands[2], mode)) + operands[2] = force_reg (mode, operands[2]); + + rtx tmp = operands[1]; + operands[1] = operands[2]; + operands[2] = tmp; + } +} + /* Return the initial difference between the specified pair of registers. The registers that can figure in FROM, and TO, are specified by ELIMINABLE_REGS in bpf.h. diff --git a/gcc/config/bpf/bpf.md b/gcc/config/bpf/bpf.md index 03830cc250e..c8a85d66d08 100644 --- a/gcc/config/bpf/bpf.md +++ b/gcc/config/bpf/bpf.md @@ -100,9 +100,9 @@ ;; insns, with the proper modes. ;; ;; 32-bit arithmetic (for SI modes) is implemented using the alu32 -;; instructions. +;; instructions, if available. -(define_mode_iterator AM [SI DI]) +(define_mode_iterator AM [(SI "bpf_has_alu32") DI]) ;;; Addition (define_insn "add3" @@ -264,7 +264,7 @@ (match_operand:SI 1 "nonimmediate_operand" "r,m")))] "" "@ - mov32\t%0,%1 + * return bpf_has_alu32 ? \"mov32\t%0,%1\" : \"mov\t%0,%1\;and\t%0,0xffffffff\"; ldxw\t%0,%1" [(set_attr "type" "alu,ldx")]) @@ -313,7 +313,7 @@ ;;;; Shifts -(define_mode_iterator SIM [SI DI]) +(define_mode_iterator SIM [(SI "bpf_has_alu32") DI]) (define_insn "ashr3" [(set (match_operand:SIM 0 "register_operand" "=r,r") @@ -344,24 +344,28 @@ ;; The eBPF jump instructions use 64-bit arithmetic when evaluating ;; the jump conditions. Therefore we use DI modes below. -(define_expand "cbranchdi4" +(define_mode_iterator JM [(SI "bpf_has_jmp32") DI]) + +(define_expand "cbranch4" [(set (pc) (if_then_else (match_operator 0 "comparison_operator" - [(match_operand:DI 1 "register_operand") - (match_operand:DI 2 "reg_or_imm_operand")]) + [(match_operand:JM 1 "register_operand") + (match_operand:JM 2 "reg_or_imm_operand")]) (label_ref (match_operand 3 "" "")) (pc)))] "" { if (!ordered_comparison_operator (operands[0], VOIDmode)) FAIL; + + bpf_expand_cbranch (mode, operands); }) -(define_insn "*branch_on_di" +(define_insn "*branch_on_" [(set (pc) (if_then_else (match_operator 3 "ordered_comparison_operator" - [(match_operand:DI 0 "register_operand" "r") - (match_operand:DI 1 "reg_or_imm_operand" "rI")]) + [(match_operand:JM 0 "register_operand" "r") + (match_operand:JM 1 "reg_or_imm_operand" "rI")]) (label_ref (match_operand 2 "" "")) (pc)))] "" @@ -370,16 +374,16 @@ switch (code) { - case EQ: return "jeq\t%0,%1,%2"; break; - case NE: return "jne\t%0,%1,%2"; break; - case LT: return "jslt\t%0,%1,%2"; break; - case LE: return "jsle\t%0,%1,%2"; break; - case GT: return "jsgt\t%0,%1,%2"; break; - case GE: return "jsge\t%0,%1,%2"; break; - case LTU: return "jlt\t%0,%1,%2"; break; - case LEU: return "jle\t%0,%1,%2"; break; - case GTU: return "jgt\t%0,%1,%2"; break; - case GEU: return "jge\t%0,%1,%2"; break; + case EQ: return "jeq\t%0,%1,%2"; break; + case NE: return "jne\t%0,%1,%2"; break; + case LT: return "jslt\t%0,%1,%2"; break; + case LE: return "jsle\t%0,%1,%2"; break; + case GT: return "jsgt\t%0,%1,%2"; break; + case GE: return "jsge\t%0,%1,%2"; break; + case LTU: return "jlt\t%0,%1,%2"; break; + case LEU: return "jle\t%0,%1,%2"; break; + case GTU: return "jgt\t%0,%1,%2"; break; + case GEU: return "jge\t%0,%1,%2"; break; default: gcc_unreachable (); return ""; diff --git a/gcc/config/bpf/bpf.opt b/gcc/config/bpf/bpf.opt index 4493067b987..e8b728ca69f 100644 --- a/gcc/config/bpf/bpf.opt +++ b/gcc/config/bpf/bpf.opt @@ -131,3 +131,32 @@ Set a hard limit for the size of each stack frame, in bytes. mco-re Target Mask(BPF_CORE) Generate all necessary information for BPF Compile Once - Run Everywhere. + +; Selecting BPF ISA features and versions + +mjmpext +Target Var(bpf_has_jmpext) Init(-1) +Enable extra conditional-branch instructions j(s)lt and j(s)le. + +malu32 +Target Var(bpf_has_alu32) Init(-1) +Enable 32-bit ALU instructions. + +mjmp32 +Target Var(bpf_has_jmp32) Init(-1) +Enable 32-bit jump instructions. + +mcpu= +Target RejectNegative Joined Var(bpf_isa) Enum(bpf_isa) Init(ISA_V3) + +Enum +Name(bpf_isa) Type(enum bpf_isa_version) + +EnumValue +Enum(bpf_isa) String(v1) Value(ISA_V1) + +EnumValue +Enum(bpf_isa) String(v2) Value(ISA_V2) + +EnumValue +Enum(bpf_isa) String(v3) Value(ISA_V3) From patchwork Thu Sep 9 21:36:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 1526333 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=uJj9WgiN; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H5C8M5s5rz9sW8 for ; Fri, 10 Sep 2021 07:39:47 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C5F67384B0EB for ; Thu, 9 Sep 2021 21:39:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C5F67384B0EB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1631223584; bh=t7kpsn0euIkba8fxlN/qtXapYX33jMrJYnV0OqzBPCw=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=uJj9WgiNTPHdtGzya+pGbcXaCQbXyJfMZ/+NGN1JbHrzmgKi4sn1VCaKalFx/KhN3 M37GFhC7emYtCzCvPKEtm2og23uMR+DPNGH8IwXx0myYZ2oYuO6uOCIIuIJ7YJIoGs ImoEt8Yyeu9QgZHJKLsAT71CSWbJY7h885oDGFII= 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 BD44B385743D for ; Thu, 9 Sep 2021 21:37:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BD44B385743D Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 189LTQY8030150 for ; Thu, 9 Sep 2021 21:37:06 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3ayf8aa5nh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:06 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 189LYsts025355 for ; Thu, 9 Sep 2021 21:37:04 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by userp3020.oracle.com with ESMTP id 3axst62f03-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GBviMEw0b72WS08Lre9vOYcdHheNoyx2l58nXzdpAsq7h673E4Vpy96lWibGvo926kwYNUaLFgcCoNi7hRtuHtieN6jLDHprof1O05BtGSyXerVwm/jkYYJbrYFjfCNC4m2Opc0E/djPY9koNSRcOHJ627Jp34sZNBwtF//jmdp8hu0KJmKBuT3X/CzmYuMA0zF1Gs2ZDhFPMdcglqqct+xCMn3S7mC5HonQgcItt56OFFExHS48IqBWTags5tGAA6O3PDiBpLzwuyog6Sb74AMASoG8hDgVBGSptRDdnTNZK57dEFd0pWSJ6lr7jexNXUhRftjs5klKyS2DLA7Myw== 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; bh=t7kpsn0euIkba8fxlN/qtXapYX33jMrJYnV0OqzBPCw=; b=Hd3kqEBpKs3PvKwHf4Ft7tw0Ly/ZyxKTTrObKcJvNInm2Y0u/GNRIHl1Td0AghzjqpSUpQxc1dOL0gY06Xb67OgSffEravvdD8tNLC8yeztO3aU8VbVplrqwNitqrgmajIuopa+IVDOqqGBX7+g+anUSoKXd4rYkOeS1jr1+cCsux07Zud4Tsqmc5Tn6qnzjBac3Rsqkjkdku9eMoXLFozMyLuIvPvnDCedyD4ZeSJtEUGClc9y0+PNZEioNXcwa8h/U5hCKUvbIy75rlJMR8EYUfEN9bcO5KI7o/+bRUCJAPWtEiKyR0L7nZ0i44y87p/+wZF5nOYhpQduFoIGyIg== 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 SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) by SN6PR10MB2607.namprd10.prod.outlook.com (2603:10b6:805:4e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.17; Thu, 9 Sep 2021 21:37:02 +0000 Received: from SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e]) by SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e%4]) with mapi id 15.20.4500.017; Thu, 9 Sep 2021 21:37:02 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 2/3] bpf testsuite: add tests for new feature options Date: Thu, 9 Sep 2021 14:36:44 -0700 Message-Id: <20210909213645.11605-3-david.faust@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210909213645.11605-1-david.faust@oracle.com> References: <20210909213645.11605-1-david.faust@oracle.com> X-ClientProxiedBy: SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) To SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) MIME-Version: 1.0 Received: from sequence.us.oracle.com (2606:b400:8301:1041::12) by SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Thu, 9 Sep 2021 21:37:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b9084a63-b490-4008-fcfb-08d973d9f635 X-MS-TrafficTypeDiagnostic: SN6PR10MB2607: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:416; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4ycZLumBmtZwerDdJonJpxRr6mg5D4OfBLOw3YFO5M23SV65bsmKBtqy7pYwkpaXDTZOm30x17GhGQlpkmDwt7bwjuIa8jI2UQNHHzqo7bk1dDwJwu3OKi5IEl3DyWzk3FzwIaAIT8qRXZWF9ZKsOT4hN0W9c9liCBlr0VEn/IlOPn45cPEJlkC3GsstRVc09W6TqL/9p98OCgEp4Mx6u+logWuSqjR8HJsSkIf9DSJGA4+iOL+x5JEOnrapX4KTCVs2S4Gdx3YIhurFPmb9nrXKpMx7x/bEgb3mNhXyQ0+aVIjxrJLhLpYBu+Bz4NO2AywTH/AXWnVPd47nIYgONi7YrW52Bx2Pat7fzJee+iwxdaOZIFYxw2orqjeypvCxtEeI6NOyZp8b8x48PXs3itudUGeJDyplhgzTCcd6vuKiLANVRJR7eQ/XxYvPHOIcbFqSiNvHyoS+eopAZbKwldVobP5iE8FvtOle51iL0pPEjtuHG2N3sFJKxHXVy4ykVSiA58/sfx9AZWkJZ81XvlzzrpvP+qDQLTTtPi4j+o+WXsO6DN3kooJhhBh2xWxhD+Q2P1kOzKwpSR+9Ui/7zG73IGHCr7nUOgbDG5edm5OEXmpXVwzh02dd2lKCeHMnUWc2aiCFXr2eCLSBmwwBe07zosVSPdmpetMUtJneGw//ObGdj6Czb2fopgXDUZFHyDNYbSInicCdEzIxS0TR8aUnlkiDqLKx/B1l8DVPXC6oIDofz1okpzN5klJ8ecPhp4R+UG60o5bTaCDPeLT6xA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA2PR10MB4458.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(396003)(346002)(376002)(136003)(366004)(2616005)(36756003)(316002)(86362001)(6666004)(52116002)(7696005)(478600001)(66946007)(66476007)(8676002)(38100700002)(8936002)(2906002)(44832011)(1076003)(186003)(5660300002)(6916009)(66556008)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BEYACm2zKhdUP6jjd6tuSxPbxgWyhkTac7mFnPhs/xHHGPmLLWla56HacM/PHOcil9ESVASr+c4pgSFUQl4kbMCKcCuuaY9BW6TpTd9hmKX8n3oD38TAduL6f+8tEJwGdMm5kxGRNsfFlpSdL5lLzKvqLCVS1UydnSjpNyXR8SlbBUyq1i5kcTLJTXfmJgZ+LkYFXBPdWC2ABSGd+ka6yN2sJ6tGkNrbyRhC3hZ9ULmhTZ68vZMoEVwgfdyayWLevoiqweYH75s5oXcfatIpZEt1DIPKyeAlYoP9lEY1wjEzM5+jbvNrY0V/lWwueQDQ+Ksxik5lZNjkWyi5a3esPXBeDb3lUEVVL3HNpvVjEyUnTGHY1fF4PMrHplIeukuIpxAEgrkTbzM7Xb/8dYJWhrlLTF3qGqQtGxKhcNnTYLBIu2VUBAAjKh2NPwf1TyEAC7uvdTFEpmpfYCcnVAB3yK2KA7yVzuXbc8SWDpRsXOlyHmWpj1ufzn7fcP0bDNMf+C2WMx07+7MjTi2TjNJK4pQds92c0IMEzQQ5AOtoT/ybI1aVX03htUL3sanGmhe1UaMlTd1R1yJ9rEkuBXv0gfyxVOBQWmtFIEs9EsGcJN8vr9w9x6/bCmiGow9WOqz7LSiEHtd2ZI0w2+kZfyKlXUc50WMUeNAbNN6cTU9so+bMIjcuq7Ect7KirwMku39vZiJJvOJY81kJURcUYmYwFZ0AEQ48/57RK/xDLBwrrWpiH6vJsu51bJMdXKqd+liWqr8GOB/XNv+t4+5DG3S836U+ux7qNrzeeMjc3KCCPVITH+iuvb8rkpHEaXhI24Xz1SNXNEKvJwULGsQ6ZXYVbFbL7lutYoKpyHBxoSekvkecwGOgZFHmem4AkxXh0xmKzfTqfQShKRIkqWzVZS5A/ssH21lLfHyP7AYOo28snDtpsLNL4VzuhOfXRO2bm0KdaCTVNCt5KkCO0aA3Q6wmau+yoXKi1LDdQDmNmoZzL+jxlFDvRYiq7JaB+7ieEGjZxCZkCRs7L2kd8TobFHig+Y4wAkwfXwBxLVD7NS9XB00jiEhzWm1R1YahCr1rAXMchn3sJEhx6Mb36ZGM4kVPh5+pqeV9v+vxGad9MYaLZWDJFfvKXXJokZL+pU3vbpgW8rIRRvVez86Dwmyhx2TPK6kxUWa9Y7rKvfxPihFeIm9YrpBIKKVqPhdH3kd6WAV75B9ZnB+n6ZbFPHp+Y4wBrt2xHNuDGrA7dmzs+2EQqFtl29aDIBMveiez4/p07ws7Lc+OghrXZx6/aT2ty6VSXGBthcrJNKvk6VNDhHCDfWPCpj5Ld46Ckd2uxFOlbKASvgEQJeUANsdOFrpyO1lP3Q== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9084a63-b490-4008-fcfb-08d973d9f635 X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4458.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2021 21:37:02.6731 (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: PYBu4tcs0gKBt6K1G6/QSXNfT+ZsQeqsfwQ3TzohkaCS56jMZA/RwKwbnu9DKO35O62hqckND813ls0Pgfrnwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2607 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10102 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109030001 definitions=main-2109090132 X-Proofpoint-ORIG-GUID: iJgEnoz2DIeokWr1eLDMpkrIvttA5oWo X-Proofpoint-GUID: iJgEnoz2DIeokWr1eLDMpkrIvttA5oWo X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" This commit adds tests for the new -mjmpext, -mjmp32 and -malu32 feature options in the BPF backend. gcc/testsuite/ChangeLog: * gcc.target/bpf/alu-1.c: New test. * gcc.target/bpf/jmp-1.c: New test. --- gcc/testsuite/gcc.target/bpf/alu-1.c | 56 +++++++++++++++++++++++++++ gcc/testsuite/gcc.target/bpf/jmp-1.c | 57 ++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 gcc/testsuite/gcc.target/bpf/alu-1.c create mode 100644 gcc/testsuite/gcc.target/bpf/jmp-1.c diff --git a/gcc/testsuite/gcc.target/bpf/alu-1.c b/gcc/testsuite/gcc.target/bpf/alu-1.c new file mode 100644 index 00000000000..98149305e82 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/alu-1.c @@ -0,0 +1,56 @@ +/* Ensure 32-bit ALU instructions are not generated if -malu32 is + not enabled. */ + +/* { dg-do compile } */ +/* { dg-options "-mno-alu32" } */ + +int foo (int a, int b) +{ + a += 1; + b += a; + b -= 5; + a -= a; + + a *= 2; + b *= a; + + a |= 0xfafa; + b |= a; + b &= 0x00ffff00; + b &= a; + + a <<= 2; + b <<= a; + b >>= 5; + a >>= b; + + int c = a; + int d = 5; + + d ^= a; + c ^= 0xe5e5e5e5; + c = -c; + + unsigned int x = a; + unsigned int y = b; + x /= 3; + y /= x; + x %= 4; + y %= x; + + return a + b - c + d - x + y; +} + +/* { dg-final { scan-assembler-times "mov32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "add32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "sub32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "mul32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "div32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "mod32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "neg32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "and32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "or32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "xor32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "rsh32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "lsh32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "arsh32\t0" 0 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/jmp-1.c b/gcc/testsuite/gcc.target/bpf/jmp-1.c new file mode 100644 index 00000000000..eaf825395ef --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/jmp-1.c @@ -0,0 +1,57 @@ +/* Ensure jlt, jslt, jle and jsle instructions are not generated if + -mjmpext is not enabled, and no 32-bit jump instructions are generated + if -mjmp32 is not enabled. */ + +/* { dg-do compile } */ +/* { dg-options "-mno-jmpext -mno-jmp32" } */ + +int foo (int a, int b) +{ + if (a == 1) + b += 1; + if (a != 3) + b += 2; + if (a > 5) + b += 3; + if (a >= 7) + b += 4; + if (a < 9) + b += 5; + if (a <= 10) + b += 6; + + return a + b; +} + +unsigned int bar (unsigned int a, unsigned int b) +{ + if (a == 1) + b += 1; + if (a != 3) + b += 2; + if (a > 5) + b += 3; + if (a >= 7) + b += 4; + if (a < 9) + b += 5; + if (a <= 10) + b += 6; + + return a + b; +} + +/* { dg-final { scan-assembler-times "jlt\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jslt\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jle\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jsle\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jeq32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jne32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jlt32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jgt32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jle32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jge32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jslt32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jsgt32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jsle32\t0" 0 } } */ +/* { dg-final { scan-assembler-times "jsge32\t0" 0 } } */ From patchwork Thu Sep 9 21:36:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 1526332 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=Hy2BC4wI; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H5C6q4nZjz9sW8 for ; Fri, 10 Sep 2021 07:38:27 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 718FB384A88F for ; Thu, 9 Sep 2021 21:38:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 718FB384A88F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1631223505; bh=fFL59ehuSBETMnTlb9gRR9LQMTut2qC82ZN55XPe5RM=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Hy2BC4wIvyqEoeAG/82jJeDioDm//swNa7y02IXXplHRSaNe2irb0GRtp6b5mzhQd FPTWE47xBIEGxHq92Vfb79vgF6o0N9ak7rPPlxloMZr2pRuX+44jzKChSyl6XgrCBc wkGW8S7OvmdjDCE8Yl4aTuDHmMujJLIUImAXlgfY= 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 E76A4385743E for ; Thu, 9 Sep 2021 21:37:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E76A4385743E Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 189LTSYi009918 for ; Thu, 9 Sep 2021 21:37:06 GMT Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by mx0b-00069f02.pphosted.com with ESMTP id 3ayfe92821-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:06 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 189LYstt025355 for ; Thu, 9 Sep 2021 21:37:05 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2042.outbound.protection.outlook.com [104.47.66.42]) by userp3020.oracle.com with ESMTP id 3axst62f03-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 09 Sep 2021 21:37:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cbRMxFI9Q5jh3cHCi20bB+KOGE0Gg6uhxtRsy2qP5suWFBfmt6JxGFSxj3/PvhoDCNsSy/rOiHfPu1FKkoCiA02a2Ll2ti+lG4ZtxnImzu00zxIaslgNvcGF8TsEMX/IY7RoVDy+VAz8NKjTRLXLF0Hq4SsJAGI6E9iT24lpMr3lEDMg+gHbyBQU0HsuT3grYExHNYELoPzbqwB108Awd8PKMDCeAl5PH/npBpHT4LMg/fkfPY9G6hyblgpEV/vz+a7tr8eoz/b7lcPBITDDHAdHyuVCAFK73NCWeVXqWvm6iI7evxqgkFVasEh6EE93+mkidRnlzrPGbQgPoe4s+A== 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; bh=fFL59ehuSBETMnTlb9gRR9LQMTut2qC82ZN55XPe5RM=; b=JZK8zx2H3w/smhaktDEEjCXGkRpI8Zg9LSOhQ0zp5UzClg3zkKBkUZFYd9xpXgS7d1FDgvhfLPQho4iyAbIQRx2tdlWkDbXzf349qEg1e3QiGn1mYoEjY707zMCrXsf9pBOmb6ZS7hpoWRzONTMYD7KLXxEGVyCGAXw2Ozx/3beLjc03/GAxJJfL/XS4zZfz9qY5WxXYku0xXiMhRXOdKQFPoLap5nHyFUASt4rO+CuDu1WuY5j2KZkiywIoMNEzQ0X/Ygkyg/BFZp+CATK0dg0JA8D2piNRqbJGis1Rmgt8lsysh0TJQnL3IfOxQSZ4epQiIqrgVj1d8UIbvGjZIw== 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 SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) by SN6PR10MB2607.namprd10.prod.outlook.com (2603:10b6:805:4e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.17; Thu, 9 Sep 2021 21:37:03 +0000 Received: from SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e]) by SA2PR10MB4458.namprd10.prod.outlook.com ([fe80::1493:70de:28e4:3d3e%4]) with mapi id 15.20.4500.017; Thu, 9 Sep 2021 21:37:03 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 3/3] doc: document BPF -mcpu and related options Date: Thu, 9 Sep 2021 14:36:45 -0700 Message-Id: <20210909213645.11605-4-david.faust@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210909213645.11605-1-david.faust@oracle.com> References: <20210909213645.11605-1-david.faust@oracle.com> X-ClientProxiedBy: SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) To SA2PR10MB4458.namprd10.prod.outlook.com (2603:10b6:806:f8::24) MIME-Version: 1.0 Received: from sequence.us.oracle.com (2606:b400:8301:1041::12) by SN4PR0401CA0042.namprd04.prod.outlook.com (2603:10b6:803:2a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Thu, 9 Sep 2021 21:37:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9799ddea-3406-43d4-d2ee-08d973d9f68b X-MS-TrafficTypeDiagnostic: SN6PR10MB2607: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1332; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /Xt+s1/U+SZ6+mwmJdU8opNMXpdniw8bQ2YPoF/vcbWxZBfF90h+ZKJS/R1fHT+yu8h9GTrODG0W2v7YM5aRfHib/HsNjsciQpuZpAgAM+BmJeh2CQH+JgIHu2C3t0Z3Vgic4C1G5zto8OmGQju8gYFg+EyEwaL7Nj1vGXXDKjGLK8SZBfHT0C6JxuAONy4jp9vaaftWuRDG8G6RwFnKhAoy7OJokiWTAteQEHl1c+0uGVmvvjGWdVxVZDsnfjYI+ava768wt8W9MAgLIEHeeP4uE7B0JtMHiQDyOMw9i5T0H4KRlKznoVP6GuPnT2v7x1k6mpl+YRu3D6WWtZVfT9gmM3Bhbb+cCeR+dLjuAQRgR3VW3CIvlTdjPmOODGhY2PV0DBeEt8JT6F4EhK/Y7ySEHI8D16VqLUNRuejq8fL4Y01ZwGShL49gsMuIxhsIPOwK+J39Kk1omWU2z4c9KyXBaqqN5kfq6KlVdaLBCdshmXkyLcgdeV1pCdFNHeCSzJrJHQUsmPP86Xl0bfiQh0PttuFZkNBIEj6PuC5fq3lnIk6wbsQ62FZbEjCxu7uwbMUpw3pQgkBPaX9LWcE5Up/j0uSgUWxmWbYDcVWAjdWElVK2XAeNBNfFWFRtMlaZirOR6xvjtBL6RBn6QDHbsQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA2PR10MB4458.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(39860400002)(396003)(346002)(376002)(136003)(366004)(2616005)(36756003)(316002)(86362001)(6666004)(52116002)(7696005)(478600001)(66946007)(66476007)(8676002)(38100700002)(8936002)(2906002)(83380400001)(44832011)(1076003)(186003)(5660300002)(6916009)(66556008)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2Tjpyy1h75cHHtLM46unaDjCOBrqIdxMRdqOotGwviWsKwr1NF0Sju3XSEBf0Cb51x8Hhbx1swt/9KRXQgAIDB4bB+J2+KNLUoTIVm1w+Y5fUAhZ2yr/5xlZq+EjMMeyaZpVvZCTKCUWpfLlwLhgWKVgEEgju/EVHkXq6IroMf2J6pCxyix8UH/kUFIPjOgDVJQ/832bV4NuflXDLRhzdoD0hvXmsN88dU1T+Gqd+OwBnkJgbMQIwxOdTk82fMt1OH/muEZXTEMmMJTYyC1iN/mPOAc9Jd8LJ8a7hfsbWOcj+eEw4jH4RT6QVSrg0IUx3HT9CCv1H0Ofa73WaBjssv485CqR2mFSOlfx0G75OolC4R86XVjv2gtDn3ikHxgMdl4gQsetv5nd/hseGt0CAobRbYp2F/UNNLz0OJsK34b2QZ1ZsWqKPwO7vEWZ6IQdvNWpt4wwXDUr+0lw/MLR/+zgaNsaBYcgf0z1GHXS0K51HFThdvVBLchpAnBCueHE3kVOx/YVQ4sXHlSEZR1Y0O6FzAvZShf6fbba95XBzWRYmRLC+0wBo5jNnxxIY0Vj4RBauN4LM0P9yyQNfqYalOJx7Y8E36XaPaMJRKqYPirdRpxTGxLtG+ITVDIwuNtGtX3oIEpNCsidSFPyvw4XxJeVAFUqQY5uehh7L0o8yCxECh5fNBkGlPInN/BiTOHWJuaguhy+1OCU9EPSm93lun6lUh3oTQOXSLODeYzq0R5OQQDHuaGI1N86Jdl/J+C79K7aD0y+RLLK1Jrv4VVdZoIiNxz9+pVOLa5SMdiX95OLo1FYSndCohlP8VAcmjsJhpk54Pg5dEt2BoRLjjljrrv4fypqsrjOBOoGvZcokIOByihpgf7Sp63fPNogC/tad/A94cUEweTdqZn93gukKeQluLuDo6y2BINaKEsQVt+2PbFlA4r3j6a9ppJzIxB23dypWvvx2k8uiauhQjVc2vw6IsY2rlhJji4BnN8PkvhH3SL1ZJ3nHKPNaJwV1WRVujqs8Fl437cmvnEAYxwWT/2uy6ep1J9c5wKamEm86hUS4wHezrbDpQ9MSjvDFk947OyhW8pPrAqMe6ZTPEufnhaCkcUDwBHL8ynqCF9G5ZaqG+3Q+VxBnQbOUtnh/qLMfcUdl5wXNvh6Itu4FdYdJXuN+mhjMzSq/4CQhaiiIfNZSssjxNOyDw5hQHsuUEK3boymEDzPoAiCuTs8gDYV8ldT7mcwMz49Oz6CQWhS1P6R871OSG1kCq2gCNGJlHWLNTQszWo2tzIX3Z41fIyzfHxcgvAR19CXD3+7OKlG0sv1oYCcSkxiEyxTGrvB4pB7yKfUCfEB0ApOkcGZbjKnkA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9799ddea-3406-43d4-d2ee-08d973d9f68b X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4458.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2021 21:37:03.2376 (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: hLP04KviHogkFD+5Qo5IpN6dXv8mYVTsCVfj5tZej/PyPuRv3THjaa6iFK6Yk7FsX1ooNKdBn64ronGtn0nzKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR10MB2607 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10102 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109030001 definitions=main-2109090132 X-Proofpoint-GUID: UZmvZFrHMvsnG_I10j_pcweLEFpsP2pn X-Proofpoint-ORIG-GUID: UZmvZFrHMvsnG_I10j_pcweLEFpsP2pn X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" This commit adds documentation for the new BPF options -mcpu, -mjmpext, -mjmp32, and -malu32. gcc/ChangeLog: * doc/invoke.texi: Document BPF -mcpu, -mjmpext, -mjmp32 and -malu32 options. --- gcc/doc/invoke.texi | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d4b3a66ee4f..66f69cf161f 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -904,7 +904,8 @@ Objective-C and Objective-C++ Dialects}. @emph{eBPF Options} @gccoptlist{-mbig-endian -mlittle-endian -mkernel=@var{version} --mframe-limit=@var{bytes} -mxbpf -mco-re -mno-co-re} +-mframe-limit=@var{bytes} -mxbpf -mco-re -mno-co-re +-mjmpext -mjmp32 -malu32 -mcpu=@var{version}} @emph{FR30 Options} @gccoptlist{-msmall-model -mno-lsim} @@ -22636,6 +22637,42 @@ Generate code for a big-endian target. @opindex mlittle-endian Generate code for a little-endian target. This is the default. +@item -mjmpext +@opindex mjmpext +Enable generation of extra conditional-branch instructions. +Enabled for CPU v2 and above. + +@item -mjmp32 +@opindex mjmp32 +Enable 32-bit jump instructions. Enabled for CPU v3 and above. + +@item -malu32 +@opindex malu32 +Enable 32-bit ALU instructions. Enabled for CPU v3 and above. + +@item -mcpu=@var{version} +@opindex mcpu +This specifies which version of the eBPF ISA to target. Newer versions +may not be supported by all kernels. The default is @samp{v3}. + +Supported values for @var{version} are: + +@table @samp +@item v1 +The first stable eBPF ISA with no special features or extensions. + +@item v2 +Supports the jump extensions, as in @option{-mjmpext}. + +@item v3 +All features of v2, plus: +@itemize @minus +@item 32-bit jump operations, as in @option{-mjmp32} +@item 32-bit ALU operations, as in @option{-malu32} +@end itemize + +@end table + @item -mco-re @opindex mco-re Enable BPF Compile Once - Run Everywhere (CO-RE) support. Requires and