From patchwork Sun Oct 22 03:53:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tsukasa OI X-Patchwork-Id: 156515 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce89:0:b0:403:3b70:6f57 with SMTP id p9csp586489vqx; Sat, 21 Oct 2023 20:53:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGErvwp6IxlyhqlD+NAjJ7hWxi9A0bdLfz/HDw47jD1gXhwBN0ATdpG2g5b7C9p6Jxz7flb X-Received: by 2002:a05:6870:f622:b0:1d5:eb1:c587 with SMTP id ek34-20020a056870f62200b001d50eb1c587mr6205505oab.19.1697946828582; Sat, 21 Oct 2023 20:53:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697946828; cv=pass; d=google.com; s=arc-20160816; b=LggyWpQxlO1UAl2vcoLpBzGyF1THovpbBjcBoWWFBS7w3qcSmT+xK2Pi5VfzRsUU3a /G3Y/td0vV+S7QC8z+y0ZtQ9hjmwpQRmBU6komzQ2tZ39E+HTes5lvBC18zKlACWOLEX xWN9GMVaWJ2DXe15vwk5R1Kc/qcnFn1wiHP7W9xmvV6T6080mSxRlHNQtDbaMa77qiI2 3hfeRZSU79/ud/fYpj0S7UdWD5XwssPnzs5TNd/6KtW0MoIKLP8ZAiU9dBNj+GuhPcUJ PjfR1wteuBbP76p1c7lafs9psV9QxaYtw14OBD6ESFRr1nJZCUq1IBY5+BsA4Og7Qqnw 6ZOQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=9KccKB9Qiz1UT8fVfM96Mu6jW4hYjm2MZ9PU016VkB0=; fh=lllctRxEXNnp/GZgTgmlYzny/eXMbSjNA/nbD0Q8v10=; b=XEW/fxpHtzLCE+/EMHzfjEjhNEx30bXOliw9dY766FYe645DxxrZ/A4j4YnIScioGa 2FmT+/LjIu/YJXTft2fqHS31z+oKW1zYaxLfqImOLvvu9W8VBdRKapXB5fSQBkLuHa/Z vuJDKPawa02lW1EwnwCGKyxIRu+v/vR1AyUXUQ5KIw2JXCcCXZWkUVY9F6TZbWfRwJtm 1PzhZE/0PuvH1c6azJnR5q9D1JJm5L4SPHAPxQy69jJs4OKT1ExnZzWDCpLRtr+lBlnj DNXDETNfSkFstSxpndny0kOEJsgXfT21aA7lo7qMxeb+RWD4nqd1uRmo+dw3JN59xDzi 6EHQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@irq.a4lg.com header.s=2017s01 header.b=gyfsAD9L; arc=pass (i=1); 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=irq.a4lg.com Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id oj13-20020a056214440d00b0065d07ee1d00si3942821qvb.54.2023.10.21.20.53.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Oct 2023 20:53:48 -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=@irq.a4lg.com header.s=2017s01 header.b=gyfsAD9L; arc=pass (i=1); 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=irq.a4lg.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 531AF38582A4 for ; Sun, 22 Oct 2023 03:53:48 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-sender-0.a4lg.com (mail-sender.a4lg.com [153.120.152.154]) by sourceware.org (Postfix) with ESMTPS id 6FBDD3858D37 for ; Sun, 22 Oct 2023 03:53:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6FBDD3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=irq.a4lg.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=irq.a4lg.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6FBDD3858D37 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=153.120.152.154 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697946823; cv=none; b=UH3pJT49bqIE8nAk8MISLLOmmmcb2wZxYJYTou6F10rXe2qC3Fd5qASU9AL4EJxgbDFj9BPemSwgPFMbogZtPd6fTW9UM4w5plwRTtSTw0YLgwhPMDj61xuTbdK/qXCwrTJRrbVobeeaBOZWYytSB8W2ZZ66AcP1ybH3DY6qTmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697946823; c=relaxed/simple; bh=qe0ipMrPCx6FhoMR1zyGaYK0eX6QMrIaTYOQbFj1EMw=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:Mime-Version; b=vT8ebd2vihG0oUucBz4N3gxMSwurHgKBx2CNXHHYOwO5qmxAUMC8XEh3crkimJrx+hxJHA7QroA8HsMojO/8gkplU8V8zUE7DT9TmDgbgAJRDt6DT0u6NeG52imuFQCtr/DqB3g4sQi44/YW1XtPUyNDDqMnIA2qahAEbMq+ETQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from [127.0.0.1] (localhost [127.0.0.1]) by mail-sender-0.a4lg.com (Postfix) with ESMTPSA id 5B835300089; Sun, 22 Oct 2023 03:53:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=irq.a4lg.com; s=2017s01; t=1697946818; bh=9KccKB9Qiz1UT8fVfM96Mu6jW4hYjm2MZ9PU016VkB0=; h=From:To:Cc:Subject:Date:Message-ID:Mime-Version: Content-Transfer-Encoding; b=gyfsAD9LDDA1sZv27dWEoUaHodrSCpMPmoHO7Amaxb/68HaqN7q4fTo+SoEGDeQXk Kl8VgsD+0+UH5PRxmrdpKGvJSM1Ty7SabjHQmtus9PVfTd7kFqaJ5wQuzKTqW7Yxmo HX6jZD8RDqV8p1DhOKcf80aCSTar1//QIEHn5YxI= From: Tsukasa OI To: Tsukasa OI Cc: binutils@sourceware.org Subject: [REVIEW ONLY] UNRATIFIED RISC-V: Add support for the 'Zalasr' extension Date: Sun, 22 Oct 2023 03:53:31 +0000 Message-ID: <3a5638cefcf208f9547f1e6a05198e7f5986c719.1697946772.git.research_trasio@irq.a4lg.com> Mime-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780426293836743221 X-GMAIL-MSGID: 1780426293836743221 From: Tsukasa OI [DO NOT MERGE] Until this extension is frozen/ratified and final version number is determined, this patch should not be merged upstream. This commit uses unratified version 0.1 as in the documentation file name (instead of possible 1.0 after ratification). The 'Zalasr' extension provides atomic load-acquire / store-release instructions. This commit adds instruction and extension support for this extension. This is based on the draft specification: bfd/ChangeLog: * elfxx-riscv.c (riscv_supported_std_z_ext): Add 'Zalasr' to the supported list. (riscv_multi_subset_supports, riscv_multi_subset_supports_ext): Add handling for new instruction class. gas/ChangeLog: * testsuite/gas/riscv/zalasr.s: New test. * testsuite/gas/riscv/zalasr.d: Likewise. * testsuite/gas/riscv/zalasr-64.s: New test. * testsuite/gas/riscv/zalasr-64.d: Likewise. include/ChangeLog: * opcode/riscv-opc.h (MATCH_LB_AQ, MASK_LB_AQ, MATCH_LD_AQ, MASK_LD_AQ, MATCH_LH_AQ, MASK_LH_AQ, MATCH_LW_AQ, MASK_LW_AQ, MATCH_SB_RL, MASK_SB_RL, MATCH_SD_RL, MASK_SD_RL, MATCH_SH_RL, MASK_SH_RL, MATCH_SW_RL, MASK_SW_RL): New. * opcode/riscv.h (enum riscv_insn_class): Add new instruction class INSN_CLASS_ZALASR. opcodes/ChangeLog: * riscv-opc.c (riscv_opcodes): Add instructions from the 'Zalasr' extension. --- bfd/elfxx-riscv.c | 5 +++++ gas/testsuite/gas/riscv/zalasr-64.d | 12 ++++++++++++ gas/testsuite/gas/riscv/zalasr-64.s | 5 +++++ gas/testsuite/gas/riscv/zalasr.d | 20 ++++++++++++++++++++ gas/testsuite/gas/riscv/zalasr.s | 13 +++++++++++++ include/opcode/riscv-opc.h | 26 ++++++++++++++++++++++++++ include/opcode/riscv.h | 1 + opcodes/riscv-opc.c | 18 ++++++++++++++++++ 8 files changed, 100 insertions(+) create mode 100644 gas/testsuite/gas/riscv/zalasr-64.d create mode 100644 gas/testsuite/gas/riscv/zalasr-64.s create mode 100644 gas/testsuite/gas/riscv/zalasr.d create mode 100644 gas/testsuite/gas/riscv/zalasr.s base-commit: d249c8a63aec45648b2165532f79b09763870795 diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index c070394a3667..7f918be0b5ca 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1259,6 +1259,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zihintntl", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zihintpause", ISA_SPEC_CLASS_DRAFT, 2, 0, 0 }, {"zmmul", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zalasr", ISA_SPEC_CLASS_DRAFT, 0, 1, 0 }, {"zawrs", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zfa", ISA_SPEC_CLASS_DRAFT, 0, 1, 0 }, {"zfh", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -2409,6 +2410,8 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "zmmul"); case INSN_CLASS_A: return riscv_subset_supports (rps, "a"); + case INSN_CLASS_ZALASR: + return riscv_subset_supports (rps, "zalasr"); case INSN_CLASS_ZAWRS: return riscv_subset_supports (rps, "zawrs"); case INSN_CLASS_F: @@ -2619,6 +2622,8 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return _ ("m' or `zmmul"); case INSN_CLASS_A: return "a"; + case INSN_CLASS_ZALASR: + return "zalasr"; case INSN_CLASS_ZAWRS: return "zawrs"; case INSN_CLASS_F: diff --git a/gas/testsuite/gas/riscv/zalasr-64.d b/gas/testsuite/gas/riscv/zalasr-64.d new file mode 100644 index 000000000000..1511cb838a95 --- /dev/null +++ b/gas/testsuite/gas/riscv/zalasr-64.d @@ -0,0 +1,12 @@ +#as: -march=rv64i_zalasr +#objdump: -dr + +.*:[ ]+file format .* + +Disassembly of section .text: + +0+000 : +[ ]+[0-9a-f]+:[ ]+3405b52f[ ]+ld\.aq[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3605b52f[ ]+ld\.aqrl[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ac5b02f[ ]+sd\.rl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ec5b02f[ ]+sd\.aqrl[ ]+a2,\(a1\) diff --git a/gas/testsuite/gas/riscv/zalasr-64.s b/gas/testsuite/gas/riscv/zalasr-64.s new file mode 100644 index 000000000000..445c7fdc10d8 --- /dev/null +++ b/gas/testsuite/gas/riscv/zalasr-64.s @@ -0,0 +1,5 @@ +target: + ld.aq a0, (a1) + ld.aqrl a0, (a1) + sd.rl a2, (a1) + sd.aqrl a2, (a1) diff --git a/gas/testsuite/gas/riscv/zalasr.d b/gas/testsuite/gas/riscv/zalasr.d new file mode 100644 index 000000000000..c0816a8e57dc --- /dev/null +++ b/gas/testsuite/gas/riscv/zalasr.d @@ -0,0 +1,20 @@ +#as: -march=rv32i_zalasr +#objdump: -dr + +.*:[ ]+file format .* + +Disassembly of section .text: + +0+000 : +[ ]+[0-9a-f]+:[ ]+3405852f[ ]+lb\.aq[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3605852f[ ]+lb\.aqrl[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3405952f[ ]+lh\.aq[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3605952f[ ]+lh\.aqrl[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3405a52f[ ]+lw\.aq[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3605a52f[ ]+lw\.aqrl[ ]+a0,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ac5802f[ ]+sb\.rl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ec5802f[ ]+sb\.aqrl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ac5902f[ ]+sh\.rl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ec5902f[ ]+sh\.aqrl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ac5a02f[ ]+sw\.rl[ ]+a2,\(a1\) +[ ]+[0-9a-f]+:[ ]+3ec5a02f[ ]+sw\.aqrl[ ]+a2,\(a1\) diff --git a/gas/testsuite/gas/riscv/zalasr.s b/gas/testsuite/gas/riscv/zalasr.s new file mode 100644 index 000000000000..e196ad0df1fd --- /dev/null +++ b/gas/testsuite/gas/riscv/zalasr.s @@ -0,0 +1,13 @@ +target: + lb.aq a0, (a1) + lb.aqrl a0, (a1) + lh.aq a0, (a1) + lh.aqrl a0, (a1) + lw.aq a0, (a1) + lw.aqrl a0, (a1) + sb.rl a2, (a1) + sb.aqrl a2, (a1) + sh.rl a2, (a1) + sh.aqrl a2, (a1) + sw.rl a2, (a1) + sw.aqrl a2, (a1) diff --git a/include/opcode/riscv-opc.h b/include/opcode/riscv-opc.h index 375483500e2a..02c51fc060ea 100644 --- a/include/opcode/riscv-opc.h +++ b/include/opcode/riscv-opc.h @@ -2315,6 +2315,23 @@ #define MASK_C_NTL_S1 0xffff #define MATCH_C_NTL_ALL 0x9016 #define MASK_C_NTL_ALL 0xffff +/* Zalasr instructions. */ +#define MATCH_LB_AQ 0x3400002f +#define MASK_LB_AQ 0xfdf0707f +#define MATCH_LD_AQ 0x3400302f +#define MASK_LD_AQ 0xfdf0707f +#define MATCH_LH_AQ 0x3400102f +#define MASK_LH_AQ 0xfdf0707f +#define MATCH_LW_AQ 0x3400202f +#define MASK_LW_AQ 0xfdf0707f +#define MATCH_SB_RL 0x3a00002f +#define MASK_SB_RL 0xfa007fff +#define MATCH_SD_RL 0x3a00302f +#define MASK_SD_RL 0xfa007fff +#define MATCH_SH_RL 0x3a00102f +#define MASK_SH_RL 0xfa007fff +#define MATCH_SW_RL 0x3a00202f +#define MASK_SW_RL 0xfa007fff /* Zawrs instructions. */ #define MATCH_WRS_NTO 0x00d00073 #define MASK_WRS_NTO 0xffffffff @@ -3370,6 +3387,15 @@ DECLARE_INSN(c_ntl_p1, MATCH_C_NTL_P1, MASK_C_NTL_P1) DECLARE_INSN(c_ntl_pall, MATCH_C_NTL_PALL, MASK_C_NTL_PALL) DECLARE_INSN(c_ntl_s1, MATCH_C_NTL_S1, MASK_C_NTL_S1) DECLARE_INSN(c_ntl_all, MATCH_C_NTL_ALL, MASK_C_NTL_ALL) +/* Zalasr instructions. */ +DECLARE_INSN(lb_aq, MATCH_LB_AQ, MASK_LB_AQ) +DECLARE_INSN(ld_aq, MATCH_LD_AQ, MASK_LD_AQ) +DECLARE_INSN(lh_aq, MATCH_LH_AQ, MASK_LH_AQ) +DECLARE_INSN(lw_aq, MATCH_LW_AQ, MASK_LW_AQ) +DECLARE_INSN(sb_aq, MATCH_SB_AQ, MASK_SB_AQ) +DECLARE_INSN(sd_aq, MATCH_SD_AQ, MASK_SD_AQ) +DECLARE_INSN(sh_aq, MATCH_SH_AQ, MASK_SH_AQ) +DECLARE_INSN(sw_aq, MATCH_SW_AQ, MASK_SW_AQ) /* Zawrs instructions. */ DECLARE_INSN(wrs_nto, MATCH_WRS_NTO, MASK_WRS_NTO) DECLARE_INSN(wrs_sto, MATCH_WRS_STO, MASK_WRS_STO) diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h index 93dd5169ebce..7daa6d86d78f 100644 --- a/include/opcode/riscv.h +++ b/include/opcode/riscv.h @@ -396,6 +396,7 @@ enum riscv_insn_class INSN_CLASS_ZIHINTNTL_AND_C, INSN_CLASS_ZIHINTPAUSE, INSN_CLASS_ZMMUL, + INSN_CLASS_ZALASR, INSN_CLASS_ZAWRS, INSN_CLASS_F_INX, INSN_CLASS_D_INX, diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c index 8e0ae85eb064..d1af69c6bc63 100644 --- a/opcodes/riscv-opc.c +++ b/opcodes/riscv-opc.c @@ -982,6 +982,24 @@ const struct riscv_opcode riscv_opcodes[] = {"czero.eqz", 0, INSN_CLASS_ZICOND, "d,s,t", MATCH_CZERO_EQZ, MASK_CZERO_EQZ, match_opcode, 0 }, {"czero.nez", 0, INSN_CLASS_ZICOND, "d,s,t", MATCH_CZERO_NEZ, MASK_CZERO_NEZ, match_opcode, 0 }, +/* Zalasr instructions. */ +{"lb.aq", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LB_AQ, MASK_LB_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_1_BYTE }, +{"lb.aqrl", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LB_AQ|MASK_RL, MASK_LB_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_1_BYTE }, +{"lh.aq", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LH_AQ, MASK_LH_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_2_BYTE }, +{"lh.aqrl", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LH_AQ|MASK_RL, MASK_LH_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_2_BYTE }, +{"lw.aq", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LW_AQ, MASK_LW_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_4_BYTE }, +{"lw.aqrl", 0, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LW_AQ|MASK_RL, MASK_LW_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_4_BYTE }, +{"ld.aq", 64, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LD_AQ, MASK_LD_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_8_BYTE }, +{"ld.aqrl", 64, INSN_CLASS_ZALASR, "d,0(s)", MATCH_LD_AQ|MASK_RL, MASK_LD_AQ|MASK_RL, match_opcode, INSN_DREF|INSN_8_BYTE }, +{"sb.rl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SB_RL, MASK_SB_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_1_BYTE }, +{"sb.aqrl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SB_RL|MASK_AQ, MASK_SB_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_1_BYTE }, +{"sh.rl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SH_RL, MASK_SH_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_2_BYTE }, +{"sh.aqrl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SH_RL|MASK_AQ, MASK_SH_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_2_BYTE }, +{"sw.rl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SW_RL, MASK_SW_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_4_BYTE }, +{"sw.aqrl", 0, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SW_RL|MASK_AQ, MASK_SW_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_4_BYTE }, +{"sd.rl", 64, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SD_RL, MASK_SD_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_8_BYTE }, +{"sd.aqrl", 64, INSN_CLASS_ZALASR, "t,0(s)", MATCH_SD_RL|MASK_AQ, MASK_SD_RL|MASK_AQ, match_opcode, INSN_DREF|INSN_8_BYTE }, + /* Zawrs instructions. */ {"wrs.nto", 0, INSN_CLASS_ZAWRS, "", MATCH_WRS_NTO, MASK_WRS_NTO, match_opcode, 0 }, {"wrs.sto", 0, INSN_CLASS_ZAWRS, "", MATCH_WRS_STO, MASK_WRS_STO, match_opcode, 0 },