From 97c0aa44d34834515ddb8c43a9e4583dc95d9808 Mon Sep 17 00:00:00 2001 From: Stephen Twigg Date: Thu, 3 Apr 2014 16:52:48 -0700 Subject: [PATCH] Sync encoding in opcodes --- hwacha/opcodes_hwacha_ut.h | 305 +++++++++++++++++++------------------ riscv/encoding.h | 18 ++- 2 files changed, 168 insertions(+), 155 deletions(-) diff --git a/hwacha/opcodes_hwacha_ut.h b/hwacha/opcodes_hwacha_ut.h index f0f01dd..6a8c326 100644 --- a/hwacha/opcodes_hwacha_ut.h +++ b/hwacha/opcodes_hwacha_ut.h @@ -1,173 +1,174 @@ -DECLARE_INSN(ut_movn, 0x2007077, 0xfe00707f) -DECLARE_INSN(ut_movz, 0x7077, 0xfe00707f) -DECLARE_INSN(ut_fmovn, 0x6007077, 0xfe00707f) -DECLARE_INSN(ut_fmovz, 0x4007077, 0xfe00707f) -DECLARE_INSN(ut_stop, 0x5077, 0xffffffff) -DECLARE_INSN(ut_utidx, 0x6077, 0xfffff07f) -DECLARE_INSN(ut_fmv_s_x, 0xf0000053, 0xfff0707f) -DECLARE_INSN(ut_amoxor_w, 0x2000202f, 0xf800707f) -DECLARE_INSN(ut_remuw, 0x200703b, 0xfe00707f) -DECLARE_INSN(ut_fmin_d, 0xc2000053, 0xfe00707f) -DECLARE_INSN(ut_amomax_d, 0xa000302f, 0xf800707f) -DECLARE_INSN(ut_fmin_s, 0xc0000053, 0xfe00707f) -DECLARE_INSN(ut_slliw, 0x101b, 0xfe00707f) -DECLARE_INSN(ut_lb, 0x3, 0x707f) -DECLARE_INSN(ut_fcvt_s_wu, 0x78000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_d_l, 0x62000053, 0xfff0007f) -DECLARE_INSN(ut_lh, 0x1003, 0x707f) -DECLARE_INSN(ut_fcvt_d_w, 0x72000053, 0xfff0007f) -DECLARE_INSN(ut_lw, 0x2003, 0x707f) DECLARE_INSN(ut_add, 0x33, 0xfe00707f) -DECLARE_INSN(ut_fcvt_d_s, 0x82000053, 0xfff0007f) -DECLARE_INSN(ut_fmax_d, 0xca000053, 0xfe00707f) -DECLARE_INSN(ut_fcvt_s_d, 0x88000053, 0xfff0007f) -DECLARE_INSN(ut_fadd_d, 0x2000053, 0xfe00007f) -DECLARE_INSN(ut_sltiu, 0x3013, 0x707f) -DECLARE_INSN(ut_fcvt_s_w, 0x70000053, 0xfff0007f) -DECLARE_INSN(ut_mul, 0x2000033, 0xfe00707f) -DECLARE_INSN(ut_amominu_d, 0xc000302f, 0xf800707f) -DECLARE_INSN(ut_srli, 0x5013, 0xfc00707f) -DECLARE_INSN(ut_amominu_w, 0xc000202f, 0xf800707f) -DECLARE_INSN(ut_divuw, 0x200503b, 0xfe00707f) -DECLARE_INSN(ut_mulw, 0x200003b, 0xfe00707f) -DECLARE_INSN(ut_srlw, 0x503b, 0xfe00707f) -DECLARE_INSN(ut_div, 0x2004033, 0xfe00707f) -DECLARE_INSN(ut_fdiv_d, 0x1a000053, 0xfe00007f) -DECLARE_INSN(ut_fence, 0xf, 0x707f) -DECLARE_INSN(ut_fnmsub_s, 0x4b, 0x600007f) -DECLARE_INSN(ut_fcvt_l_s, 0x40000053, 0xfff0007f) -DECLARE_INSN(ut_fle_s, 0xb8000053, 0xfe00707f) -DECLARE_INSN(ut_fdiv_s, 0x18000053, 0xfe00007f) -DECLARE_INSN(ut_fle_d, 0xba000053, 0xfe00707f) -DECLARE_INSN(ut_fnmsub_d, 0x200004b, 0x600007f) -DECLARE_INSN(ut_addw, 0x3b, 0xfe00707f) -DECLARE_INSN(ut_sll, 0x1033, 0xfe00707f) -DECLARE_INSN(ut_xor, 0x4033, 0xfe00707f) -DECLARE_INSN(ut_sub, 0x40000033, 0xfe00707f) -DECLARE_INSN(ut_rem, 0x2006033, 0xfe00707f) -DECLARE_INSN(ut_srliw, 0x501b, 0xfe00707f) -DECLARE_INSN(ut_lui, 0x37, 0x7f) -DECLARE_INSN(ut_fcvt_s_lu, 0x68000053, 0xfff0007f) DECLARE_INSN(ut_addi, 0x13, 0x707f) -DECLARE_INSN(ut_mulh, 0x2001033, 0xfe00707f) -DECLARE_INSN(ut_fmul_s, 0x10000053, 0xfe00007f) -DECLARE_INSN(ut_srai, 0x40005013, 0xfc00707f) -DECLARE_INSN(ut_amoand_d, 0x6000302f, 0xf800707f) -DECLARE_INSN(ut_flt_d, 0xb2000053, 0xfe00707f) -DECLARE_INSN(ut_sraw, 0x4000503b, 0xfe00707f) -DECLARE_INSN(ut_fmul_d, 0x12000053, 0xfe00007f) -DECLARE_INSN(ut_ld, 0x3003, 0x707f) -DECLARE_INSN(ut_ori, 0x6013, 0x707f) -DECLARE_INSN(ut_flt_s, 0xb0000053, 0xfe00707f) DECLARE_INSN(ut_addiw, 0x1b, 0x707f) +DECLARE_INSN(ut_addw, 0x3b, 0xfe00707f) +DECLARE_INSN(ut_amoadd_d, 0x302f, 0xf800707f) +DECLARE_INSN(ut_amoadd_w, 0x202f, 0xf800707f) +DECLARE_INSN(ut_amoand_d, 0x6000302f, 0xf800707f) DECLARE_INSN(ut_amoand_w, 0x6000202f, 0xf800707f) -DECLARE_INSN(ut_feq_s, 0xa8000053, 0xfe00707f) -DECLARE_INSN(ut_fsgnjx_d, 0x3a000053, 0xfe00707f) -DECLARE_INSN(ut_sra, 0x40005033, 0xfe00707f) -DECLARE_INSN(ut_sraiw, 0x4000501b, 0xfe00707f) -DECLARE_INSN(ut_srl, 0x5033, 0xfe00707f) -DECLARE_INSN(ut_fsub_d, 0xa000053, 0xfe00007f) -DECLARE_INSN(ut_fsgnjx_s, 0x38000053, 0xfe00707f) -DECLARE_INSN(ut_feq_d, 0xaa000053, 0xfe00707f) -DECLARE_INSN(ut_fcvt_d_wu, 0x7a000053, 0xfff0007f) -DECLARE_INSN(ut_or, 0x6033, 0xfe00707f) -DECLARE_INSN(ut_fcvt_wu_d, 0x5a000053, 0xfff0007f) -DECLARE_INSN(ut_subw, 0x4000003b, 0xfe00707f) -DECLARE_INSN(ut_fmax_s, 0xc8000053, 0xfe00707f) +DECLARE_INSN(ut_amomax_d, 0xa000302f, 0xf800707f) DECLARE_INSN(ut_amomaxu_d, 0xe000302f, 0xf800707f) -DECLARE_INSN(ut_xori, 0x4013, 0x707f) -DECLARE_INSN(ut_amoxor_d, 0x2000302f, 0xf800707f) DECLARE_INSN(ut_amomaxu_w, 0xe000202f, 0xf800707f) -DECLARE_INSN(ut_fcvt_wu_s, 0x58000053, 0xfff0007f) -DECLARE_INSN(ut_andi, 0x7013, 0x707f) -DECLARE_INSN(ut_fmv_x_s, 0xe0000053, 0xfff0707f) -DECLARE_INSN(ut_fsgnjn_d, 0x32000053, 0xfe00707f) -DECLARE_INSN(ut_fnmadd_s, 0x4f, 0x600007f) -DECLARE_INSN(ut_lwu, 0x6003, 0x707f) -DECLARE_INSN(ut_fmv_x_d, 0xe2000053, 0xfff0707f) -DECLARE_INSN(ut_fnmadd_d, 0x200004f, 0x600007f) -DECLARE_INSN(ut_amoadd_d, 0x302f, 0xf800707f) -DECLARE_INSN(ut_fcvt_w_s, 0x50000053, 0xfff0007f) -DECLARE_INSN(ut_mulhsu, 0x2002033, 0xfe00707f) -DECLARE_INSN(ut_amoadd_w, 0x202f, 0xf800707f) -DECLARE_INSN(ut_fcvt_d_lu, 0x6a000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_w_d, 0x52000053, 0xfff0007f) -DECLARE_INSN(ut_slt, 0x2033, 0xfe00707f) -DECLARE_INSN(ut_sllw, 0x103b, 0xfe00707f) +DECLARE_INSN(ut_amomax_w, 0xa000202f, 0xf800707f) +DECLARE_INSN(ut_amomin_d, 0x8000302f, 0xf800707f) +DECLARE_INSN(ut_amominu_d, 0xc000302f, 0xf800707f) +DECLARE_INSN(ut_amominu_w, 0xc000202f, 0xf800707f) +DECLARE_INSN(ut_amomin_w, 0x8000202f, 0xf800707f) DECLARE_INSN(ut_amoor_d, 0x4000302f, 0xf800707f) -DECLARE_INSN(ut_slti, 0x2013, 0x707f) -DECLARE_INSN(ut_remu, 0x2007033, 0xfe00707f) -DECLARE_INSN(ut_flw, 0x2007, 0x707f) -DECLARE_INSN(ut_remw, 0x200603b, 0xfe00707f) -DECLARE_INSN(ut_sltu, 0x3033, 0xfe00707f) -DECLARE_INSN(ut_slli, 0x1013, 0xfc00707f) DECLARE_INSN(ut_amoor_w, 0x4000202f, 0xf800707f) -DECLARE_INSN(ut_fld, 0x3007, 0x707f) -DECLARE_INSN(ut_fsub_s, 0x8000053, 0xfe00007f) +DECLARE_INSN(ut_amoswap_d, 0x800302f, 0xf800707f) +DECLARE_INSN(ut_amoswap_w, 0x800202f, 0xf800707f) +DECLARE_INSN(ut_amoxor_d, 0x2000302f, 0xf800707f) +DECLARE_INSN(ut_amoxor_w, 0x2000202f, 0xf800707f) DECLARE_INSN(ut_and, 0x7033, 0xfe00707f) -DECLARE_INSN(ut_fmv_d_x, 0xf2000053, 0xfff0707f) -DECLARE_INSN(ut_lbu, 0x4003, 0x707f) -DECLARE_INSN(ut_fsgnj_s, 0x28000053, 0xfe00707f) -DECLARE_INSN(ut_amomax_w, 0xa000202f, 0xf800707f) -DECLARE_INSN(ut_fsgnj_d, 0x2a000053, 0xfe00707f) -DECLARE_INSN(ut_mulhu, 0x2003033, 0xfe00707f) -DECLARE_INSN(ut_fcvt_l_d, 0x42000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_lu_s, 0x48000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_s_l, 0x60000053, 0xfff0007f) +DECLARE_INSN(ut_andi, 0x7013, 0x707f) DECLARE_INSN(ut_auipc, 0x17, 0x7f) -DECLARE_INSN(ut_fcvt_lu_d, 0x4a000053, 0xfff0007f) -DECLARE_INSN(ut_fmadd_s, 0x43, 0x600007f) -DECLARE_INSN(ut_fsqrt_s, 0x20000053, 0xfff0007f) -DECLARE_INSN(ut_amomin_w, 0x8000202f, 0xf800707f) -DECLARE_INSN(ut_fsgnjn_s, 0x30000053, 0xfe00707f) -DECLARE_INSN(ut_amoswap_d, 0x800302f, 0xf800707f) -DECLARE_INSN(ut_fsqrt_d, 0x22000053, 0xfff0007f) -DECLARE_INSN(ut_fmadd_d, 0x2000043, 0x600007f) -DECLARE_INSN(ut_divw, 0x200403b, 0xfe00707f) -DECLARE_INSN(ut_amomin_d, 0x8000302f, 0xf800707f) +DECLARE_INSN(ut_div, 0x2004033, 0xfe00707f) DECLARE_INSN(ut_divu, 0x2005033, 0xfe00707f) -DECLARE_INSN(ut_amoswap_w, 0x800202f, 0xf800707f) +DECLARE_INSN(ut_divuw, 0x200503b, 0xfe00707f) +DECLARE_INSN(ut_divw, 0x200403b, 0xfe00707f) +DECLARE_INSN(ut_fadd_d, 0x2000053, 0xfe00007f) +DECLARE_INSN(ut_fadd_h, 0x4000053, 0xfe00007f) DECLARE_INSN(ut_fadd_s, 0x53, 0xfe00007f) -DECLARE_INSN(ut_fsd, 0x3027, 0x707f) -DECLARE_INSN(ut_sw, 0x2023, 0x707f) -DECLARE_INSN(ut_fmsub_s, 0x47, 0x600007f) -DECLARE_INSN(ut_lhu, 0x5003, 0x707f) -DECLARE_INSN(ut_sh, 0x1023, 0x707f) -DECLARE_INSN(ut_fsw, 0x2027, 0x707f) -DECLARE_INSN(ut_sb, 0x23, 0x707f) -DECLARE_INSN(ut_fmsub_d, 0x2000047, 0x600007f) -DECLARE_INSN(ut_sd, 0x3023, 0x707f) - +DECLARE_INSN(ut_fclass_d, 0xe2001053, 0xfff0707f) +DECLARE_INSN(ut_fclass_s, 0xe0001053, 0xfff0707f) +DECLARE_INSN(ut_fcvt_d_h, 0x8c000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_d_l, 0xd2200053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_d_lu, 0xd2300053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_d_s, 0x42000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_d_w, 0xd2000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_d_wu, 0xd2100053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_h_d, 0x92000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_h_l, 0x64000053, 0xfff0007f) DECLARE_INSN(ut_fcvt_h_lu, 0x6c000053, 0xfff0007f) -DECLARE_INSN(ut_fmin_h, 0xc4000053, 0xfe00707f) -DECLARE_INSN(ut_fcvt_wu_h, 0x5c000053, 0xfff0007f) -DECLARE_INSN(ut_fdiv_h, 0x1c000053, 0xfe00007f) -DECLARE_INSN(ut_fcvt_h_wu, 0x7c000053, 0xfff0007f) -DECLARE_INSN(ut_fsgnj_h, 0x2c000053, 0xfe00707f) -DECLARE_INSN(ut_fnmsub_h, 0x400004b, 0x600007f) -DECLARE_INSN(ut_fle_h, 0xbc000053, 0xfe00707f) -DECLARE_INSN(ut_fcvt_l_h, 0x44000053, 0xfff0007f) -DECLARE_INSN(ut_fnmadd_h, 0x400004f, 0x600007f) DECLARE_INSN(ut_fcvt_h_s, 0x90000053, 0xfff0007f) DECLARE_INSN(ut_fcvt_h_w, 0x74000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_d_h, 0x8c000053, 0xfff0007f) -DECLARE_INSN(ut_fmax_h, 0xcc000053, 0xfe00707f) +DECLARE_INSN(ut_fcvt_h_wu, 0x7c000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_l_d, 0xc2200053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_l_h, 0x44000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_l_s, 0xc0200053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_lu_d, 0xc2300053, 0xfff0007f) DECLARE_INSN(ut_fcvt_lu_h, 0x4c000053, 0xfff0007f) -DECLARE_INSN(ut_fcvt_h_l, 0x64000053, 0xfff0007f) -DECLARE_INSN(ut_fmv_x_h, 0xe4000053, 0xfff0707f) -DECLARE_INSN(ut_fcvt_h_d, 0x92000053, 0xfff0007f) -DECLARE_INSN(ut_flt_h, 0xb4000053, 0xfe00707f) -DECLARE_INSN(ut_fadd_h, 0x4000053, 0xfe00007f) +DECLARE_INSN(ut_fcvt_lu_s, 0xc0300053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_s_d, 0x40100053, 0xfff0007f) DECLARE_INSN(ut_fcvt_s_h, 0x84000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_s_l, 0xd0200053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_s_lu, 0xd0300053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_s_w, 0xd0000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_s_wu, 0xd0100053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_w_d, 0xc2000053, 0xfff0007f) DECLARE_INSN(ut_fcvt_w_h, 0x54000053, 0xfff0007f) -DECLARE_INSN(ut_fmul_h, 0x14000053, 0xfe00007f) -DECLARE_INSN(ut_fmadd_h, 0x4000043, 0x600007f) -DECLARE_INSN(ut_fsqrt_h, 0x24000053, 0xfff0007f) -DECLARE_INSN(ut_fsgnjn_h, 0x34000053, 0xfe00707f) -DECLARE_INSN(ut_fsub_h, 0xc000053, 0xfe00007f) -DECLARE_INSN(ut_fsh, 0x1027, 0x707f) -DECLARE_INSN(ut_fsgnjx_h, 0x3c000053, 0xfe00707f) +DECLARE_INSN(ut_fcvt_w_s, 0xc0000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_wu_d, 0xc2100053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_wu_h, 0x5c000053, 0xfff0007f) +DECLARE_INSN(ut_fcvt_wu_s, 0xc0100053, 0xfff0007f) +DECLARE_INSN(ut_fdiv_d, 0x1a000053, 0xfe00007f) +DECLARE_INSN(ut_fdiv_h, 0x1c000053, 0xfe00007f) +DECLARE_INSN(ut_fdiv_s, 0x18000053, 0xfe00007f) +DECLARE_INSN(ut_fence, 0xf, 0x707f) +DECLARE_INSN(ut_feq_d, 0xa2002053, 0xfe00707f) +DECLARE_INSN(ut_feq_h, 0xac000053, 0xfe00707f) +DECLARE_INSN(ut_feq_s, 0xa0002053, 0xfe00707f) +DECLARE_INSN(ut_fld, 0x3007, 0x707f) +DECLARE_INSN(ut_fle_d, 0xa2000053, 0xfe00707f) +DECLARE_INSN(ut_fle_h, 0xbc000053, 0xfe00707f) +DECLARE_INSN(ut_fle_s, 0xa0000053, 0xfe00707f) DECLARE_INSN(ut_flh, 0x1007, 0x707f) +DECLARE_INSN(ut_flt_d, 0xa2001053, 0xfe00707f) +DECLARE_INSN(ut_flt_h, 0xb4000053, 0xfe00707f) +DECLARE_INSN(ut_flt_s, 0xa0001053, 0xfe00707f) +DECLARE_INSN(ut_flw, 0x2007, 0x707f) +DECLARE_INSN(ut_fmadd_d, 0x2000043, 0x600007f) +DECLARE_INSN(ut_fmadd_h, 0x4000043, 0x600007f) +DECLARE_INSN(ut_fmadd_s, 0x43, 0x600007f) +DECLARE_INSN(ut_fmax_d, 0x2a001053, 0xfe00707f) +DECLARE_INSN(ut_fmax_h, 0xcc000053, 0xfe00707f) +DECLARE_INSN(ut_fmax_s, 0x28001053, 0xfe00707f) +DECLARE_INSN(ut_fmin_d, 0x2a000053, 0xfe00707f) +DECLARE_INSN(ut_fmin_h, 0xc4000053, 0xfe00707f) +DECLARE_INSN(ut_fmin_s, 0x28000053, 0xfe00707f) +DECLARE_INSN(ut_fmovn, 0x6007077, 0xfe00707f) +DECLARE_INSN(ut_fmovz, 0x4007077, 0xfe00707f) +DECLARE_INSN(ut_fmsub_d, 0x2000047, 0x600007f) DECLARE_INSN(ut_fmsub_h, 0x4000047, 0x600007f) -DECLARE_INSN(ut_feq_h, 0xac000053, 0xfe00707f) +DECLARE_INSN(ut_fmsub_s, 0x47, 0x600007f) +DECLARE_INSN(ut_fmul_d, 0x12000053, 0xfe00007f) +DECLARE_INSN(ut_fmul_h, 0x14000053, 0xfe00007f) +DECLARE_INSN(ut_fmul_s, 0x10000053, 0xfe00007f) +DECLARE_INSN(ut_fmv_d_x, 0xf2000053, 0xfff0707f) DECLARE_INSN(ut_fmv_h_x, 0xf4000053, 0xfff0707f) +DECLARE_INSN(ut_fmv_s_x, 0xf0000053, 0xfff0707f) +DECLARE_INSN(ut_fmv_x_d, 0xe2000053, 0xfff0707f) +DECLARE_INSN(ut_fmv_x_h, 0xe4000053, 0xfff0707f) +DECLARE_INSN(ut_fmv_x_s, 0xe0000053, 0xfff0707f) +DECLARE_INSN(ut_fnmadd_d, 0x200004f, 0x600007f) +DECLARE_INSN(ut_fnmadd_h, 0x400004f, 0x600007f) +DECLARE_INSN(ut_fnmadd_s, 0x4f, 0x600007f) +DECLARE_INSN(ut_fnmsub_d, 0x200004b, 0x600007f) +DECLARE_INSN(ut_fnmsub_h, 0x400004b, 0x600007f) +DECLARE_INSN(ut_fnmsub_s, 0x4b, 0x600007f) +DECLARE_INSN(ut_fsd, 0x3027, 0x707f) +DECLARE_INSN(ut_fsgnj_d, 0x22000053, 0xfe00707f) +DECLARE_INSN(ut_fsgnj_h, 0x2c000053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjn_d, 0x22001053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjn_h, 0x34000053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjn_s, 0x20001053, 0xfe00707f) +DECLARE_INSN(ut_fsgnj_s, 0x20000053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjx_d, 0x22002053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjx_h, 0x3c000053, 0xfe00707f) +DECLARE_INSN(ut_fsgnjx_s, 0x20002053, 0xfe00707f) +DECLARE_INSN(ut_fsh, 0x1027, 0x707f) +DECLARE_INSN(ut_fsqrt_d, 0x5a000053, 0xfff0007f) +DECLARE_INSN(ut_fsqrt_h, 0x24000053, 0xfff0007f) +DECLARE_INSN(ut_fsqrt_s, 0x58000053, 0xfff0007f) +DECLARE_INSN(ut_fsub_d, 0xa000053, 0xfe00007f) +DECLARE_INSN(ut_fsub_h, 0xc000053, 0xfe00007f) +DECLARE_INSN(ut_fsub_s, 0x8000053, 0xfe00007f) +DECLARE_INSN(ut_fsw, 0x2027, 0x707f) +DECLARE_INSN(ut_lb, 0x3, 0x707f) +DECLARE_INSN(ut_lbu, 0x4003, 0x707f) +DECLARE_INSN(ut_ld, 0x3003, 0x707f) +DECLARE_INSN(ut_lh, 0x1003, 0x707f) +DECLARE_INSN(ut_lhu, 0x5003, 0x707f) +DECLARE_INSN(ut_lui, 0x37, 0x7f) +DECLARE_INSN(ut_lw, 0x2003, 0x707f) +DECLARE_INSN(ut_lwu, 0x6003, 0x707f) +DECLARE_INSN(ut_movn, 0x2007077, 0xfe00707f) +DECLARE_INSN(ut_movz, 0x7077, 0xfe00707f) +DECLARE_INSN(ut_mul, 0x2000033, 0xfe00707f) +DECLARE_INSN(ut_mulh, 0x2001033, 0xfe00707f) +DECLARE_INSN(ut_mulhsu, 0x2002033, 0xfe00707f) +DECLARE_INSN(ut_mulhu, 0x2003033, 0xfe00707f) +DECLARE_INSN(ut_mulw, 0x200003b, 0xfe00707f) +DECLARE_INSN(ut_or, 0x6033, 0xfe00707f) +DECLARE_INSN(ut_ori, 0x6013, 0x707f) +DECLARE_INSN(ut_rem, 0x2006033, 0xfe00707f) +DECLARE_INSN(ut_remu, 0x2007033, 0xfe00707f) +DECLARE_INSN(ut_remuw, 0x200703b, 0xfe00707f) +DECLARE_INSN(ut_remw, 0x200603b, 0xfe00707f) +DECLARE_INSN(ut_sb, 0x23, 0x707f) +DECLARE_INSN(ut_sd, 0x3023, 0x707f) +DECLARE_INSN(ut_sh, 0x1023, 0x707f) +DECLARE_INSN(ut_sll, 0x1033, 0xfe00707f) +DECLARE_INSN(ut_slli, 0x1013, 0xfc00707f) +DECLARE_INSN(ut_slliw, 0x101b, 0xfe00707f) +DECLARE_INSN(ut_sllw, 0x103b, 0xfe00707f) +DECLARE_INSN(ut_slt, 0x2033, 0xfe00707f) +DECLARE_INSN(ut_slti, 0x2013, 0x707f) +DECLARE_INSN(ut_sltiu, 0x3013, 0x707f) +DECLARE_INSN(ut_sltu, 0x3033, 0xfe00707f) +DECLARE_INSN(ut_sra, 0x40005033, 0xfe00707f) +DECLARE_INSN(ut_srai, 0x40005013, 0xfc00707f) +DECLARE_INSN(ut_sraiw, 0x4000501b, 0xfe00707f) +DECLARE_INSN(ut_sraw, 0x4000503b, 0xfe00707f) +DECLARE_INSN(ut_srl, 0x5033, 0xfe00707f) +DECLARE_INSN(ut_srli, 0x5013, 0xfc00707f) +DECLARE_INSN(ut_srliw, 0x501b, 0xfe00707f) +DECLARE_INSN(ut_srlw, 0x503b, 0xfe00707f) +DECLARE_INSN(ut_stop, 0x5077, 0xffffffff) +DECLARE_INSN(ut_sub, 0x40000033, 0xfe00707f) +DECLARE_INSN(ut_subw, 0x4000003b, 0xfe00707f) +DECLARE_INSN(ut_sw, 0x2023, 0x707f) +DECLARE_INSN(ut_utidx, 0x6077, 0xfffff07f) +DECLARE_INSN(ut_xor, 0x4033, 0xfe00707f) +DECLARE_INSN(ut_xori, 0x4013, 0x707f) diff --git a/riscv/encoding.h b/riscv/encoding.h index 5530699..089a8a9 100644 --- a/riscv/encoding.h +++ b/riscv/encoding.h @@ -414,6 +414,7 @@ #define CSR_FFLAGS 0x1 #define CSR_FRM 0x2 #define CSR_FCSR 0x3 +#define CSR_STATS 0xc0 #define CSR_SUP0 0x500 #define CSR_SUP1 0x501 #define CSR_EPC 0x502 @@ -430,7 +431,6 @@ #define CSR_FATC 0x50d #define CSR_SEND_IPI 0x50e #define CSR_CLEAR_IPI 0x50f -#define CSR_STATS 0x51c #define CSR_RESET 0x51d #define CSR_TOHOST 0x51e #define CSR_FROMHOST 0x51f @@ -453,6 +453,10 @@ #define CSR_UARCH13 0xccd #define CSR_UARCH14 0xcce #define CSR_UARCH15 0xccf +#define CSR_COUNTH 0x586 +#define CSR_CYCLEH 0xc80 +#define CSR_TIMEH 0xc81 +#define CSR_INSTRETH 0xc82 #define CAUSE_MISALIGNED_FETCH 0x0 #define CAUSE_FAULT_FETCH 0x1 #define CAUSE_ILLEGAL_INSTRUCTION 0x2 @@ -629,6 +633,7 @@ DECLARE_INSN(sd, MATCH_SD, MASK_SD) DECLARE_CSR(fflags, CSR_FFLAGS) DECLARE_CSR(frm, CSR_FRM) DECLARE_CSR(fcsr, CSR_FCSR) +DECLARE_CSR(stats, CSR_STATS) DECLARE_CSR(sup0, CSR_SUP0) DECLARE_CSR(sup1, CSR_SUP1) DECLARE_CSR(epc, CSR_EPC) @@ -645,7 +650,6 @@ DECLARE_CSR(impl, CSR_IMPL) DECLARE_CSR(fatc, CSR_FATC) DECLARE_CSR(send_ipi, CSR_SEND_IPI) DECLARE_CSR(clear_ipi, CSR_CLEAR_IPI) -DECLARE_CSR(stats, CSR_STATS) DECLARE_CSR(reset, CSR_RESET) DECLARE_CSR(tohost, CSR_TOHOST) DECLARE_CSR(fromhost, CSR_FROMHOST) @@ -668,11 +672,16 @@ DECLARE_CSR(uarch12, CSR_UARCH12) DECLARE_CSR(uarch13, CSR_UARCH13) DECLARE_CSR(uarch14, CSR_UARCH14) DECLARE_CSR(uarch15, CSR_UARCH15) +DECLARE_CSR(counth, CSR_COUNTH) +DECLARE_CSR(cycleh, CSR_CYCLEH) +DECLARE_CSR(timeh, CSR_TIMEH) +DECLARE_CSR(instreth, CSR_INSTRETH) #endif #ifdef DECLARE_CAUSE DECLARE_CAUSE("fflags", CAUSE_FFLAGS) DECLARE_CAUSE("frm", CAUSE_FRM) DECLARE_CAUSE("fcsr", CAUSE_FCSR) +DECLARE_CAUSE("stats", CAUSE_STATS) DECLARE_CAUSE("sup0", CAUSE_SUP0) DECLARE_CAUSE("sup1", CAUSE_SUP1) DECLARE_CAUSE("epc", CAUSE_EPC) @@ -689,7 +698,6 @@ DECLARE_CAUSE("impl", CAUSE_IMPL) DECLARE_CAUSE("fatc", CAUSE_FATC) DECLARE_CAUSE("send_ipi", CAUSE_SEND_IPI) DECLARE_CAUSE("clear_ipi", CAUSE_CLEAR_IPI) -DECLARE_CAUSE("stats", CAUSE_STATS) DECLARE_CAUSE("reset", CAUSE_RESET) DECLARE_CAUSE("tohost", CAUSE_TOHOST) DECLARE_CAUSE("fromhost", CAUSE_FROMHOST) @@ -712,4 +720,8 @@ DECLARE_CAUSE("uarch12", CAUSE_UARCH12) DECLARE_CAUSE("uarch13", CAUSE_UARCH13) DECLARE_CAUSE("uarch14", CAUSE_UARCH14) DECLARE_CAUSE("uarch15", CAUSE_UARCH15) +DECLARE_CAUSE("counth", CAUSE_COUNTH) +DECLARE_CAUSE("cycleh", CAUSE_CYCLEH) +DECLARE_CAUSE("timeh", CAUSE_TIMEH) +DECLARE_CAUSE("instreth", CAUSE_INSTRETH) #endif -- 2.30.2