Commit bdfbac3512ac3faad4f084867e066d7c1c8f63fa

Authored by aurel32
1 parent 875b31db

target-ppc: Add vrefp instruction

Signed-off-by: Nathan Froyd <froydnj@codesourcery.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6573 c046a42c-6fe2-441c-8c8c-71466251a162
target-ppc/helper.h
... ... @@ -244,6 +244,7 @@ DEF_HELPER_3(vaddfp, void, avr, avr, avr)
244 244 DEF_HELPER_3(vsubfp, void, avr, avr, avr)
245 245 DEF_HELPER_3(vmaxfp, void, avr, avr, avr)
246 246 DEF_HELPER_3(vminfp, void, avr, avr, avr)
  247 +DEF_HELPER_2(vrefp, void, avr, avr)
247 248 DEF_HELPER_4(vmaddfp, void, avr, avr, avr, avr)
248 249 DEF_HELPER_4(vnmsubfp, void, avr, avr, avr, avr)
249 250 DEF_HELPER_2(vlogefp, void, avr, avr)
... ...
target-ppc/op_helper.c
... ... @@ -2664,6 +2664,16 @@ VPK(uwum, u32, u16, I, 0)
2664 2664 #undef VPK
2665 2665 #undef PKBIG
2666 2666  
  2667 +void helper_vrefp (ppc_avr_t *r, ppc_avr_t *b)
  2668 +{
  2669 + int i;
  2670 + for (i = 0; i < ARRAY_SIZE(r->f); i++) {
  2671 + HANDLE_NAN1(r->f[i], b->f[i]) {
  2672 + r->f[i] = float32_div(float32_one, b->f[i], &env->vec_status);
  2673 + }
  2674 + }
  2675 +}
  2676 +
2667 2677 #define VRFI(suffix, rounding) \
2668 2678 void helper_vrfi##suffix (ppc_avr_t *r, ppc_avr_t *b) \
2669 2679 { \
... ...
target-ppc/translate.c
... ... @@ -6476,6 +6476,7 @@ GEN_VXFORM_NOA(vupklsb, 7, 10);
6476 6476 GEN_VXFORM_NOA(vupklsh, 7, 11);
6477 6477 GEN_VXFORM_NOA(vupkhpx, 7, 13);
6478 6478 GEN_VXFORM_NOA(vupklpx, 7, 15);
  6479 +GEN_VXFORM_NOA(vrefp, 5, 4);
6479 6480 GEN_VXFORM_NOA(vlogefp, 5, 7);
6480 6481 GEN_VXFORM_NOA(vrfim, 5, 8);
6481 6482 GEN_VXFORM_NOA(vrfin, 5, 9);
... ...