blob: 3eb700ad267c4c3bdbaf01fc89643fc03bb104e3 [file] [log] [blame]
/* Check that the rotcr instruction is generated. */
/* { dg-do compile } */
/* { dg-options "-O1" } */
/* { dg-skip-if "" { "sh*-*-*" } { "-m5*"} { "" } } */
/* { dg-final { scan-assembler-times "rotcr" 24 } } */
/* { dg-final { scan-assembler-times "shll\t" 1 } } */
typedef char bool;
long long
test_00 (long long a)
{
return a >> 1;
}
unsigned int
test_01 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 1) | (r << 31));
}
unsigned int
test_02 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 2) | (r << 31));
}
unsigned int
test_03 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 3) | (r << 31));
}
unsigned int
test_04 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 4) | (r << 31));
}
unsigned int
test_05 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 5) | (r << 31));
}
unsigned int
test_06 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 6) | (r << 31));
}
unsigned int
test_07 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 7) | (r << 31));
}
unsigned int
test_08 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 8) | (r << 31));
}
unsigned int
test_09 (unsigned int a, int b, int c)
{
bool r = b == c;
return ((a >> 31) | (r << 31));
}
int
test_10 (int a, int b)
{
bool r = a == b;
return r << 31;
}
unsigned int
test_11 (unsigned int a, int b)
{
/* 1x shlr, 1x rotcr */
return (a >> 1) | (b << 31);
}
unsigned int
test_12 (unsigned int a, int b)
{
return (a >> 2) | (b << 31);
}
unsigned int
test_13 (unsigned int a, int b)
{
return (a >> 3) | (b << 31);
}
unsigned int
test_14 (unsigned int a, int b)
{
/* 1x shll, 1x rotcr */
bool r = b < 0;
return ((a >> 1) | (r << 31));
}
unsigned int
test_15 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 1) | (r << 31));
}
unsigned int
test_16 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 2) | (r << 31));
}
unsigned int
test_17 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 3) | (r << 31));
}
unsigned int
test_18 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 4) | (r << 31));
}
unsigned int
test_19 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 5) | (r << 31));
}
unsigned int
test_20 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 6) | (r << 31));
}
unsigned int
test_21 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 7) | (r << 31));
}
unsigned int
test_22 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 8) | (r << 31));
}
unsigned int
test_23 (unsigned int a, int b, int c)
{
bool r = b != c;
return ((a >> 31) | (r << 31));
}