aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-07 01:15:21 +0200
committerMike Pall <mike>2010-09-07 01:15:21 +0200
commit15834c39908094df81d428f10f022dea0a0f5558 (patch)
treefb11376b4a001edc8c2491e1556cd15b754b936c /src
parent341820987bcd901d46a7ae4bd6f316eac30f1aa4 (diff)
downloadluajit-15834c39908094df81d428f10f022dea0a0f5558.tar.gz
luajit-15834c39908094df81d428f10f022dea0a0f5558.tar.bz2
luajit-15834c39908094df81d428f10f022dea0a0f5558.zip
PPC: Add unary instructions.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index 6989c447..960f9b7b 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -1121,13 +1121,41 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
1121 | ins_next_ 1121 | ins_next_
1122 break; 1122 break;
1123 case BC_NOT: 1123 case BC_NOT:
1124 | NYI 1124 | // RA = dst*8, RD = src*8
1125 | lwzx TMP0, BASE, RD
1126 | subfic TMP1, TMP0, LJ_TTRUE
1127 | adde TMP0, TMP0, TMP1
1128 | stwx TMP0, BASE, RA
1129 | ins_next
1125 break; 1130 break;
1126 case BC_UNM: 1131 case BC_UNM:
1127 | NYI 1132 | // RA = dst*8, RD = src*8
1133 | evlddx TMP0, BASE, RD
1134 | lus TMP1, 0x8000
1135 | li TMP2, 0
1136 | checknum TMP0
1137 | evmergelo TMP1, TMP1, TMP2
1138 | checkfail ->vmeta_unm
1139 | evxor TMP0, TMP0, TMP1
1140 | evstddx TMP0, BASE, RA
1141 | ins_next
1128 break; 1142 break;
1129 case BC_LEN: 1143 case BC_LEN:
1130 | NYI 1144 | // RA = dst*8, RD = src*8
1145 | evlddx CARG1, BASE, RD
1146 | checkstr CARG1
1147 | checkfail >2
1148 | lwz CRET1, STR:CARG1->len
1149 |1:
1150 | efdcfsi TMP0, CRET1
1151 | evstddx TMP0, BASE, RA
1152 | ins_next
1153 |2:
1154 | checktab CARG1
1155 | checkfail ->vmeta_len
1156 | bl extern lj_tab_len // (GCtab *t)
1157 | // Returns uint32_t (but less than 2^31).
1158 | b <1
1131 break; 1159 break;
1132 1160
1133 /* -- Binary ops -------------------------------------------------------- */ 1161 /* -- Binary ops -------------------------------------------------------- */