aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-08 00:12:23 +0200
committerMike Pall <mike>2010-09-08 00:12:23 +0200
commit932193baa61c8acf026e8f8b0c4278e1a42fb980 (patch)
tree26c5729b0b571191160ba4a74c8ce55263470bad /src
parente9e7df5bfe9205eb3559a81f5af083cd8ae4aa63 (diff)
downloadluajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.tar.gz
luajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.tar.bz2
luajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.zip
PPC: Add modulo instructions.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc12
1 files 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)
1272 | ins_arith efddiv 1272 | ins_arith efddiv
1273 break; 1273 break;
1274 case BC_MODVN: 1274 case BC_MODVN:
1275 | NYI 1275 | ins_arithpre RD, SAVE0
1276 |->BC_MODVN_Z:
1277 | efddiv CARG2, RD, SAVE0
1278 | bl ->vm_floor // floor(b/c)
1279 | efdmul TMP0, CRET2, SAVE0
1280 | efdsub TMP0, RD, TMP0 // b - floor(b/c)*c
1281 | evstddx TMP0, BASE, RA
1282 | ins_next
1276 break; 1283 break;
1277 case BC_MODNV: case BC_MODVV: 1284 case BC_MODNV: case BC_MODVV:
1278 | NYI 1285 | ins_arithpre RD, SAVE0
1286 | b ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway.
1279 break; 1287 break;
1280 case BC_POW: 1288 case BC_POW:
1281 | evlddx CARG2, BASE, RB 1289 | evlddx CARG2, BASE, RB