aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-10-05 19:36:02 +0200
committerMike Pall <mike>2010-10-05 19:36:02 +0200
commit793fb4a9ad8bde602f06b0aaf4247aa6bf541211 (patch)
treee20300a08033a9de62014bad22eae43a1701391d /src
parent52b67fd3ea6fe034bad7e01e00da68502e377321 (diff)
downloadluajit-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.dasc50
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