[libre-riscv-dev] [isa-dev] 3D Matrix-style operations / primitives

lkcl luke.leighton at gmail.com
Thu Sep 19 18:16:50 BST 2019


On Wednesday, September 18, 2019 at 10:36:17 AM UTC+1, Jacob Lifshay wrote:

anyway, here's a web page showing one way it can be done (the swizzles will 
> need to be decoded from the matrices provided, or just look up the sse2 
> instructions):
>
> http://web.archive.org/web/20100111104515/http://www.randombit.net:80/bitbashing/programming/integer_matrix_transpose_in_sse2.html
>

the ones being used are punpckldq and punpcklqdq, which are described here:
https://www.felixcloutier.com/x86/punpcklbw:punpcklwd:punpckldq:punpcklqdq

NP 0F 62 /*r*1 PUNPCKLDQ *mm, mm/m32* A V/V MMX Interleave low-order 
doublewords from *mm* and *mm/m32* into *mm*.
 
the key being "interleave".  so out of 128 bits (4x 32-bits)... hey it's 
the 128-bit equivalent of PACK! :)  that's very funny.

i'm not seeing how MV.SWIZZLE would help, given that MV.SWIZZLE only takes 
one source register.

l.

>


More information about the libre-riscv-dev mailing list