From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2041.outbound.protection.outlook.com [40.107.105.41]) by sourceware.org (Postfix) with ESMTPS id 3D5153858D1E for ; Mon, 30 Jan 2023 14:07:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3D5153858D1E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EJ6I3DdKT3WIgs/9DZ/6S58TrsIdn4emnWEZlJluqfJ4upC9dQYI9J8qupwDUF3rIjCqsibZMcJ7oIrkssa1JshJ6AOeQ9Nq7vrWXwRFXLZhrE4TVgMmlATM5ELCpRUNClqAKiqJ0jAnWUtqwTvKusHR/e5+N474ljZ1qx94LZbn3xl/qvA3lT2QIyAf5dz3KQ32/Wc4g0TnEnIkDMdwe9Mwg/i6khOzaVXVJDwzsNaRdPz+mtmTI+pgBh8n7I5/an1rXCKKZwbFJ18pOz5r1Vp/3tpXVK9WQ+RmgCHUZdMJcBpzRviwpAc6jv7198+9fjyaw5cnCWwXB9VYpDkbYg== 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=PjWU64xnxZF9rLwFgwJzFlg1oUxXgef3g+aChk4WB2A=; b=ds5GAv2rP2EKijxbPViohdTg4c9wWsaF3yV+cnZL7JvS5MvEv0GtaGyMMTbpPJqflBFXTvHiUGoiPIi7wk4XcZtXG4esD59SYFCHhzD68b89nPBib9gWQnbVylfrBoYJ38beCPgCOx0JQZtElosdYjnWKhlzdwlWMsUxqVsV6kIWTWyODESoGrDdHLXKmqVp4sEjPee4Zl2wJdvCYTvFU6Dvpo/NQSU9YmL5HDeSzhyy8VO/vt+iG8zGLri/2/S6lUwUSMHzq84YoW6T4Ou7y3CRsamc5QrtvxNK7Ioq1l18tPgTU616LHznqdBVzZpQUuxMopZwxCNg+X4FoZki4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PjWU64xnxZF9rLwFgwJzFlg1oUxXgef3g+aChk4WB2A=; b=t1XdV0YMQu4bsDJNH/2Q0c4pf8sCLOAwLrAz6CboIYhP8k3pD65YnC+ozjUMg9WOUgmGLQtgl5ad0L2eXDnAdjNVYnSN67w+QigixxgxrwG5YzHh6VK0bGDc0Ki7+q2D70bQqfmpkEfuTi9p721k7RuwN5opiM1bbYIw3Pu8zlHE8PKyYIzSCUCT+cxaFV3jFyzrvlSLmnfwTVScMDJaF7GInyMfQKlokyZgmGdjSe940kkJL7Lkq6WbTTCtriaJbWD4ABcvPiD4igRw/MgtFpN8mV0dchrUWUyuD/EyrCnGk7DzdtB1qfVQXmNzkAmIbQWYp0K010fZt/r4/vMEIQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DB8PR04MB7177.eurprd04.prod.outlook.com (2603:10a6:10:127::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.33; Mon, 30 Jan 2023 14:07:22 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.6043.036; Mon, 30 Jan 2023 14:07:22 +0000 Message-ID: Date: Mon, 30 Jan 2023 15:07:20 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 From: Jan Beulich Subject: [PATCH v2] RISC-V: make C-extension JAL available again for (32-bit) assembly To: Binutils Cc: Palmer Dabbelt , Andrew Waterman , Jim Wilson , Nelson Chu Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0201.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a5::13) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DB8PR04MB7177:EE_ X-MS-Office365-Filtering-Correlation-Id: b43b8ee8-d588-403d-f0ab-08db02cb4e4d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FbK+lY1l1s0CnMkKqyCLiSAchCEh7HPaD7zCnHERtUbqeW6TXz3dnzxDgyCMZSnH8hiBugVqLUsoqNo4f945pI/uHha9KsJhedENvGCwWrPE6B9Rtmq3yGFJ+sZ+NkVErgXrgFdm8ogHuG76lzbdL5YiFfTml2rZg8fkJdQGXtenWOf6s7JfsfCaCN/ePZDQ+G6gxJ8Xl6Kiq+wTwsaOqWE7fMlb+c15IS0qv4v9e+Tjl2GxNixf7Ok+TsWdGU99861ZG6xyZpyzBIpwK9dS++A08SnWumZtdSis3i9d4iYaAqNGNoz95ko2zL2dss+M0I498BUzez52EVbFewUjGOiXXrWDbGnkL42sikBcFwVdTYcVId9yTlJSsOPZwhWKhZ0uoB4BoJcORevGfvxrlrXvuOhp+KRJGQGZHbm1uAA1FHHImqGfPSgbNBX7gC1qR+pp9pxGDrjzE1rW16wp6wwvgDNUh2IenLnEsmma4V0jenDb2J7wtA5tUog7y4LPMJ6FAMBymxoP67KHRbsWWMq15tYIA4CFv3/RiNFr45d7djkl21vMsWpSAVwODEHYsd6ZPd0782aKBEGM7GHhnQT+dd45HoUUD+c76MwJQbFhkp8U0ej7Mud10HbTKHPEmrwAuVq9QY9/kKvZk7MAsG2djtB/8TbKxUgi2ptJPNeuzFVFz52EgaXjcDsKKxo6vdm0NHxFqCoujYOUcdY7Ci78yglAwNy+LuolHIGlYxA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(376002)(39860400002)(136003)(346002)(396003)(451199018)(31686004)(2616005)(4326008)(66556008)(66946007)(6916009)(8676002)(66476007)(186003)(26005)(6512007)(86362001)(36756003)(2906002)(31696002)(41300700001)(8936002)(6486002)(478600001)(316002)(54906003)(38100700002)(5660300002)(6506007)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YldVNS8ybmVpWGJmRUJmak5hZmw2L1BORmhLaEFTWTNwUUtSb0M5clNyclZT?= =?utf-8?B?WHpiaUt4a24yWExPT3UwaGEvUnVKK3lJd3p3Q01tOVE3Q0pyMmFUajI5Wlcr?= =?utf-8?B?T1hQdVlWNFl4VWNtdWdZUHV1ZGdTMmoweEdYaUhJVVZicnFWa0NkMDFlSzRi?= =?utf-8?B?a21sbjN3dWdmdGMyT1NkRUIwdTVWdGVXNWFJVkJJUHlpVFlZMDVMU2sxRHc2?= =?utf-8?B?R2hIWTkxb2czVTBYZG5KckNJQy8valh6ZUJ3cWJWY0VqdDRMRmlLc0lsZWhq?= =?utf-8?B?VnZYMWp0ZzNLblVyVytsYzdOSWQvUDE3M0hRM0ZOZG9ma1AwWS8rRTh4TGE4?= =?utf-8?B?WDVjRWgrVFFQd0VHRXo4TGt2NWhsc3ZCUGhZcm1HdmQrVHZrS2dqbkVVZGc4?= =?utf-8?B?MGFmMXJ1QTB6REx4eGVmU3NKT2VvN3RoaDhUdFR6NkFTcnBoVElZdkZuTWd6?= =?utf-8?B?M3kzU0xBcVlOeFA2dHo4VTlHL0l1Wk9ydWZpZVlBS1NIblJvaytiM3o2MlBz?= =?utf-8?B?M2JERm01T2NETGRtR1N4QnhVbTFjK01PNndpbTdYaFNiRGlJbE5TUVFDR0da?= =?utf-8?B?eXd1blo0MVdQbkJ4U2lRQzh4Z3NiMEFwM1NVSFU2WEZmOEZDKzNpTzR0Zi9H?= =?utf-8?B?ZWN5NFJiMnlIQktQd3UxMjNiNVNDMGwwUkl5N2N3NXRhVUsybUliNFJBbXAw?= =?utf-8?B?SkdkcXkwbVlvQlRnUmtSN0xNODlqZGloTktnV2RKMkZmMXUwVkZwSVpNbnhK?= =?utf-8?B?ZGtQcEVBSGQ2cTV1dFRBNWRraHgzck1wNzRZT3lLUmZaYloxcExVZXV6YTlR?= =?utf-8?B?TDIzY3p0M2tRbEVkVVZNZG1RWTJKajlocFU0QUFlMkEwN2drMUFKNDh2Nlk5?= =?utf-8?B?YXRhSXlhZkVDVm9mT0d1SU9BbnpZWXFQNWIvaUp0eDM2OVdHUnhRcCs3MFpW?= =?utf-8?B?R2RiOVFhM3c5NUg3eHJ0bjYzVWdlSUdLMWdUYWMxamJRVWZaeWUzYWVZempt?= =?utf-8?B?QzIwMHIrM1VEdVZtRWJhalBQRDJKUUVuQVY1YTBvYURoTWR4L3JOdktDM0lC?= =?utf-8?B?TXBaSmFDS0s0QnVsdStwNGxFb0cwS1JTUVpFaXpOVTVFZnZlNWZzdWx6Vnpp?= =?utf-8?B?OVlEVmQvQitCaG51V1dNZUtBQUFJaUJ3VDljajU5VjBaTTlvQytnbEdrRUJU?= =?utf-8?B?eWVURXA5cU1UVjloNmRZei9MMzdna0xpbjFnY3A4Y1pzUHJoSHQ0UFExUnp5?= =?utf-8?B?RzVlTm9Jd1RKR2JCdUVVa2F5bkZuSlhsZnpvQlVIcEc0RUxIblZMamlWNnBi?= =?utf-8?B?Q2RMNUdDRTJSRUVZNHVKdEc1Z1hQYWxNdjFxcFIrcFdHek92SEtlS3JtcDIy?= =?utf-8?B?cU5ScVVQOVlJVERrNWZEYWtzYmtNeU1pTGpPY1Njbmw1UW95alBNakhOVWpQ?= =?utf-8?B?OFZSRnpCdnVsNXdDM0NtZmR6OWovRUk5UHVDeEFIelVCZmxBZVliMGhkcVlN?= =?utf-8?B?c1NWT1FrQXIwaW9ISGNROWI0d1ZVTXV1ajBLVTFjR01lRW5PdjBjc3FSSUhm?= =?utf-8?B?VzRqbUNDbjBYa3hZaGErT1pZOVRmZVI3VUt3MWl5UzhoUGxEek4wVHdhRkJI?= =?utf-8?B?ckZ3UW5FdzFYVjd5L2dORGFSOER1ZW1qTFRGc3hWK2FiUndEYld1cVljWFJk?= =?utf-8?B?cjZKclRoN2gxYkNwbmRVRENObGFvdG1uTy8wQzViVkdWaGpiSzdqOTh3K3FO?= =?utf-8?B?VFI0YlZvOWg2VXNHZDVGR0FWMFhkSUxSdkRxT3lHRzdWZ3NpbndHWmQ3OWIz?= =?utf-8?B?SDRzc1huUmlnN2lIU1FnaTA0NGNmZDVRckNkZ2tPeTk3bDhjelBwb09hMlhw?= =?utf-8?B?RlhVUmFxaFRCanRJckt3R1BTaWkrSmZ3TFRlZGdCRC9MVE1WWGt5SE02SXFu?= =?utf-8?B?K0J3ejJ3ajZRVlA3ZHdHWVI4MDc1K0Y4Q3I4ODZZSTRhanR5R3EydnAyMVVn?= =?utf-8?B?czh3NEFGa3Y4eGk4Q21KVWFrM1hOVTFzUXdDeWQxTXpyM01iNHRESmJoeS9T?= =?utf-8?B?TURKVXZZLzg5Y1hXNFN3bWU1SVpJVmZiV0pFeVBaaWxYbjRTSGNNeWdBam92?= =?utf-8?Q?+mRZ2oAGcEJWKD7+D0eCVd1qI?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b43b8ee8-d588-403d-f0ab-08db02cb4e4d X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2023 14:07:22.0123 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gDbr1C6CsZiYTngKrG0kJ8t5AICZrOcLbVK03a5oEhDuLUW1B07OObql+5LVQkpH5jlwz2TBELczk1HpIvNp1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB7177 X-Spam-Status: No, score=-3028.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Along with the normal JAL alias, the C-extension one should have been moved as well by 839189bc932e ("RISC-V: re-arrange opcode table for consistent alias handling"), for the assembler to actually be able to use it where/when possible. Since neither this nor any other compressed branch insn was being tested so far, take the opportunity and introduce a new testcase covering those. --- Pretty clearly this should also go on the 2.40 branch. --- v2: Avoid re-introducing PR/gas 29940. --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -2764,6 +2764,8 @@ riscv_ip (char *str, struct riscv_cl_ins case 'p': goto branch; case 'a': + if (oparg == insn->args + 1) + goto jump_check_gpr; goto jump; case 'S': /* Floating-point RS1 x8-x15. */ if (!reg_lookup (&asarg, RCLASS_FPR, ®no) @@ -3273,6 +3275,7 @@ riscv_ip (char *str, struct riscv_cl_ins but the 2nd (with 2 operands) might. */ if (oparg == insn->args) { + jump_check_gpr: asargStart = asarg; if (reg_lookup (&asarg, RCLASS_GPR, NULL) && (*asarg == ',' || (ISSPACE (*asarg) && asarg[1] == ','))) --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -340,9 +340,9 @@ const struct riscv_opcode riscv_opcodes[ {"jalr", 0, INSN_CLASS_I, "d,s,j", MATCH_JALR, MASK_JALR, match_opcode, INSN_JSR }, {"j", 0, INSN_CLASS_C, "Ca", MATCH_C_J, MASK_C_J, match_opcode, INSN_ALIAS|INSN_BRANCH }, {"j", 0, INSN_CLASS_I, "a", MATCH_JAL, MASK_JAL|MASK_RD, match_opcode, INSN_ALIAS|INSN_BRANCH }, +{"jal", 32, INSN_CLASS_C, "Ca", MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_ALIAS|INSN_JSR }, {"jal", 0, INSN_CLASS_I, "a", MATCH_JAL|(X_RA << OP_SH_RD), MASK_JAL|MASK_RD, match_opcode, INSN_ALIAS|INSN_JSR }, {"jal", 0, INSN_CLASS_I, "d,a", MATCH_JAL, MASK_JAL, match_opcode, INSN_JSR }, -{"jal", 32, INSN_CLASS_C, "Ca", MATCH_C_JAL, MASK_C_JAL, match_opcode, INSN_ALIAS|INSN_JSR }, {"call", 0, INSN_CLASS_I, "d,c", (X_T1 << OP_SH_RS1), (int) M_CALL, match_never, INSN_MACRO }, {"call", 0, INSN_CLASS_I, "c", (X_RA << OP_SH_RS1)|(X_RA << OP_SH_RD), (int) M_CALL, match_never, INSN_MACRO }, {"tail", 0, INSN_CLASS_I, "c", (X_T1 << OP_SH_RS1), (int) M_CALL, match_never, INSN_MACRO }, --- /dev/null +++ b/gas/testsuite/gas/riscv/c-branch-na.d @@ -0,0 +1,20 @@ +#as: -march=rv32ic +#source: c-branch.s +#objdump: -drw -Mno-aliases + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+ : +[ ]+[0-9a-f]+:[ ]+c001[ ]+c\.beqz[ ]+s0,0 [ ]+0: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+dcfd[ ]+c\.beqz[ ]+s1,0 [ ]+2: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+fc75[ ]+c\.bnez[ ]+s0,0 [ ]+4: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+fced[ ]+c\.bnez[ ]+s1,0 [ ]+6: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+bfe5[ ]+c\.j[ ]+0 [ ]+8: R_RISCV_RVC_JUMP .* +[ ]+[0-9a-f]+:[ ]+3fdd[ ]+c\.jal[ ]+0 [ ]+a: R_RISCV_RVC_JUMP .* +[ ]+[0-9a-f]+:[ ]+9302[ ]+c\.jalr[ ]+t1 +[ ]+[0-9a-f]+:[ ]+8382[ ]+c\.jr[ ]+t2 +[ ]+[0-9a-f]+:[ ]+8082[ ]+c\.jr[ ]+ra +#... --- /dev/null +++ b/gas/testsuite/gas/riscv/c-branch.d @@ -0,0 +1,19 @@ +#as: -march=rv64ic +#objdump: -drw + +.*:[ ]+file format .* + + +Disassembly of section .text: + +0+ : +[ ]+[0-9a-f]+:[ ]+c001[ ]+beqz[ ]+s0,0 [ ]+0: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+dcfd[ ]+beqz[ ]+s1,0 [ ]+2: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+fc75[ ]+bnez[ ]+s0,0 [ ]+4: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+fced[ ]+bnez[ ]+s1,0 [ ]+6: R_RISCV_RVC_BRANCH .* +[ ]+[0-9a-f]+:[ ]+bfe5[ ]+j[ ]+0 [ ]+8: R_RISCV_RVC_JUMP .* +[ ]+[0-9a-f]+:[ ]+ff7ff0ef[ ]+jal[ ]+0 [ ]+a: R_RISCV_JAL .* +[ ]+[0-9a-f]+:[ ]+9302[ ]+jalr[ ]+t1 +[ ]+[0-9a-f]+:[ ]+8382[ ]+jr[ ]+t2 +[ ]+[0-9a-f]+:[ ]+8082[ ]+ret +#... --- /dev/null +++ b/gas/testsuite/gas/riscv/c-branch.s @@ -0,0 +1,11 @@ + .text +target: + beq x8, x0, target + beqz x9, target + bne x8, x0, target + bnez x9, target + j target + jal target + jalr x6 + jr x7 + ret