У меня есть блок байтов размером 4x4, который я бы хотел транспонировать, используя аппаратное обеспечение общего назначения. Другими словами, для байтов A-P я ищу наиболее эффективное (с точки зрения количества инструкций) способ перехода от
A B C D
E F G H
I J K L
M N O P
к
A E I M
B F J N
C G K O
D H L P
Мы можем предположить, что у меня есть действительные указатели, указывающие на A
, E
, I
и M
в памяти (такие, что чтение 32-бит из A приведет к получению целого числа, содержащего байты ABCD
).
Это не дубликат этого вопроса из-за ограничений как размера, так и типа данных. Каждая строка моей матрицы может вписываться в 32-битное целое число, и я ищу ответы, которые могут быстро выполнить транспонирование с использованием аппаратного обеспечения общего назначения, аналогичного реализации макроса SSE _MM_TRANSPOSE4_PS
.