From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140081.outbound.protection.outlook.com [40.107.14.81]) by sourceware.org (Postfix) with ESMTPS id 0BDBE3945C27 for ; Fri, 25 Nov 2022 08:15:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0BDBE3945C27 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=MrBpA+U/3vKvU0scyE2GBPr/orqFvFdueRA4VI/4TF2S2+0Scb2ttzxAbyWwP9BQsARej3dBSCf+wX4/gC3+ivFN1/lWjJ0Gnfx0fT3bLxIOADeKmRN1tgshTlUTZQN07t+Pv+ODPA9+CBBy/JzaC471tuaZKLUdh0C2ttrDZJlz7qKHF+LJISkMuIuaKsOXnOM2EtrEgeM2pxRWrxuos1vrN9mIyp1vickPRGGYUgb/5IlFKhpnG2PEcNl4RHbtancKW6g/6+UhSs28VSZi0OfE2hNb6yiuRAprWmalejZosO3DK9fNiTNKRLiEO/kytV1Dof9VULdiwVjDrSQSnA== 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=waSu8SbC0ANXO6DDkv9y1wl6nkfuzS0TkwBGAkUOCXc=; b=XjWtrTuNLegzRsMJE/xqFoXNvxMgMVGHt1nvoOpoidm13P1yUmybWsu4eEF+B4wqo8kEFLtVqXV9yX8L8ZkfLzQBs0zAnwrqC5GVONh0WjX5O7EMSue2FGtJ9IMj9NzdXu7R39mG8SMKLSe6yYDr5fcIBehBabyMBTHvVDDocXQUq6xnfnkZ16JBvXkplwFNtn3MmHs5E3Q+r6RgHqr0AMMkG8noba0HdrSowLQZz62wuVrVQQ/+Zt+5KsYL4Tva62ac1HrwBftMFh61MWuSUSX9dx0haRo5JE7676NlUul/w7+IUMY3xx1PfqpTRlqoa6u7nUTNmEaMtkps6jRYYg== 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=waSu8SbC0ANXO6DDkv9y1wl6nkfuzS0TkwBGAkUOCXc=; b=fbl5NLdndYkiTiiPSo1tx2twAd0DWMRFXx362MY7wRLj17j+EEG50ntvCngFRvW7jpN3eyhnHJWGwequa+DWULGpj5UNJ8FTQ9CZFZbIBz31ThVscPLKbMvS331hpksEkCtowBAG1JttvOXvnROVOGL2aA9WPb+JiUF2Juxkq5yg77LvqUZOFiElgtDQMnpU0UA5twT1iw3BqX6UJ7CCfA0inLOLnypvbQ7RDNqM5E1/kFWQEokQRC5ZRNBrI6TQMLi0JSD1DmlhaJlALAR0I5ShRkz69fJeiOXdzFiCD0E9WPjAK3k8j+Kcp1WqiVNJb6qoCDqtGMNsPbMjopqZkQ== 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 AM9PR04MB8699.eurprd04.prod.outlook.com (2603:10a6:20b:43e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.11; Fri, 25 Nov 2022 08:15:42 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8%4]) with mapi id 15.20.5857.020; Fri, 25 Nov 2022 08:15:42 +0000 Message-ID: Date: Fri, 25 Nov 2022 09:15:40 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [PATCH v3 2/2] RISC-V: Better support for long instructions (assembler) Content-Language: en-US To: Tsukasa OI Cc: binutils@sourceware.org, Nelson Chu References: <47d1751320314f02bede4f6096c09b7f6585c94d.1669342633.git.research_trasio@irq.a4lg.com> From: Jan Beulich In-Reply-To: <47d1751320314f02bede4f6096c09b7f6585c94d.1669342633.git.research_trasio@irq.a4lg.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR2P281CA0158.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:99::11) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AM9PR04MB8699:EE_ X-MS-Office365-Filtering-Correlation-Id: ce459d13-7172-4b59-4f73-08dacebd3eb1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: stH/JvDQ7EVvQCfd8gDvRyp9LsJdUFGBTRD1KIcf3z8+f+/wxMmXNiSU5ihmrUQcmrWNMkaXlbl4vHG153HfGUvX/stHOvzJOsdl2lokgPYqOSn9vjHoxVJMEDKVrWRAPr5ur06/z6nmBuoDdr41hMFkF6R6DZ+IpWuP7NTRtFey/A6c+R7wc2dH8iV9aVf8YWYpmTH6MSVazfYhBwsxJXp/X9tWBW5zo90Idpowb1ZolQOBMqc9pKolSXN1ySahSiqYM8lx1sTrgMbE4StKejnmD8r9Opk5K8NFg3tzhsvC/bBDhm2ry91M2BHdFnefyJUPnNw3L3hpCuss0w18kWkrWgFB0HjYO9knsHz122r11I+M8iHod03PnJwEeEeCkwMkzgjYUbD1hmKv9wKuPMFSZc4Sa5XWoqf+ftuCtQHLqw9snKNH5D8n+Z7qCK4Oq42YB9Ozuxx+7ttMTzp+nAW64OA+7PO7aBFg5b043iC8pTzfYkbxy/32RZbKcj0vYM87iRfObqiraMUiIgzJheGZhBl37gDi3LQ2Qa4wVOKu9vZcCJtL7rVGXta1wQfI/fHA4UOXtemTHrLm4DjySbHvnp3x38BkM19mg1OCc1c/gfEbd7rLDU+StvPQgUk9iGoV28Y17jq9OV9psJ9W6xBbvX0khL9mdtQHeduyegEvpnpiE/1+b3QW+CMMA3iMQhh2O+Otq1Wu5FGds+Ysyd6BT3vUrt8WXH6IRnxD2t4= 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:(13230022)(136003)(39860400002)(396003)(346002)(376002)(366004)(451199015)(478600001)(6486002)(6506007)(53546011)(186003)(26005)(36756003)(2906002)(6512007)(38100700002)(31696002)(86362001)(83380400001)(2616005)(8936002)(41300700001)(66946007)(66556008)(66476007)(8676002)(31686004)(4326008)(5660300002)(6916009)(316002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?M0JoTS9vWktkWE5td2JBSytFeHVHdWE3MkNrSE1SUkZnazU5dDJhRTZpQU5m?= =?utf-8?B?SDZzazJOR1VsaldpM0xNZEVUWmU3U29haWg1RzNyOEFRdCtOL1dlQjgyK0VF?= =?utf-8?B?cjU5VlhLM1M0U1JkN3BQeFdQaktnbDFONkNJbitlbmsyanNFbkUzVjdJaEdH?= =?utf-8?B?dmpEZkJuZkk2OGlac1BQQXgyNHhPSFFaT1NRekxUZktYcERrZEpzWDY2d3Uv?= =?utf-8?B?clNES3kwK2hKS1M1WlJIZ0Q1WXJxanl1c3N1cmgxdnZrQ2k2MTdWbUdKazhu?= =?utf-8?B?TERaSzFzT2VHS0g2d2I4N1g1YnpkUnlVZVppQ2JpbVMyZ05lcThzQnNoUE5q?= =?utf-8?B?RW1uazlZRXpJdDM1MDh0SVBKZG5HbEVCZmRBL3EzWG1BYitlc2lZMk5ub1dL?= =?utf-8?B?WWtuNm1ybTJmcHJENDlINnRGTVk2bTJiTnpVVndOUnhPalpBN1M5NnBqNXdm?= =?utf-8?B?UVFTYnE4Y1NwQVZSdXNwd2RFTFBIcEJYSngvUkxGaWdyUVEzMFdMTGZFczVO?= =?utf-8?B?cko1WkxQc2F2NWs2NUFzS1ZGTzNnTWw0K1I2QVJRVEFLVHRiR2V6QkZHcnJm?= =?utf-8?B?R1pWZ002WCtOZVV1c1lIeWRrakhhaGs0alFMd1VuMWQ2aGNsY0ptQVFmS0ZI?= =?utf-8?B?d1VFREo3VUk2V3JndkxjTnNqQzhlUTJWUC91T1ZiZ1pyRml0d25pZmo3MEJz?= =?utf-8?B?NkZjUWtPdEhZM1FwcVlCK0hxeVBUczJ5eFczcXRBcHVoVGpab1c2NTZ1Mm5M?= =?utf-8?B?UDUwMW5IMkQxdnA1QVFKd0JiSi9nUityRFVjVTJiRnVaVmFEbjJUU3lHTDRp?= =?utf-8?B?Wm1KZ08wKzk2V2c4OTRVd3NodnpVcmw4QlZ0N1lHdzdIRDE1enk2cUlIcFU0?= =?utf-8?B?eXZxK1JXRDlXa1lDdVZBS2djdGJmQnlzVEJiM1M4c3NSVW5LRjhXZlB1QU15?= =?utf-8?B?MWptR0VKKzNkUmY4aDUxMEo3NXFRNHlPbExCdElteEQ3TmJVNVZ4VzBnRTN0?= =?utf-8?B?eG9uYUlYVGJWSitqVEtJSDBqU0tzS3JRSy9pYldsUGVleWNBY1cxZlYvNW4w?= =?utf-8?B?SlRDbExKQS9PcXM0eXhuV3Y2VGNXUSttOUdBL1NPN1pXdGloZjRqRWxhVzlD?= =?utf-8?B?UEh0aThVVmMybTNKeFV2NGw0aHFBcThVblFBNERCWmh5NU8rRzIyN3RVOTRz?= =?utf-8?B?MHFDZkp0R1lNc2czQnRaNkdBUnNGbDFiUVBBRWk4cVF3K2pzdHlTSkVUUm91?= =?utf-8?B?NzVjREducGhiVXRheDdzVkZWdmt4c2g0T3Jlc1VSVy94dWhWTTRPSnEyUW5a?= =?utf-8?B?eXRabjRFNmlNN0pJcVNhY3FNeXEvTW5acGFuR0JRQWxOZ0VhSytLb0QrS1A2?= =?utf-8?B?R0Vicm9NWFlaOThZYTgwL3pIaWRSQ3pHME1jZkhPVUVjOXJ1Ymx6TC93NnFQ?= =?utf-8?B?ak44TWk5alE0STByWXNsUU9UT1prREIwbVpGMTJOcmJoZjlWaEdFU1ZBc1g5?= =?utf-8?B?NjFJR1lvMllDeFZxV2ZCYVd3VENaYUtOU3ZXZnFpUzNmVkZ6N3NrbHNseEZE?= =?utf-8?B?SndWaW44QzFUa0Noc1g0Mm5ublNwTXhKRWJGWEtmbTJNckYxMi8vTTFldlk0?= =?utf-8?B?SXg1ajl2Nll5cXV3Y3BYUDJ0Y2U4clI5bVdmZlpjaUFDWHZ0OGI1NU1Bd3dr?= =?utf-8?B?c0dzT2xJQnZ6MEw3S2tyOWZ2OGdoVHZFQVd3TnVVWkNXYmZaQ3JTQ1h1QmNj?= =?utf-8?B?OXNPeGRrU2FXQVV6RENZY1FCTzkveXloUkNvZDR1VUt6ME5OSXlsYVJybUFt?= =?utf-8?B?MEpQczFQUEdZYStCb1VtR0pTOUlqTkFMV3pEcDh4cUE3K3AwLzNHcGhRZGNR?= =?utf-8?B?UC9MVzI4ZlR0c0RLMUZTVW9nb3JUWjJNMXFtZXJyekp0TFEzb0RHNWxlbkc1?= =?utf-8?B?dStEbDVmTUlOcUdLKy9vZitaWGpFV04rL0FxU2lhZjNsRzlNbFVLV2trZDR6?= =?utf-8?B?TVNXMURZOTdOLzY5SGhubzZVTkl3YzYwVVFtalBXWmlzWDh5ajZ5eWlWSHBD?= =?utf-8?B?TkRjZlQ0NUlLOUdWbGxYZkZBMmZiV0pETitJL0REazFHbkthVHhnMHRzU1h2?= =?utf-8?Q?miB8swC7UOkMrGArpxdkcQw4L?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce459d13-7172-4b59-4f73-08dacebd3eb1 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2022 08:15:42.3544 (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: y+9Q9MR4b9AQ8jwFgcTApjkKCdLkR3yMMD226zT85+kwYKXB4pK4rWLS09++Dzy2qNbbq87LQFrXqqYHVGPTHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8699 X-Spam-Status: No, score=-3035.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,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: On 25.11.2022 03:17, Tsukasa OI wrote: > From: Tsukasa OI > > Commit bb996692bd96 ("RISC-V/gas: allow generating up to 176-bit > instructions with .insn") tried to start supporting long instructions but > it was insufficient. > > 1. It heavily depended on the bignum internals (radix of 2^16), > 2. It generates "value conflicts with instruction length" even if a big > number instruction encoding does not exceed its expected length, > 3. Because long opcode was handled separately (from struct riscv_cl_insn), > some information like DWARF line number correspondence was missing and > > To solve these problems, this commit: > > 1. Handles bignum (and its encodings) precisely and > 2. Incorporates long opcode handling into regular instruction handling. > > gas/ChangeLog: > > * config/tc-riscv.c (struct riscv_cl_insn): Add long opcode field. > (create_insn) Clear long opcode marker. > (install_insn) Install longer opcode as well. > (s_riscv_insn) Likewise. > (riscv_ip_hardcode): Make big number handling stricter. Length and > the value conflicts only if the bignum size exceeds the expected > maximum length. > * testsuite/gas/riscv/insn.s: Add testcases such that big number > handling is required. > * testsuite/gas/riscv/insn.d: Likewise. > * testsuite/gas/riscv/insn-na.d: Likewise. > * testsuite/gas/riscv/insn-dwarf.d: Likewise. > --- > gas/config/tc-riscv.c | 38 ++++++++++++++++++++++------ > gas/testsuite/gas/riscv/insn-dwarf.d | 10 +++++++- > gas/testsuite/gas/riscv/insn-na.d | 8 ++++++ > gas/testsuite/gas/riscv/insn.d | 22 ++++++++++++++++ > gas/testsuite/gas/riscv/insn.s | 9 +++++++ > 5 files changed, 78 insertions(+), 9 deletions(-) > > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c > index 019545171f5e..2237062d8b45 100644 > --- a/gas/config/tc-riscv.c > +++ b/gas/config/tc-riscv.c > @@ -45,6 +45,9 @@ struct riscv_cl_insn > /* The encoded instruction bits. */ > insn_t insn_opcode; > > + /* The long encoded instruction bits ([0] is non-zero if used). */ > + char insn_long_opcode[RISCV_MAX_INSN_LEN]; > + > /* The frag that contains the instruction. */ > struct frag *frag; > > @@ -714,6 +717,7 @@ create_insn (struct riscv_cl_insn *insn, const struct riscv_opcode *mo) > { > insn->insn_mo = mo; > insn->insn_opcode = mo->match; > + insn->insn_long_opcode[0] = 0; /* Long insn has non-zero value. */ > insn->frag = NULL; > insn->where = 0; > insn->fixp = NULL; > @@ -725,7 +729,10 @@ static void > install_insn (const struct riscv_cl_insn *insn) > { > char *f = insn->frag->fr_literal + insn->where; > - number_to_chars_littleendian (f, insn->insn_opcode, insn_length (insn)); > + if (insn->insn_long_opcode[0] != 0) > + memcpy (f, insn->insn_long_opcode, insn_length (insn)); > + else > + number_to_chars_littleendian (f, insn->insn_opcode, insn_length (insn)); > } > > /* Move INSN to offset WHERE in FRAG. Adjust the fixups accordingly > @@ -3481,7 +3488,9 @@ riscv_ip_hardcode (char *str, > values[num++] = (insn_t) imm_expr->X_add_number; > break; > case O_big: > - values[num++] = generic_bignum[0]; > + /* Extract lower 32-bits of a big number. > + Assume that generic_bignum_to_int32 work on such number. */ > + values[num++] = (insn_t) generic_bignum_to_int32 (); > break; > default: > /* The first value isn't constant, so it should be > @@ -3508,12 +3517,25 @@ riscv_ip_hardcode (char *str, > > if (imm_expr->X_op == O_big) > { > - if (bytes != imm_expr->X_add_number * CHARS_PER_LITTLENUM) > + unsigned int llen = 0; > + for (LITTLENUM_TYPE lval = generic_bignum[imm_expr->X_add_number - 1]; > + lval != 0; llen++) > + lval >>= BITS_PER_CHAR; > + unsigned int repr_bytes > + = (imm_expr->X_add_number - 1) * CHARS_PER_LITTLENUM + llen; > + if (bytes < repr_bytes) > return _("value conflicts with instruction length"); > - char *f = frag_more (bytes); > - for (num = 0; num < imm_expr->X_add_number; ++num) > - number_to_chars_littleendian (f + num * CHARS_PER_LITTLENUM, > - generic_bignum[num], CHARS_PER_LITTLENUM); > + for (num = 0; num < imm_expr->X_add_number - 1; ++num) > + number_to_chars_littleendian ( > + ip->insn_long_opcode + num * CHARS_PER_LITTLENUM, > + generic_bignum[num], > + CHARS_PER_LITTLENUM); > + if (llen != 0) > + number_to_chars_littleendian ( > + ip->insn_long_opcode + num * CHARS_PER_LITTLENUM, > + generic_bignum[num], > + llen); > + memset(ip->insn_long_opcode + repr_bytes, 0, bytes - repr_bytes); > return NULL; > } > > @@ -4590,7 +4612,7 @@ s_riscv_insn (int x ATTRIBUTE_UNUSED) > else > as_bad ("%s `%s'", error.msg, error.statement); > } > - else if (imm_expr.X_op != O_big) > + else > { > gas_assert (insn.insn_mo->pinfo != INSN_MACRO); > append_insn (&insn, &imm_expr, imm_reloc); > diff --git a/gas/testsuite/gas/riscv/insn-dwarf.d b/gas/testsuite/gas/riscv/insn-dwarf.d > index 89dc8d58ff09..b8bd42dff18c 100644 > --- a/gas/testsuite/gas/riscv/insn-dwarf.d > +++ b/gas/testsuite/gas/riscv/insn-dwarf.d > @@ -74,5 +74,13 @@ insn.s +69 +0xf6.* > insn.s +70 +0xfe.* > insn.s +71 +0x108.* > insn.s +72 +0x114.* > -insn.s +- +0x12a > +insn.s +74 +0x12a.* > +insn.s +75 +0x134.* > +insn.s +76 +0x13e.* > +insn.s +77 +0x154.* > +insn.s +78 +0x16a.* > +insn.s +79 +0x180.* > +insn.s +80 +0x196.* > +insn.s +81 +0x1ac.* > +insn.s +- +0x1c2 > #pass > diff --git a/gas/testsuite/gas/riscv/insn-na.d b/gas/testsuite/gas/riscv/insn-na.d > index 66dce71ebc21..6928ba9ba0f2 100644 > --- a/gas/testsuite/gas/riscv/insn-na.d > +++ b/gas/testsuite/gas/riscv/insn-na.d > @@ -73,3 +73,11 @@ Disassembly of section .text: > [^:]+:[ ]+007f 0000 0000 0000 0000[ ]+[._a-z].* > [^:]+:[ ]+0000107f 00000000 00000000[ ]+[._a-z].* > [^:]+:[ ]+607f 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000[ ]+[._a-z].* > +[^:]+:[ ]+007f 0000 0000 0000 8000[ ]+\.byte[ ]+0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 > +[^:]+:[ ]+007f 0000 0000 0000 8000[ ]+\.byte[ ]+0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 > +[^:]+:[ ]+607f 89ab 4567 0123 3210 7654 ba98 fedc 0000 0000 0000[ ]+\.byte[ ]+0x7f, 0x60, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01, 0x10, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 I have to admit that I still don't see what good the ".byte ..." part of the expectations does for the purpose of the test. In the cover letter you say "They are not 4-byte aligned (10 and 22-bytes) and unlikely to change any time soon." But changing that is exactly my plan (unless objected to by the arch maintainers): Showing insn components as bytes is imo reasonable for RISC-V at most when things aren't even 2-byte aligned. IOW I'd see these to be "disassembled" to ".2byte ...", matching the "raw opcode" output left to .byte. In fact when raw opcodes are output I question the need for any .byte - it's fully redundant. Bottom line: As before I'd prefer if these parts were dropped (to limit the churn on the files when changing the .byte granularity), but I'm not going to insist. Apart from this the change looks good to me. Jan