2 /* { dg-options "-O2 -fno-inline --save-temps" } */
4 extern void abort (void);
6 typedef long long s64int
;
8 typedef unsigned long long u64int
;
9 typedef unsigned int u32int
;
12 anddi_di_notdi (s64int a
, s64int b
)
18 anddi_di_notzesidi (s64int a
, u32int b
)
20 return (a
& ~(u64int
) b
);
24 anddi_notdi_zesidi (s64int a
, u32int b
)
26 return (~a
& (u64int
) b
);
30 anddi_di_notsesidi (s64int a
, s32int b
)
32 return (a
& ~(s64int
) b
);
37 s64int a64
= 0xdeadbeef0000ffffll
;
38 s64int b64
= 0x000000005f470112ll
;
39 s64int c64
= 0xdeadbeef300f0000ll
;
41 u32int c32
= 0x01124f4f;
42 s32int d32
= 0xabbaface;
44 s64int z
= anddi_di_notdi (c64
, b64
);
45 if (z
!= 0xdeadbeef20080000ll
)
48 z
= anddi_di_notzesidi (a64
, c32
);
49 if (z
!= 0xdeadbeef0000b0b0ll
)
52 z
= anddi_notdi_zesidi (c64
, c32
);
53 if (z
!= 0x0000000001104f4fll
)
56 z
= anddi_di_notsesidi (a64
, d32
);
57 if (z
!= 0x0000000000000531ll
)
63 /* { dg-final { scan-assembler-times "bics\t" 6 { target arm_thumb1 } } } */
64 /* { dg-final { scan-assembler-times "bic\t" 6 { target { ! arm_thumb1 } } } } */