* [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
* [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 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
* 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).