This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[cond-optab] Add tests for conditional operations


I'm adding the attached files to GCC's testsuite.

Paolo

2009-04-07  Paolo Bonzini  <bonzini@gnu.org>

	* gcc.c-torture/compile/test-cond-fp1.c: New.
	* gcc.c-torture/compile/test-cond-fp2.c: New.
	* gcc.c-torture/compile/test-cond-int.c: New.
	* gcc.c-torture/compile/ieee/ieee.exp: New.
	* gcc.c-torture/compile/ieee/test-cond-fp1.c: New.
	* gcc.c-torture/compile/ieee/test-cond-fp2.c: New.



Index: gcc/testsuite/gcc.c-torture/compile/test-cond-fp1.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/test-cond-fp1.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/test-cond-fp1.c	(revision 0)
@@ -0,0 +1,174 @@
+#define INT_MIN (~__INT_MAX__)
+
+extern int g ();
+extern void f ();
+
+extern char ch;
+extern float flt;
+extern double dbl;
+extern long double ldbl;
+
+int x;
+
+void branch_unlt_flt (void) { if (!__builtin_isgreaterequal (flt, 5)) f (g ()); }
+void branch_ungt_flt (void) { if (!__builtin_islessequal (flt, 5)) f (g ()); }
+void branch_uneq_flt (void) { if (!__builtin_islessgreater (flt, 5)) f (g ()); }
+void branch_unle_flt (void) { if (!__builtin_isgreater (flt, 5)) f (g ()); }
+void branch_unge_flt (void) { if (!__builtin_isless (flt, 5)) f (g ()); }
+void branch_ltgt_flt (void) { if (__builtin_islessgreater (flt, 5)) f (g ()); }
+void branch_unord_flt (void) { if (__builtin_isunordered (flt, 5)) f (g ()); }
+void branch_ord_flt (void) { if (!__builtin_isunordered (flt, 5)) f (g ()); }
+
+void branch_unlt_dbl (void) { if (!__builtin_isgreaterequal (dbl, 5)) f (g ()); }
+void branch_ungt_dbl (void) { if (!__builtin_islessequal (dbl, 5)) f (g ()); }
+void branch_uneq_dbl (void) { if (!__builtin_islessgreater (dbl, 5)) f (g ()); }
+void branch_unle_dbl (void) { if (!__builtin_isgreater (dbl, 5)) f (g ()); }
+void branch_unge_dbl (void) { if (!__builtin_isless (dbl, 5)) f (g ()); }
+void branch_ltgt_dbl (void) { if (__builtin_islessgreater (dbl, 5)) f (g ()); }
+void branch_unord_dbl (void) { if (__builtin_isunordered (dbl, 5)) f (g ()); }
+void branch_ord_dbl (void) { if (!__builtin_isunordered (dbl, 5)) f (g ()); }
+
+void branch_unlt_ldbl (void) { if (!__builtin_isgreaterequal (ldbl, 5)) f (g ()); }
+void branch_ungt_ldbl (void) { if (!__builtin_islessequal (ldbl, 5)) f (g ()); }
+void branch_uneq_ldbl (void) { if (!__builtin_islessgreater (ldbl, 5)) f (g ()); }
+void branch_unle_ldbl (void) { if (!__builtin_isgreater (ldbl, 5)) f (g ()); }
+void branch_unge_ldbl (void) { if (!__builtin_isless (ldbl, 5)) f (g ()); }
+void branch_ltgt_ldbl (void) { if (__builtin_islessgreater (ldbl, 5)) f (g ()); }
+void branch_unord_ldbl (void) { if (__builtin_isunordered (ldbl, 5)) f (g ()); }
+void branch_ord_ldbl (void) { if (!__builtin_isunordered (ldbl, 5)) f (g ()); }
+
+int scc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)); }
+int scc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)); }
+int scc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)); }
+int scc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)); }
+int scc_unge_flt (void) { return (!__builtin_isless (flt, 5)); }
+int scc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)); }
+int scc_unord_flt (void) { return (__builtin_isunordered (flt, 5)); }
+int scc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)); }
+
+int scc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)); }
+int scc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)); }
+int scc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)); }
+int scc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)); }
+int scc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)); }
+int scc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)); }
+int scc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)); }
+int scc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)); }
+
+int scc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)); }
+int scc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)); }
+int scc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)); }
+int scc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)); }
+int scc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)); }
+int scc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)); }
+int scc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)); }
+int scc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)); }
+
+int movsicc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)) ? x : 10; }
+int movsicc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)) ? x : 10; }
+int movsicc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)) ? x : 10; }
+int movsicc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)) ? x : 10; }
+int movsicc_unge_flt (void) { return (!__builtin_isless (flt, 5)) ? x : 10; }
+int movsicc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)) ? x : 10; }
+int movsicc_unord_flt (void) { return (__builtin_isunordered (flt, 5)) ? x : 10; }
+int movsicc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)) ? x : 10; }
+
+int movsicc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)) ? x : 10; }
+int movsicc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)) ? x : 10; }
+int movsicc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)) ? x : 10; }
+int movsicc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)) ? x : 10; }
+int movsicc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)) ? x : 10; }
+int movsicc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)) ? x : 10; }
+int movsicc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)) ? x : 10; }
+int movsicc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)) ? x : 10; }
+
+int movsicc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)) ? x : 10; }
+int movsicc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)) ? x : 10; }
+int movsicc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)) ? x : 10; }
+int movsicc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)) ? x : 10; }
+int movsicc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)) ? x : 10; }
+
+float movsfcc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)) ? flt : 10; }
+float movsfcc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)) ? flt : 10; }
+float movsfcc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unge_flt (void) { return (!__builtin_isless (flt, 5)) ? flt : 10; }
+float movsfcc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unord_flt (void) { return (__builtin_isunordered (flt, 5)) ? flt : 10; }
+float movsfcc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)) ? flt : 10; }
+
+float movsfcc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)) ? flt : 10; }
+float movsfcc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)) ? flt : 10; }
+float movsfcc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)) ? flt : 10; }
+float movsfcc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)) ? flt : 10; }
+float movsfcc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)) ? flt : 10; }
+
+float movsfcc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)) ? flt : 10; }
+float movsfcc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)) ? flt : 10; }
+float movsfcc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)) ? flt : 10; }
+float movsfcc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+float movsfcc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+
+void mem_movsicc_unlt_flt (void) { x = (!__builtin_isgreaterequal (flt, 5)) ? x : 10; }
+void mem_movsicc_ungt_flt (void) { x = (!__builtin_islessequal (flt, 5)) ? x : 10; }
+void mem_movsicc_uneq_flt (void) { x = (!__builtin_islessgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unle_flt (void) { x = (!__builtin_isgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unge_flt (void) { x = (!__builtin_isless (flt, 5)) ? x : 10; }
+void mem_movsicc_ltgt_flt (void) { x = (__builtin_islessgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unord_flt (void) { x = (__builtin_isunordered (flt, 5)) ? x : 10; }
+void mem_movsicc_ord_flt (void) { x = (!__builtin_isunordered (flt, 5)) ? x : 10; }
+
+void mem_movsicc_unlt_dbl (void) { x = (!__builtin_isgreaterequal (dbl, 5)) ? x : 10; }
+void mem_movsicc_ungt_dbl (void) { x = (!__builtin_islessequal (dbl, 5)) ? x : 10; }
+void mem_movsicc_uneq_dbl (void) { x = (!__builtin_islessgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unle_dbl (void) { x = (!__builtin_isgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unge_dbl (void) { x = (!__builtin_isless (dbl, 5)) ? x : 10; }
+void mem_movsicc_ltgt_dbl (void) { x = (__builtin_islessgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unord_dbl (void) { x = (__builtin_isunordered (dbl, 5)) ? x : 10; }
+void mem_movsicc_ord_dbl (void) { x = (!__builtin_isunordered (dbl, 5)) ? x : 10; }
+
+void mem_movsicc_unlt_ldbl (void) { x = (!__builtin_isgreaterequal (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ungt_ldbl (void) { x = (!__builtin_islessequal (ldbl, 5)) ? x : 10; }
+void mem_movsicc_uneq_ldbl (void) { x = (!__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unle_ldbl (void) { x = (!__builtin_isgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unge_ldbl (void) { x = (!__builtin_isless (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ltgt_ldbl (void) { x = (__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unord_ldbl (void) { x = (__builtin_isunordered (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ord_ldbl (void) { x = (!__builtin_isunordered (ldbl, 5)) ? x : 10; }
+
+void mem_movsfcc_unlt_flt (void) { flt = (!__builtin_isgreaterequal (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_flt (void) { flt = (!__builtin_islessequal (flt, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_flt (void) { flt = (!__builtin_islessgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unle_flt (void) { flt = (!__builtin_isgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unge_flt (void) { flt = (!__builtin_isless (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_flt (void) { flt = (__builtin_islessgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unord_flt (void) { flt = (__builtin_isunordered (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ord_flt (void) { flt = (!__builtin_isunordered (flt, 5)) ? flt : 10; }
+
+void mem_movsfcc_unlt_dbl (void) { flt = (!__builtin_isgreaterequal (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_dbl (void) { flt = (!__builtin_islessequal (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_dbl (void) { flt = (!__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unle_dbl (void) { flt = (!__builtin_isgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unge_dbl (void) { flt = (!__builtin_isless (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_dbl (void) { flt = (__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unord_dbl (void) { flt = (__builtin_isunordered (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ord_dbl (void) { flt = (!__builtin_isunordered (dbl, 5)) ? flt : 10; }
+
+void mem_movsfcc_unlt_ldbl (void) { flt = (!__builtin_isgreaterequal (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_ldbl (void) { flt = (!__builtin_islessequal (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_ldbl (void) { flt = (!__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unle_ldbl (void) { flt = (!__builtin_isgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unge_ldbl (void) { flt = (!__builtin_isless (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_ldbl (void) { flt = (__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unord_ldbl (void) { flt = (__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ord_ldbl (void) { flt = (!__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+
Index: gcc/testsuite/gcc.c-torture/compile/test-cond-fp2.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/test-cond-fp2.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/test-cond-fp2.c	(revision 0)
@@ -0,0 +1,227 @@
+#define INT_MIN (~__INT_MAX__)
+
+extern int g ();
+extern void f ();
+
+extern char ch;
+extern float flt;
+extern double dbl;
+extern long double ldbl;
+
+int x;
+
+void branch_lt_flt (void) { if (flt < 5) f (g ()); }
+void branch_eq_flt (void) { if (flt == 5) f (g ()); }
+void branch_ne_flt (void) { if (flt != 5) f (g ()); }
+void branch_gt_flt (void) { if (flt > 5) f (g ()); }
+void branch_le_flt (void) { if (flt <= 5) f (g ()); }
+void branch_ge_flt (void) { if (flt >= 5) f (g ()); }
+
+void branch_lt_dbl (void) { if (dbl < 5) f (g ()); }
+void branch_eq_dbl (void) { if (dbl == 5) f (g ()); }
+void branch_ne_dbl (void) { if (dbl != 5) f (g ()); }
+void branch_gt_dbl (void) { if (dbl > 5) f (g ()); }
+void branch_le_dbl (void) { if (dbl <= 5) f (g ()); }
+void branch_ge_dbl (void) { if (dbl >= 5) f (g ()); }
+
+void branch_lt_ldbl (void) { if (ldbl < 5) f (g ()); }
+void branch_eq_ldbl (void) { if (ldbl == 5) f (g ()); }
+void branch_ne_ldbl (void) { if (ldbl != 5) f (g ()); }
+void branch_gt_ldbl (void) { if (ldbl > 5) f (g ()); }
+void branch_le_ldbl (void) { if (ldbl <= 5) f (g ()); }
+void branch_ge_ldbl (void) { if (ldbl >= 5) f (g ()); }
+
+int scc_lt_flt (void) { return (flt < 5); }
+int scc_eq_flt (void) { return (flt == 5); }
+int scc_ne_flt (void) { return (flt != 5); }
+int scc_gt_flt (void) { return (flt > 5); }
+int scc_le_flt (void) { return (flt <= 5); }
+int scc_ge_flt (void) { return (flt >= 5); }
+
+int scc_lt_dbl (void) { return (dbl < 5); }
+int scc_eq_dbl (void) { return (dbl == 5); }
+int scc_ne_dbl (void) { return (dbl != 5); }
+int scc_gt_dbl (void) { return (dbl > 5); }
+int scc_le_dbl (void) { return (dbl <= 5); }
+int scc_ge_dbl (void) { return (dbl >= 5); }
+
+int scc_lt_ldbl (void) { return (ldbl < 5); }
+int scc_eq_ldbl (void) { return (ldbl == 5); }
+int scc_ne_ldbl (void) { return (ldbl != 5); }
+int scc_gt_ldbl (void) { return (ldbl > 5); }
+int scc_le_ldbl (void) { return (ldbl <= 5); }
+int scc_ge_ldbl (void) { return (ldbl >= 5); }
+
+int movsicc_lt_flt (void) { return (flt < 5) ? x : 10; }
+int movsicc_eq_flt (void) { return (flt == 5) ? x : 10; }
+int movsicc_ne_flt (void) { return (flt != 5) ? x : 10; }
+int movsicc_gt_flt (void) { return (flt > 5) ? x : 10; }
+int movsicc_le_flt (void) { return (flt <= 5) ? x : 10; }
+int movsicc_ge_flt (void) { return (flt >= 5) ? x : 10; }
+
+int movsicc_lt_dbl (void) { return (dbl < 5) ? x : 10; }
+int movsicc_eq_dbl (void) { return (dbl == 5) ? x : 10; }
+int movsicc_ne_dbl (void) { return (dbl != 5) ? x : 10; }
+int movsicc_gt_dbl (void) { return (dbl > 5) ? x : 10; }
+int movsicc_le_dbl (void) { return (dbl <= 5) ? x : 10; }
+int movsicc_ge_dbl (void) { return (dbl >= 5) ? x : 10; }
+
+int movsicc_lt_ldbl (void) { return (ldbl < 5) ? x : 10; }
+int movsicc_eq_ldbl (void) { return (ldbl == 5) ? x : 10; }
+int movsicc_ne_ldbl (void) { return (ldbl != 5) ? x : 10; }
+int movsicc_gt_ldbl (void) { return (ldbl > 5) ? x : 10; }
+int movsicc_le_ldbl (void) { return (ldbl <= 5) ? x : 10; }
+int movsicc_ge_ldbl (void) { return (ldbl >= 5) ? x : 10; }
+
+float movsfcc_lt_flt (void) { return (flt < 5) ? flt : 10; }
+float movsfcc_eq_flt (void) { return (flt == 5) ? flt : 10; }
+float movsfcc_ne_flt (void) { return (flt != 5) ? flt : 10; }
+float movsfcc_gt_flt (void) { return (flt > 5) ? flt : 10; }
+float movsfcc_le_flt (void) { return (flt <= 5) ? flt : 10; }
+float movsfcc_ge_flt (void) { return (flt >= 5) ? flt : 10; }
+
+float movsfcc_lt_dbl (void) { return (dbl < 5) ? flt : 10; }
+float movsfcc_eq_dbl (void) { return (dbl == 5) ? flt : 10; }
+float movsfcc_ne_dbl (void) { return (dbl != 5) ? flt : 10; }
+float movsfcc_gt_dbl (void) { return (dbl > 5) ? flt : 10; }
+float movsfcc_le_dbl (void) { return (dbl <= 5) ? flt : 10; }
+float movsfcc_ge_dbl (void) { return (dbl >= 5) ? flt : 10; }
+
+float movsfcc_lt_ldbl (void) { return (ldbl < 5) ? flt : 10; }
+float movsfcc_eq_ldbl (void) { return (ldbl == 5) ? flt : 10; }
+float movsfcc_ne_ldbl (void) { return (ldbl != 5) ? flt : 10; }
+float movsfcc_gt_ldbl (void) { return (ldbl > 5) ? flt : 10; }
+float movsfcc_le_ldbl (void) { return (ldbl <= 5) ? flt : 10; }
+float movsfcc_ge_ldbl (void) { return (ldbl >= 5) ? flt : 10; }
+
+void mem_movsicc_lt_flt (void) { x = (flt < 5) ? x : 10; }
+void mem_movsicc_eq_flt (void) { x = (flt == 5) ? x : 10; }
+void mem_movsicc_ne_flt (void) { x = (flt != 5) ? x : 10; }
+void mem_movsicc_gt_flt (void) { x = (flt > 5) ? x : 10; }
+void mem_movsicc_le_flt (void) { x = (flt <= 5) ? x : 10; }
+void mem_movsicc_ge_flt (void) { x = (flt >= 5) ? x : 10; }
+
+void mem_movsicc_lt_dbl (void) { x = (dbl < 5) ? x : 10; }
+void mem_movsicc_eq_dbl (void) { x = (dbl == 5) ? x : 10; }
+void mem_movsicc_ne_dbl (void) { x = (dbl != 5) ? x : 10; }
+void mem_movsicc_gt_dbl (void) { x = (dbl > 5) ? x : 10; }
+void mem_movsicc_le_dbl (void) { x = (dbl <= 5) ? x : 10; }
+void mem_movsicc_ge_dbl (void) { x = (dbl >= 5) ? x : 10; }
+
+void mem_movsicc_lt_ldbl (void) { x = (ldbl < 5) ? x : 10; }
+void mem_movsicc_eq_ldbl (void) { x = (ldbl == 5) ? x : 10; }
+void mem_movsicc_ne_ldbl (void) { x = (ldbl != 5) ? x : 10; }
+void mem_movsicc_gt_ldbl (void) { x = (ldbl > 5) ? x : 10; }
+void mem_movsicc_le_ldbl (void) { x = (ldbl <= 5) ? x : 10; }
+void mem_movsicc_ge_ldbl (void) { x = (ldbl >= 5) ? x : 10; }
+
+void mem_movsfcc_lt_flt (void) { flt = (flt < 5) ? flt : 10; }
+void mem_movsfcc_eq_flt (void) { flt = (flt == 5) ? flt : 10; }
+void mem_movsfcc_ne_flt (void) { flt = (flt != 5) ? flt : 10; }
+void mem_movsfcc_gt_flt (void) { flt = (flt > 5) ? flt : 10; }
+void mem_movsfcc_le_flt (void) { flt = (flt <= 5) ? flt : 10; }
+void mem_movsfcc_ge_flt (void) { flt = (flt >= 5) ? flt : 10; }
+
+void mem_movsfcc_lt_dbl (void) { flt = (dbl < 5) ? flt : 10; }
+void mem_movsfcc_eq_dbl (void) { flt = (dbl == 5) ? flt : 10; }
+void mem_movsfcc_ne_dbl (void) { flt = (dbl != 5) ? flt : 10; }
+void mem_movsfcc_gt_dbl (void) { flt = (dbl > 5) ? flt : 10; }
+void mem_movsfcc_le_dbl (void) { flt = (dbl <= 5) ? flt : 10; }
+void mem_movsfcc_ge_dbl (void) { flt = (dbl >= 5) ? flt : 10; }
+
+void mem_movsfcc_lt_ldbl (void) { flt = (ldbl < 5) ? flt : 10; }
+void mem_movsfcc_eq_ldbl (void) { flt = (ldbl == 5) ? flt : 10; }
+void mem_movsfcc_ne_ldbl (void) { flt = (ldbl != 5) ? flt : 10; }
+void mem_movsfcc_gt_ldbl (void) { flt = (ldbl > 5) ? flt : 10; }
+void mem_movsfcc_le_ldbl (void) { flt = (ldbl <= 5) ? flt : 10; }
+void mem_movsfcc_ge_ldbl (void) { flt = (ldbl >= 5) ? flt : 10; }
+
+void branch_eq2_ldbl (long double b) { if (ldbl == b) f (g ()); }
+void branch_gt2_ldbl (long double b) { if (ldbl > b) f (g ()); }
+void branch_lt2_ldbl (long double b) { if (ldbl < b) f (g ()); }
+void branch_ne2_ldbl (long double b) { if (ldbl != b) f (g ()); }
+
+void mem_movsfcc_eq2_ldbl (long double b) { ldbl = (ldbl == b) ? ldbl : 10; }
+void mem_movsfcc_gt2_ldbl (long double b) { ldbl = (ldbl > b) ? ldbl : 10; }
+void mem_movsfcc_lt2_ldbl (long double b) { ldbl = (ldbl < b) ? ldbl : 10; }
+void mem_movsfcc_ne2_ldbl (long double b) { ldbl = (ldbl != b) ? ldbl : 10; }
+
+void mem_movsicc_eq2_ldbl (long double b) { x = (ldbl == b) ? x : 10; }
+void mem_movsicc_gt2_ldbl (long double b) { x = (ldbl > b) ? x : 10; }
+void mem_movsicc_lt2_ldbl (long double b) { x = (ldbl < b) ? x : 10; }
+void mem_movsicc_ne2_ldbl (long double b) { x = (ldbl != b) ? x : 10; }
+
+long double movsfcc_eq2_ldbl (long double b) { return (ldbl == b) ? ldbl : 10; }
+long double movsfcc_gt2_ldbl (long double b) { return (ldbl > b) ? ldbl : 10; }
+long double movsfcc_lt2_ldbl (long double b) { return (ldbl < b) ? ldbl : 10; }
+long double movsfcc_ne2_ldbl (long double b) { return (ldbl != b) ? ldbl : 10; }
+
+int movsicc_eq2_ldbl (long double b) { return (ldbl == b) ? x : 10; }
+int movsicc_gt2_ldbl (long double b) { return (ldbl > b) ? x : 10; }
+int movsicc_lt2_ldbl (long double b) { return (ldbl < b) ? x : 10; }
+int movsicc_ne2_ldbl (long double b) { return (ldbl != b) ? x : 10; }
+
+int scc_eq2_ldbl (long double b) { return (ldbl == b); }
+int scc_gt2_ldbl (long double b) { return (ldbl > b); }
+int scc_lt2_ldbl (long double b) { return (ldbl < b); }
+int scc_ne2_ldbl (long double b) { return (ldbl != b); }
+
+void branch_eq2_dbl (double b) { if (dbl == b) f (g ()); }
+void branch_gt2_dbl (double b) { if (dbl > b) f (g ()); }
+void branch_lt2_dbl (double b) { if (dbl < b) f (g ()); }
+void branch_ne2_dbl (double b) { if (dbl != b) f (g ()); }
+
+void mem_movsfcc_eq2_dbl (double b) { dbl = (dbl == b) ? dbl : 10; }
+void mem_movsfcc_gt2_dbl (double b) { dbl = (dbl > b) ? dbl : 10; }
+void mem_movsfcc_lt2_dbl (double b) { dbl = (dbl < b) ? dbl : 10; }
+void mem_movsfcc_ne2_dbl (double b) { dbl = (dbl != b) ? dbl : 10; }
+
+void mem_movsicc_eq2_dbl (double b) { x = (dbl == b) ? x : 10; }
+void mem_movsicc_gt2_dbl (double b) { x = (dbl > b) ? x : 10; }
+void mem_movsicc_lt2_dbl (double b) { x = (dbl < b) ? x : 10; }
+void mem_movsicc_ne2_dbl (double b) { x = (dbl != b) ? x : 10; }
+
+double movsfcc_eq2_dbl (double b) { return (dbl == b) ? dbl : 10; }
+double movsfcc_gt2_dbl (double b) { return (dbl > b) ? dbl : 10; }
+double movsfcc_lt2_dbl (double b) { return (dbl < b) ? dbl : 10; }
+double movsfcc_ne2_dbl (double b) { return (dbl != b) ? dbl : 10; }
+
+int movsicc_eq2_dbl (double b) { return (dbl == b) ? x : 10; }
+int movsicc_gt2_dbl (double b) { return (dbl > b) ? x : 10; }
+int movsicc_lt2_dbl (double b) { return (dbl < b) ? x : 10; }
+int movsicc_ne2_dbl (double b) { return (dbl != b) ? x : 10; }
+
+int scc_eq2_dbl (double b) { return (dbl == b); }
+int scc_gt2_dbl (double b) { return (dbl > b); }
+int scc_lt2_dbl (double b) { return (dbl < b); }
+int scc_ne2_dbl (double b) { return (dbl != b); }
+
+void branch_eq2_flt (float b) { if (flt == b) f (g ()); }
+void branch_gt2_flt (float b) { if (flt > b) f (g ()); }
+void branch_lt2_flt (float b) { if (flt < b) f (g ()); }
+void branch_ne2_flt (float b) { if (flt != b) f (g ()); }
+
+void mem_movsfcc_eq2_flt (float b) { flt = (flt == b) ? flt : 10; }
+void mem_movsfcc_gt2_flt (float b) { flt = (flt > b) ? flt : 10; }
+void mem_movsfcc_lt2_flt (float b) { flt = (flt < b) ? flt : 10; }
+void mem_movsfcc_ne2_flt (float b) { flt = (flt != b) ? flt : 10; }
+
+void mem_movsicc_eq2_flt (float b) { x = (flt == b) ? x : 10; }
+void mem_movsicc_gt2_flt (float b) { x = (flt > b) ? x : 10; }
+void mem_movsicc_lt2_flt (float b) { x = (flt < b) ? x : 10; }
+void mem_movsicc_ne2_flt (float b) { x = (flt != b) ? x : 10; }
+
+float movsfcc_eq2_flt (float b) { return (flt == b) ? flt : 10; }
+float movsfcc_gt2_flt (float b) { return (flt > b) ? flt : 10; }
+float movsfcc_lt2_flt (float b) { return (flt < b) ? flt : 10; }
+float movsfcc_ne2_flt (float b) { return (flt != b) ? flt : 10; }
+
+int movsicc_eq2_flt (float b) { return (flt == b) ? x : 10; }
+int movsicc_gt2_flt (float b) { return (flt > b) ? x : 10; }
+int movsicc_lt2_flt (float b) { return (flt < b) ? x : 10; }
+int movsicc_ne2_flt (float b) { return (flt != b) ? x : 10; }
+
+int scc_eq2_flt (float b) { return (flt == b); }
+int scc_gt2_flt (float b) { return (flt > b); }
+int scc_lt2_flt (float b) { return (flt < b); }
+int scc_ne2_flt (float b) { return (flt != b); }
Index: gcc/testsuite/gcc.c-torture/compile/ieee/ieee.exp
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/ieee/ieee.exp	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/ieee/ieee.exp	(revision 0)
@@ -0,0 +1,77 @@
+#
+# Expect driver script for GCC Regression Tests
+#   Copyright (C) 2009 Free Software Foundation
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+#
+
+# Load support procs.
+load_lib gcc-dg.exp
+load_lib torture-options.exp
+load_lib c-torture.exp
+
+# These tests come from Torbjorn Granlund's (tege@cygnus.com)
+# C torture test suite, and other contributors.
+
+# Disable tests on machines with no hardware support for IEEE arithmetic.
+if { [istarget "vax-*-*"] || [ istarget "powerpc-*-*spe"] } { return }
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+torture-init
+set-torture-options $C_TORTURE_OPTIONS
+
+set additional_flags ""
+
+# We must use -ffloat-store/-mieee to ensure that excess precision on some
+# machines does not cause problems
+if [istarget "i\[34567\]86-*-*"] then {
+  lappend additional_flags "-ffloat-store"
+}
+if { [istarget "x86_64-*-*"] && [check_effective_target_ilp32] } then {
+  lappend additional_flags "-ffloat-store"
+}
+if [istarget "m68k-*-*"] then {
+  lappend additional_flags "-ffloat-store"
+}
+if { [istarget "alpha*-*-*"] 
+     || [istarget "sh*-*-*"] } then {
+  lappend additional_flags "-mieee"
+}
+
+# load support procs
+load_lib c-torture.exp
+
+# initialize harness
+gcc_init
+
+#
+# main test loop
+#
+
+foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
+    # If we're only testing specific files and this isn't one of them, skip it.
+    if ![runtest_file_p $runtests $src] then {
+	continue
+    }
+
+    c-torture $src $additional_flags
+}
+
+# All done.
+torture-finish
+gcc_finish
Index: gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp1.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp1.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp1.c	(revision 0)
@@ -0,0 +1,174 @@
+#define INT_MIN (~__INT_MAX__)
+
+extern int g ();
+extern void f ();
+
+extern char ch;
+extern float flt;
+extern double dbl;
+extern long double ldbl;
+
+int x;
+
+void branch_unlt_flt (void) { if (!__builtin_isgreaterequal (flt, 5)) f (g ()); }
+void branch_ungt_flt (void) { if (!__builtin_islessequal (flt, 5)) f (g ()); }
+void branch_uneq_flt (void) { if (!__builtin_islessgreater (flt, 5)) f (g ()); }
+void branch_unle_flt (void) { if (!__builtin_isgreater (flt, 5)) f (g ()); }
+void branch_unge_flt (void) { if (!__builtin_isless (flt, 5)) f (g ()); }
+void branch_ltgt_flt (void) { if (__builtin_islessgreater (flt, 5)) f (g ()); }
+void branch_unord_flt (void) { if (__builtin_isunordered (flt, 5)) f (g ()); }
+void branch_ord_flt (void) { if (!__builtin_isunordered (flt, 5)) f (g ()); }
+
+void branch_unlt_dbl (void) { if (!__builtin_isgreaterequal (dbl, 5)) f (g ()); }
+void branch_ungt_dbl (void) { if (!__builtin_islessequal (dbl, 5)) f (g ()); }
+void branch_uneq_dbl (void) { if (!__builtin_islessgreater (dbl, 5)) f (g ()); }
+void branch_unle_dbl (void) { if (!__builtin_isgreater (dbl, 5)) f (g ()); }
+void branch_unge_dbl (void) { if (!__builtin_isless (dbl, 5)) f (g ()); }
+void branch_ltgt_dbl (void) { if (__builtin_islessgreater (dbl, 5)) f (g ()); }
+void branch_unord_dbl (void) { if (__builtin_isunordered (dbl, 5)) f (g ()); }
+void branch_ord_dbl (void) { if (!__builtin_isunordered (dbl, 5)) f (g ()); }
+
+void branch_unlt_ldbl (void) { if (!__builtin_isgreaterequal (ldbl, 5)) f (g ()); }
+void branch_ungt_ldbl (void) { if (!__builtin_islessequal (ldbl, 5)) f (g ()); }
+void branch_uneq_ldbl (void) { if (!__builtin_islessgreater (ldbl, 5)) f (g ()); }
+void branch_unle_ldbl (void) { if (!__builtin_isgreater (ldbl, 5)) f (g ()); }
+void branch_unge_ldbl (void) { if (!__builtin_isless (ldbl, 5)) f (g ()); }
+void branch_ltgt_ldbl (void) { if (__builtin_islessgreater (ldbl, 5)) f (g ()); }
+void branch_unord_ldbl (void) { if (__builtin_isunordered (ldbl, 5)) f (g ()); }
+void branch_ord_ldbl (void) { if (!__builtin_isunordered (ldbl, 5)) f (g ()); }
+
+int scc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)); }
+int scc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)); }
+int scc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)); }
+int scc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)); }
+int scc_unge_flt (void) { return (!__builtin_isless (flt, 5)); }
+int scc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)); }
+int scc_unord_flt (void) { return (__builtin_isunordered (flt, 5)); }
+int scc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)); }
+
+int scc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)); }
+int scc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)); }
+int scc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)); }
+int scc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)); }
+int scc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)); }
+int scc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)); }
+int scc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)); }
+int scc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)); }
+
+int scc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)); }
+int scc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)); }
+int scc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)); }
+int scc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)); }
+int scc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)); }
+int scc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)); }
+int scc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)); }
+int scc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)); }
+
+int movsicc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)) ? x : 10; }
+int movsicc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)) ? x : 10; }
+int movsicc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)) ? x : 10; }
+int movsicc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)) ? x : 10; }
+int movsicc_unge_flt (void) { return (!__builtin_isless (flt, 5)) ? x : 10; }
+int movsicc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)) ? x : 10; }
+int movsicc_unord_flt (void) { return (__builtin_isunordered (flt, 5)) ? x : 10; }
+int movsicc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)) ? x : 10; }
+
+int movsicc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)) ? x : 10; }
+int movsicc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)) ? x : 10; }
+int movsicc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)) ? x : 10; }
+int movsicc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)) ? x : 10; }
+int movsicc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)) ? x : 10; }
+int movsicc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)) ? x : 10; }
+int movsicc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)) ? x : 10; }
+int movsicc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)) ? x : 10; }
+
+int movsicc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)) ? x : 10; }
+int movsicc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)) ? x : 10; }
+int movsicc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)) ? x : 10; }
+int movsicc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+int movsicc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)) ? x : 10; }
+int movsicc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)) ? x : 10; }
+
+float movsfcc_unlt_flt (void) { return (!__builtin_isgreaterequal (flt, 5)) ? flt : 10; }
+float movsfcc_ungt_flt (void) { return (!__builtin_islessequal (flt, 5)) ? flt : 10; }
+float movsfcc_uneq_flt (void) { return (!__builtin_islessgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unle_flt (void) { return (!__builtin_isgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unge_flt (void) { return (!__builtin_isless (flt, 5)) ? flt : 10; }
+float movsfcc_ltgt_flt (void) { return (__builtin_islessgreater (flt, 5)) ? flt : 10; }
+float movsfcc_unord_flt (void) { return (__builtin_isunordered (flt, 5)) ? flt : 10; }
+float movsfcc_ord_flt (void) { return (!__builtin_isunordered (flt, 5)) ? flt : 10; }
+
+float movsfcc_unlt_dbl (void) { return (!__builtin_isgreaterequal (dbl, 5)) ? flt : 10; }
+float movsfcc_ungt_dbl (void) { return (!__builtin_islessequal (dbl, 5)) ? flt : 10; }
+float movsfcc_uneq_dbl (void) { return (!__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unle_dbl (void) { return (!__builtin_isgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unge_dbl (void) { return (!__builtin_isless (dbl, 5)) ? flt : 10; }
+float movsfcc_ltgt_dbl (void) { return (__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+float movsfcc_unord_dbl (void) { return (__builtin_isunordered (dbl, 5)) ? flt : 10; }
+float movsfcc_ord_dbl (void) { return (!__builtin_isunordered (dbl, 5)) ? flt : 10; }
+
+float movsfcc_unlt_ldbl (void) { return (!__builtin_isgreaterequal (ldbl, 5)) ? flt : 10; }
+float movsfcc_ungt_ldbl (void) { return (!__builtin_islessequal (ldbl, 5)) ? flt : 10; }
+float movsfcc_uneq_ldbl (void) { return (!__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unle_ldbl (void) { return (!__builtin_isgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unge_ldbl (void) { return (!__builtin_isless (ldbl, 5)) ? flt : 10; }
+float movsfcc_ltgt_ldbl (void) { return (__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+float movsfcc_unord_ldbl (void) { return (__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+float movsfcc_ord_ldbl (void) { return (!__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+
+void mem_movsicc_unlt_flt (void) { x = (!__builtin_isgreaterequal (flt, 5)) ? x : 10; }
+void mem_movsicc_ungt_flt (void) { x = (!__builtin_islessequal (flt, 5)) ? x : 10; }
+void mem_movsicc_uneq_flt (void) { x = (!__builtin_islessgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unle_flt (void) { x = (!__builtin_isgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unge_flt (void) { x = (!__builtin_isless (flt, 5)) ? x : 10; }
+void mem_movsicc_ltgt_flt (void) { x = (__builtin_islessgreater (flt, 5)) ? x : 10; }
+void mem_movsicc_unord_flt (void) { x = (__builtin_isunordered (flt, 5)) ? x : 10; }
+void mem_movsicc_ord_flt (void) { x = (!__builtin_isunordered (flt, 5)) ? x : 10; }
+
+void mem_movsicc_unlt_dbl (void) { x = (!__builtin_isgreaterequal (dbl, 5)) ? x : 10; }
+void mem_movsicc_ungt_dbl (void) { x = (!__builtin_islessequal (dbl, 5)) ? x : 10; }
+void mem_movsicc_uneq_dbl (void) { x = (!__builtin_islessgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unle_dbl (void) { x = (!__builtin_isgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unge_dbl (void) { x = (!__builtin_isless (dbl, 5)) ? x : 10; }
+void mem_movsicc_ltgt_dbl (void) { x = (__builtin_islessgreater (dbl, 5)) ? x : 10; }
+void mem_movsicc_unord_dbl (void) { x = (__builtin_isunordered (dbl, 5)) ? x : 10; }
+void mem_movsicc_ord_dbl (void) { x = (!__builtin_isunordered (dbl, 5)) ? x : 10; }
+
+void mem_movsicc_unlt_ldbl (void) { x = (!__builtin_isgreaterequal (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ungt_ldbl (void) { x = (!__builtin_islessequal (ldbl, 5)) ? x : 10; }
+void mem_movsicc_uneq_ldbl (void) { x = (!__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unle_ldbl (void) { x = (!__builtin_isgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unge_ldbl (void) { x = (!__builtin_isless (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ltgt_ldbl (void) { x = (__builtin_islessgreater (ldbl, 5)) ? x : 10; }
+void mem_movsicc_unord_ldbl (void) { x = (__builtin_isunordered (ldbl, 5)) ? x : 10; }
+void mem_movsicc_ord_ldbl (void) { x = (!__builtin_isunordered (ldbl, 5)) ? x : 10; }
+
+void mem_movsfcc_unlt_flt (void) { flt = (!__builtin_isgreaterequal (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_flt (void) { flt = (!__builtin_islessequal (flt, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_flt (void) { flt = (!__builtin_islessgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unle_flt (void) { flt = (!__builtin_isgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unge_flt (void) { flt = (!__builtin_isless (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_flt (void) { flt = (__builtin_islessgreater (flt, 5)) ? flt : 10; }
+void mem_movsfcc_unord_flt (void) { flt = (__builtin_isunordered (flt, 5)) ? flt : 10; }
+void mem_movsfcc_ord_flt (void) { flt = (!__builtin_isunordered (flt, 5)) ? flt : 10; }
+
+void mem_movsfcc_unlt_dbl (void) { flt = (!__builtin_isgreaterequal (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_dbl (void) { flt = (!__builtin_islessequal (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_dbl (void) { flt = (!__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unle_dbl (void) { flt = (!__builtin_isgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unge_dbl (void) { flt = (!__builtin_isless (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_dbl (void) { flt = (__builtin_islessgreater (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_unord_dbl (void) { flt = (__builtin_isunordered (dbl, 5)) ? flt : 10; }
+void mem_movsfcc_ord_dbl (void) { flt = (!__builtin_isunordered (dbl, 5)) ? flt : 10; }
+
+void mem_movsfcc_unlt_ldbl (void) { flt = (!__builtin_isgreaterequal (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ungt_ldbl (void) { flt = (!__builtin_islessequal (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_uneq_ldbl (void) { flt = (!__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unle_ldbl (void) { flt = (!__builtin_isgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unge_ldbl (void) { flt = (!__builtin_isless (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ltgt_ldbl (void) { flt = (__builtin_islessgreater (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_unord_ldbl (void) { flt = (__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+void mem_movsfcc_ord_ldbl (void) { flt = (!__builtin_isunordered (ldbl, 5)) ? flt : 10; }
+
Index: gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp2.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp2.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/ieee/test-cond-fp2.c	(revision 0)
@@ -0,0 +1,227 @@
+#define INT_MIN (~__INT_MAX__)
+
+extern int g ();
+extern void f ();
+
+extern char ch;
+extern float flt;
+extern double dbl;
+extern long double ldbl;
+
+int x;
+
+void branch_lt_flt (void) { if (flt < 5) f (g ()); }
+void branch_eq_flt (void) { if (flt == 5) f (g ()); }
+void branch_ne_flt (void) { if (flt != 5) f (g ()); }
+void branch_gt_flt (void) { if (flt > 5) f (g ()); }
+void branch_le_flt (void) { if (flt <= 5) f (g ()); }
+void branch_ge_flt (void) { if (flt >= 5) f (g ()); }
+
+void branch_lt_dbl (void) { if (dbl < 5) f (g ()); }
+void branch_eq_dbl (void) { if (dbl == 5) f (g ()); }
+void branch_ne_dbl (void) { if (dbl != 5) f (g ()); }
+void branch_gt_dbl (void) { if (dbl > 5) f (g ()); }
+void branch_le_dbl (void) { if (dbl <= 5) f (g ()); }
+void branch_ge_dbl (void) { if (dbl >= 5) f (g ()); }
+
+void branch_lt_ldbl (void) { if (ldbl < 5) f (g ()); }
+void branch_eq_ldbl (void) { if (ldbl == 5) f (g ()); }
+void branch_ne_ldbl (void) { if (ldbl != 5) f (g ()); }
+void branch_gt_ldbl (void) { if (ldbl > 5) f (g ()); }
+void branch_le_ldbl (void) { if (ldbl <= 5) f (g ()); }
+void branch_ge_ldbl (void) { if (ldbl >= 5) f (g ()); }
+
+int scc_lt_flt (void) { return (flt < 5); }
+int scc_eq_flt (void) { return (flt == 5); }
+int scc_ne_flt (void) { return (flt != 5); }
+int scc_gt_flt (void) { return (flt > 5); }
+int scc_le_flt (void) { return (flt <= 5); }
+int scc_ge_flt (void) { return (flt >= 5); }
+
+int scc_lt_dbl (void) { return (dbl < 5); }
+int scc_eq_dbl (void) { return (dbl == 5); }
+int scc_ne_dbl (void) { return (dbl != 5); }
+int scc_gt_dbl (void) { return (dbl > 5); }
+int scc_le_dbl (void) { return (dbl <= 5); }
+int scc_ge_dbl (void) { return (dbl >= 5); }
+
+int scc_lt_ldbl (void) { return (ldbl < 5); }
+int scc_eq_ldbl (void) { return (ldbl == 5); }
+int scc_ne_ldbl (void) { return (ldbl != 5); }
+int scc_gt_ldbl (void) { return (ldbl > 5); }
+int scc_le_ldbl (void) { return (ldbl <= 5); }
+int scc_ge_ldbl (void) { return (ldbl >= 5); }
+
+int movsicc_lt_flt (void) { return (flt < 5) ? x : 10; }
+int movsicc_eq_flt (void) { return (flt == 5) ? x : 10; }
+int movsicc_ne_flt (void) { return (flt != 5) ? x : 10; }
+int movsicc_gt_flt (void) { return (flt > 5) ? x : 10; }
+int movsicc_le_flt (void) { return (flt <= 5) ? x : 10; }
+int movsicc_ge_flt (void) { return (flt >= 5) ? x : 10; }
+
+int movsicc_lt_dbl (void) { return (dbl < 5) ? x : 10; }
+int movsicc_eq_dbl (void) { return (dbl == 5) ? x : 10; }
+int movsicc_ne_dbl (void) { return (dbl != 5) ? x : 10; }
+int movsicc_gt_dbl (void) { return (dbl > 5) ? x : 10; }
+int movsicc_le_dbl (void) { return (dbl <= 5) ? x : 10; }
+int movsicc_ge_dbl (void) { return (dbl >= 5) ? x : 10; }
+
+int movsicc_lt_ldbl (void) { return (ldbl < 5) ? x : 10; }
+int movsicc_eq_ldbl (void) { return (ldbl == 5) ? x : 10; }
+int movsicc_ne_ldbl (void) { return (ldbl != 5) ? x : 10; }
+int movsicc_gt_ldbl (void) { return (ldbl > 5) ? x : 10; }
+int movsicc_le_ldbl (void) { return (ldbl <= 5) ? x : 10; }
+int movsicc_ge_ldbl (void) { return (ldbl >= 5) ? x : 10; }
+
+float movsfcc_lt_flt (void) { return (flt < 5) ? flt : 10; }
+float movsfcc_eq_flt (void) { return (flt == 5) ? flt : 10; }
+float movsfcc_ne_flt (void) { return (flt != 5) ? flt : 10; }
+float movsfcc_gt_flt (void) { return (flt > 5) ? flt : 10; }
+float movsfcc_le_flt (void) { return (flt <= 5) ? flt : 10; }
+float movsfcc_ge_flt (void) { return (flt >= 5) ? flt : 10; }
+
+float movsfcc_lt_dbl (void) { return (dbl < 5) ? flt : 10; }
+float movsfcc_eq_dbl (void) { return (dbl == 5) ? flt : 10; }
+float movsfcc_ne_dbl (void) { return (dbl != 5) ? flt : 10; }
+float movsfcc_gt_dbl (void) { return (dbl > 5) ? flt : 10; }
+float movsfcc_le_dbl (void) { return (dbl <= 5) ? flt : 10; }
+float movsfcc_ge_dbl (void) { return (dbl >= 5) ? flt : 10; }
+
+float movsfcc_lt_ldbl (void) { return (ldbl < 5) ? flt : 10; }
+float movsfcc_eq_ldbl (void) { return (ldbl == 5) ? flt : 10; }
+float movsfcc_ne_ldbl (void) { return (ldbl != 5) ? flt : 10; }
+float movsfcc_gt_ldbl (void) { return (ldbl > 5) ? flt : 10; }
+float movsfcc_le_ldbl (void) { return (ldbl <= 5) ? flt : 10; }
+float movsfcc_ge_ldbl (void) { return (ldbl >= 5) ? flt : 10; }
+
+void mem_movsicc_lt_flt (void) { x = (flt < 5) ? x : 10; }
+void mem_movsicc_eq_flt (void) { x = (flt == 5) ? x : 10; }
+void mem_movsicc_ne_flt (void) { x = (flt != 5) ? x : 10; }
+void mem_movsicc_gt_flt (void) { x = (flt > 5) ? x : 10; }
+void mem_movsicc_le_flt (void) { x = (flt <= 5) ? x : 10; }
+void mem_movsicc_ge_flt (void) { x = (flt >= 5) ? x : 10; }
+
+void mem_movsicc_lt_dbl (void) { x = (dbl < 5) ? x : 10; }
+void mem_movsicc_eq_dbl (void) { x = (dbl == 5) ? x : 10; }
+void mem_movsicc_ne_dbl (void) { x = (dbl != 5) ? x : 10; }
+void mem_movsicc_gt_dbl (void) { x = (dbl > 5) ? x : 10; }
+void mem_movsicc_le_dbl (void) { x = (dbl <= 5) ? x : 10; }
+void mem_movsicc_ge_dbl (void) { x = (dbl >= 5) ? x : 10; }
+
+void mem_movsicc_lt_ldbl (void) { x = (ldbl < 5) ? x : 10; }
+void mem_movsicc_eq_ldbl (void) { x = (ldbl == 5) ? x : 10; }
+void mem_movsicc_ne_ldbl (void) { x = (ldbl != 5) ? x : 10; }
+void mem_movsicc_gt_ldbl (void) { x = (ldbl > 5) ? x : 10; }
+void mem_movsicc_le_ldbl (void) { x = (ldbl <= 5) ? x : 10; }
+void mem_movsicc_ge_ldbl (void) { x = (ldbl >= 5) ? x : 10; }
+
+void mem_movsfcc_lt_flt (void) { flt = (flt < 5) ? flt : 10; }
+void mem_movsfcc_eq_flt (void) { flt = (flt == 5) ? flt : 10; }
+void mem_movsfcc_ne_flt (void) { flt = (flt != 5) ? flt : 10; }
+void mem_movsfcc_gt_flt (void) { flt = (flt > 5) ? flt : 10; }
+void mem_movsfcc_le_flt (void) { flt = (flt <= 5) ? flt : 10; }
+void mem_movsfcc_ge_flt (void) { flt = (flt >= 5) ? flt : 10; }
+
+void mem_movsfcc_lt_dbl (void) { flt = (dbl < 5) ? flt : 10; }
+void mem_movsfcc_eq_dbl (void) { flt = (dbl == 5) ? flt : 10; }
+void mem_movsfcc_ne_dbl (void) { flt = (dbl != 5) ? flt : 10; }
+void mem_movsfcc_gt_dbl (void) { flt = (dbl > 5) ? flt : 10; }
+void mem_movsfcc_le_dbl (void) { flt = (dbl <= 5) ? flt : 10; }
+void mem_movsfcc_ge_dbl (void) { flt = (dbl >= 5) ? flt : 10; }
+
+void mem_movsfcc_lt_ldbl (void) { flt = (ldbl < 5) ? flt : 10; }
+void mem_movsfcc_eq_ldbl (void) { flt = (ldbl == 5) ? flt : 10; }
+void mem_movsfcc_ne_ldbl (void) { flt = (ldbl != 5) ? flt : 10; }
+void mem_movsfcc_gt_ldbl (void) { flt = (ldbl > 5) ? flt : 10; }
+void mem_movsfcc_le_ldbl (void) { flt = (ldbl <= 5) ? flt : 10; }
+void mem_movsfcc_ge_ldbl (void) { flt = (ldbl >= 5) ? flt : 10; }
+
+void branch_eq2_ldbl (long double b) { if (ldbl == b) f (g ()); }
+void branch_gt2_ldbl (long double b) { if (ldbl > b) f (g ()); }
+void branch_lt2_ldbl (long double b) { if (ldbl < b) f (g ()); }
+void branch_ne2_ldbl (long double b) { if (ldbl != b) f (g ()); }
+
+void mem_movsfcc_eq2_ldbl (long double b) { ldbl = (ldbl == b) ? ldbl : 10; }
+void mem_movsfcc_gt2_ldbl (long double b) { ldbl = (ldbl > b) ? ldbl : 10; }
+void mem_movsfcc_lt2_ldbl (long double b) { ldbl = (ldbl < b) ? ldbl : 10; }
+void mem_movsfcc_ne2_ldbl (long double b) { ldbl = (ldbl != b) ? ldbl : 10; }
+
+void mem_movsicc_eq2_ldbl (long double b) { x = (ldbl == b) ? x : 10; }
+void mem_movsicc_gt2_ldbl (long double b) { x = (ldbl > b) ? x : 10; }
+void mem_movsicc_lt2_ldbl (long double b) { x = (ldbl < b) ? x : 10; }
+void mem_movsicc_ne2_ldbl (long double b) { x = (ldbl != b) ? x : 10; }
+
+long double movsfcc_eq2_ldbl (long double b) { return (ldbl == b) ? ldbl : 10; }
+long double movsfcc_gt2_ldbl (long double b) { return (ldbl > b) ? ldbl : 10; }
+long double movsfcc_lt2_ldbl (long double b) { return (ldbl < b) ? ldbl : 10; }
+long double movsfcc_ne2_ldbl (long double b) { return (ldbl != b) ? ldbl : 10; }
+
+int movsicc_eq2_ldbl (long double b) { return (ldbl == b) ? x : 10; }
+int movsicc_gt2_ldbl (long double b) { return (ldbl > b) ? x : 10; }
+int movsicc_lt2_ldbl (long double b) { return (ldbl < b) ? x : 10; }
+int movsicc_ne2_ldbl (long double b) { return (ldbl != b) ? x : 10; }
+
+int scc_eq2_ldbl (long double b) { return (ldbl == b); }
+int scc_gt2_ldbl (long double b) { return (ldbl > b); }
+int scc_lt2_ldbl (long double b) { return (ldbl < b); }
+int scc_ne2_ldbl (long double b) { return (ldbl != b); }
+
+void branch_eq2_dbl (double b) { if (dbl == b) f (g ()); }
+void branch_gt2_dbl (double b) { if (dbl > b) f (g ()); }
+void branch_lt2_dbl (double b) { if (dbl < b) f (g ()); }
+void branch_ne2_dbl (double b) { if (dbl != b) f (g ()); }
+
+void mem_movsfcc_eq2_dbl (double b) { dbl = (dbl == b) ? dbl : 10; }
+void mem_movsfcc_gt2_dbl (double b) { dbl = (dbl > b) ? dbl : 10; }
+void mem_movsfcc_lt2_dbl (double b) { dbl = (dbl < b) ? dbl : 10; }
+void mem_movsfcc_ne2_dbl (double b) { dbl = (dbl != b) ? dbl : 10; }
+
+void mem_movsicc_eq2_dbl (double b) { x = (dbl == b) ? x : 10; }
+void mem_movsicc_gt2_dbl (double b) { x = (dbl > b) ? x : 10; }
+void mem_movsicc_lt2_dbl (double b) { x = (dbl < b) ? x : 10; }
+void mem_movsicc_ne2_dbl (double b) { x = (dbl != b) ? x : 10; }
+
+double movsfcc_eq2_dbl (double b) { return (dbl == b) ? dbl : 10; }
+double movsfcc_gt2_dbl (double b) { return (dbl > b) ? dbl : 10; }
+double movsfcc_lt2_dbl (double b) { return (dbl < b) ? dbl : 10; }
+double movsfcc_ne2_dbl (double b) { return (dbl != b) ? dbl : 10; }
+
+int movsicc_eq2_dbl (double b) { return (dbl == b) ? x : 10; }
+int movsicc_gt2_dbl (double b) { return (dbl > b) ? x : 10; }
+int movsicc_lt2_dbl (double b) { return (dbl < b) ? x : 10; }
+int movsicc_ne2_dbl (double b) { return (dbl != b) ? x : 10; }
+
+int scc_eq2_dbl (double b) { return (dbl == b); }
+int scc_gt2_dbl (double b) { return (dbl > b); }
+int scc_lt2_dbl (double b) { return (dbl < b); }
+int scc_ne2_dbl (double b) { return (dbl != b); }
+
+void branch_eq2_flt (float b) { if (flt == b) f (g ()); }
+void branch_gt2_flt (float b) { if (flt > b) f (g ()); }
+void branch_lt2_flt (float b) { if (flt < b) f (g ()); }
+void branch_ne2_flt (float b) { if (flt != b) f (g ()); }
+
+void mem_movsfcc_eq2_flt (float b) { flt = (flt == b) ? flt : 10; }
+void mem_movsfcc_gt2_flt (float b) { flt = (flt > b) ? flt : 10; }
+void mem_movsfcc_lt2_flt (float b) { flt = (flt < b) ? flt : 10; }
+void mem_movsfcc_ne2_flt (float b) { flt = (flt != b) ? flt : 10; }
+
+void mem_movsicc_eq2_flt (float b) { x = (flt == b) ? x : 10; }
+void mem_movsicc_gt2_flt (float b) { x = (flt > b) ? x : 10; }
+void mem_movsicc_lt2_flt (float b) { x = (flt < b) ? x : 10; }
+void mem_movsicc_ne2_flt (float b) { x = (flt != b) ? x : 10; }
+
+float movsfcc_eq2_flt (float b) { return (flt == b) ? flt : 10; }
+float movsfcc_gt2_flt (float b) { return (flt > b) ? flt : 10; }
+float movsfcc_lt2_flt (float b) { return (flt < b) ? flt : 10; }
+float movsfcc_ne2_flt (float b) { return (flt != b) ? flt : 10; }
+
+int movsicc_eq2_flt (float b) { return (flt == b) ? x : 10; }
+int movsicc_gt2_flt (float b) { return (flt > b) ? x : 10; }
+int movsicc_lt2_flt (float b) { return (flt < b) ? x : 10; }
+int movsicc_ne2_flt (float b) { return (flt != b) ? x : 10; }
+
+int scc_eq2_flt (float b) { return (flt == b); }
+int scc_gt2_flt (float b) { return (flt > b); }
+int scc_lt2_flt (float b) { return (flt < b); }
+int scc_ne2_flt (float b) { return (flt != b); }
Index: gcc/testsuite/gcc.c-torture/compile/test-cond-int.c
===================================================================
--- gcc/testsuite/gcc.c-torture/compile/test-cond-int.c	(revision 0)
+++ gcc/testsuite/gcc.c-torture/compile/test-cond-int.c	(revision 0)
@@ -0,0 +1,332 @@
+#define INT_MIN (~__INT_MAX__)
+
+extern int g ();
+extern void f ();
+
+extern char ch;
+
+int x;
+
+void branch_lt_ll (long long a) { if (a < 5) f (g ()); }
+void branch_eq_ll (long long a) { if (a == 5) f (g ()); }
+void branch_ne_ll (long long a) { if (a != 5) f (g ()); }
+void branch_gt_ll (long long a) { if (a > 5) f (g ()); }
+void branch_le_ll (long long a, int b) { if (a <= b) f (g ()); }
+void branch_ge_ll (long long a, int b) { if (a >= b) f (g ()); }
+void branch_ge0_ll (long long a) { if (a >= 0) f (g ()); }
+void branch_lt0_ll (long long a) { if (a < 0) f (g ()); }
+void branch_gt0_ll (long long a) { if (a > 0) f (g ()); }
+void branch_le0_ll (long long a) { if (a <= 0) f (g ()); }
+void branch_eq0_ll (long long a) { if (a > 0) f (g ()); }
+void branch_ne0_ll (long long a) { if (a <= 0) f (g ()); }
+void branch_bit0_ll (long long a) { if ((a & 2) == 0) f (g ()); }
+void branch_bit1_ll (long long a) { if ((a & 2) == 2) f (g ()); }
+
+void branch_lt (int a) { if (a < 5) f (g ()); }
+void branch_eq (int a) { if (a == 5) f (g ()); }
+void branch_ne (int a) { if (a != 5) f (g ()); }
+void branch_gt (int a) { if (a > 5) f (g ()); }
+void branch_le (int a, int b) { if (a <= b) f (g ()); }
+void branch_ge (int a, int b) { if (a >= b) f (g ()); }
+void branch_ge0 (int a) { if (a >= 0) f (g ()); }
+void branch_lt0 (int a) { if (a < 0) f (g ()); }
+void branch_gt0 (int a) { if (a > 0) f (g ()); }
+void branch_le0 (int a) { if (a <= 0) f (g ()); }
+void branch_eq0 (int a) { if (a > 0) f (g ()); }
+void branch_ne0 (int a) { if (a <= 0) f (g ()); }
+void branch_bit0 (int a) { if ((a & 2) == 0) f (g ()); }
+void branch_bit1 (int a) { if ((a & 2) == 2) f (g ()); }
+
+void branch_ltu (unsigned a) { if (a < 5) f (g ()); }
+void branch_gtu (unsigned a) { if (a > 5) f (g ()); }
+void branch_leu (unsigned a, unsigned b) { if (a <= b) f (g ()); }
+void branch_geu (unsigned a, unsigned b) { if (a >= b) f (g ()); }
+void branch_sbit0 (unsigned a) { if ((a & (unsigned)INT_MIN) == 0) f (g ()); }
+void branch_sbit1 (unsigned a) { if ((a & (unsigned)INT_MIN) != 0) f (g ()); }
+
+void branch_lt_ch (void) { if (ch < 5) f (g ()); }
+void branch_eq_ch (void) { if (ch == 5) f (g ()); }
+void branch_ne_ch (void) { if (ch != 5) f (g ()); }
+void branch_gt_ch (void) { if (ch > 5) f (g ()); }
+void branch_ge0_ch (void) { if (ch >= 0) f (g ()); }
+void branch_lt0_ch (void) { if (ch < 0) f (g ()); }
+void branch_gt0_ch (void) { if (ch > 0) f (g ()); }
+void branch_le0_ch (void) { if (ch <= 0) f (g ()); }
+void branch_eq0_ch (void) { if (ch > 0) f (g ()); }
+void branch_ne0_ch (void) { if (ch <= 0) f (g ()); }
+void branch_bit0_ch (void) { if ((ch & 2) == 0) f (g ()); }
+void branch_bit1_ch (void) { if ((ch & 2) == 2) f (g ()); }
+
+/* scc */
+
+int scc_lt_ll (long long a) { return (a < 5); }
+int scc_eq_ll (long long a) { return (a == 5); }
+int scc_ne_ll (long long a) { return (a != 5); }
+int scc_gt_ll (long long a) { return (a > 5); }
+int scc_le_ll (long long a, int b) { return (a <= b); }
+int scc_ge_ll (long long a, int b) { return (a >= b); }
+int scc_ge0_ll (long long a) { return (a >= 0); }
+int scc_lt0_ll (long long a) { return (a < 0); }
+int scc_gt0_ll (long long a) { return (a > 0); }
+int scc_le0_ll (long long a) { return (a <= 0); }
+int scc_eq0_ll (long long a) { return (a > 0); }
+int scc_ne0_ll (long long a) { return (a <= 0); }
+int scc_bit0_ll (long long a) { return ((a & 2) == 0); }
+int scc_bit1_ll (long long a) { return ((a & 2) == 2); }
+
+int scc_lt (int a) { return (a < 5); }
+int scc_eq (int a) { return (a == 5); }
+int scc_ne (int a) { return (a != 5); }
+int scc_gt (int a) { return (a > 5); }
+int scc_le (int a, int b) { return (a <= b); }
+int scc_ge (int a, int b) { return (a >= b); }
+int scc_ge0 (int a) { return (a >= 0); }
+int scc_lt0 (int a) { return (a < 0); }
+int scc_gt0 (int a) { return (a > 0); }
+int scc_le0 (int a) { return (a <= 0); }
+int scc_eq0 (int a) { return (a > 0); }
+int scc_ne0 (int a) { return (a <= 0); }
+int scc_bit0 (int a) { return ((a & 2) == 0); }
+int scc_bit1 (int a) { return ((a & 2) == 2); }
+
+int scc_ltu (unsigned a) { return (a < 5); }
+int scc_gtu (unsigned a) { return (a > 5); }
+int scc_leu (unsigned a, unsigned b) { return (a <= b); }
+int scc_geu (unsigned a, unsigned b) { return (a >= b); }
+int scc_sbit0 (unsigned a) { return ((a & (unsigned)INT_MIN) == 0); }
+int scc_sbit1 (unsigned a) { return ((a & (unsigned)INT_MIN) != 0); }
+
+int scc_lt_ch (void) { return (ch < 5); }
+int scc_eq_ch (void) { return (ch == 5); }
+int scc_ne_ch (void) { return (ch != 5); }
+int scc_gt_ch (void) { return (ch > 5); }
+int scc_ge0_ch (void) { return (ch >= 0); }
+int scc_lt0_ch (void) { return (ch < 0); }
+int scc_gt0_ch (void) { return (ch > 0); }
+int scc_le0_ch (void) { return (ch <= 0); }
+int scc_eq0_ch (void) { return (ch > 0); }
+int scc_ne0_ch (void) { return (ch <= 0); }
+int scc_bit0_ch (void) { return ((ch & 2) == 0); }
+int scc_bit1_ch (void) { return ((ch & 2) == 2); }
+
+/* movsicc */
+
+int movsicc_lt_ll (long long a) { return (a < 5) ? x : 10; }
+int movsicc_eq_ll (long long a) { return (a == 5) ? x : 10; }
+int movsicc_ne_ll (long long a) { return (a != 5) ? x : 10; }
+int movsicc_gt_ll (long long a) { return (a > 5) ? x : 10; }
+int movsicc_le_ll (long long a, int b) { return (a <= b) ? x : 10; }
+int movsicc_ge_ll (long long a, int b) { return (a >= b) ? x : 10; }
+int movsicc_ge0_ll (long long a) { return (a >= 0) ? x : 10; }
+int movsicc_lt0_ll (long long a) { return (a < 0) ? x : 10; }
+int movsicc_gt0_ll (long long a) { return (a > 0) ? x : 10; }
+int movsicc_le0_ll (long long a) { return (a <= 0) ? x : 10; }
+int movsicc_eq0_ll (long long a) { return (a > 0) ? x : 10; }
+int movsicc_ne0_ll (long long a) { return (a <= 0) ? x : 10; }
+int movsicc_bit0_ll (long long a) { return ((a & 2) == 0) ? x : 10; }
+int movsicc_bit1_ll (long long a) { return ((a & 2) == 2) ? x : 10; }
+
+int movsicc_lt (int a) { return (a < 5) ? x : 10; }
+int movsicc_eq (int a) { return (a == 5) ? x : 10; }
+int movsicc_ne (int a) { return (a != 5) ? x : 10; }
+int movsicc_gt (int a) { return (a > 5) ? x : 10; }
+int movsicc_le (int a, int b) { return (a <= b) ? x : 10; }
+int movsicc_ge (int a, int b) { return (a >= b) ? x : 10; }
+int movsicc_ge0 (int a) { return (a >= 0) ? x : 10; }
+int movsicc_lt0 (int a) { return (a < 0) ? x : 10; }
+int movsicc_gt0 (int a) { return (a > 0) ? x : 10; }
+int movsicc_le0 (int a) { return (a <= 0) ? x : 10; }
+int movsicc_eq0 (int a) { return (a > 0) ? x : 10; }
+int movsicc_ne0 (int a) { return (a <= 0) ? x : 10; }
+int movsicc_bit0 (int a) { return ((a & 2) == 0) ? x : 10; }
+int movsicc_bit1 (int a) { return ((a & 2) == 2) ? x : 10; }
+
+int movsicc_ltu (unsigned a) { return (a < 5) ? x : 10; }
+int movsicc_gtu (unsigned a) { return (a > 5) ? x : 10; }
+int movsicc_leu (unsigned a, unsigned b) { return (a <= b) ? x : 10; }
+int movsicc_geu (unsigned a, unsigned b) { return (a >= b) ? x : 10; }
+int movsicc_sbit0 (unsigned a) { return ((a & (unsigned)INT_MIN) == 0) ? x : 10; }
+int movsicc_sbit1 (unsigned a) { return ((a & (unsigned)INT_MIN) != 0) ? x : 10; }
+
+int movsicc_lt_ch (void) { return (ch < 5) ? x : 10; }
+int movsicc_eq_ch (void) { return (ch == 5) ? x : 10; }
+int movsicc_ne_ch (void) { return (ch != 5) ? x : 10; }
+int movsicc_gt_ch (void) { return (ch > 5) ? x : 10; }
+int movsicc_ge0_ch (void) { return (ch >= 0) ? x : 10; }
+int movsicc_lt0_ch (void) { return (ch < 0) ? x : 10; }
+int movsicc_gt0_ch (void) { return (ch > 0) ? x : 10; }
+int movsicc_le0_ch (void) { return (ch <= 0) ? x : 10; }
+int movsicc_eq0_ch (void) { return (ch > 0) ? x : 10; }
+int movsicc_ne0_ch (void) { return (ch <= 0) ? x : 10; }
+int movsicc_bit0_ch (void) { return ((ch & 2) == 0) ? x : 10; }
+int movsicc_bit1_ch (void) { return ((ch & 2) == 2) ? x : 10; }
+
+/* movsfcc */
+
+/* mem_movsicc */
+
+void mem_movsicc_lt (int a) { x = (a < 5) ? x : 10; }
+void mem_movsicc_eq (int a) { x = (a == 5) ? x : 10; }
+void mem_movsicc_ne (int a) { x = (a != 5) ? x : 10; }
+void mem_movsicc_gt (int a) { x = (a > 5) ? x : 10; }
+void mem_movsicc_le (int a, int b) { x = (a <= b) ? x : 10; }
+void mem_movsicc_ge (int a, int b) { x = (a >= b) ? x : 10; }
+void mem_movsicc_ge0 (int a) { x = (a >= 0) ? x : 10; }
+void mem_movsicc_lt0 (int a) { x = (a < 0) ? x : 10; }
+void mem_movsicc_gt0 (int a) { x = (a > 0) ? x : 10; }
+void mem_movsicc_le0 (int a) { x = (a <= 0) ? x : 10; }
+void mem_movsicc_eq0 (int a) { x = (a > 0) ? x : 10; }
+void mem_movsicc_ne0 (int a) { x = (a <= 0) ? x : 10; }
+void mem_movsicc_bit0 (int a) { x = ((a & 2) == 0) ? x : 10; }
+void mem_movsicc_bit1 (int a) { x = ((a & 2) == 2) ? x : 10; }
+
+void mem_movsicc_ltu (unsigned a) { x = (a < 5) ? x : 10; }
+void mem_movsicc_gtu (unsigned a) { x = (a > 5) ? x : 10; }
+void mem_movsicc_leu (unsigned a, unsigned b) { x = (a <= b) ? x : 10; }
+void mem_movsicc_geu (unsigned a, unsigned b) { x = (a >= b) ? x : 10; }
+void mem_movsicc_sbit0 (unsigned a) { x = ((a & (unsigned)INT_MIN) == 0) ? x : 10; }
+void mem_movsicc_sbit1 (unsigned a) { x = ((a & (unsigned)INT_MIN) != 0) ? x : 10; }
+
+void mem_movsicc_lt_ch (void) { x = (ch < 5) ? x : 10; }
+void mem_movsicc_eq_ch (void) { x = (ch == 5) ? x : 10; }
+void mem_movsicc_ne_ch (void) { x = (ch != 5) ? x : 10; }
+void mem_movsicc_gt_ch (void) { x = (ch > 5) ? x : 10; }
+void mem_movsicc_ge0_ch (void) { x = (ch >= 0) ? x : 10; }
+void mem_movsicc_lt0_ch (void) { x = (ch < 0) ? x : 10; }
+void mem_movsicc_gt0_ch (void) { x = (ch > 0) ? x : 10; }
+void mem_movsicc_le0_ch (void) { x = (ch <= 0) ? x : 10; }
+void mem_movsicc_eq0_ch (void) { x = (ch > 0) ? x : 10; }
+void mem_movsicc_ne0_ch (void) { x = (ch <= 0) ? x : 10; }
+void mem_movsicc_bit0_ch (void) { x = ((ch & 2) == 0) ? x : 10; }
+void mem_movsicc_bit1_ch (void) { x = ((ch & 2) == 2) ? x : 10; }
+
+/* mem_movsfcc */
+
+void branch_ne2 (int a, int b) { if (a != b) f (g ()); }
+int scc_ne2 (int a, int b) { return (a != b); }
+int movsicc_ne2 (int a, int b) { return (a != b) ? x : 10; }
+void mem_movsicc_ne2 (int a, int b) { x = (a != b) ? x : 10; }
+
+void branch_gt2 (int a, int b) { if (a > b) f (g ()); }
+int scc_gt2 (int a, int b) { return (a > b); }
+int movsicc_gt2 (int a, int b) { return (a > b) ? x : 10; }
+void mem_movsicc_gt2 (int a, int b) { x = (a > b) ? x : 10; }
+
+void branch_eq2 (int a, int b) { if (a == b) f (g ()); }
+int scc_eq2 (int a, int b) { return (a == b); }
+int movsicc_eq2 (int a, int b) { return (a == b) ? x : 10; }
+void mem_movsicc_eq2 (int a, int b) { x = (a == b) ? x : 10; }
+
+void branch_lt2 (int a, int b) { if (a < b) f (g ()); }
+int scc_lt2 (int a, int b) { return (a < b); }
+int movsicc_lt2 (int a, int b) { return (a < b) ? x : 10; }
+void mem_movsicc_lt2 (int a, int b) { x = (a < b) ? x : 10; }
+
+void branch_gtu2 (unsigned a, unsigned b) { if (a > b) f (g ()); }
+int scc_gtu2 (unsigned a, unsigned b) { return (a > b); }
+int movsicc_gtu2 (unsigned a, unsigned b) { return (a > b) ? x : 10; }
+void mem_movsicc_gtu2 (unsigned a, unsigned b) { x = (a > b) ? x : 10; }
+
+void branch_ltu2 (unsigned a, unsigned b) { if (a < b) f (g ()); }
+int scc_ltu2 (unsigned a, unsigned b) { return (a < b); }
+int movsicc_ltu2 (unsigned a, unsigned b) { return (a < b) ? x : 10; }
+void mem_movsicc_ltu2 (unsigned a, unsigned b) { x = (a < b) ? x : 10; }
+
+float movsfcc_lt_ll (long long a) { return (a < 5) ? flt : 10; }
+float movsfcc_eq_ll (long long a) { return (a == 5) ? flt : 10; }
+float movsfcc_ne_ll (long long a) { return (a != 5) ? flt : 10; }
+float movsfcc_gt_ll (long long a) { return (a > 5) ? flt : 10; }
+float movsfcc_le_ll (long long a, int b) { return (a <= b) ? flt : 10; }
+float movsfcc_ge_ll (long long a, int b) { return (a >= b) ? flt : 10; }
+float movsfcc_ge0_ll (long long a) { return (a >= 0) ? flt : 10; }
+float movsfcc_lt0_ll (long long a) { return (a < 0) ? flt : 10; }
+float movsfcc_gt0_ll (long long a) { return (a > 0) ? flt : 10; }
+float movsfcc_le0_ll (long long a) { return (a <= 0) ? flt : 10; }
+float movsfcc_eq0_ll (long long a) { return (a > 0) ? flt : 10; }
+float movsfcc_ne0_ll (long long a) { return (a <= 0) ? flt : 10; }
+float movsfcc_bit0_ll (long long a) { return ((a & 2) == 0) ? flt : 10; }
+float movsfcc_bit1_ll (long long a) { return ((a & 2) == 2) ? flt : 10; }
+
+float movsfcc_lt (int a) { return (a < 5) ? flt : 10; }
+float movsfcc_eq (int a) { return (a == 5) ? flt : 10; }
+float movsfcc_ne (int a) { return (a != 5) ? flt : 10; }
+float movsfcc_gt (int a) { return (a > 5) ? flt : 10; }
+float movsfcc_le (int a, int b) { return (a <= b) ? flt : 10; }
+float movsfcc_ge (int a, int b) { return (a >= b) ? flt : 10; }
+float movsfcc_ge0 (int a) { return (a >= 0) ? flt : 10; }
+float movsfcc_lt0 (int a) { return (a < 0) ? flt : 10; }
+float movsfcc_gt0 (int a) { return (a > 0) ? flt : 10; }
+float movsfcc_le0 (int a) { return (a <= 0) ? flt : 10; }
+float movsfcc_eq0 (int a) { return (a > 0) ? flt : 10; }
+float movsfcc_ne0 (int a) { return (a <= 0) ? flt : 10; }
+float movsfcc_bit0 (int a) { return ((a & 2) == 0) ? flt : 10; }
+float movsfcc_bit1 (int a) { return ((a & 2) == 2) ? flt : 10; }
+
+float movsfcc_ltu (unsigned a) { return (a < 5) ? flt : 10; }
+float movsfcc_gtu (unsigned a) { return (a > 5) ? flt : 10; }
+float movsfcc_leu (unsigned a, unsigned b) { return (a <= b) ? flt : 10; }
+float movsfcc_geu (unsigned a, unsigned b) { return (a >= b) ? flt : 10; }
+float movsfcc_sbit0 (unsigned a) { return ((a & (unsigned)INT_MIN) == 0) ? flt : 10; }
+float movsfcc_sbit1 (unsigned a) { return ((a & (unsigned)INT_MIN) != 0) ? flt : 10; }
+
+float movsfcc_lt_ch (void) { return (ch < 5) ? flt : 10; }
+float movsfcc_eq_ch (void) { return (ch == 5) ? flt : 10; }
+float movsfcc_ne_ch (void) { return (ch != 5) ? flt : 10; }
+float movsfcc_gt_ch (void) { return (ch > 5) ? flt : 10; }
+float movsfcc_ge0_ch (void) { return (ch >= 0) ? flt : 10; }
+float movsfcc_lt0_ch (void) { return (ch < 0) ? flt : 10; }
+float movsfcc_gt0_ch (void) { return (ch > 0) ? flt : 10; }
+float movsfcc_le0_ch (void) { return (ch <= 0) ? flt : 10; }
+float movsfcc_eq0_ch (void) { return (ch > 0) ? flt : 10; }
+float movsfcc_ne0_ch (void) { return (ch <= 0) ? flt : 10; }
+float movsfcc_bit0_ch (void) { return ((ch & 2) == 0) ? flt : 10; }
+float movsfcc_bit1_ch (void) { return ((ch & 2) == 2) ? flt : 10; }
+
+void mem_movsfcc_lt (int a) { flt = (a < 5) ? flt : 10; }
+void mem_movsfcc_eq (int a) { flt = (a == 5) ? flt : 10; }
+void mem_movsfcc_ne (int a) { flt = (a != 5) ? flt : 10; }
+void mem_movsfcc_gt (int a) { flt = (a > 5) ? flt : 10; }
+void mem_movsfcc_le (int a, int b) { flt = (a <= b) ? flt : 10; }
+void mem_movsfcc_ge (int a, int b) { flt = (a >= b) ? flt : 10; }
+void mem_movsfcc_ge0 (int a) { flt = (a >= 0) ? flt : 10; }
+void mem_movsfcc_lt0 (int a) { flt = (a < 0) ? flt : 10; }
+void mem_movsfcc_gt0 (int a) { flt = (a > 0) ? flt : 10; }
+void mem_movsfcc_le0 (int a) { flt = (a <= 0) ? flt : 10; }
+void mem_movsfcc_eq0 (int a) { flt = (a > 0) ? flt : 10; }
+void mem_movsfcc_ne0 (int a) { flt = (a <= 0) ? flt : 10; }
+void mem_movsfcc_bit0 (int a) { flt = ((a & 2) == 0) ? flt : 10; }
+void mem_movsfcc_bit1 (int a) { flt = ((a & 2) == 2) ? flt : 10; }
+
+void mem_movsfcc_ltu (unsigned a) { flt = (a < 5) ? flt : 10; }
+void mem_movsfcc_gtu (unsigned a) { flt = (a > 5) ? flt : 10; }
+void mem_movsfcc_leu (unsigned a, unsigned b) { flt = (a <= b) ? flt : 10; }
+void mem_movsfcc_geu (unsigned a, unsigned b) { flt = (a >= b) ? flt : 10; }
+void mem_movsfcc_sbit0 (unsigned a) { flt = ((a & (unsigned)INT_MIN) == 0) ? flt : 10; }
+void mem_movsfcc_sbit1 (unsigned a) { flt = ((a & (unsigned)INT_MIN) != 0) ? flt : 10; }
+
+void mem_movsfcc_lt_ch (void) { flt = (ch < 5) ? flt : 10; }
+void mem_movsfcc_eq_ch (void) { flt = (ch == 5) ? flt : 10; }
+void mem_movsfcc_ne_ch (void) { flt = (ch != 5) ? flt : 10; }
+void mem_movsfcc_gt_ch (void) { flt = (ch > 5) ? flt : 10; }
+void mem_movsfcc_ge0_ch (void) { flt = (ch >= 0) ? flt : 10; }
+void mem_movsfcc_lt0_ch (void) { flt = (ch < 0) ? flt : 10; }
+void mem_movsfcc_gt0_ch (void) { flt = (ch > 0) ? flt : 10; }
+void mem_movsfcc_le0_ch (void) { flt = (ch <= 0) ? flt : 10; }
+void mem_movsfcc_eq0_ch (void) { flt = (ch > 0) ? flt : 10; }
+void mem_movsfcc_ne0_ch (void) { flt = (ch <= 0) ? flt : 10; }
+void mem_movsfcc_bit0_ch (void) { flt = ((ch & 2) == 0) ? flt : 10; }
+void mem_movsfcc_bit1_ch (void) { flt = ((ch & 2) == 2) ? flt : 10; }
+
+float movsfcc_ne2 (int a, int b) { return (a != b) ? flt : 10; }
+float movsfcc_gt2 (int a, int b) { return (a > b) ? flt : 10; }
+float movsfcc_eq2 (int a, int b) { return (a == b) ? flt : 10; }
+float movsfcc_lt2 (int a, int b) { return (a < b) ? flt : 10; }
+float movsfcc_gtu2 (unsigned a, unsigned b) { return (a > b) ? flt : 10; }
+float movsfcc_ltu2 (unsigned a, unsigned b) { return (a < b) ? flt : 10; }
+
+void mem_movsfcc_ne2 (int a, int b) { flt = (a != b) ? flt : 10; }
+void mem_movsfcc_gt2 (int a, int b) { flt = (a > b) ? flt : 10; }
+void mem_movsfcc_eq2 (int a, int b) { flt = (a == b) ? flt : 10; }
+void mem_movsfcc_lt2 (int a, int b) { flt = (a < b) ? flt : 10; }
+void mem_movsfcc_gtu2 (unsigned a, unsigned b) { flt = (a > b) ? flt : 10; }
+void mem_movsfcc_ltu2 (unsigned a, unsigned b) { flt = (a < b) ? flt : 10; }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]