Wolfgang Thallergcc16 merge934c3885 months agoHistory
5519 lines · 227.5 KB · C
RawDownload
/* riscv-opc.h.  RISC-V instruction opcode and CSR macros.   Copyright (C) 2011-2026 Free Software Foundation, Inc.   Contributed by Andrew Waterman    This file is part of GDB, GAS, and the GNU binutils.    GDB, GAS, and the GNU binutils are free software; you can redistribute   them and/or modify them under the terms of the GNU General Public   License as published by the Free Software Foundation; either version   3, or (at your option) any later version.    GDB, GAS, and the GNU binutils are distributed in the hope that they   will be useful, but WITHOUT ANY WARRANTY; without even the implied   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See   the GNU General Public License for more details.    You should have received a copy of the GNU General Public License   along with this program; see the file COPYING3. If not,   see <http://www.gnu.org/licenses/>.  */ #ifndef RISCV_ENCODING_H#define RISCV_ENCODING_H/* Instruction opcode macros.  */#define MATCH_SLLI_RV32 0x1013#define MASK_SLLI_RV32  0xfe00707f#define MATCH_SRLI_RV32 0x5013#define MASK_SRLI_RV32  0xfe00707f#define MATCH_SRAI_RV32 0x40005013#define MASK_SRAI_RV32  0xfe00707f#define MATCH_FRFLAGS 0x102073#define MASK_FRFLAGS  0xfffff07f#define MATCH_FSFLAGS 0x101073#define MASK_FSFLAGS  0xfff0707f#define MATCH_FSFLAGSI 0x105073#define MASK_FSFLAGSI  0xfff0707f#define MATCH_FRRM 0x202073#define MASK_FRRM  0xfffff07f#define MATCH_FSRM 0x201073#define MASK_FSRM  0xfff0707f#define MATCH_FSRMI 0x205073#define MASK_FSRMI  0xfff0707f#define MATCH_FSCSR 0x301073#define MASK_FSCSR  0xfff0707f#define MATCH_FRCSR 0x302073#define MASK_FRCSR  0xfffff07f#define MATCH_RDCYCLE 0xc0002073#define MASK_RDCYCLE  0xfffff07f#define MATCH_RDTIME 0xc0102073#define MASK_RDTIME  0xfffff07f#define MATCH_RDINSTRET 0xc0202073#define MASK_RDINSTRET  0xfffff07f#define MATCH_RDCYCLEH 0xc8002073#define MASK_RDCYCLEH  0xfffff07f#define MATCH_RDTIMEH 0xc8102073#define MASK_RDTIMEH  0xfffff07f#define MATCH_RDINSTRETH 0xc8202073#define MASK_RDINSTRETH  0xfffff07f#define MATCH_SCALL 0x73#define MASK_SCALL  0xffffffff#define MATCH_SBREAK 0x100073#define MASK_SBREAK  0xffffffff#define MATCH_BEQ 0x63#define MASK_BEQ  0x707f#define MATCH_BNE 0x1063#define MASK_BNE  0x707f#define MATCH_BLT 0x4063#define MASK_BLT  0x707f#define MATCH_BGE 0x5063#define MASK_BGE  0x707f#define MATCH_BLTU 0x6063#define MASK_BLTU  0x707f#define MATCH_BGEU 0x7063#define MASK_BGEU  0x707f#define MATCH_JALR 0x67#define MASK_JALR  0x707f#define MATCH_JAL 0x6f#define MASK_JAL  0x7f#define MATCH_LUI 0x37#define MASK_LUI  0x7f#define MATCH_AUIPC 0x17#define MASK_AUIPC  0x7f#define MATCH_ADDI 0x13#define MASK_ADDI  0x707f#define MATCH_SLLI 0x1013#define MASK_SLLI  0xfc00707f#define MATCH_SLTI 0x2013#define MASK_SLTI  0x707f#define MATCH_SLTIU 0x3013#define MASK_SLTIU  0x707f#define MATCH_XORI 0x4013#define MASK_XORI  0x707f#define MATCH_SRLI 0x5013#define MASK_SRLI  0xfc00707f#define MATCH_SRAI 0x40005013#define MASK_SRAI  0xfc00707f#define MATCH_ORI 0x6013#define MASK_ORI  0x707f#define MATCH_ANDI 0x7013#define MASK_ANDI  0x707f#define MATCH_ADD 0x33#define MASK_ADD  0xfe00707f#define MATCH_SUB 0x40000033#define MASK_SUB  0xfe00707f#define MATCH_SLL 0x1033#define MASK_SLL  0xfe00707f#define MATCH_SLT 0x2033#define MASK_SLT  0xfe00707f#define MATCH_SLTU 0x3033#define MASK_SLTU  0xfe00707f#define MATCH_XOR 0x4033#define MASK_XOR  0xfe00707f#define MATCH_SRL 0x5033#define MASK_SRL  0xfe00707f#define MATCH_SRA 0x40005033#define MASK_SRA  0xfe00707f#define MATCH_OR 0x6033#define MASK_OR  0xfe00707f#define MATCH_AND 0x7033#define MASK_AND  0xfe00707f#define MATCH_ADDIW 0x1b#define MASK_ADDIW  0x707f#define MATCH_SLLIW 0x101b#define MASK_SLLIW  0xfe00707f#define MATCH_SRLIW 0x501b#define MASK_SRLIW  0xfe00707f#define MATCH_SRAIW 0x4000501b#define MASK_SRAIW  0xfe00707f#define MATCH_ADDW 0x3b#define MASK_ADDW  0xfe00707f#define MATCH_SUBW 0x4000003b#define MASK_SUBW  0xfe00707f#define MATCH_SLLW 0x103b#define MASK_SLLW  0xfe00707f#define MATCH_SRLW 0x503b#define MASK_SRLW  0xfe00707f#define MATCH_SRAW 0x4000503b#define MASK_SRAW  0xfe00707f#define MATCH_LB 0x3#define MASK_LB  0x707f#define MATCH_LH 0x1003#define MASK_LH  0x707f#define MATCH_LW 0x2003#define MASK_LW  0x707f#define MATCH_LD 0x3003#define MASK_LD  0x707f#define MATCH_LBU 0x4003#define MASK_LBU  0x707f#define MATCH_LHU 0x5003#define MASK_LHU  0x707f#define MATCH_LWU 0x6003#define MASK_LWU  0x707f#define MATCH_SB 0x23#define MASK_SB  0x707f#define MATCH_SH 0x1023#define MASK_SH  0x707f#define MATCH_SW 0x2023#define MASK_SW  0x707f#define MATCH_SD 0x3023#define MASK_SD  0x707f#define MATCH_PAUSE 0x0100000f#define MASK_PAUSE  0xffffffff#define MATCH_FENCE 0xf#define MASK_FENCE  0x707f#define MATCH_FENCE_I 0x100f#define MASK_FENCE_I  0x707f#define MATCH_FENCE_TSO 0x8330000f#define MASK_FENCE_TSO  0xfff0707f#define MATCH_MUL 0x2000033#define MASK_MUL  0xfe00707f#define MATCH_MULH 0x2001033#define MASK_MULH  0xfe00707f#define MATCH_MULHSU 0x2002033#define MASK_MULHSU  0xfe00707f#define MATCH_MULHU 0x2003033#define MASK_MULHU  0xfe00707f#define MATCH_DIV 0x2004033#define MASK_DIV  0xfe00707f#define MATCH_DIVU 0x2005033#define MASK_DIVU  0xfe00707f#define MATCH_REM 0x2006033#define MASK_REM  0xfe00707f#define MATCH_REMU 0x2007033#define MASK_REMU  0xfe00707f#define MATCH_MULW 0x200003b#define MASK_MULW  0xfe00707f#define MATCH_DIVW 0x200403b#define MASK_DIVW  0xfe00707f#define MATCH_DIVUW 0x200503b#define MASK_DIVUW  0xfe00707f#define MATCH_REMW 0x200603b#define MASK_REMW  0xfe00707f#define MATCH_REMUW 0x200703b#define MASK_REMUW  0xfe00707f#define MATCH_AMOADD_W 0x202f#define MASK_AMOADD_W  0xf800707f#define MATCH_AMOXOR_W 0x2000202f#define MASK_AMOXOR_W  0xf800707f#define MATCH_AMOOR_W 0x4000202f#define MASK_AMOOR_W  0xf800707f#define MATCH_AMOAND_W 0x6000202f#define MASK_AMOAND_W  0xf800707f#define MATCH_AMOMIN_W 0x8000202f#define MASK_AMOMIN_W  0xf800707f#define MATCH_AMOMAX_W 0xa000202f#define MASK_AMOMAX_W  0xf800707f#define MATCH_AMOMINU_W 0xc000202f#define MASK_AMOMINU_W  0xf800707f#define MATCH_AMOMAXU_W 0xe000202f#define MASK_AMOMAXU_W  0xf800707f#define MATCH_AMOSWAP_W 0x800202f#define MASK_AMOSWAP_W  0xf800707f#define MATCH_LR_W 0x1000202f#define MASK_LR_W  0xf9f0707f#define MATCH_SC_W 0x1800202f#define MASK_SC_W  0xf800707f#define MATCH_AMOADD_D 0x302f#define MASK_AMOADD_D  0xf800707f#define MATCH_AMOXOR_D 0x2000302f#define MASK_AMOXOR_D  0xf800707f#define MATCH_AMOOR_D 0x4000302f#define MASK_AMOOR_D  0xf800707f#define MATCH_AMOAND_D 0x6000302f#define MASK_AMOAND_D  0xf800707f#define MATCH_AMOMIN_D 0x8000302f#define MASK_AMOMIN_D  0xf800707f#define MATCH_AMOMAX_D 0xa000302f#define MASK_AMOMAX_D  0xf800707f#define MATCH_AMOMINU_D 0xc000302f#define MASK_AMOMINU_D  0xf800707f#define MATCH_AMOMAXU_D 0xe000302f#define MASK_AMOMAXU_D  0xf800707f#define MATCH_AMOSWAP_D 0x800302f#define MASK_AMOSWAP_D  0xf800707f#define MATCH_LR_D 0x1000302f#define MASK_LR_D  0xf9f0707f#define MATCH_SC_D 0x1800302f#define MASK_SC_D  0xf800707f#define MATCH_AMOADD_B 0x02f#define MASK_AMOADD_B  0xf800707f#define MATCH_AMOXOR_B 0x2000002f#define MASK_AMOXOR_B  0xf800707f#define MATCH_AMOOR_B 0x4000002f#define MASK_AMOOR_B  0xf800707f#define MATCH_AMOAND_B 0x6000002f#define MASK_AMOAND_B  0xf800707f#define MATCH_AMOMIN_B 0x8000002f#define MASK_AMOMIN_B  0xf800707f#define MATCH_AMOMAX_B 0xa000002f#define MASK_AMOMAX_B  0xf800707f#define MATCH_AMOMINU_B 0xc000002f#define MASK_AMOMINU_B  0xf800707f#define MATCH_AMOMAXU_B 0xe000002f#define MASK_AMOMAXU_B  0xf800707f#define MATCH_AMOSWAP_B 0x800002f#define MASK_AMOSWAP_B  0xf800707f#define MATCH_AMOCAS_B 0x2800002f#define MASK_AMOCAS_B 0xf800707f#define MATCH_AMOADD_H 0x102f#define MASK_AMOADD_H  0xf800707f#define MATCH_AMOXOR_H 0x2000102f#define MASK_AMOXOR_H  0xf800707f#define MATCH_AMOOR_H 0x4000102f#define MASK_AMOOR_H  0xf800707f#define MATCH_AMOAND_H 0x6000102f#define MASK_AMOAND_H  0xf800707f#define MATCH_AMOMIN_H 0x8000102f#define MASK_AMOMIN_H  0xf800707f#define MATCH_AMOMAX_H 0xa000102f#define MASK_AMOMAX_H  0xf800707f#define MATCH_AMOMINU_H 0xc000102f#define MASK_AMOMINU_H  0xf800707f#define MATCH_AMOMAXU_H 0xe000102f#define MASK_AMOMAXU_H  0xf800707f#define MATCH_AMOSWAP_H 0x800102f#define MASK_AMOSWAP_H  0xf800707f#define MATCH_AMOCAS_H 0x2800102f#define MASK_AMOCAS_H 0xf800707f#define MATCH_ECALL 0x73#define MASK_ECALL  0xffffffff#define MATCH_EBREAK 0x100073#define MASK_EBREAK  0xffffffff#define MATCH_URET 0x200073#define MASK_URET  0xffffffff#define MATCH_SRET 0x10200073#define MASK_SRET  0xffffffff#define MATCH_HRET 0x20200073#define MASK_HRET  0xffffffff#define MATCH_MRET 0x30200073#define MASK_MRET  0xffffffff#define MATCH_DRET 0x7b200073#define MASK_DRET  0xffffffff#define MATCH_SFENCE_VMA 0x12000073#define MASK_SFENCE_VMA  0xfe007fff#define MATCH_WFI 0x10500073#define MASK_WFI  0xffffffff#define MATCH_CSRRW 0x1073#define MASK_CSRRW  0x707f#define MATCH_CSRRS 0x2073#define MASK_CSRRS  0x707f#define MATCH_CSRRC 0x3073#define MASK_CSRRC  0x707f#define MATCH_CSRRWI 0x5073#define MASK_CSRRWI  0x707f#define MATCH_CSRRSI 0x6073#define MASK_CSRRSI  0x707f#define MATCH_CSRRCI 0x7073#define MASK_CSRRCI  0x707f#define MATCH_FADD_S 0x53#define MASK_FADD_S  0xfe00007f#define MATCH_FSUB_S 0x8000053#define MASK_FSUB_S  0xfe00007f#define MATCH_FMUL_S 0x10000053#define MASK_FMUL_S  0xfe00007f#define MATCH_FDIV_S 0x18000053#define MASK_FDIV_S  0xfe00007f#define MATCH_FSGNJ_S 0x20000053#define MASK_FSGNJ_S  0xfe00707f#define MATCH_FSGNJN_S 0x20001053#define MASK_FSGNJN_S  0xfe00707f#define MATCH_FSGNJX_S 0x20002053#define MASK_FSGNJX_S  0xfe00707f#define MATCH_FMIN_S 0x28000053#define MASK_FMIN_S  0xfe00707f#define MATCH_FMAX_S 0x28001053#define MASK_FMAX_S  0xfe00707f#define MATCH_FSQRT_S 0x58000053#define MASK_FSQRT_S  0xfff0007f#define MATCH_FADD_D 0x2000053#define MASK_FADD_D  0xfe00007f#define MATCH_FSUB_D 0xa000053#define MASK_FSUB_D  0xfe00007f#define MATCH_FMUL_D 0x12000053#define MASK_FMUL_D  0xfe00007f#define MATCH_FDIV_D 0x1a000053#define MASK_FDIV_D  0xfe00007f#define MATCH_FSGNJ_D 0x22000053#define MASK_FSGNJ_D  0xfe00707f#define MATCH_FSGNJN_D 0x22001053#define MASK_FSGNJN_D  0xfe00707f#define MATCH_FSGNJX_D 0x22002053#define MASK_FSGNJX_D  0xfe00707f#define MATCH_FMIN_D 0x2a000053#define MASK_FMIN_D  0xfe00707f#define MATCH_FMAX_D 0x2a001053#define MASK_FMAX_D  0xfe00707f#define MATCH_FCVT_S_D 0x40100053#define MASK_FCVT_S_D  0xfff0007f#define MATCH_FCVT_D_S 0x42000053#define MASK_FCVT_D_S  0xfff0007f#define MATCH_FSQRT_D 0x5a000053#define MASK_FSQRT_D  0xfff0007f#define MATCH_FADD_Q 0x6000053#define MASK_FADD_Q  0xfe00007f#define MATCH_FSUB_Q 0xe000053#define MASK_FSUB_Q  0xfe00007f#define MATCH_FMUL_Q 0x16000053#define MASK_FMUL_Q  0xfe00007f#define MATCH_FDIV_Q 0x1e000053#define MASK_FDIV_Q  0xfe00007f#define MATCH_FSGNJ_Q 0x26000053#define MASK_FSGNJ_Q  0xfe00707f#define MATCH_FSGNJN_Q 0x26001053#define MASK_FSGNJN_Q  0xfe00707f#define MATCH_FSGNJX_Q 0x26002053#define MASK_FSGNJX_Q  0xfe00707f#define MATCH_FMIN_Q 0x2e000053#define MASK_FMIN_Q  0xfe00707f#define MATCH_FMAX_Q 0x2e001053#define MASK_FMAX_Q  0xfe00707f#define MATCH_FCVT_S_Q 0x40300053#define MASK_FCVT_S_Q  0xfff0007f#define MATCH_FCVT_Q_S 0x46000053#define MASK_FCVT_Q_S  0xfff0007f#define MATCH_FCVT_D_Q 0x42300053#define MASK_FCVT_D_Q  0xfff0007f#define MATCH_FCVT_Q_D 0x46100053#define MASK_FCVT_Q_D  0xfff0007f#define MATCH_FSQRT_Q 0x5e000053#define MASK_FSQRT_Q  0xfff0007f#define MATCH_FLE_S 0xa0000053#define MASK_FLE_S  0xfe00707f#define MATCH_FLT_S 0xa0001053#define MASK_FLT_S  0xfe00707f#define MATCH_FEQ_S 0xa0002053#define MASK_FEQ_S  0xfe00707f#define MATCH_FLE_D 0xa2000053#define MASK_FLE_D  0xfe00707f#define MATCH_FLT_D 0xa2001053#define MASK_FLT_D  0xfe00707f#define MATCH_FEQ_D 0xa2002053#define MASK_FEQ_D  0xfe00707f#define MATCH_FLE_Q 0xa6000053#define MASK_FLE_Q  0xfe00707f#define MATCH_FLT_Q 0xa6001053#define MASK_FLT_Q  0xfe00707f#define MATCH_FEQ_Q 0xa6002053#define MASK_FEQ_Q  0xfe00707f#define MATCH_FCVT_W_S 0xc0000053#define MASK_FCVT_W_S  0xfff0007f#define MATCH_FCVT_WU_S 0xc0100053#define MASK_FCVT_WU_S  0xfff0007f#define MATCH_FCVT_L_S 0xc0200053#define MASK_FCVT_L_S  0xfff0007f#define MATCH_FCVT_LU_S 0xc0300053#define MASK_FCVT_LU_S  0xfff0007f#define MATCH_FMV_X_S 0xe0000053#define MASK_FMV_X_S  0xfff0707f#define MATCH_FCLASS_S 0xe0001053#define MASK_FCLASS_S  0xfff0707f#define MATCH_FCVT_W_D 0xc2000053#define MASK_FCVT_W_D  0xfff0007f#define MATCH_FCVT_WU_D 0xc2100053#define MASK_FCVT_WU_D  0xfff0007f#define MATCH_FCVT_L_D 0xc2200053#define MASK_FCVT_L_D  0xfff0007f#define MATCH_FCVT_LU_D 0xc2300053#define MASK_FCVT_LU_D  0xfff0007f#define MATCH_FMV_X_D 0xe2000053#define MASK_FMV_X_D  0xfff0707f#define MATCH_FCLASS_D 0xe2001053#define MASK_FCLASS_D  0xfff0707f#define MATCH_FCVT_W_Q 0xc6000053#define MASK_FCVT_W_Q  0xfff0007f#define MATCH_FCVT_WU_Q 0xc6100053#define MASK_FCVT_WU_Q  0xfff0007f#define MATCH_FCVT_L_Q 0xc6200053#define MASK_FCVT_L_Q  0xfff0007f#define MATCH_FCVT_LU_Q 0xc6300053#define MASK_FCVT_LU_Q  0xfff0007f#define MATCH_FCLASS_Q 0xe6001053#define MASK_FCLASS_Q  0xfff0707f#define MATCH_FCVT_S_W 0xd0000053#define MASK_FCVT_S_W  0xfff0007f#define MATCH_FCVT_S_WU 0xd0100053#define MASK_FCVT_S_WU  0xfff0007f#define MATCH_FCVT_S_L 0xd0200053#define MASK_FCVT_S_L  0xfff0007f#define MATCH_FCVT_S_LU 0xd0300053#define MASK_FCVT_S_LU  0xfff0007f#define MATCH_FMV_S_X 0xf0000053#define MASK_FMV_S_X  0xfff0707f#define MATCH_FCVT_D_W 0xd2000053#define MASK_FCVT_D_W  0xfff0007f#define MATCH_FCVT_D_WU 0xd2100053#define MASK_FCVT_D_WU  0xfff0007f#define MATCH_FCVT_D_L 0xd2200053#define MASK_FCVT_D_L  0xfff0007f#define MATCH_FCVT_D_LU 0xd2300053#define MASK_FCVT_D_LU  0xfff0007f#define MATCH_FMV_D_X 0xf2000053#define MASK_FMV_D_X  0xfff0707f#define MATCH_FCVT_Q_W 0xd6000053#define MASK_FCVT_Q_W  0xfff0007f#define MATCH_FCVT_Q_WU 0xd6100053#define MASK_FCVT_Q_WU  0xfff0007f#define MATCH_FCVT_Q_L 0xd6200053#define MASK_FCVT_Q_L  0xfff0007f#define MATCH_FCVT_Q_LU 0xd6300053#define MASK_FCVT_Q_LU  0xfff0007f#define MATCH_FLI_H 0xf4100053#define MASK_FLI_H 0xfff0707f#define MATCH_FMINM_H 0x2c002053#define MASK_FMINM_H 0xfe00707f#define MATCH_FMAXM_H 0x2c003053#define MASK_FMAXM_H 0xfe00707f#define MATCH_FROUND_H 0x44400053#define MASK_FROUND_H 0xfff0007f#define MATCH_FROUNDNX_H 0x44500053#define MASK_FROUNDNX_H 0xfff0007f#define MATCH_FLTQ_H 0xa4005053#define MASK_FLTQ_H 0xfe00707f#define MATCH_FLEQ_H 0xa4004053#define MASK_FLEQ_H 0xfe00707f#define MATCH_FLI_S 0xf0100053#define MASK_FLI_S 0xfff0707f#define MATCH_FMINM_S 0x28002053#define MASK_FMINM_S 0xfe00707f#define MATCH_FMAXM_S 0x28003053#define MASK_FMAXM_S 0xfe00707f#define MATCH_FROUND_S 0x40400053#define MASK_FROUND_S 0xfff0007f#define MATCH_FROUNDNX_S 0x40500053#define MASK_FROUNDNX_S 0xfff0007f#define MATCH_FLTQ_S 0xa0005053#define MASK_FLTQ_S 0xfe00707f#define MATCH_FLEQ_S 0xa0004053#define MASK_FLEQ_S 0xfe00707f#define MATCH_FLI_D 0xf2100053#define MASK_FLI_D 0xfff0707f#define MATCH_FMINM_D 0x2a002053#define MASK_FMINM_D 0xfe00707f#define MATCH_FMAXM_D 0x2a003053#define MASK_FMAXM_D 0xfe00707f#define MATCH_FROUND_D 0x42400053#define MASK_FROUND_D 0xfff0007f#define MATCH_FROUNDNX_D 0x42500053#define MASK_FROUNDNX_D 0xfff0007f#define MATCH_FLTQ_D 0xa2005053#define MASK_FLTQ_D 0xfe00707f#define MATCH_FLEQ_D 0xa2004053

Lines 1–500 of 5519.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t