diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2008-12-21 13:32:24 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2008-12-21 13:32:24 +0000 |
commit | dc4bed2cf06f46687225275131f411c86c773598 (patch) | |
tree | 9d99e759d906d061b6f213e0b20cb4bd53580ea6 /caml | |
parent | ec6d00d94bcb1a0adc5c698367634b5e2f370c6e (diff) | |
download | compcert-dc4bed2cf06f46687225275131f411c86c773598.tar.gz compcert-dc4bed2cf06f46687225275131f411c86c773598.zip |
Revised back-end so that only 2 integer registers are reserved for reloading.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@925 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'caml')
-rw-r--r-- | caml/PrintPPC.ml | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/caml/PrintPPC.ml b/caml/PrintPPC.ml index 030dcc67..f4f29402 100644 --- a/caml/PrintPPC.ml +++ b/caml/PrintPPC.ml @@ -189,8 +189,8 @@ let print_instruction oc labels = function let lbl1 = new_label() in let lbl2 = new_label() in let lbl3 = new_label() in - fprintf oc " addis r2, 0, ha16(L%d)\n" lbl1; - fprintf oc " lfd f13, lo16(L%d)(r2)\n" lbl1; + fprintf oc " addis r12, 0, ha16(L%d)\n" lbl1; + fprintf oc " lfd f13, lo16(L%d)(r12)\n" lbl1; fprintf oc " fcmpu cr7, %a, f13\n" freg r2; fprintf oc " cror 30, 29, 30\n"; fprintf oc " beq cr7, L%d\n" lbl2; @@ -225,12 +225,12 @@ let print_instruction oc labels = function fprintf oc " fsub %a, %a, %a\n" freg r1 freg r2 freg r3 | Pictf(r1, r2) -> let lbl = new_label() in - fprintf oc " addis r2, 0, 0x4330\n"; - fprintf oc " stw r2, -8(r1)\n"; - fprintf oc " addis r2, %a, 0x8000\n" ireg r2; - fprintf oc " stw r2, -4(r1)\n"; - fprintf oc " addis r2, 0, ha16(L%d)\n" lbl; - fprintf oc " lfd f13, lo16(L%d)(r2)\n" lbl; + fprintf oc " addis r12, 0, 0x4330\n"; + fprintf oc " stw r12, -8(r1)\n"; + fprintf oc " addis r12, %a, 0x8000\n" ireg r2; + fprintf oc " stw r12, -4(r1)\n"; + fprintf oc " addis r12, 0, ha16(L%d)\n" lbl; + fprintf oc " lfd f13, lo16(L%d)(r12)\n" lbl; fprintf oc " lfd %a, -8(r1)\n" freg r1; fprintf oc " fsub %a, %a, f13\n" freg r1 freg r1; fprintf oc " .const_data\n"; @@ -238,11 +238,11 @@ let print_instruction oc labels = function fprintf oc " .text\n" | Piuctf(r1, r2) -> let lbl = new_label() in - fprintf oc " addis r2, 0, 0x4330\n"; - fprintf oc " stw r2, -8(r1)\n"; + fprintf oc " addis r12, 0, 0x4330\n"; + fprintf oc " stw r12, -8(r1)\n"; fprintf oc " stw %a, -4(r1)\n" ireg r2; - fprintf oc " addis r2, 0, ha16(L%d)\n" lbl; - fprintf oc " lfd f13, lo16(L%d)(r2)\n" lbl; + fprintf oc " addis r12, 0, ha16(L%d)\n" lbl; + fprintf oc " lfd f13, lo16(L%d)(r12)\n" lbl; fprintf oc " lfd %a, -8(r1)\n" freg r1; fprintf oc " fsub %a, %a, f13\n" freg r1 freg r1; fprintf oc " .const_data\n"; @@ -258,8 +258,8 @@ let print_instruction oc labels = function fprintf oc " lfdx %a, %a, %a\n" freg r1 ireg r2 ireg r3 | Plfi(r1, c) -> let lbl = new_label() in - fprintf oc " addis r2, 0, ha16(L%d)\n" lbl; - fprintf oc " lfd %a, lo16(L%d)(r2)\n" freg r1 lbl; + fprintf oc " addis r12, 0, ha16(L%d)\n" lbl; + fprintf oc " lfd %a, lo16(L%d)(r12)\n" freg r1 lbl; fprintf oc " .const_data\n"; let n = Int64.bits_of_float c in let nlo = Int64.to_int32 n |