528 |
s = (Reg *)((char *)env + PARAM2); |
s = (Reg *)((char *)env + PARAM2); |
529 |
for(i = 0; i < (8 << SHIFT); i++) { |
for(i = 0; i < (8 << SHIFT); i++) { |
530 |
if (s->B(i) & 0x80) |
if (s->B(i) & 0x80) |
531 |
stb(A0, d->B(i)); |
stb(A0 + i, d->B(i)); |
532 |
} |
} |
533 |
} |
} |
534 |
|
|
565 |
*d = r; |
*d = r; |
566 |
} |
} |
567 |
#else |
#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 |
|
|
582 |
void OPPROTO op_shufpd(void) |
void OPPROTO op_shufpd(void) |
583 |
{ |
{ |
584 |
Reg r, *d, *s; |
Reg r, *d, *s; |
586 |
d = (Reg *)((char *)env + PARAM1); |
d = (Reg *)((char *)env + PARAM1); |
587 |
s = (Reg *)((char *)env + PARAM2); |
s = (Reg *)((char *)env + PARAM2); |
588 |
order = PARAM3; |
order = PARAM3; |
589 |
r.Q(0) = s->Q(order & 1); |
r.Q(0) = d->Q(order & 1); |
590 |
r.Q(1) = s->Q((order >> 1) & 1); |
r.Q(1) = s->Q((order >> 1) & 1); |
591 |
*d = r; |
*d = r; |
592 |
} |
} |