[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] libjit ChangeLog dpas/dpas-parser.y tests/cond.pas
From: |
Klaus Treichel |
Subject: |
[dotgnu-pnet-commits] libjit ChangeLog dpas/dpas-parser.y tests/cond.pas |
Date: |
Sat, 19 Jul 2008 10:20:52 +0000 |
CVSROOT: /cvsroot/dotgnu-pnet
Module name: libjit
Changes by: Klaus Treichel <ktreichel> 08/07/19 10:20:52
Modified files:
. : ChangeLog
dpas : dpas-parser.y
tests : cond.pas
Log message:
Fix a bug in dpas with binary functions returning a boolean result
where the
result type was not recorded correctly.
Add tests for float comparisions where nan values are involved and add
tests
for the *_inv opcodes (not (f1 op f2)).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.384&r2=1.385
http://cvs.savannah.gnu.org/viewcvs/libjit/dpas/dpas-parser.y?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/libjit/tests/cond.pas?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.384
retrieving revision 1.385
diff -u -b -r1.384 -r1.385
--- ChangeLog 6 Jul 2008 14:00:42 -0000 1.384
+++ ChangeLog 19 Jul 2008 10:20:51 -0000 1.385
@@ -1,3 +1,14 @@
+2008-07-19 Klaus Treichel <address@hidden>
+
+ * dpas/spas-parser.y (handle_boolean_binary): Add macro for binary
+ operators returning a boolean value.
+ (handle_compare_binary): Use handle_boolean_binary instead of
+ handle_binary for non pointer compares. Set the result type to
+ dpas_type_boolean instead of the common type for pointer compares.
+
+ * tests/cond.pas: Add float compare tests where nan values are
+ involved. Add compare tests for the *_inv opcodes.
+
2008-07-06 Klaus Treichel <address@hidden>
* jit/jit-rules-x86-64.ins: Replace the check if an immediate value
Index: dpas/dpas-parser.y
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/dpas/dpas-parser.y,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- dpas/dpas-parser.y 27 Feb 2008 08:53:41 -0000 1.17
+++ dpas/dpas-parser.y 19 Jul 2008 10:20:51 -0000 1.18
@@ -680,6 +680,34 @@
} while (0)
/*
+ * Handle a boolean binary operator.
+ */
+#define handle_boolean_binary(name,func,arg1,arg2) \
+ do { \
+ if(!dpas_sem_is_rvalue(arg1) || \
+ !dpas_type_is_numeric(dpas_sem_get_type(arg2)) || \
+ !dpas_sem_is_rvalue(arg1) || \
+ !dpas_type_is_numeric(dpas_sem_get_type(arg2))) \
+ { \
+ if(!dpas_sem_is_error(arg1) &&
!dpas_sem_is_error(arg2)) \
+ { \
+ dpas_error("invalid operands to binary
`" name "'"); \
+ } \
+ dpas_sem_set_error(yyval.semvalue); \
+ } \
+ else \
+ { \
+ jit_value_t value; \
+ value = func \
+ (dpas_current_function(), \
+
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg1)), \
+
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg2))); \
+ dpas_sem_set_rvalue \
+ (yyval.semvalue, dpas_type_boolean,
value); \
+ } \
+ } while (0)
+
+/*
* Handle a comparison binary operator.
*/
#define handle_compare_binary(name,func,arg1,arg2) \
@@ -695,11 +723,11 @@
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg1)), \
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg2))); \
dpas_sem_set_rvalue \
- (yyval.semvalue,
jit_value_get_type(value), value); \
+ (yyval.semvalue, dpas_type_boolean,
value); \
} \
else \
{ \
- handle_binary(name, func, arg1, arg2); \
+ handle_boolean_binary(name, func, arg1, arg2); \
} \
} while (0)
Index: tests/cond.pas
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/tests/cond.pas,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- tests/cond.pas 20 Apr 2008 10:44:02 -0000 1.1
+++ tests/cond.pas 19 Jul 2008 10:20:51 -0000 1.2
@@ -446,26 +446,114 @@
shortreal_lt := (f1 < f2);
end;
+function shortreal_neq(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_neq := not (f1 = f2);
+end;
+
+function shortreal_nne(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_nne := not (f1 <> f2);
+end;
+
+function shortreal_nge(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_nge := not (f1 >= f2);
+end;
+
+function shortreal_ngt(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_ngt := not (f1 > f2);
+end;
+
+function shortreal_nle(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_nle := not (f1 <= f2);
+end;
+
+function shortreal_nlt(f1, f2: ShortReal): Boolean;
+begin
+ shortreal_nlt := not (f1 < f2);
+end;
+
procedure shortreal_tests;
+var
+ fnan :ShortReal;
begin
+ fnan := sqrt(ShortReal(-1));
+
+ runcheck("cond_f_eq_nan_0.0", shortreal_eq(fnan, 0.0), False);
+ runcheck("cond_f_eq_0.0_nan", shortreal_eq(0.0, fnan), False);
+ runcheck("cond_f_eq_nan_nan", shortreal_eq(fnan, fnan), False);
runcheck("cond_f_eq_0.0_0.0", shortreal_eq(0.0, 0.0), True);
runcheck("cond_f_eq_1.0_0.0", shortreal_eq(1.0, 0.0), False);
runcheck("cond_f_eq_0.0_1.0", shortreal_eq(0.0, 1.0), False);
+ runcheck("cond_f_neq_nan_0.0", shortreal_neq(fnan, 0.0), True);
+ runcheck("cond_f_neq_0.0_nan", shortreal_neq(0.0, fnan), True);
+ runcheck("cond_f_neq_nan_nan", shortreal_neq(fnan, fnan), True);
+ runcheck("cond_f_neq_0.0_0.0", shortreal_neq(0.0, 0.0), False);
+ runcheck("cond_f_neq_1.0_0.0", shortreal_neq(1.0, 0.0), True);
+ runcheck("cond_f_neq_0.0_1.0", shortreal_neq(0.0, 1.0), True);
+ runcheck("cond_f_ne_nan_0.0", shortreal_ne(fnan, 0.0), True);
+ runcheck("cond_f_ne_0.0_nan", shortreal_ne(0.0, fnan), True);
+ runcheck("cond_f_ne_nan_nan", shortreal_ne(fnan, fnan), True);
runcheck("cond_f_ne_0.0_0.0", shortreal_ne(0.0, 0.0), False);
runcheck("cond_f_ne_1.0_0.0", shortreal_ne(1.0, 0.0), True);
runcheck("cond_f_ne_0.0_1.0", shortreal_ne(0.0, 1.0), True);
+ runcheck("cond_f_nne_nan_0.0", shortreal_nne(fnan, 0.0), False);
+ runcheck("cond_f_nne_0.0_nan", shortreal_nne(0.0, fnan), False);
+ runcheck("cond_f_nne_nan_nan", shortreal_nne(fnan, fnan), False);
+ runcheck("cond_f_nne_0.0_0.0", shortreal_nne(0.0, 0.0), True);
+ runcheck("cond_f_nne_1.0_0.0", shortreal_nne(1.0, 0.0), False);
+ runcheck("cond_f_nne_0.0_1.0", shortreal_nne(0.0, 1.0), False);
+ runcheck("cond_f_gt_nan_0.0", shortreal_gt(fnan, 0.0), False);
+ runcheck("cond_f_gt_0.0_nan", shortreal_gt(0.0, fnan), False);
+ runcheck("cond_f_gt_nan_nan", shortreal_gt(fnan, fnan), False);
runcheck("cond_f_gt_0.0_0.0", shortreal_gt(0.0, 0.0), False);
runcheck("cond_f_gt_1.0_0.0", shortreal_gt(1.0, 0.0), True);
runcheck("cond_f_gt_0.0_1.0", shortreal_gt(0.0, 1.0), False);
- runcheck("cond_f_ge_0.0_0.0", shortreal_ge(0.0, 0.0), true);
+ runcheck("cond_f_ngt_nan_0.0", shortreal_ngt(fnan, 0.0), True);
+ runcheck("cond_f_ngt_0.0_nan", shortreal_ngt(0.0, fnan), True);
+ runcheck("cond_f_ngt_nan_nan", shortreal_ngt(fnan, fnan), True);
+ runcheck("cond_f_ngt_0.0_0.0", shortreal_ngt(0.0, 0.0), True);
+ runcheck("cond_f_ngt_1.0_0.0", shortreal_ngt(1.0, 0.0), False);
+ runcheck("cond_f_ngt_0.0_1.0", shortreal_ngt(0.0, 1.0), True);
+ runcheck("cond_f_ge_nan_0.0", shortreal_ge(fnan, 0.0), False);
+ runcheck("cond_f_ge_0.0_nan", shortreal_ge(0.0, fnan), False);
+ runcheck("cond_f_ge_nan_nan", shortreal_ge(fnan, fnan), False);
+ runcheck("cond_f_ge_0.0_0.0", shortreal_ge(0.0, 0.0), True);
runcheck("cond_f_ge_1.0_0.0", shortreal_ge(1.0, 0.0), True);
runcheck("cond_f_ge_0.0_1.0", shortreal_ge(0.0, 1.0), False);
+ runcheck("cond_f_nge_nan_0.0", shortreal_nge(fnan, 0.0), True);
+ runcheck("cond_f_nge_0.0_nan", shortreal_nge(0.0, fnan), True);
+ runcheck("cond_f_nge_nan_nan", shortreal_nge(fnan, fnan), True);
+ runcheck("cond_f_nge_0.0_0.0", shortreal_nge(0.0, 0.0), False);
+ runcheck("cond_f_nge_1.0_0.0", shortreal_nge(1.0, 0.0), False);
+ runcheck("cond_f_nge_0.0_1.0", shortreal_nge(0.0, 1.0), True);
+ runcheck("cond_f_lt_nan_0.0", shortreal_lt(fnan, 0.0), False);
+ runcheck("cond_f_lt_0.0_nan", shortreal_lt(0.0, fnan), False);
+ runcheck("cond_f_lt_nan_nan", shortreal_lt(fnan, fnan), False);
runcheck("cond_f_lt_0.0_0.0", shortreal_lt(0.0, 0.0), False);
runcheck("cond_f_lt_1.0_0.0", shortreal_lt(1.0, 0.0), False);
runcheck("cond_f_lt_0.0_1.0", shortreal_lt(0.0, 1.0), True);
+ runcheck("cond_f_nlt_nan_0.0", shortreal_nlt(fnan, 0.0), True);
+ runcheck("cond_f_nlt_0.0_nan", shortreal_nlt(0.0, fnan), True);
+ runcheck("cond_f_nlt_nan_nan", shortreal_nlt(fnan, fnan), True);
+ runcheck("cond_f_nlt_0.0_0.0", shortreal_nlt(0.0, 0.0), True);
+ runcheck("cond_f_nlt_1.0_0.0", shortreal_nlt(1.0, 0.0), True);
+ runcheck("cond_f_nlt_0.0_1.0", shortreal_nlt(0.0, 1.0), False);
+ runcheck("cond_f_le_nan_0.0", shortreal_le(fnan, 0.0), False);
+ runcheck("cond_f_le_0.0_nan", shortreal_le(0.0, fnan), False);
+ runcheck("cond_f_le_nan_nan", shortreal_le(fnan, fnan), False);
runcheck("cond_f_le_0.0_0.0", shortreal_le(0.0, 0.0), True);
runcheck("cond_f_le_1.0_0.0", shortreal_le(1.0, 0.0), False);
runcheck("cond_f_le_0.0_1.0", shortreal_le(0.0, 1.0), True);
+ runcheck("cond_f_nle_nan_0.0", shortreal_nle(fnan, 0.0), True);
+ runcheck("cond_f_nle_0.0_nan", shortreal_nle(0.0, fnan), True);
+ runcheck("cond_f_nle_nan_nan", shortreal_nle(fnan, fnan), True);
+ runcheck("cond_f_nle_0.0_0.0", shortreal_nle(0.0, 0.0), False);
+ runcheck("cond_f_nle_1.0_0.0", shortreal_nle(1.0, 0.0), True);
+ runcheck("cond_f_nle_0.0_1.0", shortreal_nle(0.0, 1.0), False);
end;
function real_eq(f1, f2: Real): Boolean;
@@ -498,26 +586,115 @@
real_lt := (f1 < f2);
end;
+function real_neq(f1, f2: Real): Boolean;
+begin
+ real_neq := not (f1 = f2);
+end;
+
+function real_nne(f1, f2: Real): Boolean;
+begin
+ real_nne := not (f1 <> f2);
+end;
+
+function real_nge(f1, f2: Real): Boolean;
+begin
+ real_nge := not (f1 >= f2);
+end;
+
+function real_ngt(f1, f2: Real): Boolean;
+begin
+ real_ngt := not (f1 > f2);
+end;
+
+function real_nle(f1, f2: Real): Boolean;
+begin
+ real_nle := not (f1 <= f2);
+end;
+
+function real_nlt(f1, f2: Real): Boolean;
+begin
+ real_nlt := not (f1 < f2);
+end;
+
procedure real_tests;
+var
+ dnan :Real;
begin
+ dnan := sqrt(Real(-1));
+
+ runcheck("cond_d_eq_nan_0.0", real_eq(dnan, 0.0), False);
+ runcheck("cond_d_eq_0.0_nan", real_eq(0.0, dnan), False);
+ runcheck("cond_d_eq_nan_nan", real_eq(dnan, dnan), False);
runcheck("cond_d_eq_0.0_0.0", real_eq(0.0, 0.0), True);
runcheck("cond_d_eq_1.0_0.0", real_eq(1.0, 0.0), False);
runcheck("cond_d_eq_0.0_1.0", real_eq(0.0, 1.0), False);
+ runcheck("cond_d_neq_nan_0.0", real_neq(dnan, 0.0), True);
+ runcheck("cond_d_neq_0.0_nan", real_neq(0.0, dnan), True);
+ runcheck("cond_d_neq_nan_nan", real_neq(dnan, dnan), True);
+ runcheck("cond_d_neq_0.0_0.0", real_neq(0.0, 0.0), False);
+ runcheck("cond_d_neq_1.0_0.0", real_neq(1.0, 0.0), True);
+ runcheck("cond_d_neq_0.0_1.0", real_neq(0.0, 1.0), True);
+ runcheck("cond_d_ne_nan_0.0", real_ne(dnan, 0.0), True);
+ runcheck("cond_d_ne_0.0_nan", real_ne(0.0, dnan), True);
+ runcheck("cond_d_ne_nan_nan", real_ne(dnan, dnan), True);
runcheck("cond_d_ne_0.0_0.0", real_ne(0.0, 0.0), False);
runcheck("cond_d_ne_1.0_0.0", real_ne(1.0, 0.0), True);
runcheck("cond_d_ne_0.0_1.0", real_ne(0.0, 1.0), True);
+ runcheck("cond_d_nne_nan_0.0", real_nne(dnan, 0.0), False);
+ runcheck("cond_d_nne_0.0_nan", real_nne(0.0, dnan), False);
+ runcheck("cond_d_nne_nan_nan", real_nne(dnan, dnan), False);
+ runcheck("cond_d_nne_0.0_0.0", real_nne(0.0, 0.0), True);
+ runcheck("cond_d_nne_1.0_0.0", real_nne(1.0, 0.0), False);
+ runcheck("cond_d_nne_0.0_1.0", real_nne(0.0, 1.0), False);
+ runcheck("cond_d_gt_nan_0.0", real_gt(dnan, 0.0), False);
+ runcheck("cond_d_gt_0.0_nan", real_gt(0.0, dnan), False);
+ runcheck("cond_d_gt_nan_nan", real_gt(dnan, dnan), False);
runcheck("cond_d_gt_0.0_0.0", real_gt(0.0, 0.0), False);
runcheck("cond_d_gt_1.0_0.0", real_gt(1.0, 0.0), True);
runcheck("cond_d_gt_0.0_1.0", real_gt(0.0, 1.0), False);
- runcheck("cond_d_ge_0.0_0.0", real_ge(0.0, 0.0), true);
+ runcheck("cond_d_ngt_nan_0.0", real_ngt(dnan, 0.0), True);
+ runcheck("cond_d_ngt_0.0_nan", real_ngt(0.0, dnan), True);
+ runcheck("cond_d_ngt_nan_nan", real_ngt(dnan, dnan), True);
+ runcheck("cond_d_ngt_0.0_0.0", real_ngt(0.0, 0.0), True);
+ runcheck("cond_d_ngt_1.0_0.0", real_ngt(1.0, 0.0), False);
+ runcheck("cond_d_ngt_0.0_1.0", real_ngt(0.0, 1.0), True);
+ runcheck("cond_d_ge_nan_0.0", real_ge(dnan, 0.0), False);
+ runcheck("cond_d_ge_0.0_nan", real_ge(0.0, dnan), False);
+ runcheck("cond_d_ge_nan_nan", real_ge(dnan, dnan), False);
+ runcheck("cond_d_ge_0.0_0.0", real_ge(0.0, 0.0), True);
runcheck("cond_d_ge_1.0_0.0", real_ge(1.0, 0.0), True);
runcheck("cond_d_ge_0.0_1.0", real_ge(0.0, 1.0), False);
+ runcheck("cond_d_nge_nan_0.0", real_nge(dnan, 0.0), True);
+ runcheck("cond_d_nge_0.0_nan", real_nge(0.0, dnan), True);
+ runcheck("cond_d_nge_nan_nan", real_nge(dnan, dnan), True);
+ runcheck("cond_d_nge_0.0_0.0", real_nge(0.0, 0.0), False);
+ runcheck("cond_d_nge_1.0_0.0", real_nge(1.0, 0.0), False);
+ runcheck("cond_d_nge_0.0_1.0", real_nge(0.0, 1.0), True);
+ runcheck("cond_d_lt_nan_0.0", real_lt(dnan, 0.0), False);
+ runcheck("cond_d_lt_0.0_nan", real_lt(0.0, dnan), False);
+ runcheck("cond_d_lt_nan_nan", real_lt(dnan, dnan), False);
runcheck("cond_d_lt_0.0_0.0", real_lt(0.0, 0.0), False);
runcheck("cond_d_lt_1.0_0.0", real_lt(1.0, 0.0), False);
runcheck("cond_d_lt_0.0_1.0", real_lt(0.0, 1.0), True);
+ runcheck("cond_d_nlt_nan_0.0", real_nlt(dnan, 0.0), True);
+ runcheck("cond_d_nlt_0.0_nan", real_nlt(0.0, dnan), True);
+ runcheck("cond_d_nlt_nan_nan", real_nlt(dnan, dnan), True);
+ runcheck("cond_d_nlt_0.0_0.0", real_nlt(0.0, 0.0), True);
+ runcheck("cond_d_nlt_1.0_0.0", real_nlt(1.0, 0.0), True);
+ runcheck("cond_d_nlt_0.0_1.0", real_nlt(0.0, 1.0), False);
+ runcheck("cond_d_le_nan_0.0", real_le(dnan, 0.0), False);
+ runcheck("cond_d_le_0.0_nan", real_le(0.0, dnan), False);
+ runcheck("cond_d_le_nan_nan", real_le(dnan, dnan), False);
runcheck("cond_d_le_0.0_0.0", real_le(0.0, 0.0), True);
runcheck("cond_d_le_1.0_0.0", real_le(1.0, 0.0), False);
runcheck("cond_d_le_0.0_1.0", real_le(0.0, 1.0), True);
+ runcheck("cond_d_nle_nan_0.0", real_nle(dnan, 0.0), True);
+ runcheck("cond_d_nle_0.0_nan", real_nle(0.0, dnan), True);
+ runcheck("cond_d_nle_nan_nan", real_nle(dnan, dnan), True);
+ runcheck("cond_d_nle_0.0_0.0", real_nle(0.0, 0.0), False);
+ runcheck("cond_d_nle_1.0_0.0", real_nle(1.0, 0.0), True);
+ runcheck("cond_d_nle_0.0_1.0", real_nle(0.0, 1.0), False);
+
end;
function longreal_eq(f1, f2: LongReal): Boolean;
@@ -550,26 +727,114 @@
longreal_lt := (f1 < f2);
end;
+function longreal_neq(f1, f2: LongReal): Boolean;
+begin
+ longreal_neq := not (f1 = f2);
+end;
+
+function longreal_nne(f1, f2: LongReal): Boolean;
+begin
+ longreal_nne := not (f1 <> f2);
+end;
+
+function longreal_nge(f1, f2: LongReal): Boolean;
+begin
+ longreal_nge := not (f1 >= f2);
+end;
+
+function longreal_ngt(f1, f2: LongReal): Boolean;
+begin
+ longreal_ngt := not (f1 > f2);
+end;
+
+function longreal_nle(f1, f2: LongReal): Boolean;
+begin
+ longreal_nle := not (f1 <= f2);
+end;
+
+function longreal_nlt(f1, f2: LongReal): Boolean;
+begin
+ longreal_nlt := not (f1 < f2);
+end;
+
procedure longreal_tests;
+var
+ nnan :LongReal;
begin
+ nnan := sqrt(LongReal(-1));
+
+ runcheck("cond_n_eq_nan_0.0", longreal_eq(nnan, 0.0), False);
+ runcheck("cond_n_eq_0.0_nan", longreal_eq(0.0, nnan), False);
+ runcheck("cond_n_eq_nan_nan", longreal_eq(nnan, nnan), False);
runcheck("cond_n_eq_0.0_0.0", longreal_eq(0.0, 0.0), True);
runcheck("cond_n_eq_1.0_0.0", longreal_eq(1.0, 0.0), False);
runcheck("cond_n_eq_0.0_1.0", longreal_eq(0.0, 1.0), False);
+ runcheck("cond_n_neq_nan_0.0", longreal_neq(nnan, 0.0), True);
+ runcheck("cond_n_neq_0.0_nan", longreal_neq(0.0, nnan), True);
+ runcheck("cond_n_neq_nan_nan", longreal_neq(nnan, nnan), True);
+ runcheck("cond_n_neq_0.0_0.0", longreal_neq(0.0, 0.0), False);
+ runcheck("cond_n_neq_1.0_0.0", longreal_neq(1.0, 0.0), True);
+ runcheck("cond_n_neq_0.0_1.0", longreal_neq(0.0, 1.0), True);
+ runcheck("cond_n_ne_nan_0.0", longreal_ne(nnan, 0.0), True);
+ runcheck("cond_n_ne_0.0_nan", longreal_ne(0.0, nnan), True);
+ runcheck("cond_n_ne_nan_nan", longreal_ne(nnan, nnan), True);
runcheck("cond_n_ne_0.0_0.0", longreal_ne(0.0, 0.0), False);
runcheck("cond_n_ne_1.0_0.0", longreal_ne(1.0, 0.0), True);
runcheck("cond_n_ne_0.0_1.0", longreal_ne(0.0, 1.0), True);
+ runcheck("cond_n_nne_nan_0.0", longreal_nne(nnan, 0.0), False);
+ runcheck("cond_n_nne_0.0_nan", longreal_nne(0.0, nnan), False);
+ runcheck("cond_n_nne_nan_nan", longreal_nne(nnan, nnan), False);
+ runcheck("cond_n_nne_0.0_0.0", longreal_nne(0.0, 0.0), True);
+ runcheck("cond_n_nne_1.0_0.0", longreal_nne(1.0, 0.0), False);
+ runcheck("cond_n_nne_0.0_1.0", longreal_nne(0.0, 1.0), False);
+ runcheck("cond_n_gt_nan_0.0", longreal_gt(nnan, 0.0), False);
+ runcheck("cond_n_gt_0.0_nan", longreal_gt(0.0, nnan), False);
+ runcheck("cond_n_gt_nan_nan", longreal_gt(nnan, nnan), False);
runcheck("cond_n_gt_0.0_0.0", longreal_gt(0.0, 0.0), False);
runcheck("cond_n_gt_1.0_0.0", longreal_gt(1.0, 0.0), True);
runcheck("cond_n_gt_0.0_1.0", longreal_gt(0.0, 1.0), False);
- runcheck("cond_n_ge_0.0_0.0", longreal_ge(0.0, 0.0), true);
+ runcheck("cond_n_ngt_nan_0.0", longreal_ngt(nnan, 0.0), True);
+ runcheck("cond_n_ngt_0.0_nan", longreal_ngt(0.0, nnan), True);
+ runcheck("cond_n_ngt_nan_nan", longreal_ngt(nnan, nnan), True);
+ runcheck("cond_n_ngt_0.0_0.0", longreal_ngt(0.0, 0.0), True);
+ runcheck("cond_n_ngt_1.0_0.0", longreal_ngt(1.0, 0.0), False);
+ runcheck("cond_n_ngt_0.0_1.0", longreal_ngt(0.0, 1.0), True);
+ runcheck("cond_n_ge_nan_0.0", longreal_ge(nnan, 0.0), False);
+ runcheck("cond_n_ge_0.0_nan", longreal_ge(0.0, nnan), False);
+ runcheck("cond_n_ge_nan_nan", longreal_ge(nnan, nnan), False);
+ runcheck("cond_n_ge_0.0_0.0", longreal_ge(0.0, 0.0), True);
runcheck("cond_n_ge_1.0_0.0", longreal_ge(1.0, 0.0), True);
runcheck("cond_n_ge_0.0_1.0", longreal_ge(0.0, 1.0), False);
+ runcheck("cond_n_nge_nan_0.0", longreal_nge(nnan, 0.0), True);
+ runcheck("cond_n_nge_0.0_nan", longreal_nge(0.0, nnan), True);
+ runcheck("cond_n_nge_nan_nan", longreal_nge(nnan, nnan), True);
+ runcheck("cond_n_nge_0.0_0.0", longreal_nge(0.0, 0.0), False);
+ runcheck("cond_n_nge_1.0_0.0", longreal_nge(1.0, 0.0), False);
+ runcheck("cond_n_nge_0.0_1.0", longreal_nge(0.0, 1.0), True);
+ runcheck("cond_n_lt_nan_0.0", longreal_lt(nnan, 0.0), False);
+ runcheck("cond_n_lt_0.0_nan", longreal_lt(0.0, nnan), False);
+ runcheck("cond_n_lt_nan_nan", longreal_lt(nnan, nnan), False);
runcheck("cond_n_lt_0.0_0.0", longreal_lt(0.0, 0.0), False);
runcheck("cond_n_lt_1.0_0.0", longreal_lt(1.0, 0.0), False);
runcheck("cond_n_lt_0.0_1.0", longreal_lt(0.0, 1.0), True);
+ runcheck("cond_n_nlt_nan_0.0", longreal_nlt(nnan, 0.0), True);
+ runcheck("cond_n_nlt_0.0_nan", longreal_nlt(0.0, nnan), True);
+ runcheck("cond_n_nlt_nan_nan", longreal_nlt(nnan, nnan), True);
+ runcheck("cond_n_nlt_0.0_0.0", longreal_nlt(0.0, 0.0), True);
+ runcheck("cond_n_nlt_1.0_0.0", longreal_nlt(1.0, 0.0), True);
+ runcheck("cond_n_nlt_0.0_1.0", longreal_nlt(0.0, 1.0), False);
+ runcheck("cond_n_le_nan_0.0", longreal_le(nnan, 0.0), False);
+ runcheck("cond_n_le_0.0_nan", longreal_le(0.0, nnan), False);
+ runcheck("cond_n_le_nan_nan", longreal_le(nnan, nnan), False);
runcheck("cond_n_le_0.0_0.0", longreal_le(0.0, 0.0), True);
runcheck("cond_n_le_1.0_0.0", longreal_le(1.0, 0.0), False);
runcheck("cond_n_le_0.0_1.0", longreal_le(0.0, 1.0), True);
+ runcheck("cond_n_nle_nan_0.0", longreal_nle(nnan, 0.0), True);
+ runcheck("cond_n_nle_0.0_nan", longreal_nle(0.0, nnan), True);
+ runcheck("cond_n_nle_nan_nan", longreal_nle(nnan, nnan), True);
+ runcheck("cond_n_nle_0.0_0.0", longreal_nle(0.0, 0.0), False);
+ runcheck("cond_n_nle_1.0_0.0", longreal_nle(1.0, 0.0), True);
+ runcheck("cond_n_nle_0.0_1.0", longreal_nle(0.0, 1.0), False);
end;
procedure run_tests;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] libjit ChangeLog dpas/dpas-parser.y tests/cond.pas,
Klaus Treichel <=