URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 297 |
Rev 338 |
/* Copyright (C) 2004 Free Software Foundation.
|
/* Copyright (C) 2004 Free Software Foundation.
|
|
|
Check that constant folding and RTL simplification of -(x >> y) doesn't
|
Check that constant folding and RTL simplification of -(x >> y) doesn't
|
break anything and produces the expected results.
|
break anything and produces the expected results.
|
|
|
Written by Roger Sayle, 11th March 2004. */
|
Written by Roger Sayle, 11th March 2004. */
|
|
|
extern void abort (void);
|
extern void abort (void);
|
|
|
#define INT_BITS (sizeof(int)*8)
|
#define INT_BITS (sizeof(int)*8)
|
|
|
int test1(int x)
|
int test1(int x)
|
{
|
{
|
return -(x >> (INT_BITS-1));
|
return -(x >> (INT_BITS-1));
|
}
|
}
|
|
|
int test2(unsigned int x)
|
int test2(unsigned int x)
|
{
|
{
|
return -((int)(x >> (INT_BITS-1)));
|
return -((int)(x >> (INT_BITS-1)));
|
}
|
}
|
|
|
int test3(int x)
|
int test3(int x)
|
{
|
{
|
int y;
|
int y;
|
y = INT_BITS-1;
|
y = INT_BITS-1;
|
return -(x >> y);
|
return -(x >> y);
|
}
|
}
|
|
|
int test4(unsigned int x)
|
int test4(unsigned int x)
|
{
|
{
|
int y;
|
int y;
|
y = INT_BITS-1;
|
y = INT_BITS-1;
|
return -((int)(x >> y));
|
return -((int)(x >> y));
|
}
|
}
|
|
|
int main()
|
int main()
|
{
|
{
|
if (test1(0) != 0)
|
if (test1(0) != 0)
|
abort ();
|
abort ();
|
if (test1(1) != 0)
|
if (test1(1) != 0)
|
abort ();
|
abort ();
|
if (test1(-1) != 1)
|
if (test1(-1) != 1)
|
abort ();
|
abort ();
|
|
|
if (test2(0) != 0)
|
if (test2(0) != 0)
|
abort ();
|
abort ();
|
if (test2(1) != 0)
|
if (test2(1) != 0)
|
abort ();
|
abort ();
|
if (test2((unsigned int)-1) != -1)
|
if (test2((unsigned int)-1) != -1)
|
abort ();
|
abort ();
|
|
|
if (test3(0) != 0)
|
if (test3(0) != 0)
|
abort ();
|
abort ();
|
if (test3(1) != 0)
|
if (test3(1) != 0)
|
abort ();
|
abort ();
|
if (test3(-1) != 1)
|
if (test3(-1) != 1)
|
abort ();
|
abort ();
|
|
|
if (test4(0) != 0)
|
if (test4(0) != 0)
|
abort ();
|
abort ();
|
if (test4(1) != 0)
|
if (test4(1) != 0)
|
abort ();
|
abort ();
|
if (test4((unsigned int)-1) != -1)
|
if (test4((unsigned int)-1) != -1)
|
abort ();
|
abort ();
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.