1 /* { dg-do run { target { bmi2 } } } */
2 /* { dg-options "-mbmi2 -O2 -dp" } */
4 #include "bmi2-check.h"
6 __attribute__((noinline
))
8 calc_rorx_u32 (unsigned a
, int l
)
10 unsigned volatile res
= a
;
12 for (i
= 0; i
< l
; ++i
)
13 res
= (res
>> 1) | ((res
& 1) << 31);
18 #define SHIFT_VAL 0x0e
24 unsigned src
= 0xce7ace0;
25 unsigned res
, res_ref
;
27 for (i
= 0; i
< 5; ++i
) {
30 res_ref
= calc_rorx_u32 (src
, SHIFT_VAL
);
31 res
= (src
>> SHIFT_VAL
) | (src
<< (32 - SHIFT_VAL
));