From: Florian Krohm Date: Wed, 4 Feb 2026 19:59:41 +0000 (+0000) Subject: s390: Fix s390_irgen_VSTER X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5354aa9035e76e206a3e704549383ac49e1225de;p=thirdparty%2Fvalgrind.git s390: Fix s390_irgen_VSTER M3 == 4 is a reserved value and causes a specification exception. However, disasm-test reports: error: Spec. exc. not detected for E660 0000 400F vster %v6,0,4 Now fixed. --- diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c index e44faea9b..12e0553e6 100644 --- a/VEX/priv/guest_s390_toIR.c +++ b/VEX/priv/guest_s390_toIR.c @@ -17159,7 +17159,7 @@ s390_irgen_VSTER(UChar v1, IRTemp op2addr, UChar m3) return; } - s390_insn_assert(m3 >= 1 && m3 <= 4); + s390_insn_assert(m3 >= 1 && m3 <= 3); store(mkexpr(op2addr), s390_reverse_elements(get_vr_qw(v1), m3)); } diff --git a/none/tests/s390x/disasm-test/disasm-test.post.exp b/none/tests/s390x/disasm-test/disasm-test.post.exp index 51ae053ed..46f297e60 100644 --- a/none/tests/s390x/disasm-test/disasm-test.post.exp +++ b/none/tests/s390x/disasm-test/disasm-test.post.exp @@ -1,6 +1,6 @@ Looking for missed specification exceptions -Total: 42131 tests generated -Total: 42131 specification exceptions +Total: 42339 tests generated +Total: 42339 specification exceptions Looking for unexpected specification exceptions -Total: 153653 tests generated +Total: 153701 tests generated Total: 0 specification exceptions diff --git a/none/tests/s390x/disasm-test/disasm-test.vgtest b/none/tests/s390x/disasm-test/disasm-test.vgtest index 5fdf13266..f585700b6 100644 --- a/none/tests/s390x/disasm-test/disasm-test.vgtest +++ b/none/tests/s390x/disasm-test/disasm-test.vgtest @@ -15,11 +15,10 @@ # srnmb - The compile-time checkable constraint cannot be expressed in opcode.c # But the s390_insn_assert is wrong nevertheless because bits [0:55] are ignored. # Need to mask d2 before checking (d2 & 0xff) -# vster - should be s390_insn_assert(m3 >= 1 && m3 <= 3); // 3 not 4 prereq: ./disasm-test --check-march=arch14 prog: /bin/true -post: ./disasm-test --gcc-flags=-march=arch14 --all --exclude exrl kma vmsl vgef vgeg vscef vsceg vstef srnmb vster --summary +post: ./disasm-test --gcc-flags=-march=arch14 --all --exclude exrl kma vmsl vgef vgeg vscef vsceg vstef srnmb --summary vgopts: -q stderr_filter: stderrB_filter: