tcg/arm: Tighten tlb indexing offset test
authorRichard Henderson <rth@twiddle.net>
Thu, 27 Jul 2017 20:26:33 +0000 (13:26 -0700)
committerRichard Henderson <rth@twiddle.net>
Thu, 7 Sep 2017 18:57:35 +0000 (11:57 -0700)
We are not going to use ldrd for loading the comparator
for 32-bit guests, so don't limit cmp_off to 8 bits then.
This eliminates one insn in the tlb load for some guests.

Signed-off-by: Richard Henderson <rth@twiddle.net>
tcg/arm/tcg-target.inc.c

index 66c369c239ac4b4647e79f55d0b77a853703d9ec..6c12b169cec31582c096f285375188190dfe3f23 100644 (file)
@@ -1202,7 +1202,9 @@ static TCGReg tcg_out_tlb_read(TCGContext *s, TCGReg addrlo, TCGReg addrhi,
     }
 
     /* We checked that the offset is contained within 16 bits above.  */
-    if (add_off > 0xfff || (use_armv6_instructions && cmp_off > 0xff)) {
+    if (add_off > 0xfff
+        || (use_armv6_instructions && TARGET_LONG_BITS == 64
+            && cmp_off > 0xff)) {
         tcg_out_dat_imm(s, COND_AL, ARITH_ADD, TCG_REG_R2, base,
                         (24 << 7) | (cmp_off >> 8));
         base = TCG_REG_R2;