blob: 0b77824da45734c56444f9dd454983690eedb5fd [file] [log] [blame]
/* PR target/100056 */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not {\t[us]bfiz\tw[0-9]+, w[0-9]+, 11} } } */
int
or_shift_u8 (unsigned char i)
{
return i | (i << 11);
}
int
or_shift_u3a (unsigned i)
{
i &= 7;
return i | (i << 11);
}
int
or_shift_u3b (unsigned i)
{
i = (i << 29) >> 29;
return i | (i << 11);
}
int
or_shift_s16 (signed short i)
{
return i | (i << 11);
}
int
or_shift_s8 (signed char i)
{
return i | (i << 11);
}
int
or_shift_s13 (int i)
{
i = (i << 19) >> 19;
return i | (i << 11);
}
int
or_shift_s3 (int i)
{
i = (i << 29) >> 29;
return i | (i << 11);
}
int
or_shift_u8_asm (unsigned char x)
{
unsigned char i = x;
asm volatile ("" : "+r" (i));
return i | (i << 11);
}