/* 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 } } } */