target/mips: Amend MXU instruction opcodes
Amend MXU instruction opcodes. Pool04 is actually only instruction OPC_MXU_S16MAD. Two cases within S16MAD are recognized by 1-bit subfield 'aptn1'. Reviewed-by: Stefan Markovic <smarkovic@wavecomp.com> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
This commit is contained in:
parent
a031ac6161
commit
eab0bdb07c
@ -1486,7 +1486,7 @@ enum {
|
||||
* S32OR XRa, XRb, XRc D32SARW XRa, XRb, XRc, Rb
|
||||
* Q16SLL XRa, XRb, XRc, XRd, sft4
|
||||
* Q16SLR XRa, XRb, XRc, XRd, sft4
|
||||
* Miscelaneous instructions Q16SAR XRa, XRb, XRc, XRd, sft4
|
||||
* Miscellaneous instructions Q16SAR XRa, XRb, XRc, XRd, sft4
|
||||
* ------------------------- Q16SLLV XRa, XRb, Rb
|
||||
* Q16SLRV XRa, XRb, Rb
|
||||
* S32SFL XRa, XRb, XRc, XRd, optn2 Q16SARV XRa, XRb, Rb
|
||||
@ -1504,7 +1504,8 @@ enum {
|
||||
*
|
||||
* ┌─ 000000 ─ OPC_MXU_S32MADD
|
||||
* ├─ 000001 ─ OPC_MXU_S32MADDU
|
||||
* ├─ 000010 ─ <not assigned>
|
||||
* ├─ 000010 ─ <not assigned> (non-MXU OPC_MUL)
|
||||
* │
|
||||
* │ 20..18
|
||||
* ├─ 000011 ─ OPC_MXU__POOL00 ─┬─ 000 ─ OPC_MXU_S32MAX
|
||||
* │ ├─ 001 ─ OPC_MXU_S32MIN
|
||||
@ -1536,73 +1537,67 @@ enum {
|
||||
* ├─ 001010 ─ OPC_MXU_D16MAC
|
||||
* ├─ 001011 ─ OPC_MXU_D16MACF
|
||||
* ├─ 001100 ─ OPC_MXU_D16MADL
|
||||
* │ 25..24
|
||||
* ├─ 001101 ─ OPC_MXU__POOL04 ─┬─ 00 ─ OPC_MXU_S16MAD
|
||||
* │ └─ 01 ─ OPC_MXU_S16MAD_1
|
||||
* ├─ 001101 ─ OPC_MXU_S16MAD
|
||||
* ├─ 001110 ─ OPC_MXU_Q16ADD
|
||||
* ├─ 001111 ─ OPC_MXU_D16MACE
|
||||
* │ 23
|
||||
* ├─ 010000 ─ OPC_MXU__POOL05 ─┬─ 0 ─ OPC_MXU_S32LDD
|
||||
* │ └─ 1 ─ OPC_MXU_S32LDDR
|
||||
* ├─ 001111 ─ OPC_MXU_D16MACE 23
|
||||
* │ ┌─ 0 ─ OPC_MXU_S32LDD
|
||||
* ├─ 010000 ─ OPC_MXU__POOL04 ─┴─ 1 ─ OPC_MXU_S32LDDR
|
||||
* │
|
||||
* │ 23
|
||||
* ├─ 010001 ─ OPC_MXU__POOL06 ─┬─ 0 ─ OPC_MXU_S32STD
|
||||
* ├─ 010001 ─ OPC_MXU__POOL05 ─┬─ 0 ─ OPC_MXU_S32STD
|
||||
* │ └─ 1 ─ OPC_MXU_S32STDR
|
||||
* │
|
||||
* │ 13..10
|
||||
* ├─ 010010 ─ OPC_MXU__POOL07 ─┬─ 0000 ─ OPC_MXU_S32LDDV
|
||||
* ├─ 010010 ─ OPC_MXU__POOL06 ─┬─ 0000 ─ OPC_MXU_S32LDDV
|
||||
* │ └─ 0001 ─ OPC_MXU_S32LDDVR
|
||||
* │
|
||||
* │ 13..10
|
||||
* ├─ 010011 ─ OPC_MXU__POOL08 ─┬─ 0000 ─ OPC_MXU_S32STDV
|
||||
* ├─ 010011 ─ OPC_MXU__POOL07 ─┬─ 0000 ─ OPC_MXU_S32STDV
|
||||
* │ └─ 0001 ─ OPC_MXU_S32STDVR
|
||||
* │
|
||||
* │ 23
|
||||
* ├─ 010100 ─ OPC_MXU__POOL09 ─┬─ 0 ─ OPC_MXU_S32LDI
|
||||
* ├─ 010100 ─ OPC_MXU__POOL08 ─┬─ 0 ─ OPC_MXU_S32LDI
|
||||
* │ └─ 1 ─ OPC_MXU_S32LDIR
|
||||
* │
|
||||
* │ 23
|
||||
* ├─ 010101 ─ OPC_MXU__POOL10 ─┬─ 0 ─ OPC_MXU_S32SDI
|
||||
* ├─ 010101 ─ OPC_MXU__POOL09 ─┬─ 0 ─ OPC_MXU_S32SDI
|
||||
* │ └─ 1 ─ OPC_MXU_S32SDIR
|
||||
* │
|
||||
* │ 13..10
|
||||
* ├─ 010110 ─ OPC_MXU__POOL11 ─┬─ 0000 ─ OPC_MXU_S32LDIV
|
||||
* ├─ 010110 ─ OPC_MXU__POOL10 ─┬─ 0000 ─ OPC_MXU_S32LDIV
|
||||
* │ └─ 0001 ─ OPC_MXU_S32LDIVR
|
||||
* │
|
||||
* │ 13..10
|
||||
* ├─ 010111 ─ OPC_MXU__POOL12 ─┬─ 0000 ─ OPC_MXU_S32SDIV
|
||||
* ├─ 010111 ─ OPC_MXU__POOL11 ─┬─ 0000 ─ OPC_MXU_S32SDIV
|
||||
* │ └─ 0001 ─ OPC_MXU_S32SDIVR
|
||||
* ├─ 011000 ─ OPC_MXU_D32ADD
|
||||
* │ 23..22
|
||||
* MXU ├─ 011001 ─ OPC_MXU__POOL13 ─┬─ 00 ─ OPC_MXU_D32ACC
|
||||
* MXU ├─ 011001 ─ OPC_MXU__POOL12 ─┬─ 00 ─ OPC_MXU_D32ACC
|
||||
* opcodes ─┤ ├─ 01 ─ OPC_MXU_D32ACCM
|
||||
* │ └─ 10 ─ OPC_MXU_D32ASUM
|
||||
* ├─ 011010 ─ <not assigned>
|
||||
* │ 23..22
|
||||
* ├─ 011011 ─ OPC_MXU__POOL14 ─┬─ 00 ─ OPC_MXU_Q16ACC
|
||||
* ├─ 011011 ─ OPC_MXU__POOL13 ─┬─ 00 ─ OPC_MXU_Q16ACC
|
||||
* │ ├─ 01 ─ OPC_MXU_Q16ACCM
|
||||
* │ └─ 10 ─ OPC_MXU_Q16ASUM
|
||||
* │
|
||||
* │ 23..22
|
||||
* ├─ 011100 ─ OPC_MXU__POOL15 ─┬─ 00 ─ OPC_MXU_Q8ADDE
|
||||
* ├─ 011100 ─ OPC_MXU__POOL14 ─┬─ 00 ─ OPC_MXU_Q8ADDE
|
||||
* │ ├─ 01 ─ OPC_MXU_D8SUM
|
||||
* ├─ 011101 ─ OPC_MXU_Q8ACCE └─ 10 ─ OPC_MXU_D8SUMC
|
||||
* ├─ 011110 ─ <not assigned>
|
||||
* ├─ 011111 ─ <not assigned>
|
||||
* ├─ 100000 ─ <not assigned>
|
||||
* ├─ 100001 ─ <not assigned>
|
||||
* ├─ 100000 ─ <not assigned> (overlaps with CLZ)
|
||||
* ├─ 100001 ─ <not assigned> (overlaps with CLO)
|
||||
* ├─ 100010 ─ OPC_MXU_S8LDD
|
||||
* ├─ 100011 ─ OPC_MXU_S8STD
|
||||
* ├─ 100100 ─ OPC_MXU_S8LDI
|
||||
* ├─ 100101 ─ OPC_MXU_S8SDI
|
||||
* │ 15..14
|
||||
* ├─ 100110 ─ OPC_MXU__POOL16 ─┬─ 00 ─ OPC_MXU_S32MUL
|
||||
* │ ├─ 00 ─ OPC_MXU_S32MULU
|
||||
* ├─ 100011 ─ OPC_MXU_S8STD 15..14
|
||||
* ├─ 100100 ─ OPC_MXU_S8LDI ┌─ 00 ─ OPC_MXU_S32MUL
|
||||
* ├─ 100101 ─ OPC_MXU_S8SDI ├─ 00 ─ OPC_MXU_S32MULU
|
||||
* │ ├─ 00 ─ OPC_MXU_S32EXTR
|
||||
* │ └─ 00 ─ OPC_MXU_S32EXTRV
|
||||
* ├─ 100110 ─ OPC_MXU__POOL15 ─┴─ 00 ─ OPC_MXU_S32EXTRV
|
||||
* │
|
||||
* │ 20..18
|
||||
* ├─ 100111 ─ OPC_MXU__POOL17 ─┬─ 000 ─ OPC_MXU_D32SARW
|
||||
* ├─ 100111 ─ OPC_MXU__POOL16 ─┬─ 000 ─ OPC_MXU_D32SARW
|
||||
* │ ├─ 001 ─ OPC_MXU_S32ALN
|
||||
* ├─ 101000 ─ OPC_MXU_LXB ├─ 010 ─ OPC_MXU_S32ALNI
|
||||
* ├─ 101001 ─ <not assigned> ├─ 011 ─ OPC_MXU_S32NOR
|
||||
@ -1610,33 +1605,24 @@ enum {
|
||||
* ├─ 101011 ─ OPC_MXU_S16STD ├─ 101 ─ OPC_MXU_S32OR
|
||||
* ├─ 101100 ─ OPC_MXU_S16LDI ├─ 110 ─ OPC_MXU_S32XOR
|
||||
* ├─ 101101 ─ OPC_MXU_S16SDI └─ 111 ─ OPC_MXU_S32LUI
|
||||
* ├─ 101000 ─ <not assigned>
|
||||
* ├─ 101001 ─ <not assigned>
|
||||
* ├─ 101010 ─ <not assigned>
|
||||
* ├─ 101011 ─ <not assigned>
|
||||
* ├─ 101100 ─ <not assigned>
|
||||
* ├─ 101101 ─ <not assigned>
|
||||
* ├─ 101110 ─ OPC_MXU_S32M2I
|
||||
* ├─ 101111 ─ OPC_MXU_S32I2M
|
||||
* ├─ 110000 ─ OPC_MXU_D32SLL
|
||||
* ├─ 110001 ─ OPC_MXU_D32SLR
|
||||
* ├─ 110010 ─ OPC_MXU_D32SARL
|
||||
* ├─ 110011 ─ OPC_MXU_D32SAR
|
||||
* ├─ 110100 ─ OPC_MXU_Q16SLL
|
||||
* ├─ 110101 ─ OPC_MXU_Q16SLR 20..18
|
||||
* ├─ 110110 ─ OPC_MXU__POOL18 ─┬─ 000 ─ OPC_MXU_D32SLLV
|
||||
* │ ├─ 001 ─ OPC_MXU_D32SLRV
|
||||
* │ ├─ 010 ─ OPC_MXU_D32SARV
|
||||
* │ ├─ 011 ─ OPC_MXU_Q16SLLV
|
||||
* ├─ 110001 ─ OPC_MXU_D32SLR 20..18
|
||||
* ├─ 110010 ─ OPC_MXU_D32SARL ┌─ 000 ─ OPC_MXU_D32SLLV
|
||||
* ├─ 110011 ─ OPC_MXU_D32SAR ├─ 001 ─ OPC_MXU_D32SLRV
|
||||
* ├─ 110100 ─ OPC_MXU_Q16SLL ├─ 010 ─ OPC_MXU_D32SARV
|
||||
* ├─ 110101 ─ OPC_MXU_Q16SLR ├─ 011 ─ OPC_MXU_Q16SLLV
|
||||
* │ ├─ 100 ─ OPC_MXU_Q16SLRV
|
||||
* │ └─ 101 ─ OPC_MXU_Q16SARV
|
||||
* ├─ 110110 ─ OPC_MXU__POOL17 ─┴─ 101 ─ OPC_MXU_Q16SARV
|
||||
* │
|
||||
* ├─ 110111 ─ OPC_MXU_Q16SAR
|
||||
* │ 23..22
|
||||
* ├─ 111000 ─ OPC_MXU__POOL19 ─┬─ 00 ─ OPC_MXU_Q8MUL
|
||||
* ├─ 111000 ─ OPC_MXU__POOL18 ─┬─ 00 ─ OPC_MXU_Q8MUL
|
||||
* │ └─ 01 ─ OPC_MXU_Q8MULSU
|
||||
* │
|
||||
* │ 20..18
|
||||
* ├─ 111001 ─ OPC_MXU__POOL20 ─┬─ 000 ─ OPC_MXU_Q8MOVZ
|
||||
* ├─ 111001 ─ OPC_MXU__POOL19 ─┬─ 000 ─ OPC_MXU_Q8MOVZ
|
||||
* │ ├─ 001 ─ OPC_MXU_Q8MOVN
|
||||
* │ ├─ 010 ─ OPC_MXU_D16MOVZ
|
||||
* │ ├─ 011 ─ OPC_MXU_D16MOVN
|
||||
@ -1644,13 +1630,13 @@ enum {
|
||||
* │ └─ 101 ─ OPC_MXU_S32MOV
|
||||
* │
|
||||
* │ 23..22
|
||||
* ├─ 111010 ─ OPC_MXU__POOL21 ─┬─ 00 ─ OPC_MXU_Q8MAC
|
||||
* ├─ 111010 ─ OPC_MXU__POOL20 ─┬─ 00 ─ OPC_MXU_Q8MAC
|
||||
* │ └─ 10 ─ OPC_MXU_Q8MACSU
|
||||
* ├─ 111011 ─ OPC_MXU_Q16SCOP
|
||||
* ├─ 111100 ─ OPC_MXU_Q8MADL
|
||||
* ├─ 111101 ─ OPC_MXU_S32SFL
|
||||
* ├─ 111110 ─ OPC_MXU_Q8SAD
|
||||
* └─ 111111 ─ <not assigned>
|
||||
* └─ 111111 ─ <not assigned> (overlaps with SDBBP)
|
||||
*
|
||||
*
|
||||
* Compiled after:
|
||||
@ -1673,22 +1659,22 @@ enum {
|
||||
OPC_MXU_D16MAC = 0x0A,
|
||||
OPC_MXU_D16MACF = 0x0B,
|
||||
OPC_MXU_D16MADL = 0x0C,
|
||||
OPC_MXU__POOL04 = 0x0D,
|
||||
OPC_MXU_S16MAD = 0x0D,
|
||||
OPC_MXU_Q16ADD = 0x0E,
|
||||
OPC_MXU_D16MACE = 0x0F,
|
||||
OPC_MXU__POOL05 = 0x10,
|
||||
OPC_MXU__POOL06 = 0x11,
|
||||
OPC_MXU__POOL07 = 0x12,
|
||||
OPC_MXU__POOL08 = 0x13,
|
||||
OPC_MXU__POOL09 = 0x14,
|
||||
OPC_MXU__POOL10 = 0x15,
|
||||
OPC_MXU__POOL11 = 0x16,
|
||||
OPC_MXU__POOL12 = 0x17,
|
||||
OPC_MXU__POOL04 = 0x10,
|
||||
OPC_MXU__POOL05 = 0x11,
|
||||
OPC_MXU__POOL06 = 0x12,
|
||||
OPC_MXU__POOL07 = 0x13,
|
||||
OPC_MXU__POOL08 = 0x14,
|
||||
OPC_MXU__POOL09 = 0x15,
|
||||
OPC_MXU__POOL10 = 0x16,
|
||||
OPC_MXU__POOL11 = 0x17,
|
||||
OPC_MXU_D32ADD = 0x18,
|
||||
OPC_MXU__POOL13 = 0x19,
|
||||
OPC_MXU__POOL12 = 0x19,
|
||||
/* not assigned 0x1A */
|
||||
OPC_MXU__POOL14 = 0x1B,
|
||||
OPC_MXU__POOL15 = 0x1C,
|
||||
OPC_MXU__POOL13 = 0x1B,
|
||||
OPC_MXU__POOL14 = 0x1C,
|
||||
OPC_MXU_Q8ACCE = 0x1D,
|
||||
/* not assigned 0x1E */
|
||||
/* not assigned 0x1F */
|
||||
@ -1698,8 +1684,8 @@ enum {
|
||||
OPC_MXU_S8STD = 0x23,
|
||||
OPC_MXU_S8LDI = 0x24,
|
||||
OPC_MXU_S8SDI = 0x25,
|
||||
OPC_MXU__POOL16 = 0x26,
|
||||
OPC_MXU__POOL17 = 0x27,
|
||||
OPC_MXU__POOL15 = 0x26,
|
||||
OPC_MXU__POOL16 = 0x27,
|
||||
OPC_MXU_LXB = 0x28,
|
||||
/* not assigned 0x29 */
|
||||
OPC_MXU_S16LDD = 0x2A,
|
||||
@ -1714,11 +1700,11 @@ enum {
|
||||
OPC_MXU_D32SAR = 0x33,
|
||||
OPC_MXU_Q16SLL = 0x34,
|
||||
OPC_MXU_Q16SLR = 0x35,
|
||||
OPC_MXU__POOL18 = 0x36,
|
||||
OPC_MXU__POOL17 = 0x36,
|
||||
OPC_MXU_Q16SAR = 0x37,
|
||||
OPC_MXU__POOL19 = 0x38,
|
||||
OPC_MXU__POOL20 = 0x39,
|
||||
OPC_MXU__POOL21 = 0x3A,
|
||||
OPC_MXU__POOL18 = 0x38,
|
||||
OPC_MXU__POOL19 = 0x39,
|
||||
OPC_MXU__POOL20 = 0x3A,
|
||||
OPC_MXU_Q16SCOP = 0x3B,
|
||||
OPC_MXU_Q8MADL = 0x3C,
|
||||
OPC_MXU_S32SFL = 0x3D,
|
||||
@ -1775,21 +1761,13 @@ enum {
|
||||
/*
|
||||
* MXU pool 04
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S16MAD = 0x00,
|
||||
OPC_MXU_S16MAD_1 = 0x01,
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 05
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32LDD = 0x00,
|
||||
OPC_MXU_S32LDDR = 0x01,
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 06
|
||||
* MXU pool 05
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32STD = 0x00,
|
||||
@ -1797,7 +1775,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 07
|
||||
* MXU pool 06
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32LDDV = 0x00,
|
||||
@ -1805,7 +1783,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 08
|
||||
* MXU pool 07
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32STDV = 0x00,
|
||||
@ -1813,7 +1791,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 09
|
||||
* MXU pool 08
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32LDI = 0x00,
|
||||
@ -1821,7 +1799,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 10
|
||||
* MXU pool 09
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32SDI = 0x00,
|
||||
@ -1829,7 +1807,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 11
|
||||
* MXU pool 10
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32LDIV = 0x00,
|
||||
@ -1837,7 +1815,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 12
|
||||
* MXU pool 11
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32SDIV = 0x00,
|
||||
@ -1845,7 +1823,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 13
|
||||
* MXU pool 12
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_D32ACC = 0x00,
|
||||
@ -1854,7 +1832,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 14
|
||||
* MXU pool 13
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_Q16ACC = 0x00,
|
||||
@ -1863,7 +1841,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 15
|
||||
* MXU pool 14
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_Q8ADDE = 0x00,
|
||||
@ -1872,7 +1850,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 16
|
||||
* MXU pool 15
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_S32MUL = 0x00,
|
||||
@ -1882,7 +1860,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 17
|
||||
* MXU pool 16
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_D32SARW = 0x00,
|
||||
@ -1896,7 +1874,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 18
|
||||
* MXU pool 17
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_D32SLLV = 0x00,
|
||||
@ -1908,7 +1886,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 19
|
||||
* MXU pool 18
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_Q8MUL = 0x00,
|
||||
@ -1916,7 +1894,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 20
|
||||
* MXU pool 19
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_Q8MOVZ = 0x00,
|
||||
@ -1928,7 +1906,7 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* MXU pool 21
|
||||
* MXU pool 20
|
||||
*/
|
||||
enum {
|
||||
OPC_MXU_Q8MAC = 0x00,
|
||||
|
Loading…
Reference in New Issue
Block a user