* [PATCH v3 0/3] Fix some loongarch tcg bugs @ 2022-09-30 2:45 Song Gao 2022-09-30 2:45 ` [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE Song Gao ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Song Gao @ 2022-09-30 2:45 UTC (permalink / raw) To: qemu-devel Cc: richard.henderson, peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi Hi, This series fix some bugs find from RISU test. V3: -drop patch set some instruction result high 32bit 1. -follow some change from Richard's suggestion. v2: -remove patch5 div if x/0 set dividend to 0. Song Gao (3): target/loongarch: bstrins.w src register need EXT_NONE target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags softfloat: logB(0) should raise divideByZero exception fpu/softfloat-parts.c.inc | 1 + target/loongarch/insn_trans/trans_bit.c.inc | 36 +++++++++++-------- .../loongarch/insn_trans/trans_farith.c.inc | 12 +++---- 3 files changed, 29 insertions(+), 20 deletions(-) -- 2.31.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE 2022-09-30 2:45 [PATCH v3 0/3] Fix some loongarch tcg bugs Song Gao @ 2022-09-30 2:45 ` Song Gao 2022-09-30 14:01 ` Richard Henderson 2022-09-30 2:45 ` [PATCH v3 2/3] target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags Song Gao ` (2 subsequent siblings) 3 siblings, 1 reply; 7+ messages in thread From: Song Gao @ 2022-09-30 2:45 UTC (permalink / raw) To: qemu-devel Cc: richard.henderson, peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi use gen_bstrins/gen_bstrpic to replace gen_rr_ms_ls. Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> --- target/loongarch/insn_trans/trans_bit.c.inc | 36 +++++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/target/loongarch/insn_trans/trans_bit.c.inc b/target/loongarch/insn_trans/trans_bit.c.inc index 9337714ec4..b01e4aeb23 100644 --- a/target/loongarch/insn_trans/trans_bit.c.inc +++ b/target/loongarch/insn_trans/trans_bit.c.inc @@ -27,26 +27,34 @@ static void gen_bytepick_d(TCGv dest, TCGv src1, TCGv src2, target_long sa) tcg_gen_extract2_i64(dest, src1, src2, (64 - sa * 8)); } -static void gen_bstrins(TCGv dest, TCGv src1, - unsigned int ls, unsigned int len) +static bool gen_bstrins(DisasContext *ctx, arg_rr_ms_ls *a, + DisasExtend dst_ext) { - tcg_gen_deposit_tl(dest, dest, src1, ls, len); + TCGv src1 = gpr_src(ctx, a->rd, EXT_NONE); + TCGv src2 = gpr_src(ctx, a->rj, EXT_NONE); + TCGv dest = gpr_dst(ctx, a->rd, EXT_NONE); + + if (a->ls > a->ms) { + return false; + } + + tcg_gen_deposit_tl(dest, src1, src2, a->ls, a->ms - a->ls + 1); + gen_set_gpr(a->rd, dest, dst_ext); + return true; } -static bool gen_rr_ms_ls(DisasContext *ctx, arg_rr_ms_ls *a, - DisasExtend src_ext, DisasExtend dst_ext, - void (*func)(TCGv, TCGv, unsigned int, unsigned int)) +static bool gen_bstrpick(DisasContext *ctx, arg_rr_ms_ls *a, + DisasExtend dst_ext) { - TCGv dest = gpr_dst(ctx, a->rd, dst_ext); - TCGv src1 = gpr_src(ctx, a->rj, src_ext); + TCGv dest = gpr_dst(ctx, a->rd, EXT_NONE); + TCGv src1 = gpr_src(ctx, a->rj, EXT_NONE); if (a->ls > a->ms) { return false; } - func(dest, src1, a->ls, a->ms - a->ls + 1); + tcg_gen_extract_tl(dest, src1, a->ls, a->ms - a->ls + 1); gen_set_gpr(a->rd, dest, dst_ext); - return true; } @@ -206,7 +214,7 @@ TRANS(maskeqz, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_maskeqz) TRANS(masknez, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_masknez) TRANS(bytepick_w, gen_rrr_sa, EXT_NONE, EXT_NONE, gen_bytepick_w) TRANS(bytepick_d, gen_rrr_sa, EXT_NONE, EXT_NONE, gen_bytepick_d) -TRANS(bstrins_w, gen_rr_ms_ls, EXT_NONE, EXT_NONE, gen_bstrins) -TRANS(bstrins_d, gen_rr_ms_ls, EXT_NONE, EXT_NONE, gen_bstrins) -TRANS(bstrpick_w, gen_rr_ms_ls, EXT_NONE, EXT_SIGN, tcg_gen_extract_tl) -TRANS(bstrpick_d, gen_rr_ms_ls, EXT_NONE, EXT_NONE, tcg_gen_extract_tl) +TRANS(bstrins_w, gen_bstrins, EXT_SIGN) +TRANS(bstrins_d, gen_bstrins, EXT_NONE) +TRANS(bstrpick_w, gen_bstrpick, EXT_SIGN) +TRANS(bstrpick_d, gen_bstrpick, EXT_NONE) -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE 2022-09-30 2:45 ` [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE Song Gao @ 2022-09-30 14:01 ` Richard Henderson 0 siblings, 0 replies; 7+ messages in thread From: Richard Henderson @ 2022-09-30 14:01 UTC (permalink / raw) To: Song Gao, qemu-devel Cc: peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi On 9/29/22 19:45, Song Gao wrote: > use gen_bstrins/gen_bstrpic to replace gen_rr_ms_ls. > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Song Gao<gaosong@loongson.cn> > --- > target/loongarch/insn_trans/trans_bit.c.inc | 36 +++++++++++++-------- > 1 file changed, 22 insertions(+), 14 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 2/3] target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags 2022-09-30 2:45 [PATCH v3 0/3] Fix some loongarch tcg bugs Song Gao 2022-09-30 2:45 ` [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE Song Gao @ 2022-09-30 2:45 ` Song Gao 2022-09-30 2:45 ` [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception Song Gao 2022-10-10 9:15 ` [PATCH v3 0/3] Fix some loongarch tcg bugs gaosong 3 siblings, 0 replies; 7+ messages in thread From: Song Gao @ 2022-09-30 2:45 UTC (permalink / raw) To: qemu-devel Cc: richard.henderson, peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> --- target/loongarch/insn_trans/trans_farith.c.inc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target/loongarch/insn_trans/trans_farith.c.inc b/target/loongarch/insn_trans/trans_farith.c.inc index 65ad2ffab8..7bb3f41aee 100644 --- a/target/loongarch/insn_trans/trans_farith.c.inc +++ b/target/loongarch/insn_trans/trans_farith.c.inc @@ -97,9 +97,9 @@ TRANS(fmadd_s, gen_muladd, gen_helper_fmuladd_s, 0) TRANS(fmadd_d, gen_muladd, gen_helper_fmuladd_d, 0) TRANS(fmsub_s, gen_muladd, gen_helper_fmuladd_s, float_muladd_negate_c) TRANS(fmsub_d, gen_muladd, gen_helper_fmuladd_d, float_muladd_negate_c) -TRANS(fnmadd_s, gen_muladd, gen_helper_fmuladd_s, - float_muladd_negate_product | float_muladd_negate_c) -TRANS(fnmadd_d, gen_muladd, gen_helper_fmuladd_d, - float_muladd_negate_product | float_muladd_negate_c) -TRANS(fnmsub_s, gen_muladd, gen_helper_fmuladd_s, float_muladd_negate_product) -TRANS(fnmsub_d, gen_muladd, gen_helper_fmuladd_d, float_muladd_negate_product) +TRANS(fnmadd_s, gen_muladd, gen_helper_fmuladd_s, float_muladd_negate_result) +TRANS(fnmadd_d, gen_muladd, gen_helper_fmuladd_d, float_muladd_negate_result) +TRANS(fnmsub_s, gen_muladd, gen_helper_fmuladd_s, + float_muladd_negate_c | float_muladd_negate_result) +TRANS(fnmsub_d, gen_muladd, gen_helper_fmuladd_d, + float_muladd_negate_c | float_muladd_negate_result) -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception 2022-09-30 2:45 [PATCH v3 0/3] Fix some loongarch tcg bugs Song Gao 2022-09-30 2:45 ` [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE Song Gao 2022-09-30 2:45 ` [PATCH v3 2/3] target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags Song Gao @ 2022-09-30 2:45 ` Song Gao 2022-09-30 14:02 ` Richard Henderson 2022-10-10 9:15 ` [PATCH v3 0/3] Fix some loongarch tcg bugs gaosong 3 siblings, 1 reply; 7+ messages in thread From: Song Gao @ 2022-09-30 2:45 UTC (permalink / raw) To: qemu-devel Cc: richard.henderson, peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3 Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> --- fpu/softfloat-parts.c.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index a9f268fcab..247400031c 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1436,6 +1436,7 @@ static void partsN(log2)(FloatPartsN *a, float_status *s, const FloatFmt *fmt) parts_return_nan(a, s); return; case float_class_zero: + float_raise(float_flag_divbyzero, s); /* log2(0) = -inf */ a->cls = float_class_inf; a->sign = 1; -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception 2022-09-30 2:45 ` [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception Song Gao @ 2022-09-30 14:02 ` Richard Henderson 0 siblings, 0 replies; 7+ messages in thread From: Richard Henderson @ 2022-09-30 14:02 UTC (permalink / raw) To: Song Gao, qemu-devel Cc: peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi On 9/29/22 19:45, Song Gao wrote: > logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3 > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Song Gao<gaosong@loongson.cn> > --- > fpu/softfloat-parts.c.inc | 1 + > 1 file changed, 1 insertion(+) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/3] Fix some loongarch tcg bugs 2022-09-30 2:45 [PATCH v3 0/3] Fix some loongarch tcg bugs Song Gao ` (2 preceding siblings ...) 2022-09-30 2:45 ` [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception Song Gao @ 2022-10-10 9:15 ` gaosong 3 siblings, 0 replies; 7+ messages in thread From: gaosong @ 2022-10-10 9:15 UTC (permalink / raw) To: qemu-devel Cc: richard.henderson, peter.maydell, alex.bennee, yangxiaojuan, maobibo, huqi 在 2022/9/30 10:45, Song Gao 写道: > Hi, > > This series fix some bugs find from RISU test. > > V3: > -drop patch set some instruction result high 32bit 1. > -follow some change from Richard's suggestion. > > v2: > -remove patch5 div if x/0 set dividend to 0. > > > Song Gao (3): > target/loongarch: bstrins.w src register need EXT_NONE > target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags > softfloat: logB(0) should raise divideByZero exception > > fpu/softfloat-parts.c.inc | 1 + > target/loongarch/insn_trans/trans_bit.c.inc | 36 +++++++++++-------- > .../loongarch/insn_trans/trans_farith.c.inc | 12 +++---- > 3 files changed, 29 insertions(+), 20 deletions(-) Applied to loongarch-next. Thanks. Song Gao ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-10-10 9:42 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-09-30 2:45 [PATCH v3 0/3] Fix some loongarch tcg bugs Song Gao 2022-09-30 2:45 ` [PATCH v3 1/3] target/loongarch: bstrins.w src register need EXT_NONE Song Gao 2022-09-30 14:01 ` Richard Henderson 2022-09-30 2:45 ` [PATCH v3 2/3] target/loongarch: Fix fnm{sub/add}_{s/d} set wrong flags Song Gao 2022-09-30 2:45 ` [PATCH v3 3/3] softfloat: logB(0) should raise divideByZero exception Song Gao 2022-09-30 14:02 ` Richard Henderson 2022-10-10 9:15 ` [PATCH v3 0/3] Fix some loongarch tcg bugs gaosong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).