On Sat, Sep 17, 2011 at 3:10 AM, Andreas Schwab <sch...@linux-m68k.org> wrote: > Uros Bizjak <ubiz...@gmail.com> writes: > >> Agreed. Some parets are missing, though: >> >> - unsigned long long tmp = (__X) ^ (__X - 1); >> - return tmp; >> + unsigned long long __tmp = (__X) ^ (__X - 1); >> + return __tmp; > > There is none missing. This is not a macro. >
Here is the updated patch. Tested on Linux/x86-64. OK for trunk? -- H.J. --- 2011-09-17 H.J. Lu <hongjiu...@intel.com> * config/i386/bmiintrin.h: Remove tmp. * config/i386/tbmintrin.h: Likewise.
2011-09-17 H.J. Lu <hongjiu...@intel.com> * config/i386/bmiintrin.h: Remove tmp. * config/i386/tbmintrin.h: Likewise. diff --git a/gcc/config/i386/bmiintrin.h b/gcc/config/i386/bmiintrin.h index af5d9dc..ad17433 100644 --- a/gcc/config/i386/bmiintrin.h +++ b/gcc/config/i386/bmiintrin.h @@ -42,8 +42,7 @@ __tzcnt_u16 (unsigned short __X) extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __andn_u32 (unsigned int __X, unsigned int __Y) { - unsigned int tmp = ~(__X) & (__Y); - return tmp; + return ~__X & __Y; } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -55,22 +54,19 @@ __bextr_u32 (unsigned int __X, unsigned int __Y) extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsi_u32 (unsigned int __X) { - unsigned int tmp = (__X) & (-(__X)); - return tmp; + return __X & -__X; } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsmsk_u32 (unsigned int __X) { - unsigned int tmp = (__X) ^ (__X - 1); - return tmp; + return __X ^ (__X - 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsr_u32 (unsigned int __X) { - unsigned int tmp = (__X) & (__X - 1); - return tmp; + return __X & (__X - 1); } @@ -85,8 +81,7 @@ __tzcnt_u32 (unsigned int __X) extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __andn_u64 (unsigned long long __X, unsigned long long __Y) { - unsigned long long tmp = ~(__X) & (__Y); - return tmp; + return ~__X & __Y; } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -98,22 +93,19 @@ __bextr_u64 (unsigned long long __X, unsigned long long __Y) extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsi_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) & (-(__X)); - return tmp; + return __X & -__X; } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsmsk_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) ^ (__X - 1); - return tmp; + return __X ^ (__X - 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsr_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) & (__X - 1); - return tmp; + return __X & (__X - 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) diff --git a/gcc/config/i386/tbmintrin.h b/gcc/config/i386/tbmintrin.h index 8d2431d..2f87a64 100644 --- a/gcc/config/i386/tbmintrin.h +++ b/gcc/config/i386/tbmintrin.h @@ -47,64 +47,55 @@ __bextri_u32 (unsigned int __X, const unsigned int __I) extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcfill_u32 (unsigned int __X) { - unsigned int tmp = (__X) & ((__X) + 1); - return tmp; + return __X & (__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blci_u32 (unsigned int __X) { - unsigned int tmp = (__X) | (~((__X) + 1)); - return tmp; + return __X | ~(__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcic_u32 (unsigned int __X) { - unsigned int tmp = (~(__X)) & ((__X) + 1); - return tmp; + return ~__X & (__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcmsk_u32 (unsigned int __X) { - unsigned int tmp = (__X) ^ ((__X) + 1); - return tmp; + return __X ^ (__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcs_u32 (unsigned int __X) { - unsigned int tmp = (__X) | ((__X) + 1); - return tmp; + return __X | (__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsfill_u32 (unsigned int __X) { - unsigned int tmp = (__X) | ((__X) - 1); - return tmp; + return __X | (__X - 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsic_u32 (unsigned int __X) { - unsigned int tmp = (~(__X)) | ((__X) - 1); - return tmp; + return ~__X | (__X - 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __t1mskc_u32 (unsigned int __X) { - unsigned int tmp = (~(__X)) | ((__X) + 1); - return tmp; + return ~__X | (__X + 1); } extern __inline unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __tzmsk_u32 (unsigned int __X) { - unsigned int tmp = (~(__X)) & ((__X) - 1); - return tmp; + return ~__X & (__X - 1); } @@ -114,78 +105,68 @@ __tzmsk_u32 (unsigned int __X) extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __bextri_u64 (unsigned long long __X, const unsigned int __I) { - return __builtin_ia32_bextri_u64 (__X, __I); + return __builtin_ia32_bextri_u64 (__X, __I); } #else -#define __bextri_u64(X, I) \ - ((unsigned long long)__builtin_ia32_bextri_u64 ((unsigned long long)(X), \ - (unsigned long long)(I))) +#define __bextri_u64(X, I) \ + ((unsigned long long)__builtin_ia32_bextri_u64 ((unsigned long long)(X), \ + (unsigned long long)(I))) #endif /*__OPTIMIZE__ */ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcfill_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) & ((__X) + 1); - return tmp; + return __X & (__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blci_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) | (~((__X) + 1)); - return tmp; + return __X | ~(__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcic_u64 (unsigned long long __X) { - unsigned long long tmp = (~(__X)) & ((__X) + 1); - return tmp; + return ~__X & (__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcmsk_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) ^ ((__X) + 1); - return tmp; + return __X ^ (__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blcs_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) | ((__X) + 1); - return tmp; + return __X | (__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsfill_u64 (unsigned long long __X) { - unsigned long long tmp = (__X) | ((__X) - 1); - return tmp; + return __X | (__X - 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __blsic_u64 (unsigned long long __X) { - unsigned long long tmp = (~(__X)) | ((__X) - 1); - return tmp; + return ~__X | (__X - 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __t1mskc_u64 (unsigned long long __X) { - unsigned long long tmp = (~(__X)) | ((__X) + 1); - return tmp; + return ~__X | (__X + 1); } extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __tzmsk_u64 (unsigned long long __X) { - unsigned long long tmp = (~(__X)) & ((__X) - 1); - return tmp; + return ~__X & (__X - 1); } #endif /* __x86_64__ */ #endif /* _TBMINTRIN_H_INCLUDED */ -