| 697 |
PPC_OP(divw) |
PPC_OP(divw) |
| 698 |
{ |
{ |
| 699 |
if ((Ts0 == INT32_MIN && Ts1 == -1) || Ts1 == 0) { |
if ((Ts0 == INT32_MIN && Ts1 == -1) || Ts1 == 0) { |
| 700 |
Ts0 = (-1) * (T0 >> 31); |
T0 = (int32_t)((-1) * (T0 >> 31)); |
| 701 |
} else { |
} else { |
| 702 |
Ts0 /= Ts1; |
T0 = (Ts0 / Ts1); |
| 703 |
} |
} |
| 704 |
RETURN(); |
RETURN(); |
| 705 |
} |
} |
| 712 |
T0 = (-1) * (T0 >> 31); |
T0 = (-1) * (T0 >> 31); |
| 713 |
} else { |
} else { |
| 714 |
xer_ov = 0; |
xer_ov = 0; |
| 715 |
Ts0 /= Ts1; |
T0 = (Ts0 / Ts1); |
| 716 |
} |
} |
| 717 |
RETURN(); |
RETURN(); |
| 718 |
} |
} |
| 744 |
/* multiply high word */ |
/* multiply high word */ |
| 745 |
PPC_OP(mulhw) |
PPC_OP(mulhw) |
| 746 |
{ |
{ |
| 747 |
Ts0 = ((int64_t)Ts0 * (int64_t)Ts1) >> 32; |
T0 = ((int64_t)Ts0 * (int64_t)Ts1) >> 32; |
| 748 |
RETURN(); |
RETURN(); |
| 749 |
} |
} |
| 750 |
|
|
| 758 |
/* multiply low immediate */ |
/* multiply low immediate */ |
| 759 |
PPC_OP(mulli) |
PPC_OP(mulli) |
| 760 |
{ |
{ |
| 761 |
Ts0 *= SPARAM(1); |
T0 = (Ts0 * SPARAM(1)); |
| 762 |
RETURN(); |
RETURN(); |
| 763 |
} |
} |
| 764 |
|
|
| 779 |
} else { |
} else { |
| 780 |
xer_ov = 0; |
xer_ov = 0; |
| 781 |
} |
} |
| 782 |
Ts0 = res; |
T0 = (int32_t)res; |
| 783 |
RETURN(); |
RETURN(); |
| 784 |
} |
} |
| 785 |
|
|
| 787 |
PPC_OP(neg) |
PPC_OP(neg) |
| 788 |
{ |
{ |
| 789 |
if (T0 != 0x80000000) { |
if (T0 != 0x80000000) { |
| 790 |
Ts0 = -Ts0; |
T0 = -Ts0; |
| 791 |
} |
} |
| 792 |
RETURN(); |
RETURN(); |
| 793 |
} |
} |
| 799 |
xer_so = 1; |
xer_so = 1; |
| 800 |
} else { |
} else { |
| 801 |
xer_ov = 0; |
xer_ov = 0; |
| 802 |
Ts0 = -Ts0; |
T0 = -Ts0; |
| 803 |
} |
} |
| 804 |
RETURN(); |
RETURN(); |
| 805 |
} |
} |
| 1047 |
/* extend sign byte */ |
/* extend sign byte */ |
| 1048 |
PPC_OP(extsb) |
PPC_OP(extsb) |
| 1049 |
{ |
{ |
| 1050 |
Ts0 = (int8_t)(Ts0); |
T0 = (int32_t)((int8_t)(Ts0)); |
| 1051 |
RETURN(); |
RETURN(); |
| 1052 |
} |
} |
| 1053 |
|
|
| 1054 |
/* extend sign half word */ |
/* extend sign half word */ |
| 1055 |
PPC_OP(extsh) |
PPC_OP(extsh) |
| 1056 |
{ |
{ |
| 1057 |
Ts0 = (int16_t)(Ts0); |
T0 = (int32_t)((int16_t)(Ts0)); |
| 1058 |
RETURN(); |
RETURN(); |
| 1059 |
} |
} |
| 1060 |
|
|
| 1175 |
/* shift right algebraic word immediate */ |
/* shift right algebraic word immediate */ |
| 1176 |
PPC_OP(srawi) |
PPC_OP(srawi) |
| 1177 |
{ |
{ |
| 1178 |
Ts1 = Ts0; |
T1 = T0; |
| 1179 |
Ts0 = Ts0 >> PARAM(1); |
T0 = (Ts0 >> PARAM(1)); |
| 1180 |
if (Ts1 < 0 && (Ts1 & PARAM(2)) != 0) { |
if (Ts1 < 0 && (Ts1 & PARAM(2)) != 0) { |
| 1181 |
xer_ca = 1; |
xer_ca = 1; |
| 1182 |
} else { |
} else { |
| 1207 |
/* fadds - fadds. */ |
/* fadds - fadds. */ |
| 1208 |
PPC_OP(fadds) |
PPC_OP(fadds) |
| 1209 |
{ |
{ |
| 1210 |
FTS0 += FTS1; |
FT0 = FTS0 + FTS1; |
| 1211 |
RETURN(); |
RETURN(); |
| 1212 |
} |
} |
| 1213 |
|
|
| 1221 |
/* fsubs - fsubs. */ |
/* fsubs - fsubs. */ |
| 1222 |
PPC_OP(fsubs) |
PPC_OP(fsubs) |
| 1223 |
{ |
{ |
| 1224 |
FTS0 -= FTS1; |
FT0 = FTS0 - FTS1; |
| 1225 |
RETURN(); |
RETURN(); |
| 1226 |
} |
} |
| 1227 |
|
|
| 1235 |
/* fmuls - fmuls. */ |
/* fmuls - fmuls. */ |
| 1236 |
PPC_OP(fmuls) |
PPC_OP(fmuls) |
| 1237 |
{ |
{ |
| 1238 |
FTS0 *= FTS1; |
FT0 = FTS0 * FTS1; |
| 1239 |
RETURN(); |
RETURN(); |
| 1240 |
} |
} |
| 1241 |
|
|
| 1249 |
/* fdivs - fdivs. */ |
/* fdivs - fdivs. */ |
| 1250 |
PPC_OP(fdivs) |
PPC_OP(fdivs) |
| 1251 |
{ |
{ |
| 1252 |
FTS0 /= FTS1; |
FT0 = FTS0 / FTS1; |
| 1253 |
RETURN(); |
RETURN(); |
| 1254 |
} |
} |
| 1255 |
|
|
| 1299 |
/* fmadds - fmadds. */ |
/* fmadds - fmadds. */ |
| 1300 |
PPC_OP(fmadds) |
PPC_OP(fmadds) |
| 1301 |
{ |
{ |
| 1302 |
FTS0 = (FTS0 * FTS1) + FTS2; |
FT0 = (FTS0 * FTS1) + FTS2; |
| 1303 |
RETURN(); |
RETURN(); |
| 1304 |
} |
} |
| 1305 |
|
|
| 1313 |
/* fmsubs - fmsubs. */ |
/* fmsubs - fmsubs. */ |
| 1314 |
PPC_OP(fmsubs) |
PPC_OP(fmsubs) |
| 1315 |
{ |
{ |
| 1316 |
FTS0 = (FTS0 * FTS1) - FTS2; |
FT0 = (FTS0 * FTS1) - FTS2; |
| 1317 |
RETURN(); |
RETURN(); |
| 1318 |
} |
} |
| 1319 |
|
|
| 1349 |
/* frsp - frsp. */ |
/* frsp - frsp. */ |
| 1350 |
PPC_OP(frsp) |
PPC_OP(frsp) |
| 1351 |
{ |
{ |
| 1352 |
FTS0 = FT0; |
FT0 = (float)FT0; |
| 1353 |
RETURN(); |
RETURN(); |
| 1354 |
} |
} |
| 1355 |
|
|