A touch of low level programming
With Zvbb, you could also use a vrotl for SEW<64.
Unrolled LMUL=1 vrgather could also work quite well.
Another idea would be something like `vcreate(vop(vsnrl(a,0),vnsrl(b,8)),voo(vnsrl(a,8), vnsrl(b, 0)))`
This would pair up all even elements in a with odd elements in b, and the other way around.
The vector rotation is definitely a nice tric (and with a single instruction on top of that), unfortunately the K230 does not implement it :-(
With Zvbb, you could also use a vrotl for SEW<64.
Unrolled LMUL=1 vrgather could also work quite well.
Another idea would be something like `vcreate(vop(vsnrl(a,0),vnsrl(b,8)),voo(vnsrl(a,8), vnsrl(b, 0)))`
This would pair up all even elements in a with odd elements in b, and the other way around.
The vector rotation is definitely a nice tric (and with a single instruction on top of that), unfortunately the K230 does not implement it :-(