diff options
-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 |