[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86/bitops: Introduce variable/constant pairs for __{set, clear, change}_bit()



>>> On 11.01.18 at 17:34, <andrew.cooper3@xxxxxxxxxx> wrote:
> Just as with test_bit, the non-atomic set/clear/change helpers can be better
> optimised by the compiler in the case that the nr parameter is constant, and
> it often is.
> 
> This results in a general replacement of `mov $imm, %reg; bt* %reg, mem` with
> the more simple `op $imm, mem`, reducing register pressure.
> 
> The net diffstat is:
>   add/remove: 0/1 grow/shrink: 5/17 up/down: 90/-301 (-211)
> 
> As a piece of minor cleanup, drop unnecessary brackets in the test_bit()
> macro, and fix the indentation.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>

Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

> @@ -291,9 +309,9 @@ static inline int variable_test_bit(int nr, const 
> volatile void *addr)
>  
>  #define test_bit(nr, addr) ({                           \
>      if ( bitop_bad_size(addr) ) __bitop_bad_size();     \
> -    (__builtin_constant_p(nr) ?                         \
> -     constant_test_bit((nr),(addr)) :                   \
> -     variable_test_bit((nr),(addr)));                   \
> +    __builtin_constant_p(nr) ?                          \
> +        constant_test_bit(nr, addr) :                   \
> +        variable_test_bit(nr, addr);                    \
>  })

I appreciate you also doing the cleanup here, yielding a consistent
overall result.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.