mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 02:54:58 -06:00
target/riscv: zfh: half-precision load and store
Signed-off-by: Kito Cheng <kito.cheng@sifive.com> Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com> Signed-off-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20211210074329.5775-2-frank.chang@sifive.com Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
212a33d3b0
commit
915f77b211
4 changed files with 78 additions and 0 deletions
|
@ -73,6 +73,7 @@ typedef struct DisasContext {
|
|||
RISCVMXL ol;
|
||||
bool virt_enabled;
|
||||
bool ext_ifencei;
|
||||
bool ext_zfh;
|
||||
bool hlsx;
|
||||
/* vector extension */
|
||||
bool vill;
|
||||
|
@ -134,6 +135,11 @@ static void gen_nanbox_s(TCGv_i64 out, TCGv_i64 in)
|
|||
tcg_gen_ori_i64(out, in, MAKE_64BIT_MASK(32, 32));
|
||||
}
|
||||
|
||||
static void gen_nanbox_h(TCGv_i64 out, TCGv_i64 in)
|
||||
{
|
||||
tcg_gen_ori_i64(out, in, MAKE_64BIT_MASK(16, 48));
|
||||
}
|
||||
|
||||
/*
|
||||
* A narrow n-bit operation, where n < FLEN, checks that input operands
|
||||
* are correctly Nan-boxed, i.e., all upper FLEN - n bits are 1.
|
||||
|
@ -574,6 +580,7 @@ static uint32_t opcode_at(DisasContextBase *dcbase, target_ulong pc)
|
|||
#include "insn_trans/trans_rvh.c.inc"
|
||||
#include "insn_trans/trans_rvv.c.inc"
|
||||
#include "insn_trans/trans_rvb.c.inc"
|
||||
#include "insn_trans/trans_rvzfh.c.inc"
|
||||
#include "insn_trans/trans_privileged.c.inc"
|
||||
|
||||
/* Include the auto-generated decoder for 16 bit insn */
|
||||
|
@ -626,6 +633,7 @@ static void riscv_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
|
|||
ctx->misa_ext = env->misa_ext;
|
||||
ctx->frm = -1; /* unknown rounding mode */
|
||||
ctx->ext_ifencei = cpu->cfg.ext_ifencei;
|
||||
ctx->ext_zfh = cpu->cfg.ext_zfh;
|
||||
ctx->vlen = cpu->cfg.vlen;
|
||||
ctx->mstatus_hs_fs = FIELD_EX32(tb_flags, TB_FLAGS, MSTATUS_HS_FS);
|
||||
ctx->hlsx = FIELD_EX32(tb_flags, TB_FLAGS, HLSX);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue