blob: 2f5698fc685fa0ad5dd2fc2bd423fea9e96ec8f2 [file] [log] [blame]
/* { dg-options "-I ${srcdir}/../../more-hdrs -Wshorten-64-to-32 -Wno-long-long" } */
/* { dg-do run { target "powerpc*-*-darwin*" } } */
#include "ppc_intrinsics.h"
#include <stdlib.h>
int main( void )
{
int intconst = 0x5;
long long longlongconst = 0x5;
int intloc, intloc1, intloc2;
unsigned int uintloc, uintloc1, uintloc2;
long longloc;
long long longlongloc;
int fails = 0;
intloc = __cntlzw(intconst);
if (intloc != 29)
++fails;
longlongloc = __cntlzd(longlongconst);
if (longlongloc != 61)
++fails;
intloc = 0xffff;
__rlwimi(intloc, 0x21876543, 8, 0, 23);
if (intloc != 0x876543ff)
++fails;
intloc = __rlwinm(0x21876543, 8, 0, 31);
if (intloc != 0x87654321)
++fails;
longloc = __rlwinm(0x45, 5, 24, 31);
if (longloc != 0xa0)
++fails;
longloc = __rlwnm(0x47, 5, 24, 31);
if (longloc != 0xe0)
++fails;
intloc1 = 1 << 20;
intloc2 = 1 << 21;
intloc = __mulhw (intloc1, intloc2);
if (intloc != (1 << 9))
++fails;
intloc1 = 0xfffe0000;
intloc2 = 0xfffc0000;
intloc = __mulhw (intloc1, intloc2);
if (intloc != 8)
++fails;
uintloc1 = 0xffffffff;
uintloc2 = 0xfffffffe;
uintloc = __mulhwu (uintloc1, uintloc2);
if (uintloc != 0xfffffffd)
++fails;
uintloc1 = 0xfffe0000;
uintloc2 = 0xfffc0000;
uintloc = __mulhwu (uintloc1, uintloc2);
if (uintloc != 0xfffa0008)
++fails;
return fails;
}