summaryrefslogtreecommitdiff
path: root/lib/Language/Elna/Backend
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Language/Elna/Backend')
-rw-r--r--lib/Language/Elna/Backend/Allocator.hs10
-rw-r--r--lib/Language/Elna/Backend/Intermediate.hs12
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/Language/Elna/Backend/Allocator.hs b/lib/Language/Elna/Backend/Allocator.hs
index bdbccab..2b410a3 100644
--- a/lib/Language/Elna/Backend/Allocator.hs
+++ b/lib/Language/Elna/Backend/Allocator.hs
@@ -54,6 +54,16 @@ allocate MachineConfiguration{..} = fmap function
quadruple (GoToQuadruple label) = GoToQuadruple label
quadruple (EqualQuadruple operand1 operand2 goToLabel) =
EqualQuadruple (operand operand1) (operand operand2) goToLabel
+ quadruple (NonEqualQuadruple operand1 operand2 goToLabel) =
+ NonEqualQuadruple (operand operand1) (operand operand2) goToLabel
+ quadruple (LessQuadruple operand1 operand2 goToLabel) =
+ LessQuadruple (operand operand1) (operand operand2) goToLabel
+ quadruple (GreaterQuadruple operand1 operand2 goToLabel) =
+ GreaterQuadruple (operand operand1) (operand operand2) goToLabel
+ quadruple (LessOrEqualQuadruple operand1 operand2 goToLabel) =
+ LessOrEqualQuadruple (operand operand1) (operand operand2) goToLabel
+ quadruple (GreaterOrEqualQuadruple operand1 operand2 goToLabel) =
+ GreaterOrEqualQuadruple (operand operand1) (operand operand2) goToLabel
operand :: Operand Variable -> Operand (Store r)
operand (IntOperand x) = IntOperand x
operand (VariableOperand (TempVariable index))
diff --git a/lib/Language/Elna/Backend/Intermediate.hs b/lib/Language/Elna/Backend/Intermediate.hs
index 6d3a1af..f1a5d7a 100644
--- a/lib/Language/Elna/Backend/Intermediate.hs
+++ b/lib/Language/Elna/Backend/Intermediate.hs
@@ -43,12 +43,12 @@ data Quadruple v
| GoToQuadruple Label
{-| AssignQuadruple Operand Variable
| ArrayQuadruple Variable Operand Variable
- | ArrayAssignQuadruple Operand Operand Variable
- | NonEqualQuadruple Operand Operand Label
- | LessQuadruple Operand Operand Label
- | GreaterQuadruple Operand Operand Label
- | LessOrEqualQuadruple Operand Operand Label
- | GreaterOrEqualQuadruple Operand Operand Label -}
+ | ArrayAssignQuadruple Operand Operand Variable -}
+ | LessOrEqualQuadruple (Operand v) (Operand v) Label
+ | GreaterOrEqualQuadruple (Operand v) (Operand v) Label
+ | GreaterQuadruple (Operand v) (Operand v) Label
+ | LessQuadruple (Operand v) (Operand v) Label
+ | NonEqualQuadruple (Operand v) (Operand v) Label
| EqualQuadruple (Operand v) (Operand v) Label
| LabelQuadruple Label
deriving (Eq, Show)