diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/pr82580.c')
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr82580.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr82580.c b/gcc/testsuite/gcc.target/i386/pr82580.c new file mode 100644 index 00000000000..965dfeec28d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr82580.c @@ -0,0 +1,39 @@ +/* PR target/82580 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +#ifdef __SIZEOF_INT128__ +typedef unsigned __int128 U; +typedef signed __int128 S; +#else +typedef unsigned long long U; +typedef signed long long S; +#endif +void bar (void); +int f0 (U x, U y) { return x == y; } +int f1 (U x, U y) { return x != y; } +int f2 (U x, U y) { return x > y; } +int f3 (U x, U y) { return x >= y; } +int f4 (U x, U y) { return x < y; } +int f5 (U x, U y) { return x <= y; } +int f6 (S x, S y) { return x == y; } +int f7 (S x, S y) { return x != y; } +int f8 (S x, S y) { return x > y; } +int f9 (S x, S y) { return x >= y; } +int f10 (S x, S y) { return x < y; } +int f11 (S x, S y) { return x <= y; } +void f12 (U x, U y) { if (x == y) bar (); } +void f13 (U x, U y) { if (x != y) bar (); } +void f14 (U x, U y) { if (x > y) bar (); } +void f15 (U x, U y) { if (x >= y) bar (); } +void f16 (U x, U y) { if (x < y) bar (); } +void f17 (U x, U y) { if (x <= y) bar (); } +void f18 (S x, S y) { if (x == y) bar (); } +void f19 (S x, S y) { if (x != y) bar (); } +void f20 (S x, S y) { if (x > y) bar (); } +void f21 (S x, S y) { if (x >= y) bar (); } +void f22 (S x, S y) { if (x < y) bar (); } +void f23 (S x, S y) { if (x <= y) bar (); } + +/* { dg-final { scan-assembler-times {\msbb} 16 } } */ +/* { dg-final { scan-assembler-not {\mmovzb} { target lp64 } } } */ |