aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2010-09-01 20:29:29 +0200
committerMike Pall <mike>2010-09-01 20:29:29 +0200
commit44fb3ebc64fd43c2c2a5ed2070a5470ef2765b68 (patch)
tree72985d4616f2869147f294de00489e23425715b1 /src
parent7457ee869aa182fbecec6c7f567d93fd85382b57 (diff)
downloadluajit-44fb3ebc64fd43c2c2a5ed2070a5470ef2765b68.tar.gz
luajit-44fb3ebc64fd43c2c2a5ed2070a5470ef2765b68.tar.bz2
luajit-44fb3ebc64fd43c2c2a5ed2070a5470ef2765b68.zip
PPC: Add unary test and copy instructions.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_ppc.dasc29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index abd688e9..f4452ee9 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -1067,7 +1067,34 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
1067 /* -- Unary test and copy ops ------------------------------------------- */ 1067 /* -- Unary test and copy ops ------------------------------------------- */
1068 1068
1069 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1069 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1070 | NYI 1070 | // RA = dst*8 or unused, RD = src*8, JMP with RD = target
1071 | evlddx TMP0, BASE, RD
1072 | evaddw TMP1, TISNIL, TISNIL // Synthesize LJ_TFALSE.
1073 | lwz INS, 0(PC)
1074 | evcmpltu TMP0, TMP1
1075 | addi PC, PC, 4
1076 if (op == BC_IST || op == BC_ISF) {
1077 | addis TMP3, PC, -(BCBIAS_J*4 >> 16)
1078 | decode_RD4 TMP2, INS
1079 | add TMP2, TMP2, TMP3
1080 if (op == BC_IST) {
1081 | isellt PC, TMP2, PC
1082 } else {
1083 | isellt PC, PC, TMP2
1084 }
1085 } else {
1086 if (op == BC_ISTC) {
1087 | checkfail >1
1088 } else {
1089 | checkok >1
1090 }
1091 | addis PC, PC, -(BCBIAS_J*4 >> 16)
1092 | decode_RD4 TMP2, INS
1093 | evstddx TMP0, BASE, RA
1094 | add PC, PC, TMP2
1095 |1:
1096 }
1097 | ins_next
1071 break; 1098 break;
1072 1099
1073 /* -- Unary ops --------------------------------------------------------- */ 1100 /* -- Unary ops --------------------------------------------------------- */