diff options
| author | Mike Pall <mike> | 2010-10-05 19:36:02 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2010-10-05 19:36:02 +0200 |
| commit | 793fb4a9ad8bde602f06b0aaf4247aa6bf541211 (patch) | |
| tree | e20300a08033a9de62014bad22eae43a1701391d | |
| parent | 52b67fd3ea6fe034bad7e01e00da68502e377321 (diff) | |
| download | luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.tar.gz luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.tar.bz2 luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.zip | |
PPC: Add math.ldexp/frexp/modf() fast functions.
| -rw-r--r-- | src/buildvm_ppc.dasc | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index ce79d67f..373492e2 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
| @@ -1293,9 +1293,53 @@ static void build_subroutines(BuildCtx *ctx) | |||
| 1293 | | efdmul CRET1, CARG1, CARG2 | 1293 | | efdmul CRET1, CARG1, CARG2 |
| 1294 | | b ->fff_restv | 1294 | | b ->fff_restv |
| 1295 | | | 1295 | | |
| 1296 | |.ffunc_nn math_ldexp; NYI | 1296 | |.ffunc math_ldexp |
| 1297 | |.ffunc_n math_frexp; NYI | 1297 | | cmplwi NARGS8:RC, 16 |
| 1298 | |.ffunc_n math_modf; NYI | 1298 | | evldd CARG2, 0(BASE) |
| 1299 | | evldd CARG4, 8(BASE) | ||
| 1300 | | blt ->fff_fallback | ||
| 1301 | | evmergehi CARG1, CARG4, CARG2 | ||
| 1302 | | checknum CARG1 | ||
| 1303 | | checkanyfail ->fff_fallback | ||
| 1304 | | efdctsi CARG3, CARG4 | ||
| 1305 | | bl extern ldexp | ||
| 1306 | | evmergelo CRET1, CRET1, CRET2 | ||
| 1307 | | b ->fff_restv | ||
| 1308 | | | ||
| 1309 | |.ffunc math_frexp | ||
| 1310 | | cmplwi NARGS8:RC, 8 | ||
| 1311 | | evldd CARG2, 0(BASE) | ||
| 1312 | | blt ->fff_fallback | ||
| 1313 | | checknum CARG2 | ||
| 1314 | | evmergehi CARG1, CARG2, CARG2 | ||
| 1315 | | checkfail ->fff_fallback | ||
| 1316 | | la CARG3, DISPATCH_GL(tmptv)(DISPATCH) | ||
| 1317 | | lwz PC, FRAME_PC(BASE) | ||
| 1318 | | bl extern frexp | ||
| 1319 | | lwz TMP1, DISPATCH_GL(tmptv)(DISPATCH) | ||
| 1320 | | evmergelo CRET1, CRET1, CRET2 | ||
| 1321 | | efdcfsi CRET2, TMP1 | ||
| 1322 | | la RA, -8(BASE) | ||
| 1323 | | evstdd CRET1, 0(RA) | ||
| 1324 | | li RD, (2+1)*8 | ||
| 1325 | | evstdd CRET2, 8(RA) | ||
| 1326 | | b ->fff_res | ||
| 1327 | | | ||
| 1328 | |.ffunc math_modf | ||
| 1329 | | cmplwi NARGS8:RC, 8 | ||
| 1330 | | evldd CARG2, 0(BASE) | ||
| 1331 | | blt ->fff_fallback | ||
| 1332 | | checknum CARG2 | ||
| 1333 | | evmergehi CARG1, CARG2, CARG2 | ||
| 1334 | | checkfail ->fff_fallback | ||
| 1335 | | la CARG3, -8(BASE) | ||
| 1336 | | lwz PC, FRAME_PC(BASE) | ||
| 1337 | | bl extern modf | ||
| 1338 | | evmergelo CRET1, CRET1, CRET2 | ||
| 1339 | | la RA, -8(BASE) | ||
| 1340 | | evstdd CRET1, 0(BASE) | ||
| 1341 | | li RD, (2+1)*8 | ||
| 1342 | | b ->fff_res | ||
| 1299 | | | 1343 | | |
| 1300 | |.macro math_minmax, name, cmpop | 1344 | |.macro math_minmax, name, cmpop |
| 1301 | | .ffunc_1 name | 1345 | | .ffunc_1 name |
