2 /* { dg-options "-O3 -fno-inline" } */
3 /* { dg-require-effective-target lp64 } */
4 /* { dg-require-effective-target ppc_cpu_supports_hw } */
6 #define NO_WARN_X86_INTRINSICS 1
10 unsigned calc_bextr_u32 (unsigned src1
, unsigned src2
)
13 unsigned char start
= (src2
& 0xff);
14 unsigned char len
= (int) ((src2
>> 8) & 0xff);
17 unsigned last
= (start
+len
) < 32 ? start
+len
: 32;
20 for (i
=start
; i
<last
; ++i
) {
21 res
|= (src1
& 1) << (i
-start
);
33 unsigned char start
, len
;
34 unsigned src1
= 0xfacec0ff;
35 unsigned res
, res_ref
, src2
;
42 src2
= (start
& 0xff) | ((len
& 0xff) << 8);
44 res_ref
= calc_bextr_u32 (src1
, src2
);
45 res
= _bextr_u32 (src1
, start
, len
);