ppc64: Implement the remaining PowerISA v3.1 instructions
Goal
Add support to the remaining PowerISA v3.1 instructions in TCG.
Technical details
QEMU is missing the following vector instructions:
-
(Implemented in b58f3931)vcmp[su]q
: Vector Compare Signed/Unsigned Quadword -
(Implemented in 7b3da08e)vcmpequq
: Vector Compare Equal Unsigned Quadword -
(Implemented in 50449ae4)vcmpgt[su]q
: Vector Compare Greater Than Signed/Unsigned Quadword -
(Implemented in acf43b34)vextsd2q
: Vector Extend Sign Doubleword to Quadword -
(Implemented in 5f1470b0)vexpand[bhwdq]m
: Vector Expand Byte/Halfword/Word/Doubleword/Quadword Mask -
(Implemented in 17868d81)vextract[bhwdq]m
: Vector Extract Byte/Halfword/Word/Doubleword/Quadword Mask -
(Implemented in 9193eaa9)mtvsr[bhwdq]m
: Move to VSR Byte/Halfword/Word/Doubleword/Quadword Mask -
(Implemented in 95f1ee28)vcntmb[bhwd]
: Vector Count Mask Bits Byte/Halfword/Word/Doubleword -
(Implemented in aa0f34ec)vrlq
: Vector Rotate Left Quadword -
(Implemented in 7e5947df)vrlqmi
: Vector Rotate Left Quadword then Mask Insert -
(Implemented in 4e272668)vrlqnm
: Vector Rotate Left Quadword then AND with Mask -
(Implemented in 3e39edb6 and 946c3491)vs[lr]q
: Vector Integer Shift Left/Right Instructions -
(Implemented in 80eca687)vmul[eo][su]d
: Vector Multiply Even/Odd Signed/Unsined Doubleword -
(Implemented in 29e9dfcf)vmulh[su][wd]
: Vector Multiply High Signed/Unsigned Word/Doubleword -
vdiv[e][su][wdq]
: Vector Divide (Extended) Signed/Unsigned Word/Doubleword/Quadword -
vmod[su][wdq]
: Vector Modulo Signed/Unsigned Word/Doubleword/Quadword -
(Implemented in f622ebe7)vgnb
: Vector Gather every Nth Bit -
(Implemented in fb5303cc)vstri[bh][lr]
: Vector String Isolate Byte/Halfword Left/Right-justified -
(Implemented in 08d512e1 and fb1b5675)vclr[lr]b
: Vector Clear Left/Rightmost Bytes -
(Implemented in 5476ef1d)vmsumcud
: Vector Multiply-Sum & write Carry-out Unsigned Doubleword
And following VSX instructions:
-
(Implemented in 604d00c7)lxv[lr][bhwd]x
: Load VSX Vector Rightmost Byte/Halfword/Word/Doubleword -
(Implemented in 604d00c7)stxv[lr][bhwd]x
: Store VSX Vector Rightmost Byte/Halfword/Word/Doubleword -
xxm[tf]acc
: VSX Move to/from Accumulator -
xxsetaccz
: VSX Set Accumulator to Zero -
(Implemented in 41c2877f)xxpermx
: VSX Vector Permute Extended -
(Implemented in 1015fcab)xxeval
: VSX Vector Evaluate -
xvi{4,8,16}ger[s][pp]
: VSX Vector {4,8,16}-bit Signed/Unsigned Integer GER rank-{8,4,2} update (Positive multiply, Positive accumulate) -
xvf{16,32,64}ger[pn][pn]
: VSX Vector {16,32,64}-bits Floating-Point GER rank-{2,1,1} update (Positive/Negative multiply, Positive/Negative accumulate) -
xvbf16ger[pn][pn]
: VSX Vector bfloat16 GET rank-2 update (Positive/Negative multiply, Positive/Negative accumulate) -
(Implemented in b090f4f1)xxgenpcv[bhwd]m
: VSX Vector Generate PCV from Byte/Halfword/Word/Doubleword Mask -
(Implemented in d518239b)xvtlsbb
: VSX Vector Test Least-Significant Bit by Byte -
(Implemented in 568e7c4d)xscmp{eq,ge,gt}qp
: VSX Scalar Compare Greater Than/Equal Quad-Precision -
(Implemented in 7b8d6e3e)xs{max,min}cqp
: VSX Scalar Maximum/Minimum Type-C Quad-Precision -
(Implemented in b3d45205)xscvqp[su]qz
: VSX Vector Convert Quad-Precision to Signed/Unsigned Quadword -
(Implemented in 67332e07)xscv[su]qqp
: VSX Vector Convert Signed/Unsigned Quadword to Quad-Precision -
(Implemented in 3909ff1f)xvcvbf16sp
: VSX Vector Convert bfloat16 to Single-Precision format -
(Implemented in 3909ff1f)xvcvspbf16
: VSX Vector Convert with round Single-Precision to bfloat16 format
Additional information
Edited by Matheus Ferst