From cfed53ffe9ce572e3a4f54d30bcb97c2044bcb5b Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Wed, 20 Mar 2019 15:58:35 +0100 Subject: Revert "Better fix for register allocation?" This reverts commit 5ad25465f77c3009eaff7e9a124c254c1e9f33cd. --- backend/IRC.ml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/backend/IRC.ml b/backend/IRC.ml index fc9fc456..43955897 100644 --- a/backend/IRC.ml +++ b/backend/IRC.ml @@ -355,13 +355,12 @@ let interfere g n1 n2 = let recordInterf n1 n2 = match n2.color with | None | Some (R _) -> - (* FIXME - HACK K1C disabled the if *) - (* if n1.regclass = n2.regclass then *) begin + if n1.regclass = n2.regclass then begin n1.adjlist <- n2 :: n1.adjlist; n1.degree <- 1 + n1.degree - end (* else begin + end else begin n1.extra_adj <- n2 :: n1.extra_adj - end *) + end | Some (S _) -> (*i printf "extra adj %s to %s\n" (name_of_node n1) (name_of_node n2); *) n1.extra_adj <- n2 :: n1.extra_adj -- cgit From ab5528fb4caf637a0c7014d943302198079e7c20 Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Wed, 20 Mar 2019 17:01:25 +0100 Subject: XLeroy's suggested fix for shared float/int register file. --- backend/IRC.ml | 6 +++--- mppa_k1c/Conventions1.v | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/IRC.ml b/backend/IRC.ml index 43955897..c7b1bf04 100644 --- a/backend/IRC.ml +++ b/backend/IRC.ml @@ -239,11 +239,11 @@ type graph = { let class_of_type = function | Tint | Tlong -> 0 - | Tfloat | Tsingle -> 1 + | Tfloat | Tsingle -> 0 (* normal: 1 *) | Tany32 | Tany64 -> assert false -let class_of_reg r = - if Conventions1.is_float_reg r then 1 else 0 +let class_of_reg r = 0 + (* normal: if Conventions1.is_float_reg r then 1 else 0 *) let class_of_loc = function | R r -> class_of_reg r diff --git a/mppa_k1c/Conventions1.v b/mppa_k1c/Conventions1.v index 59159f61..d41f1095 100644 --- a/mppa_k1c/Conventions1.v +++ b/mppa_k1c/Conventions1.v @@ -47,13 +47,13 @@ Definition int_caller_save_regs := :: R52 :: R53 :: R54 :: R55 :: R56 :: R57 :: R58 :: R59 :: R60 :: R61 :: R62 :: R63 :: nil. -Definition float_caller_save_regs := rev int_caller_save_regs. +Definition float_caller_save_regs : list mreg := nil. Definition int_callee_save_regs := (* R15 :: R16 :: R17 :: *)R18 :: R19 :: R20 :: R21 :: R22 :: R23 :: R24 :: R25 :: R26 :: R27 :: R28 :: R29 :: R30 :: R31 :: nil. -Definition float_callee_save_regs := rev int_callee_save_regs. +Definition float_callee_save_regs : list mreg := nil. Definition destroyed_at_call := List.filter (fun r => negb (is_callee_save r)) all_mregs. -- cgit