On 9/23/19 8:52 AM, Richard Henderson wrote: > On 9/23/19 3:02 AM, Paolo Bonzini wrote: >> On 23/09/19 11:54, David Hildenbrand wrote: >>> On 23.09.19 11:51, Paolo Bonzini wrote: >>>> that includes the switches? Everything should be inlined just the same >>>> if you do >>>> >>>> if (unlikely(tlb_addr & TLB_BSWAP)) { >>>> st_memop(haddr, op ^ MO_BSWAP, val); >>>> } else { >>>> st_memop(haddr, op, val); >>>> } >>> >>> I asked the same question on v2 and Richard explained that - for >>> whatever reason - the compiler will not properly propagate the constant >>> in the "op ^ MO_BSWAP" case. >> >> Even if ld_memop and st_memop are __always_inline__? > > I'm not sure I tried __always_inline__. I can, if you like.
FWIW, that works. Since two of you have now asked about this, I'll change the patch. r~