[PATCH v2 0/2] target/s390x: Fix emulation of C(G)HRL

Nina Schoetterl-Glausch posted 2 patches 1 year, 1 month ago
There is a newer version of this series
target/s390x/tcg/insn-data.h.inc |  4 +-
target/s390x/tcg/translate.c     |  7 +++
tests/tcg/s390x/chrl.c           | 76 ++++++++++++++++++++++++++++++++
tests/tcg/s390x/Makefile.target  |  1 +
4 files changed, 86 insertions(+), 2 deletions(-)
create mode 100644 tests/tcg/s390x/chrl.c
[PATCH v2 0/2] target/s390x: Fix emulation of C(G)HRL
Posted by Nina Schoetterl-Glausch 1 year, 1 month ago
The second operand of COMPARE HALFWORD RELATIVE LONG is a signed
halfword, it does not have the same size as the first operand.
Fix this and add a tcg test for c(g)hrl.

Nina Schoetterl-Glausch (2):
  target/s390x: Fix emulation of C(G)HRL
  tests/tcg/s390x: Add C(G)HRL test

 target/s390x/tcg/insn-data.h.inc |  4 +-
 target/s390x/tcg/translate.c     |  7 +++
 tests/tcg/s390x/chrl.c           | 76 ++++++++++++++++++++++++++++++++
 tests/tcg/s390x/Makefile.target  |  1 +
 4 files changed, 86 insertions(+), 2 deletions(-)
 create mode 100644 tests/tcg/s390x/chrl.c

Range-diff against v1:
1:  f463507b25 ! 1:  228a1d9cfb target/s390x: Fix emulation of C(G)HRL
    @@ target/s390x/tcg/translate.c: static void in2_m2_64a(DisasContext *s, DisasOps *
      
     +static void in2_mri2_16s(DisasContext *s, DisasOps *o)
     +{
    -+    in2_ri2(s, o);
    -+    tcg_gen_qemu_ld16s(o->in2, o->in2, get_mem_index(s));
    ++    o->in2 = tcg_temp_new_i64();
    ++    tcg_gen_qemu_ld16s(o->in2, gen_ri2(s), get_mem_index(s));
     +}
     +#define SPEC_in2_mri2_16s 0
     +
      static void in2_mri2_16u(DisasContext *s, DisasOps *o)
      {
    -     in2_ri2(s, o);
    +     o->in2 = tcg_temp_new_i64();
2:  316b53ebd9 = 2:  3b1ca6b682 tests/tcg/s390x: Add C(G)HRL test

base-commit: 817fd33836e73812df2f1907612b57750fcb9491
-- 
2.37.2