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

Jacob Lifshay programmerjake at gmail.com
Thu Sep 19 20:33:49 BST 2019


On Thu, Sep 19, 2019, 10:16 lkcl <luke.leighton at gmail.com> wrote:

> 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.
>

not that particular swizzle instruction, but a generalized 2-source swizzle
(like LLVM's IR instruction).

Jacob


More information about the libre-riscv-dev mailing list