diff options
author | Mike Pall <mike> | 2010-09-01 20:29:29 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2010-09-01 20:29:29 +0200 |
commit | 44fb3ebc64fd43c2c2a5ed2070a5470ef2765b68 (patch) | |
tree | 72985d4616f2869147f294de00489e23425715b1 /src | |
parent | 7457ee869aa182fbecec6c7f567d93fd85382b57 (diff) | |
download | luajit-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.dasc | 29 |
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 --------------------------------------------------------- */ |