mbox series

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

Message ID 20230308210226.2847503-1-nsg@linux.ibm.com (mailing list archive)
Headers show
Series target/s390x: Fix emulation of C(G)HRL | expand

Message

Nina Schoetterl-Glausch March 8, 2023, 9:02 p.m. UTC
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