56 lines
2.2 KiB
Plaintext
56 lines
2.2 KiB
Plaintext
|
#
|
||
|
# RISC-V translation routines for the RVXI Base Integer Instruction Set.
|
||
|
#
|
||
|
# Copyright (c) 2018 Peer Adelt, peer.adelt@hni.uni-paderborn.de
|
||
|
# Bastian Koppelmann, kbastian@mail.uni-paderborn.de
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or modify it
|
||
|
# under the terms and conditions of the GNU General Public License,
|
||
|
# version 2 or later, as published by the Free Software Foundation.
|
||
|
#
|
||
|
# This program is distributed in the hope it 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. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
# Fields:
|
||
|
%rd 7:5
|
||
|
%rs1_3 7:3 !function=ex_rvc_register
|
||
|
%rs2_3 2:3 !function=ex_rvc_register
|
||
|
|
||
|
# Immediates:
|
||
|
%nzuimm_ciw 7:4 11:2 5:1 6:1 !function=ex_shift_2
|
||
|
%uimm_cl_d 5:2 10:3 !function=ex_shift_3
|
||
|
%uimm_cl_w 5:1 10:3 6:1 !function=ex_shift_2
|
||
|
|
||
|
|
||
|
# Argument sets:
|
||
|
&cl rs1 rd
|
||
|
&cl_dw uimm rs1 rd
|
||
|
&ciw nzuimm rd
|
||
|
&cs rs1 rs2
|
||
|
&cs_dw uimm rs1 rs2
|
||
|
|
||
|
|
||
|
# Formats 16:
|
||
|
@ciw ... ........ ... .. &ciw nzuimm=%nzuimm_ciw rd=%rs2_3
|
||
|
@cl_d ... ... ... .. ... .. &cl_dw uimm=%uimm_cl_d rs1=%rs1_3 rd=%rs2_3
|
||
|
@cl_w ... ... ... .. ... .. &cl_dw uimm=%uimm_cl_w rs1=%rs1_3 rd=%rs2_3
|
||
|
@cl ... ... ... .. ... .. &cl rs1=%rs1_3 rd=%rs2_3
|
||
|
@cs ... ... ... .. ... .. &cs rs1=%rs1_3 rs2=%rs2_3
|
||
|
@cs_d ... ... ... .. ... .. &cs_dw uimm=%uimm_cl_d rs1=%rs1_3 rs2=%rs2_3
|
||
|
@cs_w ... ... ... .. ... .. &cs_dw uimm=%uimm_cl_w rs1=%rs1_3 rs2=%rs2_3
|
||
|
|
||
|
|
||
|
# *** RV64C Standard Extension (Quadrant 0) ***
|
||
|
c_addi4spn 000 ........ ... 00 @ciw
|
||
|
c_fld 001 ... ... .. ... 00 @cl_d
|
||
|
c_lw 010 ... ... .. ... 00 @cl_w
|
||
|
c_flw_ld 011 --- ... -- ... 00 @cl #Note: Must parse uimm manually
|
||
|
c_fsd 101 ... ... .. ... 00 @cs_d
|
||
|
c_sw 110 ... ... .. ... 00 @cs_w
|
||
|
c_fsw_sd 111 --- ... -- ... 00 @cs #Note: Must parse uimm manually
|