1*139c1837SPaolo BonziniGEN_HANDLER2(evsel0, "evsel", 0x04, 0x1c, 0x09, 0x00000000, PPC_SPE), 2*139c1837SPaolo BonziniGEN_HANDLER2(evsel1, "evsel", 0x04, 0x1d, 0x09, 0x00000000, PPC_SPE), 3*139c1837SPaolo BonziniGEN_HANDLER2(evsel2, "evsel", 0x04, 0x1e, 0x09, 0x00000000, PPC_SPE), 4*139c1837SPaolo BonziniGEN_HANDLER2(evsel3, "evsel", 0x04, 0x1f, 0x09, 0x00000000, PPC_SPE), 5*139c1837SPaolo Bonzini 6*139c1837SPaolo Bonzini#define GEN_SPE(name0, name1, opc2, opc3, inval0, inval1, type) \ 7*139c1837SPaolo Bonzini GEN_OPCODE_DUAL(name0##_##name1, 0x04, opc2, opc3, inval0, inval1, type, PPC_NONE) 8*139c1837SPaolo BonziniGEN_SPE(evaddw, speundef, 0x00, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 9*139c1837SPaolo BonziniGEN_SPE(evaddiw, speundef, 0x01, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 10*139c1837SPaolo BonziniGEN_SPE(evsubfw, speundef, 0x02, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 11*139c1837SPaolo BonziniGEN_SPE(evsubifw, speundef, 0x03, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 12*139c1837SPaolo BonziniGEN_SPE(evabs, evneg, 0x04, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), 13*139c1837SPaolo BonziniGEN_SPE(evextsb, evextsh, 0x05, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), 14*139c1837SPaolo BonziniGEN_SPE(evrndw, evcntlzw, 0x06, 0x08, 0x0000F800, 0x0000F800, PPC_SPE), 15*139c1837SPaolo BonziniGEN_SPE(evcntlsw, brinc, 0x07, 0x08, 0x0000F800, 0x00000000, PPC_SPE), 16*139c1837SPaolo BonziniGEN_SPE(evmra, speundef, 0x02, 0x13, 0x0000F800, 0xFFFFFFFF, PPC_SPE), 17*139c1837SPaolo BonziniGEN_SPE(speundef, evand, 0x08, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE), 18*139c1837SPaolo BonziniGEN_SPE(evandc, speundef, 0x09, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 19*139c1837SPaolo BonziniGEN_SPE(evxor, evor, 0x0B, 0x08, 0x00000000, 0x00000000, PPC_SPE), 20*139c1837SPaolo BonziniGEN_SPE(evnor, eveqv, 0x0C, 0x08, 0x00000000, 0x00000000, PPC_SPE), 21*139c1837SPaolo BonziniGEN_SPE(evmwumi, evmwsmi, 0x0C, 0x11, 0x00000000, 0x00000000, PPC_SPE), 22*139c1837SPaolo BonziniGEN_SPE(evmwumia, evmwsmia, 0x1C, 0x11, 0x00000000, 0x00000000, PPC_SPE), 23*139c1837SPaolo BonziniGEN_SPE(evmwumiaa, evmwsmiaa, 0x0C, 0x15, 0x00000000, 0x00000000, PPC_SPE), 24*139c1837SPaolo BonziniGEN_SPE(speundef, evorc, 0x0D, 0x08, 0xFFFFFFFF, 0x00000000, PPC_SPE), 25*139c1837SPaolo BonziniGEN_SPE(evnand, speundef, 0x0F, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 26*139c1837SPaolo BonziniGEN_SPE(evsrwu, evsrws, 0x10, 0x08, 0x00000000, 0x00000000, PPC_SPE), 27*139c1837SPaolo BonziniGEN_SPE(evsrwiu, evsrwis, 0x11, 0x08, 0x00000000, 0x00000000, PPC_SPE), 28*139c1837SPaolo BonziniGEN_SPE(evslw, speundef, 0x12, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 29*139c1837SPaolo BonziniGEN_SPE(evslwi, speundef, 0x13, 0x08, 0x00000000, 0xFFFFFFFF, PPC_SPE), 30*139c1837SPaolo BonziniGEN_SPE(evrlw, evsplati, 0x14, 0x08, 0x00000000, 0x0000F800, PPC_SPE), 31*139c1837SPaolo BonziniGEN_SPE(evrlwi, evsplatfi, 0x15, 0x08, 0x00000000, 0x0000F800, PPC_SPE), 32*139c1837SPaolo BonziniGEN_SPE(evmergehi, evmergelo, 0x16, 0x08, 0x00000000, 0x00000000, PPC_SPE), 33*139c1837SPaolo BonziniGEN_SPE(evmergehilo, evmergelohi, 0x17, 0x08, 0x00000000, 0x00000000, PPC_SPE), 34*139c1837SPaolo BonziniGEN_SPE(evcmpgtu, evcmpgts, 0x18, 0x08, 0x00600000, 0x00600000, PPC_SPE), 35*139c1837SPaolo BonziniGEN_SPE(evcmpltu, evcmplts, 0x19, 0x08, 0x00600000, 0x00600000, PPC_SPE), 36*139c1837SPaolo BonziniGEN_SPE(evcmpeq, speundef, 0x1A, 0x08, 0x00600000, 0xFFFFFFFF, PPC_SPE), 37*139c1837SPaolo Bonzini 38*139c1837SPaolo BonziniGEN_SPE(evfsadd, evfssub, 0x00, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE), 39*139c1837SPaolo BonziniGEN_SPE(evfsabs, evfsnabs, 0x02, 0x0A, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE), 40*139c1837SPaolo BonziniGEN_SPE(evfsneg, speundef, 0x03, 0x0A, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE), 41*139c1837SPaolo BonziniGEN_SPE(evfsmul, evfsdiv, 0x04, 0x0A, 0x00000000, 0x00000000, PPC_SPE_SINGLE), 42*139c1837SPaolo BonziniGEN_SPE(evfscmpgt, evfscmplt, 0x06, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE), 43*139c1837SPaolo BonziniGEN_SPE(evfscmpeq, speundef, 0x07, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), 44*139c1837SPaolo BonziniGEN_SPE(evfscfui, evfscfsi, 0x08, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 45*139c1837SPaolo BonziniGEN_SPE(evfscfuf, evfscfsf, 0x09, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 46*139c1837SPaolo BonziniGEN_SPE(evfsctui, evfsctsi, 0x0A, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 47*139c1837SPaolo BonziniGEN_SPE(evfsctuf, evfsctsf, 0x0B, 0x0A, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 48*139c1837SPaolo BonziniGEN_SPE(evfsctuiz, speundef, 0x0C, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), 49*139c1837SPaolo BonziniGEN_SPE(evfsctsiz, speundef, 0x0D, 0x0A, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), 50*139c1837SPaolo BonziniGEN_SPE(evfststgt, evfststlt, 0x0E, 0x0A, 0x00600000, 0x00600000, PPC_SPE_SINGLE), 51*139c1837SPaolo BonziniGEN_SPE(evfststeq, speundef, 0x0F, 0x0A, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), 52*139c1837SPaolo Bonzini 53*139c1837SPaolo BonziniGEN_SPE(efsadd, efssub, 0x00, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE), 54*139c1837SPaolo BonziniGEN_SPE(efsabs, efsnabs, 0x02, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_SINGLE), 55*139c1837SPaolo BonziniGEN_SPE(efsneg, speundef, 0x03, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_SINGLE), 56*139c1837SPaolo BonziniGEN_SPE(efsmul, efsdiv, 0x04, 0x0B, 0x00000000, 0x00000000, PPC_SPE_SINGLE), 57*139c1837SPaolo BonziniGEN_SPE(efscmpgt, efscmplt, 0x06, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE), 58*139c1837SPaolo BonziniGEN_SPE(efscmpeq, efscfd, 0x07, 0x0B, 0x00600000, 0x00180000, PPC_SPE_SINGLE), 59*139c1837SPaolo BonziniGEN_SPE(efscfui, efscfsi, 0x08, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 60*139c1837SPaolo BonziniGEN_SPE(efscfuf, efscfsf, 0x09, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 61*139c1837SPaolo BonziniGEN_SPE(efsctui, efsctsi, 0x0A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 62*139c1837SPaolo BonziniGEN_SPE(efsctuf, efsctsf, 0x0B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_SINGLE), 63*139c1837SPaolo BonziniGEN_SPE(efsctuiz, speundef, 0x0C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), 64*139c1837SPaolo BonziniGEN_SPE(efsctsiz, speundef, 0x0D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_SINGLE), 65*139c1837SPaolo BonziniGEN_SPE(efststgt, efststlt, 0x0E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_SINGLE), 66*139c1837SPaolo BonziniGEN_SPE(efststeq, speundef, 0x0F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_SINGLE), 67*139c1837SPaolo Bonzini 68*139c1837SPaolo BonziniGEN_SPE(efdadd, efdsub, 0x10, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE), 69*139c1837SPaolo BonziniGEN_SPE(efdcfuid, efdcfsid, 0x11, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 70*139c1837SPaolo BonziniGEN_SPE(efdabs, efdnabs, 0x12, 0x0B, 0x0000F800, 0x0000F800, PPC_SPE_DOUBLE), 71*139c1837SPaolo BonziniGEN_SPE(efdneg, speundef, 0x13, 0x0B, 0x0000F800, 0xFFFFFFFF, PPC_SPE_DOUBLE), 72*139c1837SPaolo BonziniGEN_SPE(efdmul, efddiv, 0x14, 0x0B, 0x00000000, 0x00000000, PPC_SPE_DOUBLE), 73*139c1837SPaolo BonziniGEN_SPE(efdctuidz, efdctsidz, 0x15, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 74*139c1837SPaolo BonziniGEN_SPE(efdcmpgt, efdcmplt, 0x16, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE), 75*139c1837SPaolo BonziniGEN_SPE(efdcmpeq, efdcfs, 0x17, 0x0B, 0x00600000, 0x00180000, PPC_SPE_DOUBLE), 76*139c1837SPaolo BonziniGEN_SPE(efdcfui, efdcfsi, 0x18, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 77*139c1837SPaolo BonziniGEN_SPE(efdcfuf, efdcfsf, 0x19, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 78*139c1837SPaolo BonziniGEN_SPE(efdctui, efdctsi, 0x1A, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 79*139c1837SPaolo BonziniGEN_SPE(efdctuf, efdctsf, 0x1B, 0x0B, 0x00180000, 0x00180000, PPC_SPE_DOUBLE), 80*139c1837SPaolo BonziniGEN_SPE(efdctuiz, speundef, 0x1C, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE), 81*139c1837SPaolo BonziniGEN_SPE(efdctsiz, speundef, 0x1D, 0x0B, 0x00180000, 0xFFFFFFFF, PPC_SPE_DOUBLE), 82*139c1837SPaolo BonziniGEN_SPE(efdtstgt, efdtstlt, 0x1E, 0x0B, 0x00600000, 0x00600000, PPC_SPE_DOUBLE), 83*139c1837SPaolo BonziniGEN_SPE(efdtsteq, speundef, 0x1F, 0x0B, 0x00600000, 0xFFFFFFFF, PPC_SPE_DOUBLE), 84*139c1837SPaolo Bonzini 85*139c1837SPaolo Bonzini#define GEN_SPEOP_LDST(name, opc2, sh) \ 86*139c1837SPaolo BonziniGEN_HANDLER(name, 0x04, opc2, 0x0C, 0x00000000, PPC_SPE) 87*139c1837SPaolo BonziniGEN_SPEOP_LDST(evldd, 0x00, 3), 88*139c1837SPaolo BonziniGEN_SPEOP_LDST(evldw, 0x01, 3), 89*139c1837SPaolo BonziniGEN_SPEOP_LDST(evldh, 0x02, 3), 90*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlhhesplat, 0x04, 1), 91*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlhhousplat, 0x06, 1), 92*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlhhossplat, 0x07, 1), 93*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlwhe, 0x08, 2), 94*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlwhou, 0x0A, 2), 95*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlwhos, 0x0B, 2), 96*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlwwsplat, 0x0C, 2), 97*139c1837SPaolo BonziniGEN_SPEOP_LDST(evlwhsplat, 0x0E, 2), 98*139c1837SPaolo Bonzini 99*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstdd, 0x10, 3), 100*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstdw, 0x11, 3), 101*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstdh, 0x12, 3), 102*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstwhe, 0x18, 2), 103*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstwho, 0x1A, 2), 104*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstwwe, 0x1C, 2), 105*139c1837SPaolo BonziniGEN_SPEOP_LDST(evstwwo, 0x1E, 2), 106