aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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 |