|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 040/114] target/riscv: replace leftover TARGET_LONG_BITS
- Use target_long_bits() in bitmanip clmul/clmulr/xperm loops and in
the m128 signed-div overflow check.
- Compare xperm element positions to target_long_bits() instead of
sizeof(target_ulong), which is always 8 in common-system.
- Leave translate.c and insn_trans TARGET_LONG_BITS for riscv-tcg-tl.
Signed-off-by: Yonggang Luo <luoyonggang@xxxxxxxxx>
---
target/riscv/tcg/bitmanip_helper.c | 10 +++++-----
target/riscv/tcg/m128_helper.c | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/target/riscv/tcg/bitmanip_helper.c
b/target/riscv/tcg/bitmanip_helper.c
index 5af3efe194d..db226146054 100644
--- a/target/riscv/tcg/bitmanip_helper.c
+++ b/target/riscv/tcg/bitmanip_helper.c
@@ -30,7 +30,7 @@ target_ulong HELPER(clmul)(target_ulong rs1, target_ulong rs2)
{
target_ulong result = 0;
- for (int i = 0; i < TARGET_LONG_BITS; i++) {
+ for (int i = 0; i < target_long_bits(); i++) {
if ((rs2 >> i) & 1) {
result ^= (rs1 << i);
}
@@ -43,9 +43,9 @@ target_ulong HELPER(clmulr)(target_ulong rs1, target_ulong
rs2)
{
target_ulong result = 0;
- for (int i = 0; i < TARGET_LONG_BITS; i++) {
+ for (int i = 0; i < target_long_bits(); i++) {
if ((rs2 >> i) & 1) {
- result ^= (rs1 >> (TARGET_LONG_BITS - i - 1));
+ result ^= (rs1 >> (target_long_bits() - i - 1));
}
}
@@ -98,9 +98,9 @@ static inline target_ulong do_xperm(target_ulong rs1,
target_ulong rs2,
target_ulong mask = (1LL << sz) - 1;
target_ulong pos;
- for (int i = 0; i < TARGET_LONG_BITS; i += sz) {
+ for (int i = 0; i < target_long_bits(); i += sz) {
pos = ((rs2 >> i) & mask) << sz_log2;
- if (pos < sizeof(target_ulong) * 8) {
+ if (pos < target_long_bits()) {
r |= ((rs1 >> pos) & mask) << i;
}
}
diff --git a/target/riscv/tcg/m128_helper.c b/target/riscv/tcg/m128_helper.c
index 7d9b83b1b2c..e59a1ffd7a7 100644
--- a/target/riscv/tcg/m128_helper.c
+++ b/target/riscv/tcg/m128_helper.c
@@ -71,7 +71,7 @@ target_ulong HELPER(divs_i128)(CPURISCVState *env,
if (vl == 0 && vh == 0) { /* Div by zero check */
ql = ~0x0;
qh = ~0x0;
- } else if (uh == (1ULL << (TARGET_LONG_BITS - 1)) && ul == 0 &&
+ } else if (uh == (1ULL << (target_long_bits() - 1)) && ul == 0 &&
vh == ~0x0 && vl == ~0x0) {
/* Signed div overflow check (-2**127 / -1) */
ql = ul;
--
2.52.0.windows.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |