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 --------------------------------------------------------- */ |
