Loading target/mips/translate.c +276 −0 Original line number Diff line number Diff line Loading @@ -1651,6 +1651,282 @@ enum { * Programming Manual", Ingenic Semiconductor Co, Ltd., 2017 */ enum { OPC_MXU_S32MADD = 0x00, OPC_MXU_S32MADDU = 0x01, /* not assigned 0x02 */ OPC_MXU__POOL00 = 0x03, OPC_MXU_S32MSUB = 0x04, OPC_MXU_S32MSUBU = 0x05, OPC_MXU__POOL01 = 0x06, OPC_MXU__POOL02 = 0x07, OPC_MXU_D16MUL = 0x08, OPC_MXU__POOL03 = 0x09, OPC_MXU_D16MAC = 0x0A, OPC_MXU_D16MACF = 0x0B, OPC_MXU_D16MADL = 0x0C, OPC_MXU__POOL04 = 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_D32ADD = 0x18, OPC_MXU__POOL13 = 0x19, /* not assigned 0x1A */ OPC_MXU__POOL14 = 0x1B, OPC_MXU__POOL15 = 0x1C, OPC_MXU_Q8ACCE = 0x1D, /* not assigned 0x1E */ /* not assigned 0x1F */ /* not assigned 0x20 */ /* not assigned 0x21 */ OPC_MXU_S8LDD = 0x22, OPC_MXU_S8STD = 0x23, OPC_MXU_S8LDI = 0x24, OPC_MXU_S8SDI = 0x25, OPC_MXU__POOL16 = 0x26, OPC_MXU__POOL17 = 0x27, OPC_MXU_LXB = 0x28, /* not assigned 0x29 */ OPC_MXU_S16LDD = 0x2A, OPC_MXU_S16STD = 0x2B, OPC_MXU_S16LDI = 0x2C, OPC_MXU_S16SDI = 0x2D, OPC_MXU_S32M2I = 0x2E, OPC_MXU_S32I2M = 0x2F, OPC_MXU_D32SLL = 0x30, OPC_MXU_D32SLR = 0x31, OPC_MXU_D32SARL = 0x32, OPC_MXU_D32SAR = 0x33, OPC_MXU_Q16SLL = 0x34, OPC_MXU_Q16SLR = 0x35, OPC_MXU__POOL18 = 0x36, OPC_MXU_Q16SAR = 0x37, OPC_MXU__POOL19 = 0x38, OPC_MXU__POOL20 = 0x39, OPC_MXU__POOL21 = 0x3A, OPC_MXU_Q16SCOP = 0x3B, OPC_MXU_Q8MADL = 0x3C, OPC_MXU_S32SFL = 0x3D, OPC_MXU_Q8SAD = 0x3E, /* not assigned 0x3F */ }; /* * MXU pool 00 */ enum { OPC_MXU_S32MAX = 0x00, OPC_MXU_S32MIN = 0x01, OPC_MXU_D16MAX = 0x02, OPC_MXU_D16MIN = 0x03, OPC_MXU_Q8MAX = 0x04, OPC_MXU_Q8MIN = 0x05, OPC_MXU_Q8SLT = 0x06, OPC_MXU_Q8SLTU = 0x07, }; /* * MXU pool 01 */ enum { OPC_MXU_S32SLT = 0x00, OPC_MXU_D16SLT = 0x01, OPC_MXU_D16AVG = 0x02, OPC_MXU_D16AVGR = 0x03, OPC_MXU_Q8AVG = 0x04, OPC_MXU_Q8AVGR = 0x05, OPC_MXU_Q8ADD = 0x07, }; /* * MXU pool 02 */ enum { OPC_MXU_S32CPS = 0x00, OPC_MXU_D16CPS = 0x02, OPC_MXU_Q8ABD = 0x04, OPC_MXU_Q16SAT = 0x06, }; /* * MXU pool 03 */ enum { OPC_MXU_D16MULF = 0x00, OPC_MXU_D16MULE = 0x01, }; /* * 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 */ enum { OPC_MXU_S32STD = 0x00, OPC_MXU_S32STDR = 0x01, }; /* * MXU pool 07 */ enum { OPC_MXU_S32LDDV = 0x00, OPC_MXU_S32LDDVR = 0x01, }; /* * MXU pool 08 */ enum { OPC_MXU_S32STDV = 0x00, OPC_MXU_S32STDVR = 0x01, }; /* * MXU pool 09 */ enum { OPC_MXU_S32LDI = 0x00, OPC_MXU_S32LDIR = 0x01, }; /* * MXU pool 10 */ enum { OPC_MXU_S32SDI = 0x00, OPC_MXU_S32SDIR = 0x01, }; /* * MXU pool 11 */ enum { OPC_MXU_S32LDIV = 0x00, OPC_MXU_S32LDIVR = 0x01, }; /* * MXU pool 12 */ enum { OPC_MXU_S32SDIV = 0x00, OPC_MXU_S32SDIVR = 0x01, }; /* * MXU pool 13 */ enum { OPC_MXU_D32ACC = 0x00, OPC_MXU_D32ACCM = 0x01, OPC_MXU_D32ASUM = 0x02, }; /* * MXU pool 14 */ enum { OPC_MXU_Q16ACC = 0x00, OPC_MXU_Q16ACCM = 0x01, OPC_MXU_Q16ASUM = 0x02, }; /* * MXU pool 15 */ enum { OPC_MXU_Q8ADDE = 0x00, OPC_MXU_D8SUM = 0x01, OPC_MXU_D8SUMC = 0x02, }; /* * MXU pool 16 */ enum { OPC_MXU_S32MUL = 0x00, OPC_MXU_S32MULU = 0x01, OPC_MXU_S32EXTR = 0x02, OPC_MXU_S32EXTRV = 0x03, }; /* * MXU pool 17 */ enum { OPC_MXU_D32SARW = 0x00, OPC_MXU_S32ALN = 0x01, OPC_MXU_S32ALNI = 0x02, OPC_MXU_S32NOR = 0x03, OPC_MXU_S32AND = 0x04, OPC_MXU_S32OR = 0x05, OPC_MXU_S32XOR = 0x06, OPC_MXU_S32LUI = 0x07, }; /* * MXU pool 18 */ enum { OPC_MXU_D32SLLV = 0x00, OPC_MXU_D32SLRV = 0x01, OPC_MXU_D32SARV = 0x03, OPC_MXU_Q16SLLV = 0x04, OPC_MXU_Q16SLRV = 0x05, OPC_MXU_Q16SARV = 0x07, }; /* * MXU pool 19 */ enum { OPC_MXU_Q8MUL = 0x00, OPC_MXU_Q8MULSU = 0x01, }; /* * MXU pool 20 */ enum { OPC_MXU_Q8MOVZ = 0x00, OPC_MXU_Q8MOVN = 0x01, OPC_MXU_D16MOVZ = 0x02, OPC_MXU_D16MOVN = 0x03, OPC_MXU_S32MOVZ = 0x04, OPC_MXU_S32MOVN = 0x05, }; /* * MXU pool 21 */ enum { OPC_MXU_Q8MAC = 0x00, OPC_MXU_Q8MACSU = 0x01, }; /* global register indices */ static TCGv cpu_gpr[32], cpu_PC; Loading Loading
target/mips/translate.c +276 −0 Original line number Diff line number Diff line Loading @@ -1651,6 +1651,282 @@ enum { * Programming Manual", Ingenic Semiconductor Co, Ltd., 2017 */ enum { OPC_MXU_S32MADD = 0x00, OPC_MXU_S32MADDU = 0x01, /* not assigned 0x02 */ OPC_MXU__POOL00 = 0x03, OPC_MXU_S32MSUB = 0x04, OPC_MXU_S32MSUBU = 0x05, OPC_MXU__POOL01 = 0x06, OPC_MXU__POOL02 = 0x07, OPC_MXU_D16MUL = 0x08, OPC_MXU__POOL03 = 0x09, OPC_MXU_D16MAC = 0x0A, OPC_MXU_D16MACF = 0x0B, OPC_MXU_D16MADL = 0x0C, OPC_MXU__POOL04 = 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_D32ADD = 0x18, OPC_MXU__POOL13 = 0x19, /* not assigned 0x1A */ OPC_MXU__POOL14 = 0x1B, OPC_MXU__POOL15 = 0x1C, OPC_MXU_Q8ACCE = 0x1D, /* not assigned 0x1E */ /* not assigned 0x1F */ /* not assigned 0x20 */ /* not assigned 0x21 */ OPC_MXU_S8LDD = 0x22, OPC_MXU_S8STD = 0x23, OPC_MXU_S8LDI = 0x24, OPC_MXU_S8SDI = 0x25, OPC_MXU__POOL16 = 0x26, OPC_MXU__POOL17 = 0x27, OPC_MXU_LXB = 0x28, /* not assigned 0x29 */ OPC_MXU_S16LDD = 0x2A, OPC_MXU_S16STD = 0x2B, OPC_MXU_S16LDI = 0x2C, OPC_MXU_S16SDI = 0x2D, OPC_MXU_S32M2I = 0x2E, OPC_MXU_S32I2M = 0x2F, OPC_MXU_D32SLL = 0x30, OPC_MXU_D32SLR = 0x31, OPC_MXU_D32SARL = 0x32, OPC_MXU_D32SAR = 0x33, OPC_MXU_Q16SLL = 0x34, OPC_MXU_Q16SLR = 0x35, OPC_MXU__POOL18 = 0x36, OPC_MXU_Q16SAR = 0x37, OPC_MXU__POOL19 = 0x38, OPC_MXU__POOL20 = 0x39, OPC_MXU__POOL21 = 0x3A, OPC_MXU_Q16SCOP = 0x3B, OPC_MXU_Q8MADL = 0x3C, OPC_MXU_S32SFL = 0x3D, OPC_MXU_Q8SAD = 0x3E, /* not assigned 0x3F */ }; /* * MXU pool 00 */ enum { OPC_MXU_S32MAX = 0x00, OPC_MXU_S32MIN = 0x01, OPC_MXU_D16MAX = 0x02, OPC_MXU_D16MIN = 0x03, OPC_MXU_Q8MAX = 0x04, OPC_MXU_Q8MIN = 0x05, OPC_MXU_Q8SLT = 0x06, OPC_MXU_Q8SLTU = 0x07, }; /* * MXU pool 01 */ enum { OPC_MXU_S32SLT = 0x00, OPC_MXU_D16SLT = 0x01, OPC_MXU_D16AVG = 0x02, OPC_MXU_D16AVGR = 0x03, OPC_MXU_Q8AVG = 0x04, OPC_MXU_Q8AVGR = 0x05, OPC_MXU_Q8ADD = 0x07, }; /* * MXU pool 02 */ enum { OPC_MXU_S32CPS = 0x00, OPC_MXU_D16CPS = 0x02, OPC_MXU_Q8ABD = 0x04, OPC_MXU_Q16SAT = 0x06, }; /* * MXU pool 03 */ enum { OPC_MXU_D16MULF = 0x00, OPC_MXU_D16MULE = 0x01, }; /* * 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 */ enum { OPC_MXU_S32STD = 0x00, OPC_MXU_S32STDR = 0x01, }; /* * MXU pool 07 */ enum { OPC_MXU_S32LDDV = 0x00, OPC_MXU_S32LDDVR = 0x01, }; /* * MXU pool 08 */ enum { OPC_MXU_S32STDV = 0x00, OPC_MXU_S32STDVR = 0x01, }; /* * MXU pool 09 */ enum { OPC_MXU_S32LDI = 0x00, OPC_MXU_S32LDIR = 0x01, }; /* * MXU pool 10 */ enum { OPC_MXU_S32SDI = 0x00, OPC_MXU_S32SDIR = 0x01, }; /* * MXU pool 11 */ enum { OPC_MXU_S32LDIV = 0x00, OPC_MXU_S32LDIVR = 0x01, }; /* * MXU pool 12 */ enum { OPC_MXU_S32SDIV = 0x00, OPC_MXU_S32SDIVR = 0x01, }; /* * MXU pool 13 */ enum { OPC_MXU_D32ACC = 0x00, OPC_MXU_D32ACCM = 0x01, OPC_MXU_D32ASUM = 0x02, }; /* * MXU pool 14 */ enum { OPC_MXU_Q16ACC = 0x00, OPC_MXU_Q16ACCM = 0x01, OPC_MXU_Q16ASUM = 0x02, }; /* * MXU pool 15 */ enum { OPC_MXU_Q8ADDE = 0x00, OPC_MXU_D8SUM = 0x01, OPC_MXU_D8SUMC = 0x02, }; /* * MXU pool 16 */ enum { OPC_MXU_S32MUL = 0x00, OPC_MXU_S32MULU = 0x01, OPC_MXU_S32EXTR = 0x02, OPC_MXU_S32EXTRV = 0x03, }; /* * MXU pool 17 */ enum { OPC_MXU_D32SARW = 0x00, OPC_MXU_S32ALN = 0x01, OPC_MXU_S32ALNI = 0x02, OPC_MXU_S32NOR = 0x03, OPC_MXU_S32AND = 0x04, OPC_MXU_S32OR = 0x05, OPC_MXU_S32XOR = 0x06, OPC_MXU_S32LUI = 0x07, }; /* * MXU pool 18 */ enum { OPC_MXU_D32SLLV = 0x00, OPC_MXU_D32SLRV = 0x01, OPC_MXU_D32SARV = 0x03, OPC_MXU_Q16SLLV = 0x04, OPC_MXU_Q16SLRV = 0x05, OPC_MXU_Q16SARV = 0x07, }; /* * MXU pool 19 */ enum { OPC_MXU_Q8MUL = 0x00, OPC_MXU_Q8MULSU = 0x01, }; /* * MXU pool 20 */ enum { OPC_MXU_Q8MOVZ = 0x00, OPC_MXU_Q8MOVN = 0x01, OPC_MXU_D16MOVZ = 0x02, OPC_MXU_D16MOVN = 0x03, OPC_MXU_S32MOVZ = 0x04, OPC_MXU_S32MOVN = 0x05, }; /* * MXU pool 21 */ enum { OPC_MXU_Q8MAC = 0x00, OPC_MXU_Q8MACSU = 0x01, }; /* global register indices */ static TCGv cpu_gpr[32], cpu_PC; Loading