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 /src | |
parent | 52b67fd3ea6fe034bad7e01e00da68502e377321 (diff) | |
download | luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.tar.gz luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.tar.bz2 luajit-793fb4a9ad8bde602f06b0aaf4247aa6bf541211.zip |
PPC: Add math.ldexp/frexp/modf() fast functions.
Diffstat (limited to 'src')
-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 |