diff options
author | Mike Pall <mike> | 2010-09-08 00:12:23 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2010-09-08 00:12:23 +0200 |
commit | 932193baa61c8acf026e8f8b0c4278e1a42fb980 (patch) | |
tree | 26c5729b0b571191160ba4a74c8ce55263470bad /src | |
parent | e9e7df5bfe9205eb3559a81f5af083cd8ae4aa63 (diff) | |
download | luajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.tar.gz luajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.tar.bz2 luajit-932193baa61c8acf026e8f8b0c4278e1a42fb980.zip |
PPC: Add modulo instructions.
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_ppc.dasc | 12 |
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 |