From 932193baa61c8acf026e8f8b0c4278e1a42fb980 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Wed, 8 Sep 2010 00:12:23 +0200 Subject: [PATCH] PPC: Add modulo instructions. --- src/buildvm_ppc.dasc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index dd99c077..9cdc3643 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc @@ -1272,10 +1272,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | ins_arith efddiv break; case BC_MODVN: - | NYI + | ins_arithpre RD, SAVE0 + |->BC_MODVN_Z: + | efddiv CARG2, RD, SAVE0 + | bl ->vm_floor // floor(b/c) + | efdmul TMP0, CRET2, SAVE0 + | efdsub TMP0, RD, TMP0 // b - floor(b/c)*c + | evstddx TMP0, BASE, RA + | ins_next break; case BC_MODNV: case BC_MODVV: - | NYI + | ins_arithpre RD, SAVE0 + | b ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway. break; case BC_POW: | evlddx CARG2, BASE, RB