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