Exemple #1
0
int foo (unsigned int x, unsigned int y)
{
  if (__builtin_ia32_bextr_u32 (x, y))
    return 1;

  return 0;
}
Exemple #2
0
constexpr T _bextr(T src, T start, T len)
{
    static_assert(binary_digits<T>::value, "");
    constexpr T digits = binary_digits<T>::value;
    T dest = 0;
    if (digits <= std::numeric_limits<unsigned int>::digits) {
        dest = start < digits ? __builtin_ia32_bextr_u32(src, start, len) : 0; 
    } else if (digits <= std::numeric_limits<unsigned long long int>::digits) {
        dest = start < digits ? __builtin_ia32_bextr_u64(src, start, len) : 0;
    } else {
        dest = _bextr(src, std::ignore);
    }
    return dest;
}