@instruction<EOL><INDENT>def PSHUFD(cpu, op0, op1, op3):<DEDENT>
size = op0.size<EOL>arg0 = op0.read()<EOL>arg1 = op1.read()<EOL>order = Operators.ZEXTEND(op3.read(), size)<EOL>arg0 = arg0 & <NUM_LIT><EOL>arg0 |= ((arg1 >> (((order >> <NUM_LIT:0>) & <NUM_LIT:3>) * <NUM_LIT:32>)) & <NUM_LIT>)<EOL>arg0 |= ((arg1 >> (((order >> <NUM_LIT:2>) & <NUM_LIT:3>) * <NUM_LIT:32>)) & <NUM_LIT>) << <NUM_LIT:32><EOL>arg0 |= ((arg1 >> (((order >> <NUM_LIT:4>) & <NUM_LIT:3>) * <NUM_LIT:32>)) & <NUM_LIT>) << <NUM_LIT:64><EOL>arg0 |= ((arg1 >> (((order >> <NUM_LIT:6>) & <NUM_LIT:3>) * <NUM_LIT:32>)) & <NUM_LIT>) << <NUM_LIT><EOL>op0.write(arg0)<EOL>
Packed shuffle doublewords.

Copies doublewords from source operand (second operand) and inserts them in the destination operand
(first operand) at locations selected with the order operand (third operand).

:param cpu: current CPU.
:param op0: destination operand.
:param op1: source operand.
:param op3: order operand.