URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 154 |
Rev 816 |
/* Duff's device is legal C; test to make sure the compiler
|
/* Duff's device is legal C; test to make sure the compiler
|
doesn't complain about it.
|
doesn't complain about it.
|
|
|
Roger Sayle <roger@eyesopen.com>
|
Roger Sayle <roger@eyesopen.com>
|
Derived from duff-2.c. */
|
Derived from duff-2.c. */
|
|
|
/* { dg-do run } */
|
/* { dg-do run } */
|
/* { dg-options "-O2" } */
|
/* { dg-options "-O2" } */
|
|
|
extern void abort (void);
|
extern void abort (void);
|
extern void exit (int);
|
extern void exit (int);
|
|
|
#if __INT_MAX__ >= 2147483647
|
#if __INT_MAX__ >= 2147483647
|
/* At least 32-bit integers. */
|
/* At least 32-bit integers. */
|
typedef int type32;
|
typedef int type32;
|
#else
|
#else
|
typedef long type32;
|
typedef long type32;
|
#endif
|
#endif
|
|
|
type32
|
type32
|
cksum (const unsigned char *src, unsigned long size)
|
cksum (const unsigned char *src, unsigned long size)
|
{
|
{
|
type32 ck = 0;
|
type32 ck = 0;
|
|
|
switch (size & 3)
|
switch (size & 3)
|
{
|
{
|
do
|
do
|
{
|
{
|
case 0:
|
case 0:
|
ck ^= (type32)*src++ << 24;
|
ck ^= (type32)*src++ << 24;
|
--size;
|
--size;
|
case 3:
|
case 3:
|
ck ^= (type32)*src++ << 16;
|
ck ^= (type32)*src++ << 16;
|
--size;
|
--size;
|
case 2:
|
case 2:
|
ck ^= (type32)*src++ << 8;
|
ck ^= (type32)*src++ << 8;
|
--size;
|
--size;
|
case 1:
|
case 1:
|
ck ^= (type32)*src++;
|
ck ^= (type32)*src++;
|
--size;
|
--size;
|
}
|
}
|
while (size > 0);
|
while (size > 0);
|
}
|
}
|
|
|
return ck;
|
return ck;
|
}
|
}
|
|
|
const char testpat[] = "The quick brown fox jumped over the lazy dog.";
|
const char testpat[] = "The quick brown fox jumped over the lazy dog.";
|
|
|
int
|
int
|
main()
|
main()
|
{
|
{
|
type32 ck;
|
type32 ck;
|
|
|
ck = cksum ((const unsigned char *) testpat, sizeof (testpat));
|
ck = cksum ((const unsigned char *) testpat, sizeof (testpat));
|
if (ck != 925902908)
|
if (ck != 925902908)
|
abort ();
|
abort ();
|
|
|
exit (0);
|
exit (0);
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.