[PATCH] powerpc: Remove uses of operand modifier (%s) in inline asm

Tulio Magno Quites Machado Filho tuliom@linux.vnet.ibm.com
Tue Mar 8 18:36:00 GMT 2016


"Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com> writes:

> Subject: [PATCH] powerpc: Remove uses of operand modifier (%s) in inline asm
>
> The operand modifier %s on powerpc is an undocumented internal implementation
> detail of GCC.  Besides that, the GCC community wants to remove it.  This patch
> rewrites the expressions that use this modifier with logically equivalent
> expressions that don't require it.
>
> Explanation for the substitution:
>
> The %s modifier takes an immediate operand and prints 32 less such immediate.
> Thus, in the previous code, the expression resulted in:
>
>   32 - __builtin_ffs(e)
>
> where e was guaranteed to have exactly a single bit set, by the following
> expressions:
>
>   (e & (e-1) == 0) : e has at most one bit set.
>   (e != 0)         : e is not zero, thus it has at least one bit set.
>
> Since we guarantee that there is exactly only one bit set, the following
> statement is true:
>
>   32 - __builtin_ffs(e) == __builtin_clz(e)
>
> Thus, we can replace __builtin_ffs with __builtin_clz and remove the %s operand
> modifier.

Pushed as 183a34d.

Thanks!

-- 
Tulio Magno



More information about the Libc-alpha mailing list