Message ID | 875xxa14z1.fsf@t14.stackframe.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target/hppa: be,n nullifying first insn at branch target? | expand |
On 3/25/24 09:33, Sven Schnelle wrote: > diff --git a/target/hppa/translate.c b/target/hppa/translate.c > index 7546a5f5a2..56c68a7cbe 100644 > --- a/target/hppa/translate.c > +++ b/target/hppa/translate.c > @@ -3847,7 +3849,7 @@ static bool trans_be(DisasContext *ctx, arg_be *a) > copy_iaoq_entry(ctx, cpu_gr[31], ctx->iaoq_n, ctx->iaoq_n_var); > tcg_gen_mov_i64(cpu_sr[0], cpu_iasq_b); > } > - if (a->n && use_nullify_skip(ctx)) { > + if (0 && a->n && use_nullify_skip(ctx)) { > copy_iaoq_entry(ctx, cpu_iaoq_f, -1, tmp); > tcg_gen_addi_i64(tmp, tmp, 4); > copy_iaoq_entry(ctx, cpu_iaoq_b, -1, tmp); > > > So i think the problem is caused by this optimization. Does this ring a > bell? Debugging this is rather hard, alone the logfile above is 6GB in > size... The problem is a missing nullify_set(ctx, 0) within this block. I have patches queued to reorg the IAQ handling, which I hope will fix the problem Sven saw with spaces. It would fix this as a consequence of other unification. But I think it's a bit too big for 9.0. r~
Richard Henderson <richard.henderson@linaro.org> writes: > On 3/25/24 09:33, Sven Schnelle wrote: >> diff --git a/target/hppa/translate.c b/target/hppa/translate.c >> index 7546a5f5a2..56c68a7cbe 100644 >> --- a/target/hppa/translate.c >> +++ b/target/hppa/translate.c >> @@ -3847,7 +3849,7 @@ static bool trans_be(DisasContext *ctx, arg_be *a) >> copy_iaoq_entry(ctx, cpu_gr[31], ctx->iaoq_n, ctx->iaoq_n_var); >> tcg_gen_mov_i64(cpu_sr[0], cpu_iasq_b); >> } >> - if (a->n && use_nullify_skip(ctx)) { >> + if (0 && a->n && use_nullify_skip(ctx)) { >> copy_iaoq_entry(ctx, cpu_iaoq_f, -1, tmp); >> tcg_gen_addi_i64(tmp, tmp, 4); >> copy_iaoq_entry(ctx, cpu_iaoq_b, -1, tmp); >> So i think the problem is caused by this optimization. Does this >> ring a >> bell? Debugging this is rather hard, alone the logfile above is 6GB in >> size... > > The problem is a missing > > nullify_set(ctx, 0) > > within this block. > > I have patches queued to reorg the IAQ handling, which I hope will fix > the problem Sven saw with spaces. It would fix this as a consequence > of other unification. But I think it's a bit too big for 9.0. Thanks Richard. Let me know if you want me to test patches.
diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 7546a5f5a2..56c68a7cbe 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -3847,7 +3849,7 @@ static bool trans_be(DisasContext *ctx, arg_be *a) copy_iaoq_entry(ctx, cpu_gr[31], ctx->iaoq_n, ctx->iaoq_n_var); tcg_gen_mov_i64(cpu_sr[0], cpu_iasq_b); } - if (a->n && use_nullify_skip(ctx)) { + if (0 && a->n && use_nullify_skip(ctx)) { copy_iaoq_entry(ctx, cpu_iaoq_f, -1, tmp); tcg_gen_addi_i64(tmp, tmp, 4); copy_iaoq_entry(ctx, cpu_iaoq_b, -1, tmp);