From d8345b5eda090cc5abef7b94e4d4e9388a928764 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 4 Nov 2008 06:07:19 -0600 Subject: [PATCH] Update PPC non-optimizing compiler backend: there are three new sub-primitives to support --- basis/cpu/ppc/bootstrap.factor | 43 +++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/basis/cpu/ppc/bootstrap.factor b/basis/cpu/ppc/bootstrap.factor index 99bcfae92a..47c31111a9 100644 --- a/basis/cpu/ppc/bootstrap.factor +++ b/basis/cpu/ppc/bootstrap.factor @@ -3,7 +3,7 @@ USING: bootstrap.image.private kernel kernel.private namespaces system cpu.ppc.assembler compiler.codegen.fixup compiler.units compiler.constants math math.private layouts words words.private -vocabs slots.private ; +vocabs slots.private locals.backend ; IN: bootstrap.ppc 4 \ cell set @@ -305,4 +305,45 @@ big-endian on 3 ds-reg 0 STW ] f f f \ fixnum-bitnot define-sub-primitive +[ + 3 ds-reg 0 LWZ + 3 3 tag-bits get SRAWI + ds-reg ds-reg 4 SUBI + 4 ds-reg 0 LWZ + 5 4 3 SLW + 6 3 NEG + 7 4 6 SRAW + 7 7 0 0 31 tag-bits get - RLWINM + 0 3 0 CMPI + 2 BGT + 5 7 MR + 5 ds-reg 0 STW +] f f f \ fixnum-shift-fast define-sub-primitive + +[ + 3 ds-reg 0 LWZ + ds-reg ds-reg 4 SUBI + 4 ds-reg 0 LWZ + 5 4 3 DIVW + 6 5 3 MULLW + 7 6 4 SUBF + 7 ds-reg 0 STW +] f f f \ fixnum-mod define-sub-primitive + +[ + 3 ds-reg 0 LWZ + 3 3 1 SRAWI + 4 4 LI + 4 3 4 SUBF + rs-reg 3 4 LWZX + 3 ds-reg 0 STW +] f f f \ get-local define-sub-primitive + +[ + 3 ds-reg 0 LWZ + ds-reg ds-reg 4 SUBI + 3 3 1 SRAWI + rs-reg 3 rs-reg SUBF +] f f f \ drop-locals define-sub-primitive + [ "bootstrap.ppc" forget-vocab ] with-compilation-unit