]> git.mdlowis.com Git - proto/obnc.git/commitdiff
fixed up comparison operations of Reals
authorMichael D. Lowis <mike.lowis@gentex.com>
Tue, 8 Mar 2022 21:37:19 +0000 (16:37 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Tue, 8 Mar 2022 21:37:19 +0000 (16:37 -0500)
cerise/backend/ssa/codegen.c
cerise/tests/Module.m

index 6da63e2ce379a3fa0cbe12d4a052ad7d87204f41..01ad1ac49e80ab10fd178200038c09c76d0e3f47 100644 (file)
@@ -223,12 +223,12 @@ char* binop_name(SsaNode* node)
             case '/':  name = "fdiv"; break;
             case '%':  name = "frem"; break;
 
-            case EQ:   name = "fcmp eq"; break;
-            case NEQ:  name = "fcmp ne"; break;
-            case '<':  name = "fcmp slt"; break;
-            case '>':  name = "fcmp sgt"; break;
-            case LTEQ: name = "fcmp sle"; break;
-            case GTEQ: name = "fcmp sge"; break;
+            case EQ:   name = "fcmp oeq"; break;
+            case NEQ:  name = "fcmp une"; break;
+            case '<':  name = "fcmp olt"; break;
+            case '>':  name = "fcmp ogt"; break;
+            case LTEQ: name = "fcmp ole"; break;
+            case GTEQ: name = "fcmp oge"; break;
         }
     }
     else
index 8086199c0521f94ff7efa8b983e84348a89e3e1a..9f051a78b522403e120fd0851c9255a04d425562 100644 (file)
@@ -36,11 +36,12 @@ var
   b* : Int
   c : Int
   d : Real
-  e : array 5 of array 10 of Int
-  f : TypeD
-  g : array 5 of Int
-  h : TypeF
-  i : TypeA
+  e : Real
+  f : array 5 of array 10 of Int
+  g : TypeD
+  h : array 5 of Int
+  i : TypeF
+  j : TypeA
 
 #procedure Foo*(e : Int, z : Int, q1 : TypeD, q2 : array 5 of Int) : Int
 #  const FOO = 2
@@ -72,54 +73,102 @@ var
 
 begin
   # Global variables
-  i = 42;
-  b = i;
+  b = 42;
+  b = j;
+
+  # Integer Arithmetic ops
+  c = b + 1;
+  c = 1 + b;
+  c = b + b;
+
+  c = b - 1;
+  c = 1 - b;
+  c = b - b;
+
+  c = b * 1;
+  c = 1 * b;
+  c = b * b;
+
+  c = b / 1;
+  c = 1 / b;
+  c = b / b;
+
+  c = b % 1;
+  c = 1 % b;
+  c = b % b;
+
+  # Integer Comparison ops
+  a = b == 1;
+  a = 1 == b;
+  a = b == b;
+
+  a = b != 1;
+  a = 1 != b;
+  a = b != b;
+
+  a = b < 1;
+  a = 1 < b;
+  a = b < b;
+
+  a = b > 1;
+  a = 1 > b;
+  a = b > b;
+
+  a = b <= 1;
+  a = 1 <= b;
+  a = b <= b;
+
+  a = b >= 1;
+  a = 1 >= b;
+  a = b >= b;
+
+  # Real Arithmetic ops
+  e = d + 1.0;
+  e = 1.0 + d;
+  e = d + d;
+
+  e = d - 1.0;
+  e = 1.0 - d;
+  e = d - d;
+
+  e = d * 1.0;
+  e = 1.0 * d;
+  e = d * d;
+
+  e = d / 1.0;
+  e = 1.0 / d;
+  e = d / d;
+
+  e = d % 1.0;
+  e = 1.0 % d;
+  e = d % d;
+
+  # Real Comparison ops
+  a = d == 1.0;
+  a = 1.0 == d;
+  a = d == d;
+
+  a = d != 1.0;
+  a = 1.0 != d;
+  a = d != d;
+
+  a = d < 1.0;
+  a = 1.0 < d;
+  a = d < d;
+
+  a = d > 1.0;
+  a = 1.0 > d;
+  a = d > d;
+
+  a = d <= 1.0;
+  a = 1.0 <= d;
+  a = d <= d;
+
+  a = d >= 1.0;
+  a = 1.0 >= d;
+  a = d >= d;
+
 
-#  # Arithmetic ops
-#  c = b + 1;
-#  c = 1 + b;
-#  c = b + b;
-#
-#  c = b - 1;
-#  c = 1 - b;
-#  c = b - b;
-#
-#  c = b * 1;
-#  c = 1 * b;
-#  c = b * b;
-#
-#  c = b / 1;
-#  c = 1 / b;
-#  c = b / b;
-#
-#  c = b % 1;
-#  c = 1 % b;
-#  c = b % b;
-
-#  # Comparison ops
-#  a = b == 1;
-#  a = 1 == b;
-#  a = b == b;
-#
-#  a = b != 1;
-#  a = 1 != b;
-#  a = b != b;
-#
-#  a = b < 1;
-#  a = 1 < b;
-#  a = b < b;
-#
-#  a = b > 1;
-#  a = 1 > b;
-#  a = b > b;
-#
-#  a = b <= 1;
-#  a = 1 <= b;
-#  a = b <= b;
-#
-#  a = b >= 1;
-#  a = 1 >= b;
-#  a = b >= b;
 
 #  b = 1;
 #  if c == b then
@@ -148,7 +197,6 @@ begin
 #    b = 24;
 #  end
 
-
 #    h[1].i = 42;
 #  a = true;
 #  a = A;