[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 7/9] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW INDICATION
From: |
Cornelia Huck |
Subject: |
[PULL 7/9] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW INDICATION |
Date: |
Tue, 22 Oct 2019 11:54:26 +0200 |
From: David Hildenbrand <address@hidden>
Testing this, there seems to be something messed up. We are dealing with
unsigned numbers. "Each operand is treated as an unsigned binary integer."
Let's just implement as written in the PoP:
"A subtraction is performed by adding the contents of
the second operand with the bitwise complement of
the third operand along with a borrow indication from
the rightmost bit position of the fourth operand and
the result is placed in the first operand."
We can reuse gen_ac2_i64().
Fixes: 48390a7c2716 ("s390x/tcg: Implement VECTOR SUBTRACT WITH BORROW
INDICATION")
Signed-off-by: David Hildenbrand <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
target/s390x/translate_vx.inc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.inc.c
index 6032021d82e7..fd746ba35fb6 100644
--- a/target/s390x/translate_vx.inc.c
+++ b/target/s390x/translate_vx.inc.c
@@ -2187,13 +2187,13 @@ static void gen_sbi2_i64(TCGv_i64 dl, TCGv_i64 dh,
TCGv_i64 al, TCGv_i64 ah,
TCGv_i64 bl, TCGv_i64 bh, TCGv_i64 cl, TCGv_i64 ch)
{
TCGv_i64 tl = tcg_temp_new_i64();
- TCGv_i64 zero = tcg_const_i64(0);
+ TCGv_i64 th = tcg_temp_new_i64();
- tcg_gen_andi_i64(tl, cl, 1);
- tcg_gen_sub2_i64(dl, dh, al, ah, bl, bh);
- tcg_gen_sub2_i64(dl, dh, dl, dh, tl, zero);
+ tcg_gen_not_i64(tl, bl);
+ tcg_gen_not_i64(th, bh);
+ gen_ac2_i64(dl, dh, al, ah, tl, th, cl, ch);
tcg_temp_free_i64(tl);
- tcg_temp_free_i64(zero);
+ tcg_temp_free_i64(th);
}
static DisasJumpType op_vsbi(DisasContext *s, DisasOps *o)
--
2.21.0
- [PULL 0/9] more s390x fixes, Cornelia Huck, 2019/10/22
- [PULL 1/9] s390x/cpumodel: Add missing visit_free, Cornelia Huck, 2019/10/22
- [PULL 2/9] s390x/mmu: Remove duplicate check for MMU_DATA_STORE, Cornelia Huck, 2019/10/22
- [PULL 3/9] s390x/tcg: Fix VECTOR MULTIPLY LOGICAL ODD, Cornelia Huck, 2019/10/22
- [PULL 4/9] s390x/tcg: Fix VECTOR MULTIPLY AND ADD *, Cornelia Huck, 2019/10/22
- [PULL 5/9] s390x/tcg: Fix VECTOR SHIFT RIGHT ARITHMETIC BY BYTE, Cornelia Huck, 2019/10/22
- [PULL 6/9] s390x/tcg: Fix VECTOR SUBTRACT COMPUTE BORROW INDICATION, Cornelia Huck, 2019/10/22
- [PULL 7/9] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW INDICATION,
Cornelia Huck <=
- [PULL 8/9] s390x/tcg: Fix VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION, Cornelia Huck, 2019/10/22
- [PULL 9/9] s390x/kvm: Set default cpu model for all machine classes, Cornelia Huck, 2019/10/22
- Re: [PULL 0/9] more s390x fixes, Peter Maydell, 2019/10/22