/[qemu]/qemu/target-ppc/op.c
ViewVC logotype

Diff of /qemu/target-ppc/op.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.14 by bellard, Tue Feb 8 21:24:36 2005 UTC revision 1.15 by bellard, Tue Feb 15 23:06:19 2005 UTC
# Line 697  PPC_OP(addzeo) Line 697  PPC_OP(addzeo)
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  }  }
# Line 712  PPC_OP(divwo) Line 712  PPC_OP(divwo)
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  }  }
# Line 744  PPC_OP(divwuo) Line 744  PPC_OP(divwuo)
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    
# Line 758  PPC_OP(mulhwu) Line 758  PPC_OP(mulhwu)
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    
# Line 779  PPC_OP(mullwo) Line 779  PPC_OP(mullwo)
779      } else {      } else {
780          xer_ov = 0;          xer_ov = 0;
781      }      }
782      Ts0 = res;      T0 = (int32_t)res;
783      RETURN();      RETURN();
784  }  }
785    
# Line 787  PPC_OP(mullwo) Line 787  PPC_OP(mullwo)
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  }  }
# Line 799  PPC_OP(nego) Line 799  PPC_OP(nego)
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  }  }
# Line 1047  PPC_OP(eqv) Line 1047  PPC_OP(eqv)
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    
# Line 1175  PPC_OP(sraw) Line 1175  PPC_OP(sraw)
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 {
# Line 1207  PPC_OP(fadd) Line 1207  PPC_OP(fadd)
1207  /* fadds - fadds. */  /* fadds - fadds. */
1208  PPC_OP(fadds)  PPC_OP(fadds)
1209  {  {
1210      FTS0 += FTS1;      FT0 = FTS0 + FTS1;
1211      RETURN();      RETURN();
1212  }  }
1213    
# Line 1221  PPC_OP(fsub) Line 1221  PPC_OP(fsub)
1221  /* fsubs - fsubs. */  /* fsubs - fsubs. */
1222  PPC_OP(fsubs)  PPC_OP(fsubs)
1223  {  {
1224      FTS0 -= FTS1;      FT0 = FTS0 - FTS1;
1225      RETURN();      RETURN();
1226  }  }
1227    
# Line 1235  PPC_OP(fmul) Line 1235  PPC_OP(fmul)
1235  /* fmuls - fmuls. */  /* fmuls - fmuls. */
1236  PPC_OP(fmuls)  PPC_OP(fmuls)
1237  {  {
1238      FTS0 *= FTS1;      FT0 = FTS0 * FTS1;
1239      RETURN();      RETURN();
1240  }  }
1241    
# Line 1249  PPC_OP(fdiv) Line 1249  PPC_OP(fdiv)
1249  /* fdivs - fdivs. */  /* fdivs - fdivs. */
1250  PPC_OP(fdivs)  PPC_OP(fdivs)
1251  {  {
1252      FTS0 /= FTS1;      FT0 = FTS0 / FTS1;
1253      RETURN();      RETURN();
1254  }  }
1255    
# Line 1299  PPC_OP(fmadd) Line 1299  PPC_OP(fmadd)
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    
# Line 1313  PPC_OP(fmsub) Line 1313  PPC_OP(fmsub)
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    
# Line 1349  PPC_OP(fnmsubs) Line 1349  PPC_OP(fnmsubs)
1349  /* frsp - frsp. */  /* frsp - frsp. */
1350  PPC_OP(frsp)  PPC_OP(frsp)
1351  {  {
1352      FTS0 = FT0;      FT0 = (float)FT0;
1353      RETURN();      RETURN();
1354  }  }
1355    

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26