aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-10-05 01:39:48 +0200
committerMike Pall <mike>2010-10-05 01:39:48 +0200
commit8b096c5d085bea8b1ad88189592d1a0c85457047 (patch)
tree259a148db554eec685425bb61dc128b615d597c9 /src
parentddae8878786a310f2e6cbe2a1d602a17ea28bb11 (diff)
downloadluajit-8b096c5d085bea8b1ad88189592d1a0c85457047.tar.gz
luajit-8b096c5d085bea8b1ad88189592d1a0c85457047.tar.bz2
luajit-8b096c5d085bea8b1ad88189592d1a0c85457047.zip
PPC: Add assert() and type() fast functions.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index d69d77ab..ec156e86 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -913,10 +913,39 @@ static void build_subroutines(BuildCtx *ctx)
913 |//-- Base library: checks ----------------------------------------------- 913 |//-- Base library: checks -----------------------------------------------
914 | 914 |
915 |.ffunc assert 915 |.ffunc assert
916 | NYI 916 | cmplwi NARGS8:RC, 8
917 | evldd TMP0, 0(BASE)
918 | blt ->fff_fallback
919 | evaddw TMP1, TISNIL, TISNIL // Synthesize LJ_TFALSE.
920 | la RA, -8(BASE)
921 | evcmpltu cr1, TMP0, TMP1
922 | lwz PC, FRAME_PC(BASE)
923 | bge cr1, ->fff_fallback
924 | evstdd TMP0, 0(RA)
925 | addi RD, NARGS8:RC, 8 // Compute (nresults+1)*8.
926 | beq ->fff_res // Done if exactly 1 argument.
927 | li TMP1, 8
928 | subi RC, RC, 8
929 |1:
930 | cmplw TMP1, RC
931 | evlddx TMP0, BASE, TMP1
932 | evstddx TMP0, RA, TMP1
933 | addi TMP1, TMP1, 8
934 | bne <1
935 | b ->fff_res
917 | 936 |
918 |.ffunc type 937 |.ffunc type
919 | NYI 938 | cmplwi NARGS8:RC, 8
939 | lwz CARG1, 0(BASE)
940 | blt ->fff_fallback
941 | li TMP2, ~LJ_TNUMX
942 | cmplw CARG1, TISNUM
943 | not TMP1, CARG1
944 | isellt TMP1, TMP2, TMP1
945 | slwi TMP1, TMP1, 3
946 | la TMP2, CFUNC:RB->upvalue
947 | evlddx STR:CRET1, TMP2, TMP1
948 | b ->fff_restv
920 | 949 |
921 |//-- Base library: getters and setters --------------------------------- 950 |//-- Base library: getters and setters ---------------------------------
922 | 951 |