Revision d52cf7a6 target-i386/ops_sse.h

b/target-i386/ops_sse.h
528 528
    s = (Reg *)((char *)env + PARAM2);
529 529
    for(i = 0; i < (8 << SHIFT); i++) {
530 530
        if (s->B(i) & 0x80)
531
            stb(A0, d->B(i));
531
            stb(A0 + i, d->B(i));
532 532
    }
533 533
}
534 534

  
......
565 565
    *d = r;
566 566
}
567 567
#else
568
void OPPROTO op_shufps(void)
569
{
570
    Reg r, *d, *s;
571
    int order;
572
    d = (Reg *)((char *)env + PARAM1);
573
    s = (Reg *)((char *)env + PARAM2);
574
    order = PARAM3;
575
    r.L(0) = d->L(order & 3);
576
    r.L(1) = d->L((order >> 2) & 3);
577
    r.L(2) = s->L((order >> 4) & 3);
578
    r.L(3) = s->L((order >> 6) & 3);
579
    *d = r;
580
}
581

  
568 582
void OPPROTO op_shufpd(void)
569 583
{
570 584
    Reg r, *d, *s;
......
572 586
    d = (Reg *)((char *)env + PARAM1);
573 587
    s = (Reg *)((char *)env + PARAM2);
574 588
    order = PARAM3;
575
    r.Q(0) = s->Q(order & 1);
589
    r.Q(0) = d->Q(order & 1);
576 590
    r.Q(1) = s->Q((order >> 1) & 1);
577 591
    *d = r;
578 592
}

Also available in: Unified diff