Diff for /qemu/target-i386/ops_sse.h between versions 1.1.1.7 and 1.1.1.8

version 1.1.1.7, 2018/04/24 19:02:53 version 1.1.1.8, 2018/04/24 19:31:10
Line 859  void helper_insertq_i(XMMReg *d, int ind Line 859  void helper_insertq_i(XMMReg *d, int ind
 void helper_haddps(XMMReg *d, XMMReg *s)  void helper_haddps(XMMReg *d, XMMReg *s)
 {  {
     XMMReg r;      XMMReg r;
     r.XMM_S(0) = d->XMM_S(0) + d->XMM_S(1);      r.XMM_S(0) = float32_add(d->XMM_S(0), d->XMM_S(1), &env->sse_status);
     r.XMM_S(1) = d->XMM_S(2) + d->XMM_S(3);      r.XMM_S(1) = float32_add(d->XMM_S(2), d->XMM_S(3), &env->sse_status);
     r.XMM_S(2) = s->XMM_S(0) + s->XMM_S(1);      r.XMM_S(2) = float32_add(s->XMM_S(0), s->XMM_S(1), &env->sse_status);
     r.XMM_S(3) = s->XMM_S(2) + s->XMM_S(3);      r.XMM_S(3) = float32_add(s->XMM_S(2), s->XMM_S(3), &env->sse_status);
     *d = r;      *d = r;
 }  }
   
 void helper_haddpd(XMMReg *d, XMMReg *s)  void helper_haddpd(XMMReg *d, XMMReg *s)
 {  {
     XMMReg r;      XMMReg r;
     r.XMM_D(0) = d->XMM_D(0) + d->XMM_D(1);      r.XMM_D(0) = float64_add(d->XMM_D(0), d->XMM_D(1), &env->sse_status);
     r.XMM_D(1) = s->XMM_D(0) + s->XMM_D(1);      r.XMM_D(1) = float64_add(s->XMM_D(0), s->XMM_D(1), &env->sse_status);
     *d = r;      *d = r;
 }  }
   
 void helper_hsubps(XMMReg *d, XMMReg *s)  void helper_hsubps(XMMReg *d, XMMReg *s)
 {  {
     XMMReg r;      XMMReg r;
     r.XMM_S(0) = d->XMM_S(0) - d->XMM_S(1);      r.XMM_S(0) = float32_sub(d->XMM_S(0), d->XMM_S(1), &env->sse_status);
     r.XMM_S(1) = d->XMM_S(2) - d->XMM_S(3);      r.XMM_S(1) = float32_sub(d->XMM_S(2), d->XMM_S(3), &env->sse_status);
     r.XMM_S(2) = s->XMM_S(0) - s->XMM_S(1);      r.XMM_S(2) = float32_sub(s->XMM_S(0), s->XMM_S(1), &env->sse_status);
     r.XMM_S(3) = s->XMM_S(2) - s->XMM_S(3);      r.XMM_S(3) = float32_sub(s->XMM_S(2), s->XMM_S(3), &env->sse_status);
     *d = r;      *d = r;
 }  }
   
 void helper_hsubpd(XMMReg *d, XMMReg *s)  void helper_hsubpd(XMMReg *d, XMMReg *s)
 {  {
     XMMReg r;      XMMReg r;
     r.XMM_D(0) = d->XMM_D(0) - d->XMM_D(1);      r.XMM_D(0) = float64_sub(d->XMM_D(0), d->XMM_D(1), &env->sse_status);
     r.XMM_D(1) = s->XMM_D(0) - s->XMM_D(1);      r.XMM_D(1) = float64_sub(s->XMM_D(0), s->XMM_D(1), &env->sse_status);
     *d = r;      *d = r;
 }  }
   
 void helper_addsubps(XMMReg *d, XMMReg *s)  void helper_addsubps(XMMReg *d, XMMReg *s)
 {  {
     d->XMM_S(0) = d->XMM_S(0) - s->XMM_S(0);      d->XMM_S(0) = float32_sub(d->XMM_S(0), s->XMM_S(0), &env->sse_status);
     d->XMM_S(1) = d->XMM_S(1) + s->XMM_S(1);      d->XMM_S(1) = float32_add(d->XMM_S(1), s->XMM_S(1), &env->sse_status);
     d->XMM_S(2) = d->XMM_S(2) - s->XMM_S(2);      d->XMM_S(2) = float32_sub(d->XMM_S(2), s->XMM_S(2), &env->sse_status);
     d->XMM_S(3) = d->XMM_S(3) + s->XMM_S(3);      d->XMM_S(3) = float32_add(d->XMM_S(3), s->XMM_S(3), &env->sse_status);
 }  }
   
 void helper_addsubpd(XMMReg *d, XMMReg *s)  void helper_addsubpd(XMMReg *d, XMMReg *s)
 {  {
     d->XMM_D(0) = d->XMM_D(0) - s->XMM_D(0);      d->XMM_D(0) = float64_sub(d->XMM_D(0), s->XMM_D(0), &env->sse_status);
     d->XMM_D(1) = d->XMM_D(1) + s->XMM_D(1);      d->XMM_D(1) = float64_add(d->XMM_D(1), s->XMM_D(1), &env->sse_status);
 }  }
   
 /* XXX: unordered */  /* XXX: unordered */
Line 1996  void glue(helper_pcmpestrm, SUFFIX) (Reg Line 1996  void glue(helper_pcmpestrm, SUFFIX) (Reg
   
     if ((ctrl >> 6) & 1) {      if ((ctrl >> 6) & 1) {
         if (ctrl & 1)          if (ctrl & 1)
             for (i = 0; i <= 8; i--, res >>= 1)              for (i = 0; i < 8; i++, res >>= 1) {
                 d->W(i) = (res & 1) ? ~0 : 0;                  d->W(i) = (res & 1) ? ~0 : 0;
               }
         else          else
             for (i = 0; i <= 16; i--, res >>= 1)              for (i = 0; i < 16; i++, res >>= 1) {
                 d->B(i) = (res & 1) ? ~0 : 0;                  d->B(i) = (res & 1) ? ~0 : 0;
               }
     } else {      } else {
         d->Q(1) = 0;          d->Q(1) = 0;
         d->Q(0) = res;          d->Q(0) = res;
Line 2028  void glue(helper_pcmpistrm, SUFFIX) (Reg Line 2030  void glue(helper_pcmpistrm, SUFFIX) (Reg
   
     if ((ctrl >> 6) & 1) {      if ((ctrl >> 6) & 1) {
         if (ctrl & 1)          if (ctrl & 1)
             for (i = 0; i <= 8; i--, res >>= 1)              for (i = 0; i < 8; i++, res >>= 1) {
                 d->W(i) = (res & 1) ? ~0 : 0;                  d->W(i) = (res & 1) ? ~0 : 0;
               }
         else          else
             for (i = 0; i <= 16; i--, res >>= 1)              for (i = 0; i < 16; i++, res >>= 1) {
                 d->B(i) = (res & 1) ? ~0 : 0;                  d->B(i) = (res & 1) ? ~0 : 0;
               }
     } else {      } else {
         d->Q(1) = 0;          d->Q(1) = 0;
         d->Q(0) = res;          d->Q(0) = res;

Removed from v.1.1.1.7  
changed lines
  Added in v.1.1.1.8


unix.superglobalmegacorp.com