mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
target/arm: Implement MVE scatter-gather insns
Implement the MVE gather-loads and scatter-stores which form the address by adding a base value from a scalar register to an offset in each element of a vector. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
0f31e37c7f
commit
dc18628b18
4 changed files with 270 additions and 0 deletions
|
@ -42,11 +42,18 @@
|
|||
&shl_scalar qda rm size
|
||||
&vmaxv qm rda size
|
||||
&vabav qn qm rda size
|
||||
&vldst_sg qd qm rn size msize os
|
||||
|
||||
# scatter-gather memory size is in bits 6:4
|
||||
%sg_msize 6:1 4:1
|
||||
|
||||
@vldr_vstr ....... . . . . l:1 rn:4 ... ...... imm:7 &vldr_vstr qd=%qd u=0
|
||||
# Note that both Rn and Qd are 3 bits only (no D bit)
|
||||
@vldst_wn ... u:1 ... . . . . l:1 . rn:3 qd:3 . ... .. imm:7 &vldr_vstr
|
||||
|
||||
@vldst_sg .... .... .... rn:4 .... ... size:2 ... ... os:1 &vldst_sg \
|
||||
qd=%qd qm=%qm msize=%sg_msize
|
||||
|
||||
@1op .... .... .... size:2 .. .... .... .... .... &1op qd=%qd qm=%qm
|
||||
@1op_nosz .... .... .... .... .... .... .... .... &1op qd=%qd qm=%qm size=0
|
||||
@2op .... .... .. size:2 .... .... .... .... .... &2op qd=%qd qm=%qm qn=%qn
|
||||
|
@ -136,6 +143,11 @@ VLDR_VSTR 1110110 1 a:1 . w:1 . .... ... 111101 ....... @vldr_vstr \
|
|||
VLDR_VSTR 1110110 1 a:1 . w:1 . .... ... 111110 ....... @vldr_vstr \
|
||||
size=2 p=1
|
||||
|
||||
# gather loads/scatter stores
|
||||
VLDR_S_sg 111 0 1100 1 . 01 .... ... 0 111 . .... .... @vldst_sg
|
||||
VLDR_U_sg 111 1 1100 1 . 01 .... ... 0 111 . .... .... @vldst_sg
|
||||
VSTR_sg 111 0 1100 1 . 00 .... ... 0 111 . .... .... @vldst_sg
|
||||
|
||||
# Moves between 2 32-bit vector lanes and 2 general purpose registers
|
||||
VMOV_to_2gp 1110 1100 0 . 00 rt2:4 ... 0 1111 000 idx:1 rt:4 qd=%qd
|
||||
VMOV_from_2gp 1110 1100 0 . 01 rt2:4 ... 0 1111 000 idx:1 rt:4 qd=%qd
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue