valgrind/0001-Bug-399444-s390x-Drop-unnecessary-check-in-s390_irge.patch

43 lines
1.3 KiB
Diff
Raw Normal View History

From ca2f73592e8e74a5328df0a65e0831bc1fc6dd28 Mon Sep 17 00:00:00 2001
From: Andreas Arnez <arnez@linux.ibm.com>
Date: Tue, 9 Oct 2018 11:22:27 +0200
Subject: [PATCH] Bug 399444 s390x: Drop unnecessary check in s390_irgen_VSLDB
In s390_irgen_VSLDB there was special handling for the case that the
immediate operand i4 has the value 16, which would mean that the result v1
were a full copy of the third operand v3. However, this is impossible
because i4 can only assume values from 0 to 15; thus the special handling
can be removed.
---
VEX/priv/guest_s390_toIR.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/VEX/priv/guest_s390_toIR.c b/VEX/priv/guest_s390_toIR.c
index c594ad51b..60b608138 100644
--- a/VEX/priv/guest_s390_toIR.c
+++ b/VEX/priv/guest_s390_toIR.c
@@ -17400,16 +17400,11 @@ s390_irgen_VSLDB(UChar v1, UChar v2, UChar v3, UChar i4)
{
UChar imm = i4 & 0b00001111;
- if (imm == 0)
- {
+ if (imm == 0) {
+ /* Just copy v2. */
put_vr_qw(v1, get_vr_qw(v2));
- }
- else if (imm == 16)
- {
- put_vr_qw(v1, get_vr_qw(v3));
- }
- else
- {
+ } else {
+ /* Concatenate v2's tail with v3's head. */
put_vr_qw(v1,
binop(Iop_OrV128,
binop(Iop_ShlV128, get_vr_qw(v2), mkU8(imm * 8)),
--
2.20.1