def _PUNPCKH(cpu, dest, src, item_size):
assert dest.size == src.size<EOL>size = dest.size<EOL>dest_value = dest.read()<EOL>src_value = src.read()<EOL>mask = (<NUM_LIT:1> << item_size) - <NUM_LIT:1><EOL>res = <NUM_LIT:0><EOL>count = <NUM_LIT:0><EOL>for pos in reversed(range(<NUM_LIT:0>, size // item_size)):<EOL><INDENT>if count >= size:<EOL><INDENT>break<EOL><DEDENT>item0 = Operators.ZEXTEND((dest_value >> (pos * item_size)) & mask, size)<EOL>item1 = Operators.ZEXTEND((src_value >> (pos * item_size)) & mask, size)<EOL>res = res << item_size<EOL>res |= item1<EOL>res = res << item_size<EOL>res |= item0<EOL>count += item_size * <NUM_LIT:2><EOL><DEDENT>dest.write(res)<EOL>
Generic PUNPCKH