Fix PPC insn names and psq displacement

This commit is contained in:
Richard Patel 2022-07-23 16:33:08 +02:00
parent 2d2eeef7f1
commit f1a2281f03
5 changed files with 193 additions and 151 deletions

View File

@ -1853,7 +1853,7 @@ static void printInstruction(MCInst *MI, SStream *O)
17446U, // INSRDIo
22083U, // INSRWI
17557U, // INSRWIo
570444564U, // LAx
33573652U, // LAx
15826U, // LIWAX
15872U, // LIWZX
21688U, // RLWIMIbm
@ -2302,27 +2302,27 @@ static void printInstruction(MCInst *MI, SStream *O)
25109U, // EVFSTSTEQ
26588U, // EVFSTSTGT
26666U, // EVFSTSTLT
570445610U, // EVLDD
33574698U, // EVLDD
604008185U, // EVLDDX
570446505U, // EVLDH
33575593U, // EVLDH
604008289U, // EVLDHX
570452860U, // EVLDW
33581948U, // EVLDW
604009078U, // EVLDWX
570451763U, // EVLHHESPLAT
33580851U, // EVLHHESPLAT
604008790U, // EVLHHESPLATX
570451788U, // EVLHHOSSPLAT
33580876U, // EVLHHOSSPLAT
604008817U, // EVLHHOSSPLATX
570451802U, // EVLHHOUSPLAT
33580890U, // EVLHHOUSPLAT
604008832U, // EVLHHOUSPLATX
570446079U, // EVLWHE
33575167U, // EVLWHE
604008260U, // EVLWHEX
570451445U, // EVLWHOS
33580533U, // EVLWHOS
604008762U, // EVLWHOSX
570452271U, // EVLWHOU
33581359U, // EVLWHOU
604008966U, // EVLWHOUX
570451776U, // EVLWHSPLAT
33580864U, // EVLWHSPLAT
604008804U, // EVLWHSPLATX
570451816U, // EVLWWSPLAT
33580904U, // EVLWWSPLAT
604008847U, // EVLWWSPLATX
21624U, // EVMERGEHI
22989U, // EVMERGEHILO
@ -2432,19 +2432,19 @@ static void printInstruction(MCInst *MI, SStream *O)
26910U, // EVSRWIU
26237U, // EVSRWS
27003U, // EVSRWU
570445626U, // EVSTDD
33574714U, // EVSTDD
604008193U, // EVSTDDX
570446512U, // EVSTDH
33575600U, // EVSTDH
604008297U, // EVSTDHX
570452875U, // EVSTDW
33581963U, // EVSTDW
604009086U, // EVSTDWX
570446087U, // EVSTWHE
33575175U, // EVSTWHE
604008269U, // EVSTWHEX
570448313U, // EVSTWHO
33577401U, // EVSTWHO
604008459U, // EVSTWHOX
570446190U, // EVSTWWE
33575278U, // EVSTWWE
604008279U, // EVSTWWEX
570448466U, // EVSTWWO
33577554U, // EVSTWWO
604008469U, // EVSTWWOX
536898154U, // EVSUBFSMIAAW
536898286U, // EVSUBFSSIAAW
@ -2603,8 +2603,8 @@ static void printInstruction(MCInst *MI, SStream *O)
604008583U, // LBARX
2751492231U, // LBARXL
604008479U, // LBEPX
570454770U, // LBZ
570454770U, // LBZ8
33583858U, // LBZ
33583858U, // LBZ8
28599U, // LBZCIX
201353618U, // LBZU
201353618U, // LBZU8
@ -2615,7 +2615,7 @@ static void printInstruction(MCInst *MI, SStream *O)
29368U, // LBZXTLS
29368U, // LBZXTLS_
29368U, // LBZXTLS_32
570445716U, // LD
33574804U, // LD
604008590U, // LDARX
2751492238U, // LDARXL
26406U, // LDAT
@ -2634,19 +2634,19 @@ static void printInstruction(MCInst *MI, SStream *O)
15786U, // LDtocCPT
15460U, // LDtocJTI
15480U, // LDtocL
570445642U, // LFD
33574730U, // LFD
604008494U, // LFDEPX
201353412U, // LFDU
218132945U, // LFDUX
604008204U, // LFDX
604008113U, // LFIWAX
604009167U, // LFIWZX
570451258U, // LFS
33580346U, // LFS
201353535U, // LFSU
218133031U, // LFSUX
604008737U, // LFSX
570444365U, // LHA
570444365U, // LHA8
33573453U, // LHA
33573453U, // LHA8
604008597U, // LHARX
2751492245U, // LHARXL
201353400U, // LHAU
@ -2658,8 +2658,8 @@ static void printInstruction(MCInst *MI, SStream *O)
604008626U, // LHBRX
604008626U, // LHBRX8
604008511U, // LHEPX
570454834U, // LHZ
570454834U, // LHZ8
33583922U, // LHZ
33583922U, // LHZ8
28607U, // LHZCIX
201353624U, // LHZU
201353624U, // LHZU8
@ -2674,7 +2674,7 @@ static void printInstruction(MCInst *MI, SStream *O)
50353299U, // LI8
50357701U, // LIS
50357701U, // LIS8
570453013U, // LMW
33582101U, // LMW
22107U, // LSWI
604008136U, // LVEBX
604008306U, // LVEHX
@ -2683,19 +2683,19 @@ static void printInstruction(MCInst *MI, SStream *O)
604005259U, // LVSR
604009054U, // LVX
604002204U, // LVXL
570444596U, // LWA
33573684U, // LWA
604008604U, // LWARX
2751492252U, // LWARXL
26484U, // LWAT
218132908U, // LWAUX
604008130U, // LWAX
604008130U, // LWAX_32
570444596U, // LWA_32
33573684U, // LWA_32
604008651U, // LWBRX
604008651U, // LWBRX8
604008526U, // LWEPX
570454970U, // LWZ
570454970U, // LWZ8
33584058U, // LWZ
33584058U, // LWZ8
28615U, // LWZCIX
201353630U, // LWZU
201353630U, // LWZU8
@ -2707,15 +2707,15 @@ static void printInstruction(MCInst *MI, SStream *O)
29408U, // LWZXTLS_
29408U, // LWZXTLS_32
15954U, // LWZtoc
570445898U, // LXSD
33574986U, // LXSD
604008239U, // LXSDX
604009135U, // LXSIBZX
604009150U, // LXSIHZX
604008121U, // LXSIWAX
604009175U, // LXSIWZX
570450249U, // LXSSP
33579337U, // LXSSP
604008566U, // LXSSPX
570452477U, // LXV
33581565U, // LXV
604008060U, // LXVB16X
604008026U, // LXVD2X
604008720U, // LXVDSX
@ -2855,12 +2855,12 @@ static void printInstruction(MCInst *MI, SStream *O)
15763U, // PPC32GOT
15773U, // PPC32PICGOT
536893140U, // PSC_DCBZL
33576653U, // PSQ_L
33581351U, // PSQ_LU
318789325U, // PSQ_L
318794023U, // PSQ_LU
29181U, // PSQ_LUX
28632U, // PSQ_LX
33581124U, // PSQ_ST
33581408U, // PSQ_STU
318793796U, // PSQ_ST
318794080U, // PSQ_STU
29240U, // PSQ_STUX
29084U, // PSQ_STX
536896422U, // PS_ABS
@ -3016,7 +3016,7 @@ static void printInstruction(MCInst *MI, SStream *O)
25760U, // QVFXXMADDS
20215U, // QVFXXNPMADD
25735U, // QVFXXNPMADDS
318788600U, // QVGPCI
335565816U, // QVGPCI
604008890U, // QVLFCDUX
603999133U, // QVLFCDUXA
604008166U, // QVLFCDX
@ -3165,9 +3165,9 @@ static void printInstruction(MCInst *MI, SStream *O)
27664U, // SLW8
18296U, // SLW8o
18296U, // SLWo
570454970U, // SPELWZ
33584058U, // SPELWZ
604009184U, // SPELWZX
570453420U, // SPESTW
33582508U, // SPESTW
604009129U, // SPESTWX
15571U, // SPILL_CR
15718U, // SPILL_CRBIT
@ -3187,8 +3187,8 @@ static void printInstruction(MCInst *MI, SStream *O)
27919U, // SRW8
18302U, // SRW8o
18302U, // SRWo
570445070U, // STB
570445070U, // STB8
33574158U, // STB
33574158U, // STB8
28560U, // STBCIX
603998161U, // STBCX
604008486U, // STBEPX
@ -3201,7 +3201,7 @@ static void printInstruction(MCInst *MI, SStream *O)
28384U, // STBXTLS
28384U, // STBXTLS_
28384U, // STBXTLS_32
570445942U, // STD
33575030U, // STD
26412U, // STDAT
604008618U, // STDBRX
28575U, // STDCIX
@ -3211,18 +3211,18 @@ static void printInstruction(MCInst *MI, SStream *O)
604008254U, // STDX
28478U, // STDXTLS
28478U, // STDXTLS_
570445647U, // STFD
33574735U, // STFD
604008502U, // STFDEPX
201533642U, // STFDU
218313178U, // STFDUX
604008212U, // STFDX
604009112U, // STFIWX
570451270U, // STFS
33580358U, // STFS
201533765U, // STFSU
218313264U, // STFSUX
604008745U, // STFSX
570446696U, // STH
570446696U, // STH8
33575784U, // STH
33575784U, // STH8
604008633U, // STHBRX
28583U, // STHCIX
603998177U, // STHCX
@ -3236,7 +3236,7 @@ static void printInstruction(MCInst *MI, SStream *O)
28554U, // STHXTLS
28554U, // STHXTLS_
28554U, // STHXTLS_32
570453018U, // STMW
33582106U, // STMW
16075U, // STOP
22113U, // STSWI
604008143U, // STVEBX
@ -3244,8 +3244,8 @@ static void printInstruction(MCInst *MI, SStream *O)
604009102U, // STVEWX
604009059U, // STVX
604002210U, // STVXL
570453420U, // STW
570453420U, // STW8
33582508U, // STW
33582508U, // STW8
26490U, // STWAT
604008658U, // STWBRX
28591U, // STWCIX
@ -3260,16 +3260,16 @@ static void printInstruction(MCInst *MI, SStream *O)
29353U, // STWXTLS
29353U, // STWXTLS_
29353U, // STWXTLS_32
570445904U, // STXSD
33574992U, // STXSD
604008246U, // STXSDX
604008151U, // STXSIBX
604008151U, // STXSIBXv
604008321U, // STXSIHX
604008321U, // STXSIHXv
604009120U, // STXSIWX
570450256U, // STXSSP
33579344U, // STXSSP
604008574U, // STXSSPX
570452482U, // STXV
33581570U, // STXV
604008069U, // STXVB16X
604008034U, // STXVD2X
604008087U, // STXVH8X
@ -3462,9 +3462,9 @@ static void printInstruction(MCInst *MI, SStream *O)
28660U, // VEXTUWLX
28900U, // VEXTUWRX
536891035U, // VGBBD
335564036U, // VINSERTB
352341252U, // VINSERTB
1207980140U, // VINSERTD
335565662U, // VINSERTH
352342878U, // VINSERTH
1207987607U, // VINSERTW
536894945U, // VLOGEFP
24016U, // VMADDFP
@ -3889,7 +3889,7 @@ static void printInstruction(MCInst *MI, SStream *O)
22308U, // XXSEL
22009U, // XXSLDWI
22009U, // XXSLDWIs
352341067U, // XXSPLTIB
369118283U, // XXSPLTIB
28036U, // XXSPLTW
28036U, // XXSPLTWs
183757U, // gBC
@ -5077,12 +5077,12 @@ static void printInstruction(MCInst *MI, SStream *O)
0U, // PPC32GOT
0U, // PPC32PICGOT
0U, // PSC_DCBZL
16U, // PSQ_L
16U, // PSQ_LU
0U, // PSQ_L
0U, // PSQ_LU
710U, // PSQ_LUX
710U, // PSQ_LX
16U, // PSQ_ST
16U, // PSQ_STU
0U, // PSQ_ST
0U, // PSQ_STU
710U, // PSQ_STUX
710U, // PSQ_STX
0U, // PS_ABS
@ -5142,9 +5142,9 @@ static void printInstruction(MCInst *MI, SStream *O)
262U, // QVALIGNI
262U, // QVALIGNIb
262U, // QVALIGNIs
18U, // QVESPLATI
18U, // QVESPLATIb
18U, // QVESPLATIs
16U, // QVESPLATI
16U, // QVESPLATIb
16U, // QVESPLATIs
0U, // QVFABS
0U, // QVFABSs
38U, // QVFADD
@ -5178,15 +5178,15 @@ static void printInstruction(MCInst *MI, SStream *O)
326U, // QVFLOGICAL
326U, // QVFLOGICALb
326U, // QVFLOGICALs
20U, // QVFMADD
20U, // QVFMADDS
20U, // QVFMADDSs
18U, // QVFMADD
18U, // QVFMADDS
18U, // QVFMADDSs
0U, // QVFMR
0U, // QVFMRb
0U, // QVFMRs
20U, // QVFMSUB
20U, // QVFMSUBS
20U, // QVFMSUBSs
18U, // QVFMSUB
18U, // QVFMSUBS
18U, // QVFMSUBSs
38U, // QVFMUL
38U, // QVFMULS
38U, // QVFMULSs
@ -5194,12 +5194,12 @@ static void printInstruction(MCInst *MI, SStream *O)
0U, // QVFNABSs
0U, // QVFNEG
0U, // QVFNEGs
20U, // QVFNMADD
20U, // QVFNMADDS
20U, // QVFNMADDSs
20U, // QVFNMSUB
20U, // QVFNMSUBS
20U, // QVFNMSUBSs
18U, // QVFNMADD
18U, // QVFNMADDS
18U, // QVFNMADDSs
18U, // QVFNMSUB
18U, // QVFNMSUBS
18U, // QVFNMSUBSs
134U, // QVFPERM
134U, // QVFPERMs
0U, // QVFRE
@ -5218,26 +5218,26 @@ static void printInstruction(MCInst *MI, SStream *O)
0U, // QVFRSQRTE
0U, // QVFRSQRTES
0U, // QVFRSQRTESs
20U, // QVFSEL
20U, // QVFSELb
20U, // QVFSELbb
20U, // QVFSELbs
18U, // QVFSEL
18U, // QVFSELb
18U, // QVFSELbb
18U, // QVFSELbs
38U, // QVFSUB
38U, // QVFSUBS
38U, // QVFSUBSs
38U, // QVFTSTNAN
38U, // QVFTSTNANb
38U, // QVFTSTNANbs
20U, // QVFXMADD
20U, // QVFXMADDS
18U, // QVFXMADD
18U, // QVFXMADDS
38U, // QVFXMUL
38U, // QVFXMULS
20U, // QVFXXCPNMADD
20U, // QVFXXCPNMADDS
20U, // QVFXXMADD
20U, // QVFXXMADDS
20U, // QVFXXNPMADD
20U, // QVFXXNPMADDS
18U, // QVFXXCPNMADD
18U, // QVFXXCPNMADDS
18U, // QVFXXMADD
18U, // QVFXXMADDS
18U, // QVFXXNPMADD
18U, // QVFXXNPMADDS
0U, // QVGPCI
0U, // QVLFCDUX
0U, // QVLFCDUXA
@ -6088,7 +6088,7 @@ static void printInstruction(MCInst *MI, SStream *O)
0U, // XXBRH
0U, // XXBRQ
0U, // XXBRW
22U, // XXEXTRACTUW
20U, // XXEXTRACTUW
1U, // XXINSERTW
38U, // XXLAND
38U, // XXLANDC
@ -6112,15 +6112,15 @@ static void printInstruction(MCInst *MI, SStream *O)
262U, // XXSLDWI
462U, // XXSLDWIs
0U, // XXSPLTIB
18U, // XXSPLTW
18U, // XXSPLTWs
24U, // gBC
26U, // gBCA
16U, // XXSPLTW
16U, // XXSPLTWs
22U, // gBC
24U, // gBCA
0U, // gBCAat
38U, // gBCCTR
38U, // gBCCTRL
24U, // gBCL
26U, // gBCLA
22U, // gBCL
24U, // gBCLA
0U, // gBCLAat
38U, // gBCLR
38U, // gBCLRL
@ -6393,7 +6393,7 @@ static void printInstruction(MCInst *MI, SStream *O)
}
// Fragment 2 encoded into 5 bits for 22 unique commands.
// Fragment 2 encoded into 5 bits for 23 unique commands.
// printf("Fragment 2: %"PRIu64"\n", ((Bits >> 24) & 31));
switch ((Bits >> 24) & 31) {
default: // unreachable
@ -6408,6 +6408,7 @@ static void printInstruction(MCInst *MI, SStream *O)
case 2:
// LAx, EVLDD, EVLDH, EVLDW, EVLHHESPLAT, EVLHHOSSPLAT, EVLHHOUSPLAT, EVL...
printMemRegImm(MI, 1, O);
return;
break;
case 3:
// SUBPCIS, LI, LI8, LIS, LIS8
@ -6497,18 +6498,27 @@ static void printInstruction(MCInst *MI, SStream *O)
return;
break;
case 19:
// PSQ_L, PSQ_LU, PSQ_ST, PSQ_STU
printPSMemRegImm(MI, 1, O);
SStream_concat0(O, ", ");
printU1ImmOperand(MI, 3, O);
SStream_concat0(O, ", ");
printU3ImmOperand(MI, 4, O);
return;
break;
case 20:
// QVGPCI
printU12ImmOperand(MI, 1, O);
return;
break;
case 20:
case 21:
// VINSERTB, VINSERTH
printOperand(MI, 3, O);
SStream_concat0(O, ", ");
printU4ImmOperand(MI, 2, O);
return;
break;
case 21:
case 22:
// XXSPLTIB
printU8ImmOperand(MI, 1, O);
return;
@ -6603,7 +6613,7 @@ static void printInstruction(MCInst *MI, SStream *O)
}
// Fragment 4 encoded into 4 bits for 14 unique commands.
// Fragment 4 encoded into 4 bits for 13 unique commands.
// printf("Fragment 4: %"PRIu64"\n", ((Bits >> 33) & 15));
switch ((Bits >> 33) & 15) {
default: // unreachable
@ -6643,35 +6653,28 @@ static void printInstruction(MCInst *MI, SStream *O)
printOperand(MI, 1, O);
break;
case 8:
// PSQ_L, PSQ_LU, PSQ_ST, PSQ_STU
printU1ImmOperand(MI, 3, O);
SStream_concat0(O, ", ");
printU3ImmOperand(MI, 4, O);
return;
break;
case 9:
// QVESPLATI, QVESPLATIb, QVESPLATIs, XXSPLTW, XXSPLTWs
printU2ImmOperand(MI, 2, O);
return;
break;
case 10:
case 9:
// QVFMADD, QVFMADDS, QVFMADDSs, QVFMSUB, QVFMSUBS, QVFMSUBSs, QVFNMADD, ...
printOperand(MI, 3, O);
SStream_concat0(O, ", ");
printOperand(MI, 2, O);
return;
break;
case 11:
case 10:
// XXEXTRACTUW
printU4ImmOperand(MI, 2, O);
return;
break;
case 12:
case 11:
// gBC, gBCL
printBranchOperand(MI, 2, O);
return;
break;
case 13:
case 12:
// gBCA, gBCLA
printAbsBranchOperand(MI, 2, O);
return;

View File

@ -941,6 +941,27 @@ static void printU10ImmOperand(MCInst *MI, unsigned OpNo, SStream *O)
}
}
static void printS12ImmOperand(MCInst *MI, unsigned OpNo, SStream *O)
{
if (MCOperand_isImm(MCInst_getOperand(MI, OpNo))) {
int Imm = (int)MCOperand_getImm(MCInst_getOperand(MI, OpNo));
Imm = SignExtend32(Imm, 12);
printInt32(O, Imm);
if (MI->csh->detail) {
if (MI->csh->doing_mem) {
MI->flat_insn->detail->ppc.operands[MI->flat_insn->detail->ppc.op_count].mem.disp = Imm;
} else {
MI->flat_insn->detail->ppc.operands[MI->flat_insn->detail->ppc.op_count].type = PPC_OP_IMM;
MI->flat_insn->detail->ppc.operands[MI->flat_insn->detail->ppc.op_count].imm = Imm;
MI->flat_insn->detail->ppc.op_count++;
}
}
} else
printOperand(MI, OpNo, O);
}
static void printU12ImmOperand(MCInst *MI, unsigned OpNo, SStream *O)
{
unsigned short Value = (unsigned short)MCOperand_getImm(MCInst_getOperand(MI, OpNo));
@ -1068,6 +1089,19 @@ static void printMemRegImm(MCInst *MI, unsigned OpNo, SStream *O)
set_mem_access(MI, false);
}
static void printPSMemRegImm(MCInst *MI, unsigned OpNo, SStream *O)
{
set_mem_access(MI, true);
printS12ImmOperand(MI, OpNo, O);
SStream_concat0(O, "(");
printOperand(MI, OpNo + 1, O);
SStream_concat0(O, ")");
set_mem_access(MI, false);
}
static void printMemRegReg(MCInst *MI, unsigned OpNo, SStream *O)
{
// When used as the base register, r0 reads constant zero rather than

View File

@ -256,7 +256,6 @@
"dcbtstt", // PPC_INS_DCBTSTT,
"dcbtt", // PPC_INS_DCBTT,
"dcbz", // PPC_INS_DCBZ,
"dcbz_l", // PPC_INS_DCBZ_L,
"dcbzep", // PPC_INS_DCBZEP,
"dcbzl", // PPC_INS_DCBZL,
"dcbzlep", // PPC_INS_DCBZLEP,
@ -854,43 +853,6 @@
"popcntb", // PPC_INS_POPCNTB,
"popcntd", // PPC_INS_POPCNTD,
"popcntw", // PPC_INS_POPCNTW,
"ps_abs", // PPC_INS_PS_ABS,
"ps_add", // PPC_INS_PS_ADD,
"ps_cmpo0", // PPC_INS_PS_CMPO0,
"ps_cmpo1", // PPC_INS_PS_CMPO1,
"ps_cmpu0", // PPC_INS_PS_CMPU0,
"ps_cmpu1", // PPC_INS_PS_CMPU1,
"ps_div", // PPC_INS_PS_DIV,
"ps_madd", // PPC_INS_PS_MADD,
"ps_madds0", // PPC_INS_PS_MADDS0,
"ps_madds1", // PPC_INS_PS_MADDS1,
"ps_merge00", // PPC_INS_PS_MERGE00,
"ps_merge01", // PPC_INS_PS_MERGE01,
"ps_merge10", // PPC_INS_PS_MERGE10,
"ps_merge11", // PPC_INS_PS_MERGE11,
"ps_mr", // PPC_INS_PS_MR,
"ps_msub", // PPC_INS_PS_MSUB,
"ps_mul", // PPC_INS_PS_MUL,
"ps_muls0", // PPC_INS_PS_MULS0,
"ps_muls1", // PPC_INS_PS_MULS1,
"ps_nabs", // PPC_INS_PS_NABS,
"ps_neg", // PPC_INS_PS_NEG,
"ps_nmadd", // PPC_INS_PS_NMADD,
"ps_nmsub", // PPC_INS_PS_NMSUB,
"ps_res", // PPC_INS_PS_RES,
"ps_rsqrte", // PPC_INS_PS_RSQRTE,
"ps_sel", // PPC_INS_PS_SEL,
"ps_sub", // PPC_INS_PS_SUB,
"ps_sum0", // PPC_INS_PS_SUM0,
"ps_sum1", // PPC_INS_PS_SUM1,
"psq_l", // PPC_INS_PSQ_L,
"psq_lu", // PPC_INS_PSQ_LU,
"psq_lux", // PPC_INS_PSQ_LUX,
"psq_lx", // PPC_INS_PSQ_LX,
"psq_st", // PPC_INS_PSQ_ST,
"psq_stu", // PPC_INS_PSQ_STU,
"psq_stux", // PPC_INS_PSQ_STUX,
"psq_stx", // PPC_INS_PSQ_STX,
"ptesync", // PPC_INS_PTESYNC,
"qvaligni", // PPC_INS_QVALIGNI,
"qvesplati", // PPC_INS_QVESPLATI,
@ -1728,3 +1690,42 @@
"xxspltib", // PPC_INS_XXSPLTIB,
"xxspltw", // PPC_INS_XXSPLTW,
"xxswapd", // PPC_INS_XXSWAPD,
"dcbz_l", // PPC_INS_DCBZ_L,
"psq_l", // PPC_INS_PSQ_L,
"psq_lu", // PPC_INS_PSQ_LU,
"psq_lux", // PPC_INS_PSQ_LUX,
"psq_lx", // PPC_INS_PSQ_LX,
"psq_st", // PPC_INS_PSQ_ST,
"psq_stu", // PPC_INS_PSQ_STU,
"psq_stux", // PPC_INS_PSQ_STUX,
"psq_stx", // PPC_INS_PSQ_STX,
"ps_abs", // PPC_INS_PS_ABS,
"ps_add", // PPC_INS_PS_ADD,
"ps_cmpo0", // PPC_INS_PS_CMPO0,
"ps_cmpo1", // PPC_INS_PS_CMPO1,
"ps_cmpu0", // PPC_INS_PS_CMPU0,
"ps_cmpu1", // PPC_INS_PS_CMPU1,
"ps_div", // PPC_INS_PS_DIV,
"ps_madd", // PPC_INS_PS_MADD,
"ps_madds0", // PPC_INS_PS_MADDS0,
"ps_madds1", // PPC_INS_PS_MADDS1,
"ps_merge00", // PPC_INS_PS_MERGE00,
"ps_merge01", // PPC_INS_PS_MERGE01,
"ps_merge10", // PPC_INS_PS_MERGE10,
"ps_merge11", // PPC_INS_PS_MERGE11,
"ps_mr", // PPC_INS_PS_MR,
"ps_msub", // PPC_INS_PS_MSUB,
"ps_mul", // PPC_INS_PS_MUL,
"ps_muls0", // PPC_INS_PS_MULS0,
"ps_muls1", // PPC_INS_PS_MULS1,
"ps_nabs", // PPC_INS_PS_NABS,
"ps_neg", // PPC_INS_PS_NEG,
"ps_nmadd", // PPC_INS_PS_NMADD,
"ps_nmsub", // PPC_INS_PS_NMSUB,
"ps_res", // PPC_INS_PS_RES,
"ps_rsqrte", // PPC_INS_PS_RSQRTE,
"ps_sel", // PPC_INS_PS_SEL,
"ps_sub", // PPC_INS_PS_SUB,
"ps_sum0", // PPC_INS_PS_SUM0,
"ps_sum1", // PPC_INS_PS_SUM1,

View File

@ -50,6 +50,8 @@ static struct {
{ "ppc32be", CS_ARCH_PPC, CS_MODE_32 | CS_MODE_BIG_ENDIAN },
{ "ppc32qpx", CS_ARCH_PPC, CS_MODE_32 | CS_MODE_QPX | CS_MODE_LITTLE_ENDIAN },
{ "ppc32beqpx", CS_ARCH_PPC, CS_MODE_32 | CS_MODE_QPX | CS_MODE_BIG_ENDIAN },
{ "ppc32ps", CS_ARCH_PPC, CS_MODE_32 | CS_MODE_PS | CS_MODE_LITTLE_ENDIAN },
{ "ppc32beps", CS_ARCH_PPC, CS_MODE_32 | CS_MODE_PS | CS_MODE_BIG_ENDIAN },
{ "ppc64", CS_ARCH_PPC, CS_MODE_64 | CS_MODE_LITTLE_ENDIAN },
{ "ppc64be", CS_ARCH_PPC, CS_MODE_64 | CS_MODE_BIG_ENDIAN },
{ "ppc64qpx", CS_ARCH_PPC, CS_MODE_64 | CS_MODE_QPX | CS_MODE_LITTLE_ENDIAN },
@ -207,6 +209,8 @@ static void usage(char *prog)
printf(" ppc32be ppc32 + big endian\n");
printf(" ppc32qpx ppc32 + qpx + little endian\n");
printf(" ppc32beqpx ppc32 + qpx + big endian\n");
printf(" ppc32ps ppc32 + ps + little endian\n");
printf(" ppc32beps ppc32 + ps + big endian\n");
printf(" ppc64 ppc64 + little endian\n");
printf(" ppc64be ppc64 + big endian\n");
printf(" ppc64qpx ppc64 + qpx + little endian\n");

View File

@ -850,7 +850,7 @@ def spe2dis : Operand<iPTR> { // SPE displacement where the imm is 2-aligned.
let DecoderMethod = "decodeSPE2Operands";
}
def memrid12 : Operand<iPTR> { // Paired Single displacement where imm is 12 bits.
let PrintMethod = "printMemRegImm";
let PrintMethod = "printPSMemRegImm";
let MIOperandInfo = (ops dispRID12:$imm, ptr_rc_nor0:$reg);
}