blob: 516e5a86102e40a08059ccfc31572bea814b29a8 [file] [log] [blame]
/* Functional test for DI left shift. */
/* { dg-do run } */
/* { dg-options "-pedantic-errors" } */
#include <stddef.h>
#include <stdint.h>
extern void abort (void);
uint64_t __attribute__((noinline)) ashift_1 (uint64_t a)
{
return a << 1;
}
uint64_t __attribute__((noinline)) ashift_10 (uint64_t a)
{
return a << 10;
}
uint64_t __attribute__((noinline)) ashift_32 (uint64_t a)
{
return a << 32;
}
uint64_t __attribute__((noinline)) ashift_36 (uint64_t a)
{
return a << 36;
}
int
main (int argc, char** argv)
{
if (ashift_1 (0xaaaa5555aaaa5555ull) != 0x5554aaab5554aaaaull)
abort();
if (ashift_10 (0xaaaa5555aaaa5555ull) != 0xa95556aaa9555400ull)
abort();
if (ashift_32 (0xaaaa5555aaaa5555ull) != 0xaaaa555500000000ull)
abort();
if (ashift_36 (0xaaaa5555aaaa5555ull) != 0xaaa5555000000000ull)
abort();
if (ashift_1 (0x1234567822334455ull) != 0x2468acf0446688aaull)
abort();
if (ashift_10 (0x1234567822334455ull) != 0xd159e088cd115400ull)
abort();
if (ashift_32 (0x1234567822334455ull) != 0x2233445500000000ull)
abort();
if (ashift_36 (0x1234567822334455ull) != 0x2334455000000000ull)
abort();
return 0;
}