case Pav_UNPCKLPIX: return "vupklpx";
/* Integer binary */
- case Pav_ADDUM: return "vaddu_m"; // b,h,w
- case Pav_ADDUS: return "vaddu_s"; // b,h,w
- case Pav_ADDSS: return "vadds_s"; // b,h,w
+ case Pav_ADDU: return "vaddu_m"; // b,h,w
+ case Pav_QADDU: return "vaddu_s"; // b,h,w
+ case Pav_QADDS: return "vadds_s"; // b,h,w
- case Pav_SUBUM: return "vsubu_m"; // b,h,w
- case Pav_SUBUS: return "vsubu_s"; // b,h,w
- case Pav_SUBSS: return "vsubs_s"; // b,h,w
+ case Pav_SUBU: return "vsubu_m"; // b,h,w
+ case Pav_QSUBU: return "vsubu_s"; // b,h,w
+ case Pav_QSUBS: return "vsubs_s"; // b,h,w
case Pav_OMULU: return "vmulou"; // b,h
case Pav_OMULS: return "vmulos"; // b,h
case Pav_ROTL: return "vrl"; // b,h,w
/* Pack */
- case Pav_PACKUUM: return "vpku_um"; // h,w
- case Pav_PACKUUS: return "vpku_us"; // h,w
- case Pav_PACKSUS: return "vpks_us"; // h,w
- case Pav_PACKSSS: return "vpks_ss"; // h,w
+ case Pav_PACKUU: return "vpku_um"; // h,w
+ case Pav_QPACKUU: return "vpku_us"; // h,w
+ case Pav_QPACKSU: return "vpks_us"; // h,w
+ case Pav_QPACKSS: return "vpks_ss"; // h,w
case Pav_PACKPXL: return "vpkpx";
/* Merge */
case Pav_MRGHI: return "vmrgh"; // b,h,w
case Pav_MRGLO: return "vmrgl"; // b,h,w
-
/* Floating Point Binary */
case Pav_ADDF: return "vaddfp";
case Pav_SUBF: return "vsubfp";
UInt opc2;
switch (i->Pin.AvBin8x16.op) {
- case Pav_ADDUM: opc2 = 0; break; // vaddubm
- case Pav_ADDUS: opc2 = 512; break; // vaddubs
- case Pav_ADDSS: opc2 = 768; break; // vaddsbs
+ case Pav_ADDU: opc2 = 0; break; // vaddubm
+ case Pav_QADDU: opc2 = 512; break; // vaddubs
+ case Pav_QADDS: opc2 = 768; break; // vaddsbs
- case Pav_SUBUM: opc2 = 1024; break; // vsububm
- case Pav_SUBUS: opc2 = 1536; break; // vsububs
- case Pav_SUBSS: opc2 = 1792; break; // vsubsbs
+ case Pav_SUBU: opc2 = 1024; break; // vsububm
+ case Pav_QSUBU: opc2 = 1536; break; // vsububs
+ case Pav_QSUBS: opc2 = 1792; break; // vsubsbs
case Pav_AVGU: opc2 = 1026; break; // vavgub
case Pav_AVGS: opc2 = 1282; break; // vavgsb
UInt opc2;
switch (i->Pin.AvBin16x8.op) {
- case Pav_ADDUM: opc2 = 64; break; // vadduhm
- case Pav_ADDUS: opc2 = 576; break; // vadduhs
- case Pav_ADDSS: opc2 = 832; break; // vaddshs
+ case Pav_ADDU: opc2 = 64; break; // vadduhm
+ case Pav_QADDU: opc2 = 576; break; // vadduhs
+ case Pav_QADDS: opc2 = 832; break; // vaddshs
- case Pav_SUBUM: opc2 = 1088; break; // vsubuhm
- case Pav_SUBUS: opc2 = 1600; break; // vsubuhs
- case Pav_SUBSS: opc2 = 1856; break; // vsubshs
+ case Pav_SUBU: opc2 = 1088; break; // vsubuhm
+ case Pav_QSUBU: opc2 = 1600; break; // vsubuhs
+ case Pav_QSUBS: opc2 = 1856; break; // vsubshs
- case Pav_OMULU: opc2 = 8; break; // vmuloub
- case Pav_OMULS: opc2 = 264; break; // vmulosb
- case Pav_EMULU: opc2 = 520; break; // vmuleub
- case Pav_EMULS: opc2 = 776; break; // vmulesb
+ case Pav_OMULU: opc2 = 8; break; // vmuloub
+ case Pav_OMULS: opc2 = 264; break; // vmulosb
+ case Pav_EMULU: opc2 = 520; break; // vmuleub
+ case Pav_EMULS: opc2 = 776; break; // vmulesb
case Pav_AVGU: opc2 = 1090; break; // vavguh
case Pav_AVGS: opc2 = 1346; break; // vavgsh
case Pav_SAR: opc2 = 836; break; // vsrah
case Pav_ROTL: opc2 = 68; break; // vrlh
- case Pav_PACKUUM: opc2 = 14; break; // vpkuhum
- case Pav_PACKUUS: opc2 = 142; break; // vpkuhus
- case Pav_PACKSUS: opc2 = 270; break; // vpkshus
- case Pav_PACKSSS: opc2 = 398; break; // vpkshss
- case Pav_PACKPXL: opc2 = 782; break; // vpkpx
+ case Pav_PACKUU: opc2 = 14; break; // vpkuhum
+ case Pav_QPACKUU: opc2 = 142; break; // vpkuhus
+ case Pav_QPACKSU: opc2 = 270; break; // vpkshus
+ case Pav_QPACKSS: opc2 = 398; break; // vpkshss
+ case Pav_PACKPXL: opc2 = 782; break; // vpkpx
case Pav_MRGHI: opc2 = 76; break; // vmrghh
case Pav_MRGLO: opc2 = 332; break; // vmrglh
UInt opc2;
switch (i->Pin.AvBin32x4.op) {
- case Pav_ADDUM: opc2 = 128; break; // vadduwm
- case Pav_ADDUS: opc2 = 640; break; // vadduws
- case Pav_ADDSS: opc2 = 896; break; // vaddsws
+ case Pav_ADDU: opc2 = 128; break; // vadduwm
+ case Pav_QADDU: opc2 = 640; break; // vadduws
+ case Pav_QADDS: opc2 = 896; break; // vaddsws
- case Pav_SUBUM: opc2 = 1152; break; // vsubuwm
- case Pav_SUBUS: opc2 = 1664; break; // vsubuws
- case Pav_SUBSS: opc2 = 1920; break; // vsubsws
+ case Pav_SUBU: opc2 = 1152; break; // vsubuwm
+ case Pav_QSUBU: opc2 = 1664; break; // vsubuws
+ case Pav_QSUBS: opc2 = 1920; break; // vsubsws
case Pav_OMULU: opc2 = 72; break; // vmulouh
case Pav_OMULS: opc2 = 328; break; // vmulosh
case Pav_SAR: opc2 = 900; break; // vsraw
case Pav_ROTL: opc2 = 132; break; // vrlw
- case Pav_PACKUUM: opc2 = 78; break; // vpkuwum
- case Pav_PACKUUS: opc2 = 206; break; // vpkuwus
- case Pav_PACKSUS: opc2 = 334; break; // vpkswus
- case Pav_PACKSSS: opc2 = 462; break; // vpkswss
+ case Pav_PACKUU: opc2 = 78; break; // vpkuwum
+ case Pav_QPACKUU: opc2 = 206; break; // vpkuwus
+ case Pav_QPACKSU: opc2 = 334; break; // vpkswus
+ case Pav_QPACKSS: opc2 = 462; break; // vpkswss
case Pav_MRGHI: opc2 = 140; break; // vmrghw
case Pav_MRGLO: opc2 = 396; break; // vmrglw
/* Integer Binary */
Pav_AND, Pav_OR, Pav_XOR, /* Bitwise */
- Pav_ADDUM, Pav_ADDUS,Pav_ADDSS,
+ Pav_ADDU, Pav_QADDU, Pav_QADDS,
- Pav_SUBUM, Pav_SUBUS, Pav_SUBSS,
+ Pav_SUBU, Pav_QSUBU, Pav_QSUBS,
Pav_OMULU, Pav_OMULS, Pav_EMULU, Pav_EMULS,
Pav_SHL, Pav_SHR, Pav_SAR, Pav_ROTL,
/* Pack */
- Pav_PACKUUM, Pav_PACKUUS, Pav_PACKSUS, Pav_PACKSSS,
+ Pav_PACKUU, Pav_QPACKUU, Pav_QPACKSU, Pav_QPACKSS,
Pav_PACKPXL,
/* Merge */
addInstr(env, PPC32Instr_AvSplat(sz, v1, PPC32VI5s_Imm(-16)));
addInstr(env, PPC32Instr_AvSplat(sz, v2, PPC32VI5s_Imm(simm6-16)));
addInstr(env,
- (sz== 8) ? PPC32Instr_AvBin8x16(Pav_SUBUM, dst, v2, v1) :
- (sz==16) ? PPC32Instr_AvBin16x8(Pav_SUBUM, dst, v2, v1)
- : PPC32Instr_AvBin32x4(Pav_SUBUM, dst, v2, v1) );
+ (sz== 8) ? PPC32Instr_AvBin8x16(Pav_SUBU, dst, v2, v1) :
+ (sz==16) ? PPC32Instr_AvBin16x8(Pav_SUBU, dst, v2, v1)
+ : PPC32Instr_AvBin32x4(Pav_SUBU, dst, v2, v1) );
return dst;
}
if (simm6 < -16) { /* -32:-17 inclusive */
addInstr(env, PPC32Instr_AvSplat(sz, v1, PPC32VI5s_Imm(-16)));
addInstr(env, PPC32Instr_AvSplat(sz, v2, PPC32VI5s_Imm(simm6+16)));
addInstr(env,
- (sz== 8) ? PPC32Instr_AvBin8x16(Pav_ADDUM, dst, v2, v1) :
- (sz==16) ? PPC32Instr_AvBin16x8(Pav_ADDUM, dst, v2, v1)
- : PPC32Instr_AvBin32x4(Pav_ADDUM, dst, v2, v1) );
+ (sz== 8) ? PPC32Instr_AvBin8x16(Pav_ADDU, dst, v2, v1) :
+ (sz==16) ? PPC32Instr_AvBin16x8(Pav_ADDU, dst, v2, v1)
+ : PPC32Instr_AvBin32x4(Pav_ADDU, dst, v2, v1) );
return dst;
}
/* simplest form: -16:15 inclusive */
case Iop_Rotl8x16: op = Pav_ROTL; goto do_AvBin8x16;
case Iop_InterleaveHI8x16: op = Pav_MRGHI; goto do_AvBin8x16;
case Iop_InterleaveLO8x16: op = Pav_MRGLO; goto do_AvBin8x16;
- case Iop_Add8x16: op = Pav_ADDUM; goto do_AvBin8x16;
- case Iop_QAdd8Ux16: op = Pav_ADDUS; goto do_AvBin8x16;
- case Iop_QAdd8Sx16: op = Pav_ADDSS; goto do_AvBin8x16;
- case Iop_Sub8x16: op = Pav_SUBUM; goto do_AvBin8x16;
- case Iop_QSub8Ux16: op = Pav_SUBUS; goto do_AvBin8x16;
- case Iop_QSub8Sx16: op = Pav_SUBSS; goto do_AvBin8x16;
+ case Iop_Add8x16: op = Pav_ADDU; goto do_AvBin8x16;
+ case Iop_QAdd8Ux16: op = Pav_QADDU; goto do_AvBin8x16;
+ case Iop_QAdd8Sx16: op = Pav_QADDS; goto do_AvBin8x16;
+ case Iop_Sub8x16: op = Pav_SUBU; goto do_AvBin8x16;
+ case Iop_QSub8Ux16: op = Pav_QSUBU; goto do_AvBin8x16;
+ case Iop_QSub8Sx16: op = Pav_QSUBS; goto do_AvBin8x16;
case Iop_Avg8Ux16: op = Pav_AVGU; goto do_AvBin8x16;
case Iop_Avg8Sx16: op = Pav_AVGS; goto do_AvBin8x16;
case Iop_Max8Ux16: op = Pav_MAXU; goto do_AvBin8x16;
case Iop_Shr16x8: op = Pav_SHR; goto do_AvBin16x8;
case Iop_Sar16x8: op = Pav_SAR; goto do_AvBin16x8;
case Iop_Rotl16x8: op = Pav_ROTL; goto do_AvBin16x8;
- case Iop_Narrow16Ux8: op = Pav_PACKUUM; goto do_AvBin16x8;
- case Iop_QNarrow16Ux8: op = Pav_PACKUUS; goto do_AvBin16x8;
- case Iop_QNarrow16Sx8: op = Pav_PACKSSS; goto do_AvBin16x8;
+ case Iop_Narrow16Ux8: op = Pav_PACKUU; goto do_AvBin16x8;
+ case Iop_QNarrow16Ux8: op = Pav_QPACKUU; goto do_AvBin16x8;
+ case Iop_QNarrow16Sx8: op = Pav_QPACKSS; goto do_AvBin16x8;
case Iop_InterleaveHI16x8: op = Pav_MRGHI; goto do_AvBin16x8;
case Iop_InterleaveLO16x8: op = Pav_MRGLO; goto do_AvBin16x8;
- case Iop_Add16x8: op = Pav_ADDUM; goto do_AvBin16x8;
- case Iop_QAdd16Ux8: op = Pav_ADDUS; goto do_AvBin16x8;
- case Iop_QAdd16Sx8: op = Pav_ADDSS; goto do_AvBin16x8;
- case Iop_Sub16x8: op = Pav_SUBUM; goto do_AvBin16x8;
- case Iop_QSub16Ux8: op = Pav_SUBUS; goto do_AvBin16x8;
- case Iop_QSub16Sx8: op = Pav_SUBSS; goto do_AvBin16x8;
+ case Iop_Add16x8: op = Pav_ADDU; goto do_AvBin16x8;
+ case Iop_QAdd16Ux8: op = Pav_QADDU; goto do_AvBin16x8;
+ case Iop_QAdd16Sx8: op = Pav_QADDS; goto do_AvBin16x8;
+ case Iop_Sub16x8: op = Pav_SUBU; goto do_AvBin16x8;
+ case Iop_QSub16Ux8: op = Pav_QSUBU; goto do_AvBin16x8;
+ case Iop_QSub16Sx8: op = Pav_QSUBS; goto do_AvBin16x8;
case Iop_Avg16Ux8: op = Pav_AVGU; goto do_AvBin16x8;
case Iop_Avg16Sx8: op = Pav_AVGS; goto do_AvBin16x8;
case Iop_Max16Ux8: op = Pav_MAXU; goto do_AvBin16x8;
case Iop_Shr32x4: op = Pav_SHR; goto do_AvBin32x4;
case Iop_Sar32x4: op = Pav_SAR; goto do_AvBin32x4;
case Iop_Rotl32x4: op = Pav_ROTL; goto do_AvBin32x4;
- case Iop_Narrow32Ux4: op = Pav_PACKUUM; goto do_AvBin32x4;
- case Iop_QNarrow32Ux4: op = Pav_PACKUUS; goto do_AvBin32x4;
- case Iop_QNarrow32Sx4: op = Pav_PACKSSS; goto do_AvBin32x4;
+ case Iop_Narrow32Ux4: op = Pav_PACKUU; goto do_AvBin32x4;
+ case Iop_QNarrow32Ux4: op = Pav_QPACKUU; goto do_AvBin32x4;
+ case Iop_QNarrow32Sx4: op = Pav_QPACKSS; goto do_AvBin32x4;
case Iop_InterleaveHI32x4: op = Pav_MRGHI; goto do_AvBin32x4;
case Iop_InterleaveLO32x4: op = Pav_MRGLO; goto do_AvBin32x4;
- case Iop_Add32x4: op = Pav_ADDUM; goto do_AvBin32x4;
- case Iop_QAdd32Ux4: op = Pav_ADDUS; goto do_AvBin32x4;
- case Iop_QAdd32Sx4: op = Pav_ADDSS; goto do_AvBin32x4;
- case Iop_Sub32x4: op = Pav_SUBUM; goto do_AvBin32x4;
- case Iop_QSub32Ux4: op = Pav_SUBUS; goto do_AvBin32x4;
- case Iop_QSub32Sx4: op = Pav_SUBSS; goto do_AvBin32x4;
+ case Iop_Add32x4: op = Pav_ADDU; goto do_AvBin32x4;
+ case Iop_QAdd32Ux4: op = Pav_QADDU; goto do_AvBin32x4;
+ case Iop_QAdd32Sx4: op = Pav_QADDS; goto do_AvBin32x4;
+ case Iop_Sub32x4: op = Pav_SUBU; goto do_AvBin32x4;
+ case Iop_QSub32Ux4: op = Pav_QSUBU; goto do_AvBin32x4;
+ case Iop_QSub32Sx4: op = Pav_QSUBS; goto do_AvBin32x4;
case Iop_Avg32Ux4: op = Pav_AVGU; goto do_AvBin32x4;
case Iop_Avg32Sx4: op = Pav_AVGS; goto do_AvBin32x4;
case Iop_Max32Ux4: op = Pav_MAXU; goto do_AvBin32x4;