diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c index ebdd0743cfa143bacab9cb3b802cb88d2eb4a04b..0f972ae5df7bf1fd7e4e95bc14f0b9a7966686db 100644 --- a/tcg/s390/tcg-target.c +++ b/tcg/s390/tcg-target.c @@ -983,8 +983,8 @@ static void tgen_andi(TCGContext *s, TCGType type, TCGReg dest, uint64_t val) int msb, lsb; if ((val & 0x8000000000000001ull) == 0x8000000000000001ull) { /* Achieve wraparound by swapping msb and lsb. */ - msb = 63 - ctz64(~val); - lsb = clz64(~val) + 1; + msb = 64 - ctz64(~val); + lsb = clz64(~val) - 1; } else { msb = clz64(val); lsb = 63 - ctz64(val);