blob: fdf3bf11c336ef8355b803b376e24364bd6fdb39 [file] [log] [blame]
/* PR c/111309 */
/* { dg-do run } */
/* { dg-options "-O2" } */
__attribute__((noipa)) int
clzc (unsigned char x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzc2 (unsigned char x, int y)
{
return __builtin_clzg (x, y);
}
__attribute__((noipa)) int
clzs (unsigned short x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzs2 (unsigned short x)
{
return __builtin_clzg (x, -2);
}
__attribute__((noipa)) int
clzi (unsigned int x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzi2 (unsigned int x, int y)
{
return __builtin_clzg (x, y);
}
__attribute__((noipa)) int
clzl (unsigned long x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzl2 (unsigned long x)
{
return __builtin_clzg (x, -1);
}
__attribute__((noipa)) int
clzL (unsigned long long x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzL2 (unsigned long long x, int y)
{
return __builtin_clzg (x, y);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
clzI (unsigned __int128 x)
{
return __builtin_clzg (x);
}
__attribute__((noipa)) int
clzI2 (unsigned __int128 x, int y)
{
return __builtin_clzg (x, y);
}
#endif
__attribute__((noipa)) int
ctzc (unsigned char x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzc2 (unsigned char x, int y)
{
return __builtin_ctzg (x, y);
}
__attribute__((noipa)) int
ctzs (unsigned short x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzs2 (unsigned short x, int y)
{
return __builtin_ctzg (x, y);
}
__attribute__((noipa)) int
ctzi (unsigned int x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzi2 (unsigned int x, int y)
{
return __builtin_ctzg (x, y);
}
__attribute__((noipa)) int
ctzl (unsigned long x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzl2 (unsigned long x, int y)
{
return __builtin_ctzg (x, y);
}
__attribute__((noipa)) int
ctzL (unsigned long long x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzL2 (unsigned long long x, int y)
{
return __builtin_ctzg (x, y);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
ctzI (unsigned __int128 x)
{
return __builtin_ctzg (x);
}
__attribute__((noipa)) int
ctzI2 (unsigned __int128 x)
{
return __builtin_ctzg (x, __SIZEOF_INT128__ * __CHAR_BIT__);
}
#endif
__attribute__((noipa)) int
clrsbc (signed char x)
{
return __builtin_clrsbg (x);
}
__attribute__((noipa)) int
clrsbs (signed short x)
{
return __builtin_clrsbg (x);
}
__attribute__((noipa)) int
clrsbi (signed int x)
{
return __builtin_clrsbg (x);
}
__attribute__((noipa)) int
clrsbl (signed long x)
{
return __builtin_clrsbg (x);
}
__attribute__((noipa)) int
clrsbL (signed long long x)
{
return __builtin_clrsbg (x);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
clrsbI (signed __int128 x)
{
return __builtin_clrsbg (x);
}
#endif
__attribute__((noipa)) int
ffsc (signed char x)
{
return __builtin_ffsg (x);
}
__attribute__((noipa)) int
ffss (signed short x)
{
return __builtin_ffsg (x);
}
__attribute__((noipa)) int
ffsi (signed int x)
{
return __builtin_ffsg (x);
}
__attribute__((noipa)) int
ffsl (signed long x)
{
return __builtin_ffsg (x);
}
__attribute__((noipa)) int
ffsL (signed long long x)
{
return __builtin_ffsg (x);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
ffsI (signed __int128 x)
{
return __builtin_ffsg (x);
}
#endif
__attribute__((noipa)) int
parityc (unsigned char x)
{
return __builtin_parityg (x);
}
__attribute__((noipa)) int
paritys (unsigned short x)
{
return __builtin_parityg (x);
}
__attribute__((noipa)) int
parityi (unsigned int x)
{
return __builtin_parityg (x);
}
__attribute__((noipa)) int
parityl (unsigned long x)
{
return __builtin_parityg (x);
}
__attribute__((noipa)) int
parityL (unsigned long long x)
{
return __builtin_parityg (x);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
parityI (unsigned __int128 x)
{
return __builtin_parityg (x);
}
#endif
__attribute__((noipa)) int
popcountc (unsigned char x)
{
return __builtin_popcountg (x);
}
__attribute__((noipa)) int
popcounts (unsigned short x)
{
return __builtin_popcountg (x);
}
__attribute__((noipa)) int
popcounti (unsigned int x)
{
return __builtin_popcountg (x);
}
__attribute__((noipa)) int
popcountl (unsigned long x)
{
return __builtin_popcountg (x);
}
__attribute__((noipa)) int
popcountL (unsigned long long x)
{
return __builtin_popcountg (x);
}
#ifdef __SIZEOF_INT128__
__attribute__((noipa)) int
popcountI (unsigned __int128 x)
{
return __builtin_popcountg (x);
}
#endif
int
main ()
{
if (__builtin_clzg ((unsigned char) 1) != __CHAR_BIT__ - 1
|| __builtin_clzg ((unsigned short) 2, -2) != __SIZEOF_SHORT__ * __CHAR_BIT__ - 2
|| __builtin_clzg (0U, 42) != 42
|| __builtin_clzg (0U, -1) != -1
|| __builtin_clzg (1U) != __SIZEOF_INT__ * __CHAR_BIT__ - 1
|| __builtin_clzg (2UL, -1) != __SIZEOF_LONG__ * __CHAR_BIT__ - 2
|| __builtin_clzg (5ULL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 3
#ifdef __SIZEOF_INT128__
|| __builtin_clzg ((unsigned __int128) 9) != __SIZEOF_INT128__ * __CHAR_BIT__ - 4
#endif
|| __builtin_clzg (~0U, -5) != 0
|| __builtin_clzg (~0ULL >> 2) != 2
|| __builtin_ctzg ((unsigned char) 1) != 0
|| __builtin_ctzg ((unsigned short) 28) != 2
|| __builtin_ctzg (0U, 32) != 32
|| __builtin_ctzg (0U, -42) != -42
|| __builtin_ctzg (1U) != 0
|| __builtin_ctzg (16UL, -1) != 4
|| __builtin_ctzg (5ULL << 52, 0) != 52
#ifdef __SIZEOF_INT128__
|| __builtin_ctzg (((unsigned __int128) 9) << 72) != 72
#endif
|| __builtin_clrsbg ((signed char) 0) != __CHAR_BIT__ - 1
|| __builtin_clrsbg ((signed short) -1) != __SIZEOF_SHORT__ * __CHAR_BIT__ - 1
|| __builtin_clrsbg (0) != __SIZEOF_INT__ * __CHAR_BIT__ - 1
|| __builtin_clrsbg (-1L) != __SIZEOF_LONG__ * __CHAR_BIT__ - 1
|| __builtin_clrsbg (0LL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 1
#ifdef __SIZEOF_INT128__
|| __builtin_clrsbg ((__int128) -1) != __SIZEOF_INT128__ * __CHAR_BIT__ - 1
#endif
|| __builtin_clrsbg (0x1afb) != __SIZEOF_INT__ * __CHAR_BIT__ - 14
|| __builtin_clrsbg (-2) != __SIZEOF_INT__ * __CHAR_BIT__ - 2
|| __builtin_clrsbg (1L) != __SIZEOF_LONG__ * __CHAR_BIT__ - 2
|| __builtin_clrsbg (-4LL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 3
|| __builtin_ffsg ((signed char) 0) != 0
|| __builtin_ffsg ((signed short) 0) != 0
|| __builtin_ffsg (0) != 0
|| __builtin_ffsg (0L) != 0
|| __builtin_ffsg (0LL) != 0
#ifdef __SIZEOF_INT128__
|| __builtin_ffsg ((__int128) 0) != 0
#endif
|| __builtin_ffsg ((signed char) 4) != 3
|| __builtin_ffsg ((signed short) 8) != 4
|| __builtin_ffsg (1) != 1
|| __builtin_ffsg (2L) != 2
|| __builtin_ffsg (28LL) != 3
|| __builtin_parityg ((unsigned char) 1) != 1
|| __builtin_parityg ((unsigned short) 2) != 1
|| __builtin_parityg (0U) != 0
|| __builtin_parityg (3U) != 0
|| __builtin_parityg (0UL) != 0
|| __builtin_parityg (7UL) != 1
|| __builtin_parityg (0ULL) != 0
#ifdef __SIZEOF_INT128__
|| __builtin_parityg ((unsigned __int128) 0) != 0
#endif
|| __builtin_parityg ((unsigned char) ~0U) != 0
|| __builtin_parityg ((unsigned short) ~0U) != 0
|| __builtin_parityg (~0U) != 0
|| __builtin_parityg (~0UL) != 0
|| __builtin_parityg (~0ULL) != 0
#ifdef __SIZEOF_INT128__
|| __builtin_parityg (~(unsigned __int128) 0) != 0
#endif
|| __builtin_popcountg (0U) != 0
|| __builtin_popcountg (0UL) != 0
|| __builtin_popcountg (0ULL) != 0
#ifdef __SIZEOF_INT128__
|| __builtin_popcountg ((unsigned __int128) 0) != 0
#endif
|| __builtin_popcountg ((unsigned char) ~0U) != __CHAR_BIT__
|| __builtin_popcountg ((unsigned short) ~0U) != __SIZEOF_SHORT__ * __CHAR_BIT__
|| __builtin_popcountg (~0U) != __SIZEOF_INT__ * __CHAR_BIT__
|| __builtin_popcountg (~0UL) != __SIZEOF_LONG__ * __CHAR_BIT__
|| __builtin_popcountg (~0ULL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__
#ifdef __SIZEOF_INT128__
|| __builtin_popcountg (~(unsigned __int128) 0) != __SIZEOF_INT128__ * __CHAR_BIT__
#endif
|| 0)
__builtin_abort ();
if (clzc (1) != __CHAR_BIT__ - 1
|| clzs2 (2) != __SIZEOF_SHORT__ * __CHAR_BIT__ - 2
|| clzi2 (0U, 42) != 42
|| clzi2 (0U, -1) != -1
|| clzi (1U) != __SIZEOF_INT__ * __CHAR_BIT__ - 1
|| clzl2 (2UL) != __SIZEOF_LONG__ * __CHAR_BIT__ - 2
|| clzL (5ULL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 3
#ifdef __SIZEOF_INT128__
|| clzI ((unsigned __int128) 9) != __SIZEOF_INT128__ * __CHAR_BIT__ - 4
#endif
|| clzi2 (~0U, -5) != 0
|| clzL (~0ULL >> 2) != 2
|| ctzc (1) != 0
|| ctzs (28) != 2
|| ctzi2 (0U, 32) != 32
|| ctzi2 (0U, -42) != -42
|| ctzi (1U) != 0
|| ctzl2 (16UL, -1) != 4
|| ctzL2 (5ULL << 52, 0) != 52
#ifdef __SIZEOF_INT128__
|| ctzI (((unsigned __int128) 9) << 72) != 72
#endif
|| clrsbc (0) != __CHAR_BIT__ - 1
|| clrsbs (-1) != __SIZEOF_SHORT__ * __CHAR_BIT__ - 1
|| clrsbi (0) != __SIZEOF_INT__ * __CHAR_BIT__ - 1
|| clrsbl (-1L) != __SIZEOF_LONG__ * __CHAR_BIT__ - 1
|| clrsbL (0LL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 1
#ifdef __SIZEOF_INT128__
|| clrsbI (-1) != __SIZEOF_INT128__ * __CHAR_BIT__ - 1
#endif
|| clrsbi (0x1afb) != __SIZEOF_INT__ * __CHAR_BIT__ - 14
|| clrsbi (-2) != __SIZEOF_INT__ * __CHAR_BIT__ - 2
|| clrsbl (1L) != __SIZEOF_LONG__ * __CHAR_BIT__ - 2
|| clrsbL (-4LL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__ - 3
|| ffsc (0) != 0
|| ffss (0) != 0
|| ffsi (0) != 0
|| ffsl (0L) != 0
|| ffsL (0LL) != 0
#ifdef __SIZEOF_INT128__
|| ffsI (0) != 0
#endif
|| ffsc (4) != 3
|| ffss (8) != 4
|| ffsi (1) != 1
|| ffsl (2L) != 2
|| ffsL (28LL) != 3
|| parityc (1) != 1
|| paritys (2) != 1
|| parityi (0U) != 0
|| parityi (3U) != 0
|| parityl (0UL) != 0
|| parityl (7UL) != 1
|| parityL (0ULL) != 0
#ifdef __SIZEOF_INT128__
|| parityI (0) != 0
#endif
|| parityc ((unsigned char) ~0U) != 0
|| paritys ((unsigned short) ~0U) != 0
|| parityi (~0U) != 0
|| parityl (~0UL) != 0
|| parityL (~0ULL) != 0
#ifdef __SIZEOF_INT128__
|| parityI (~(unsigned __int128) 0) != 0
#endif
|| popcounti (0U) != 0
|| popcountl (0UL) != 0
|| popcountL (0ULL) != 0
#ifdef __SIZEOF_INT128__
|| popcountI (0) != 0
#endif
|| popcountc ((unsigned char) ~0U) != __CHAR_BIT__
|| popcounts ((unsigned short) ~0U) != __SIZEOF_SHORT__ * __CHAR_BIT__
|| popcounti (~0U) != __SIZEOF_INT__ * __CHAR_BIT__
|| popcountl (~0UL) != __SIZEOF_LONG__ * __CHAR_BIT__
|| popcountL (~0ULL) != __SIZEOF_LONG_LONG__ * __CHAR_BIT__
#ifdef __SIZEOF_INT128__
|| popcountI (~(unsigned __int128) 0) != __SIZEOF_INT128__ * __CHAR_BIT__
#endif
|| 0)
__builtin_abort ();
}