blob: a6045166b577b5ef8272d78fd96751416ac4d530 [file] [log] [blame]
/* { dg-do assemble } */
/* { dg-options "-O2 -save-temps -misa=sm_35" } */
#define MASK 0x1f
unsigned int
rotl (unsigned int val, unsigned int cnt) {
cnt &= MASK;
return (val << cnt) | (val >> (-cnt & MASK));
}
unsigned int
rotr (unsigned int val, unsigned int cnt) {
cnt &= MASK;
return (val >> cnt) | (val << (-cnt & MASK));
}
/* { dg-final { scan-assembler-times "shf.l.wrap.b32" 1 } } */
/* { dg-final { scan-assembler-times "shf.r.wrap.b32" 1 } } */
/* { dg-final { scan-assembler-not "and.b32" } } */