in src/cmd/internal/obj/ppc64/asm9.go [3782:4813]
func (c *ctxt9) oprrr(a obj.As) uint32 {
switch a {
case AADD:
return OPVCC(31, 266, 0, 0)
case AADDCC:
return OPVCC(31, 266, 0, 1)
case AADDV:
return OPVCC(31, 266, 1, 0)
case AADDVCC:
return OPVCC(31, 266, 1, 1)
case AADDC:
return OPVCC(31, 10, 0, 0)
case AADDCCC:
return OPVCC(31, 10, 0, 1)
case AADDCV:
return OPVCC(31, 10, 1, 0)
case AADDCVCC:
return OPVCC(31, 10, 1, 1)
case AADDE:
return OPVCC(31, 138, 0, 0)
case AADDECC:
return OPVCC(31, 138, 0, 1)
case AADDEV:
return OPVCC(31, 138, 1, 0)
case AADDEVCC:
return OPVCC(31, 138, 1, 1)
case AADDME:
return OPVCC(31, 234, 0, 0)
case AADDMECC:
return OPVCC(31, 234, 0, 1)
case AADDMEV:
return OPVCC(31, 234, 1, 0)
case AADDMEVCC:
return OPVCC(31, 234, 1, 1)
case AADDZE:
return OPVCC(31, 202, 0, 0)
case AADDZECC:
return OPVCC(31, 202, 0, 1)
case AADDZEV:
return OPVCC(31, 202, 1, 0)
case AADDZEVCC:
return OPVCC(31, 202, 1, 1)
case AADDEX:
return OPVCC(31, 170, 0, 0) /* addex - v3.0b */
case AAND:
return OPVCC(31, 28, 0, 0)
case AANDCC:
return OPVCC(31, 28, 0, 1)
case AANDN:
return OPVCC(31, 60, 0, 0)
case AANDNCC:
return OPVCC(31, 60, 0, 1)
case ACMP:
return OPVCC(31, 0, 0, 0) | 1<<21 /* L=1 */
case ACMPU:
return OPVCC(31, 32, 0, 0) | 1<<21
case ACMPW:
return OPVCC(31, 0, 0, 0) /* L=0 */
case ACMPWU:
return OPVCC(31, 32, 0, 0)
case ACMPB:
return OPVCC(31, 508, 0, 0) /* cmpb - v2.05 */
case ACMPEQB:
return OPVCC(31, 224, 0, 0) /* cmpeqb - v3.00 */
case ACNTLZW:
return OPVCC(31, 26, 0, 0)
case ACNTLZWCC:
return OPVCC(31, 26, 0, 1)
case ACNTLZD:
return OPVCC(31, 58, 0, 0)
case ACNTLZDCC:
return OPVCC(31, 58, 0, 1)
case ACRAND:
return OPVCC(19, 257, 0, 0)
case ACRANDN:
return OPVCC(19, 129, 0, 0)
case ACREQV:
return OPVCC(19, 289, 0, 0)
case ACRNAND:
return OPVCC(19, 225, 0, 0)
case ACRNOR:
return OPVCC(19, 33, 0, 0)
case ACROR:
return OPVCC(19, 449, 0, 0)
case ACRORN:
return OPVCC(19, 417, 0, 0)
case ACRXOR:
return OPVCC(19, 193, 0, 0)
case ADCBF:
return OPVCC(31, 86, 0, 0)
case ADCBI:
return OPVCC(31, 470, 0, 0)
case ADCBST:
return OPVCC(31, 54, 0, 0)
case ADCBT:
return OPVCC(31, 278, 0, 0)
case ADCBTST:
return OPVCC(31, 246, 0, 0)
case ADCBZ:
return OPVCC(31, 1014, 0, 0)
case AMODUD:
return OPVCC(31, 265, 0, 0) /* modud - v3.0 */
case AMODUW:
return OPVCC(31, 267, 0, 0) /* moduw - v3.0 */
case AMODSD:
return OPVCC(31, 777, 0, 0) /* modsd - v3.0 */
case AMODSW:
return OPVCC(31, 779, 0, 0) /* modsw - v3.0 */
case ADIVW, AREM:
return OPVCC(31, 491, 0, 0)
case ADIVWCC:
return OPVCC(31, 491, 0, 1)
case ADIVWV:
return OPVCC(31, 491, 1, 0)
case ADIVWVCC:
return OPVCC(31, 491, 1, 1)
case ADIVWU, AREMU:
return OPVCC(31, 459, 0, 0)
case ADIVWUCC:
return OPVCC(31, 459, 0, 1)
case ADIVWUV:
return OPVCC(31, 459, 1, 0)
case ADIVWUVCC:
return OPVCC(31, 459, 1, 1)
case ADIVD, AREMD:
return OPVCC(31, 489, 0, 0)
case ADIVDCC:
return OPVCC(31, 489, 0, 1)
case ADIVDE:
return OPVCC(31, 425, 0, 0)
case ADIVDECC:
return OPVCC(31, 425, 0, 1)
case ADIVDEU:
return OPVCC(31, 393, 0, 0)
case ADIVDEUCC:
return OPVCC(31, 393, 0, 1)
case ADIVDV:
return OPVCC(31, 489, 1, 0)
case ADIVDVCC:
return OPVCC(31, 489, 1, 1)
case ADIVDU, AREMDU:
return OPVCC(31, 457, 0, 0)
case ADIVDUCC:
return OPVCC(31, 457, 0, 1)
case ADIVDUV:
return OPVCC(31, 457, 1, 0)
case ADIVDUVCC:
return OPVCC(31, 457, 1, 1)
case AEIEIO:
return OPVCC(31, 854, 0, 0)
case AEQV:
return OPVCC(31, 284, 0, 0)
case AEQVCC:
return OPVCC(31, 284, 0, 1)
case AEXTSB:
return OPVCC(31, 954, 0, 0)
case AEXTSBCC:
return OPVCC(31, 954, 0, 1)
case AEXTSH:
return OPVCC(31, 922, 0, 0)
case AEXTSHCC:
return OPVCC(31, 922, 0, 1)
case AEXTSW:
return OPVCC(31, 986, 0, 0)
case AEXTSWCC:
return OPVCC(31, 986, 0, 1)
case AFABS:
return OPVCC(63, 264, 0, 0)
case AFABSCC:
return OPVCC(63, 264, 0, 1)
case AFADD:
return OPVCC(63, 21, 0, 0)
case AFADDCC:
return OPVCC(63, 21, 0, 1)
case AFADDS:
return OPVCC(59, 21, 0, 0)
case AFADDSCC:
return OPVCC(59, 21, 0, 1)
case AFCMPO:
return OPVCC(63, 32, 0, 0)
case AFCMPU:
return OPVCC(63, 0, 0, 0)
case AFCFID:
return OPVCC(63, 846, 0, 0)
case AFCFIDCC:
return OPVCC(63, 846, 0, 1)
case AFCFIDU:
return OPVCC(63, 974, 0, 0)
case AFCFIDUCC:
return OPVCC(63, 974, 0, 1)
case AFCFIDS:
return OPVCC(59, 846, 0, 0)
case AFCFIDSCC:
return OPVCC(59, 846, 0, 1)
case AFCTIW:
return OPVCC(63, 14, 0, 0)
case AFCTIWCC:
return OPVCC(63, 14, 0, 1)
case AFCTIWZ:
return OPVCC(63, 15, 0, 0)
case AFCTIWZCC:
return OPVCC(63, 15, 0, 1)
case AFCTID:
return OPVCC(63, 814, 0, 0)
case AFCTIDCC:
return OPVCC(63, 814, 0, 1)
case AFCTIDZ:
return OPVCC(63, 815, 0, 0)
case AFCTIDZCC:
return OPVCC(63, 815, 0, 1)
case AFDIV:
return OPVCC(63, 18, 0, 0)
case AFDIVCC:
return OPVCC(63, 18, 0, 1)
case AFDIVS:
return OPVCC(59, 18, 0, 0)
case AFDIVSCC:
return OPVCC(59, 18, 0, 1)
case AFMADD:
return OPVCC(63, 29, 0, 0)
case AFMADDCC:
return OPVCC(63, 29, 0, 1)
case AFMADDS:
return OPVCC(59, 29, 0, 0)
case AFMADDSCC:
return OPVCC(59, 29, 0, 1)
case AFMOVS, AFMOVD:
return OPVCC(63, 72, 0, 0) /* load */
case AFMOVDCC:
return OPVCC(63, 72, 0, 1)
case AFMSUB:
return OPVCC(63, 28, 0, 0)
case AFMSUBCC:
return OPVCC(63, 28, 0, 1)
case AFMSUBS:
return OPVCC(59, 28, 0, 0)
case AFMSUBSCC:
return OPVCC(59, 28, 0, 1)
case AFMUL:
return OPVCC(63, 25, 0, 0)
case AFMULCC:
return OPVCC(63, 25, 0, 1)
case AFMULS:
return OPVCC(59, 25, 0, 0)
case AFMULSCC:
return OPVCC(59, 25, 0, 1)
case AFNABS:
return OPVCC(63, 136, 0, 0)
case AFNABSCC:
return OPVCC(63, 136, 0, 1)
case AFNEG:
return OPVCC(63, 40, 0, 0)
case AFNEGCC:
return OPVCC(63, 40, 0, 1)
case AFNMADD:
return OPVCC(63, 31, 0, 0)
case AFNMADDCC:
return OPVCC(63, 31, 0, 1)
case AFNMADDS:
return OPVCC(59, 31, 0, 0)
case AFNMADDSCC:
return OPVCC(59, 31, 0, 1)
case AFNMSUB:
return OPVCC(63, 30, 0, 0)
case AFNMSUBCC:
return OPVCC(63, 30, 0, 1)
case AFNMSUBS:
return OPVCC(59, 30, 0, 0)
case AFNMSUBSCC:
return OPVCC(59, 30, 0, 1)
case AFCPSGN:
return OPVCC(63, 8, 0, 0)
case AFCPSGNCC:
return OPVCC(63, 8, 0, 1)
case AFRES:
return OPVCC(59, 24, 0, 0)
case AFRESCC:
return OPVCC(59, 24, 0, 1)
case AFRIM:
return OPVCC(63, 488, 0, 0)
case AFRIMCC:
return OPVCC(63, 488, 0, 1)
case AFRIP:
return OPVCC(63, 456, 0, 0)
case AFRIPCC:
return OPVCC(63, 456, 0, 1)
case AFRIZ:
return OPVCC(63, 424, 0, 0)
case AFRIZCC:
return OPVCC(63, 424, 0, 1)
case AFRIN:
return OPVCC(63, 392, 0, 0)
case AFRINCC:
return OPVCC(63, 392, 0, 1)
case AFRSP:
return OPVCC(63, 12, 0, 0)
case AFRSPCC:
return OPVCC(63, 12, 0, 1)
case AFRSQRTE:
return OPVCC(63, 26, 0, 0)
case AFRSQRTECC:
return OPVCC(63, 26, 0, 1)
case AFSEL:
return OPVCC(63, 23, 0, 0)
case AFSELCC:
return OPVCC(63, 23, 0, 1)
case AFSQRT:
return OPVCC(63, 22, 0, 0)
case AFSQRTCC:
return OPVCC(63, 22, 0, 1)
case AFSQRTS:
return OPVCC(59, 22, 0, 0)
case AFSQRTSCC:
return OPVCC(59, 22, 0, 1)
case AFSUB:
return OPVCC(63, 20, 0, 0)
case AFSUBCC:
return OPVCC(63, 20, 0, 1)
case AFSUBS:
return OPVCC(59, 20, 0, 0)
case AFSUBSCC:
return OPVCC(59, 20, 0, 1)
case AICBI:
return OPVCC(31, 982, 0, 0)
case AISYNC:
return OPVCC(19, 150, 0, 0)
case AMTFSB0:
return OPVCC(63, 70, 0, 0)
case AMTFSB0CC:
return OPVCC(63, 70, 0, 1)
case AMTFSB1:
return OPVCC(63, 38, 0, 0)
case AMTFSB1CC:
return OPVCC(63, 38, 0, 1)
case AMULHW:
return OPVCC(31, 75, 0, 0)
case AMULHWCC:
return OPVCC(31, 75, 0, 1)
case AMULHWU:
return OPVCC(31, 11, 0, 0)
case AMULHWUCC:
return OPVCC(31, 11, 0, 1)
case AMULLW:
return OPVCC(31, 235, 0, 0)
case AMULLWCC:
return OPVCC(31, 235, 0, 1)
case AMULLWV:
return OPVCC(31, 235, 1, 0)
case AMULLWVCC:
return OPVCC(31, 235, 1, 1)
case AMULHD:
return OPVCC(31, 73, 0, 0)
case AMULHDCC:
return OPVCC(31, 73, 0, 1)
case AMULHDU:
return OPVCC(31, 9, 0, 0)
case AMULHDUCC:
return OPVCC(31, 9, 0, 1)
case AMULLD:
return OPVCC(31, 233, 0, 0)
case AMULLDCC:
return OPVCC(31, 233, 0, 1)
case AMULLDV:
return OPVCC(31, 233, 1, 0)
case AMULLDVCC:
return OPVCC(31, 233, 1, 1)
case ANAND:
return OPVCC(31, 476, 0, 0)
case ANANDCC:
return OPVCC(31, 476, 0, 1)
case ANEG:
return OPVCC(31, 104, 0, 0)
case ANEGCC:
return OPVCC(31, 104, 0, 1)
case ANEGV:
return OPVCC(31, 104, 1, 0)
case ANEGVCC:
return OPVCC(31, 104, 1, 1)
case ANOR:
return OPVCC(31, 124, 0, 0)
case ANORCC:
return OPVCC(31, 124, 0, 1)
case AOR:
return OPVCC(31, 444, 0, 0)
case AORCC:
return OPVCC(31, 444, 0, 1)
case AORN:
return OPVCC(31, 412, 0, 0)
case AORNCC:
return OPVCC(31, 412, 0, 1)
case APOPCNTD:
return OPVCC(31, 506, 0, 0) /* popcntd - v2.06 */
case APOPCNTW:
return OPVCC(31, 378, 0, 0) /* popcntw - v2.06 */
case APOPCNTB:
return OPVCC(31, 122, 0, 0) /* popcntb - v2.02 */
case ACNTTZW:
return OPVCC(31, 538, 0, 0) /* cnttzw - v3.00 */
case ACNTTZWCC:
return OPVCC(31, 538, 0, 1) /* cnttzw. - v3.00 */
case ACNTTZD:
return OPVCC(31, 570, 0, 0) /* cnttzd - v3.00 */
case ACNTTZDCC:
return OPVCC(31, 570, 0, 1) /* cnttzd. - v3.00 */
case ARFI:
return OPVCC(19, 50, 0, 0)
case ARFCI:
return OPVCC(19, 51, 0, 0)
case ARFID:
return OPVCC(19, 18, 0, 0)
case AHRFID:
return OPVCC(19, 274, 0, 0)
case ARLWMI:
return OPVCC(20, 0, 0, 0)
case ARLWMICC:
return OPVCC(20, 0, 0, 1)
case ARLWNM:
return OPVCC(23, 0, 0, 0)
case ARLWNMCC:
return OPVCC(23, 0, 0, 1)
case ARLDCL:
return OPVCC(30, 8, 0, 0)
case ARLDCLCC:
return OPVCC(30, 0, 0, 1)
case ARLDCR:
return OPVCC(30, 9, 0, 0)
case ARLDCRCC:
return OPVCC(30, 9, 0, 1)
case ARLDICL:
return OPVCC(30, 0, 0, 0)
case ARLDICLCC:
return OPVCC(30, 0, 0, 1)
case ARLDICR:
return OPMD(30, 1, 0) // rldicr
case ARLDICRCC:
return OPMD(30, 1, 1) // rldicr.
case ARLDIC:
return OPMD(30, 2, 0) // rldic
case ARLDICCC:
return OPMD(30, 2, 1) // rldic.
case ASYSCALL:
return OPVCC(17, 1, 0, 0)
case ASLW:
return OPVCC(31, 24, 0, 0)
case ASLWCC:
return OPVCC(31, 24, 0, 1)
case ASLD:
return OPVCC(31, 27, 0, 0)
case ASLDCC:
return OPVCC(31, 27, 0, 1)
case ASRAW:
return OPVCC(31, 792, 0, 0)
case ASRAWCC:
return OPVCC(31, 792, 0, 1)
case ASRAD:
return OPVCC(31, 794, 0, 0)
case ASRADCC:
return OPVCC(31, 794, 0, 1)
case AEXTSWSLI:
return OPVCC(31, 445, 0, 0)
case AEXTSWSLICC:
return OPVCC(31, 445, 0, 1)
case ASRW:
return OPVCC(31, 536, 0, 0)
case ASRWCC:
return OPVCC(31, 536, 0, 1)
case ASRD:
return OPVCC(31, 539, 0, 0)
case ASRDCC:
return OPVCC(31, 539, 0, 1)
case ASUB:
return OPVCC(31, 40, 0, 0)
case ASUBCC:
return OPVCC(31, 40, 0, 1)
case ASUBV:
return OPVCC(31, 40, 1, 0)
case ASUBVCC:
return OPVCC(31, 40, 1, 1)
case ASUBC:
return OPVCC(31, 8, 0, 0)
case ASUBCCC:
return OPVCC(31, 8, 0, 1)
case ASUBCV:
return OPVCC(31, 8, 1, 0)
case ASUBCVCC:
return OPVCC(31, 8, 1, 1)
case ASUBE:
return OPVCC(31, 136, 0, 0)
case ASUBECC:
return OPVCC(31, 136, 0, 1)
case ASUBEV:
return OPVCC(31, 136, 1, 0)
case ASUBEVCC:
return OPVCC(31, 136, 1, 1)
case ASUBME:
return OPVCC(31, 232, 0, 0)
case ASUBMECC:
return OPVCC(31, 232, 0, 1)
case ASUBMEV:
return OPVCC(31, 232, 1, 0)
case ASUBMEVCC:
return OPVCC(31, 232, 1, 1)
case ASUBZE:
return OPVCC(31, 200, 0, 0)
case ASUBZECC:
return OPVCC(31, 200, 0, 1)
case ASUBZEV:
return OPVCC(31, 200, 1, 0)
case ASUBZEVCC:
return OPVCC(31, 200, 1, 1)
case ASYNC:
return OPVCC(31, 598, 0, 0)
case ALWSYNC:
return OPVCC(31, 598, 0, 0) | 1<<21
case APTESYNC:
return OPVCC(31, 598, 0, 0) | 2<<21
case ATLBIE:
return OPVCC(31, 306, 0, 0)
case ATLBIEL:
return OPVCC(31, 274, 0, 0)
case ATLBSYNC:
return OPVCC(31, 566, 0, 0)
case ASLBIA:
return OPVCC(31, 498, 0, 0)
case ASLBIE:
return OPVCC(31, 434, 0, 0)
case ASLBMFEE:
return OPVCC(31, 915, 0, 0)
case ASLBMFEV:
return OPVCC(31, 851, 0, 0)
case ASLBMTE:
return OPVCC(31, 402, 0, 0)
case ATW:
return OPVCC(31, 4, 0, 0)
case ATD:
return OPVCC(31, 68, 0, 0)
/* Vector (VMX/Altivec) instructions */
/* ISA 2.03 enables these for PPC970. For POWERx processors, these */
/* are enabled starting at POWER6 (ISA 2.05). */
case AVAND:
return OPVX(4, 1028, 0, 0) /* vand - v2.03 */
case AVANDC:
return OPVX(4, 1092, 0, 0) /* vandc - v2.03 */
case AVNAND:
return OPVX(4, 1412, 0, 0) /* vnand - v2.07 */
case AVOR:
return OPVX(4, 1156, 0, 0) /* vor - v2.03 */
case AVORC:
return OPVX(4, 1348, 0, 0) /* vorc - v2.07 */
case AVNOR:
return OPVX(4, 1284, 0, 0) /* vnor - v2.03 */
case AVXOR:
return OPVX(4, 1220, 0, 0) /* vxor - v2.03 */
case AVEQV:
return OPVX(4, 1668, 0, 0) /* veqv - v2.07 */
case AVADDUBM:
return OPVX(4, 0, 0, 0) /* vaddubm - v2.03 */
case AVADDUHM:
return OPVX(4, 64, 0, 0) /* vadduhm - v2.03 */
case AVADDUWM:
return OPVX(4, 128, 0, 0) /* vadduwm - v2.03 */
case AVADDUDM:
return OPVX(4, 192, 0, 0) /* vaddudm - v2.07 */
case AVADDUQM:
return OPVX(4, 256, 0, 0) /* vadduqm - v2.07 */
case AVADDCUQ:
return OPVX(4, 320, 0, 0) /* vaddcuq - v2.07 */
case AVADDCUW:
return OPVX(4, 384, 0, 0) /* vaddcuw - v2.03 */
case AVADDUBS:
return OPVX(4, 512, 0, 0) /* vaddubs - v2.03 */
case AVADDUHS:
return OPVX(4, 576, 0, 0) /* vadduhs - v2.03 */
case AVADDUWS:
return OPVX(4, 640, 0, 0) /* vadduws - v2.03 */
case AVADDSBS:
return OPVX(4, 768, 0, 0) /* vaddsbs - v2.03 */
case AVADDSHS:
return OPVX(4, 832, 0, 0) /* vaddshs - v2.03 */
case AVADDSWS:
return OPVX(4, 896, 0, 0) /* vaddsws - v2.03 */
case AVADDEUQM:
return OPVX(4, 60, 0, 0) /* vaddeuqm - v2.07 */
case AVADDECUQ:
return OPVX(4, 61, 0, 0) /* vaddecuq - v2.07 */
case AVMULESB:
return OPVX(4, 776, 0, 0) /* vmulesb - v2.03 */
case AVMULOSB:
return OPVX(4, 264, 0, 0) /* vmulosb - v2.03 */
case AVMULEUB:
return OPVX(4, 520, 0, 0) /* vmuleub - v2.03 */
case AVMULOUB:
return OPVX(4, 8, 0, 0) /* vmuloub - v2.03 */
case AVMULESH:
return OPVX(4, 840, 0, 0) /* vmulesh - v2.03 */
case AVMULOSH:
return OPVX(4, 328, 0, 0) /* vmulosh - v2.03 */
case AVMULEUH:
return OPVX(4, 584, 0, 0) /* vmuleuh - v2.03 */
case AVMULOUH:
return OPVX(4, 72, 0, 0) /* vmulouh - v2.03 */
case AVMULESW:
return OPVX(4, 904, 0, 0) /* vmulesw - v2.07 */
case AVMULOSW:
return OPVX(4, 392, 0, 0) /* vmulosw - v2.07 */
case AVMULEUW:
return OPVX(4, 648, 0, 0) /* vmuleuw - v2.07 */
case AVMULOUW:
return OPVX(4, 136, 0, 0) /* vmulouw - v2.07 */
case AVMULUWM:
return OPVX(4, 137, 0, 0) /* vmuluwm - v2.07 */
case AVPMSUMB:
return OPVX(4, 1032, 0, 0) /* vpmsumb - v2.07 */
case AVPMSUMH:
return OPVX(4, 1096, 0, 0) /* vpmsumh - v2.07 */
case AVPMSUMW:
return OPVX(4, 1160, 0, 0) /* vpmsumw - v2.07 */
case AVPMSUMD:
return OPVX(4, 1224, 0, 0) /* vpmsumd - v2.07 */
case AVMSUMUDM:
return OPVX(4, 35, 0, 0) /* vmsumudm - v3.00b */
case AVSUBUBM:
return OPVX(4, 1024, 0, 0) /* vsububm - v2.03 */
case AVSUBUHM:
return OPVX(4, 1088, 0, 0) /* vsubuhm - v2.03 */
case AVSUBUWM:
return OPVX(4, 1152, 0, 0) /* vsubuwm - v2.03 */
case AVSUBUDM:
return OPVX(4, 1216, 0, 0) /* vsubudm - v2.07 */
case AVSUBUQM:
return OPVX(4, 1280, 0, 0) /* vsubuqm - v2.07 */
case AVSUBCUQ:
return OPVX(4, 1344, 0, 0) /* vsubcuq - v2.07 */
case AVSUBCUW:
return OPVX(4, 1408, 0, 0) /* vsubcuw - v2.03 */
case AVSUBUBS:
return OPVX(4, 1536, 0, 0) /* vsububs - v2.03 */
case AVSUBUHS:
return OPVX(4, 1600, 0, 0) /* vsubuhs - v2.03 */
case AVSUBUWS:
return OPVX(4, 1664, 0, 0) /* vsubuws - v2.03 */
case AVSUBSBS:
return OPVX(4, 1792, 0, 0) /* vsubsbs - v2.03 */
case AVSUBSHS:
return OPVX(4, 1856, 0, 0) /* vsubshs - v2.03 */
case AVSUBSWS:
return OPVX(4, 1920, 0, 0) /* vsubsws - v2.03 */
case AVSUBEUQM:
return OPVX(4, 62, 0, 0) /* vsubeuqm - v2.07 */
case AVSUBECUQ:
return OPVX(4, 63, 0, 0) /* vsubecuq - v2.07 */
case AVRLB:
return OPVX(4, 4, 0, 0) /* vrlb - v2.03 */
case AVRLH:
return OPVX(4, 68, 0, 0) /* vrlh - v2.03 */
case AVRLW:
return OPVX(4, 132, 0, 0) /* vrlw - v2.03 */
case AVRLD:
return OPVX(4, 196, 0, 0) /* vrld - v2.07 */
case AVMRGOW:
return OPVX(4, 1676, 0, 0) /* vmrgow - v2.07 */
case AVMRGEW:
return OPVX(4, 1932, 0, 0) /* vmrgew - v2.07 */
case AVSLB:
return OPVX(4, 260, 0, 0) /* vslh - v2.03 */
case AVSLH:
return OPVX(4, 324, 0, 0) /* vslh - v2.03 */
case AVSLW:
return OPVX(4, 388, 0, 0) /* vslw - v2.03 */
case AVSL:
return OPVX(4, 452, 0, 0) /* vsl - v2.03 */
case AVSLO:
return OPVX(4, 1036, 0, 0) /* vsl - v2.03 */
case AVSRB:
return OPVX(4, 516, 0, 0) /* vsrb - v2.03 */
case AVSRH:
return OPVX(4, 580, 0, 0) /* vsrh - v2.03 */
case AVSRW:
return OPVX(4, 644, 0, 0) /* vsrw - v2.03 */
case AVSR:
return OPVX(4, 708, 0, 0) /* vsr - v2.03 */
case AVSRO:
return OPVX(4, 1100, 0, 0) /* vsro - v2.03 */
case AVSLD:
return OPVX(4, 1476, 0, 0) /* vsld - v2.07 */
case AVSRD:
return OPVX(4, 1732, 0, 0) /* vsrd - v2.07 */
case AVSRAB:
return OPVX(4, 772, 0, 0) /* vsrab - v2.03 */
case AVSRAH:
return OPVX(4, 836, 0, 0) /* vsrah - v2.03 */
case AVSRAW:
return OPVX(4, 900, 0, 0) /* vsraw - v2.03 */
case AVSRAD:
return OPVX(4, 964, 0, 0) /* vsrad - v2.07 */
case AVBPERMQ:
return OPVC(4, 1356, 0, 0) /* vbpermq - v2.07 */
case AVBPERMD:
return OPVC(4, 1484, 0, 0) /* vbpermd - v3.00 */
case AVCLZB:
return OPVX(4, 1794, 0, 0) /* vclzb - v2.07 */
case AVCLZH:
return OPVX(4, 1858, 0, 0) /* vclzh - v2.07 */
case AVCLZW:
return OPVX(4, 1922, 0, 0) /* vclzw - v2.07 */
case AVCLZD:
return OPVX(4, 1986, 0, 0) /* vclzd - v2.07 */
case AVPOPCNTB:
return OPVX(4, 1795, 0, 0) /* vpopcntb - v2.07 */
case AVPOPCNTH:
return OPVX(4, 1859, 0, 0) /* vpopcnth - v2.07 */
case AVPOPCNTW:
return OPVX(4, 1923, 0, 0) /* vpopcntw - v2.07 */
case AVPOPCNTD:
return OPVX(4, 1987, 0, 0) /* vpopcntd - v2.07 */
case AVCMPEQUB:
return OPVC(4, 6, 0, 0) /* vcmpequb - v2.03 */
case AVCMPEQUBCC:
return OPVC(4, 6, 0, 1) /* vcmpequb. - v2.03 */
case AVCMPEQUH:
return OPVC(4, 70, 0, 0) /* vcmpequh - v2.03 */
case AVCMPEQUHCC:
return OPVC(4, 70, 0, 1) /* vcmpequh. - v2.03 */
case AVCMPEQUW:
return OPVC(4, 134, 0, 0) /* vcmpequw - v2.03 */
case AVCMPEQUWCC:
return OPVC(4, 134, 0, 1) /* vcmpequw. - v2.03 */
case AVCMPEQUD:
return OPVC(4, 199, 0, 0) /* vcmpequd - v2.07 */
case AVCMPEQUDCC:
return OPVC(4, 199, 0, 1) /* vcmpequd. - v2.07 */
case AVCMPGTUB:
return OPVC(4, 518, 0, 0) /* vcmpgtub - v2.03 */
case AVCMPGTUBCC:
return OPVC(4, 518, 0, 1) /* vcmpgtub. - v2.03 */
case AVCMPGTUH:
return OPVC(4, 582, 0, 0) /* vcmpgtuh - v2.03 */
case AVCMPGTUHCC:
return OPVC(4, 582, 0, 1) /* vcmpgtuh. - v2.03 */
case AVCMPGTUW:
return OPVC(4, 646, 0, 0) /* vcmpgtuw - v2.03 */
case AVCMPGTUWCC:
return OPVC(4, 646, 0, 1) /* vcmpgtuw. - v2.03 */
case AVCMPGTUD:
return OPVC(4, 711, 0, 0) /* vcmpgtud - v2.07 */
case AVCMPGTUDCC:
return OPVC(4, 711, 0, 1) /* vcmpgtud. v2.07 */
case AVCMPGTSB:
return OPVC(4, 774, 0, 0) /* vcmpgtsb - v2.03 */
case AVCMPGTSBCC:
return OPVC(4, 774, 0, 1) /* vcmpgtsb. - v2.03 */
case AVCMPGTSH:
return OPVC(4, 838, 0, 0) /* vcmpgtsh - v2.03 */
case AVCMPGTSHCC:
return OPVC(4, 838, 0, 1) /* vcmpgtsh. - v2.03 */
case AVCMPGTSW:
return OPVC(4, 902, 0, 0) /* vcmpgtsw - v2.03 */
case AVCMPGTSWCC:
return OPVC(4, 902, 0, 1) /* vcmpgtsw. - v2.03 */
case AVCMPGTSD:
return OPVC(4, 967, 0, 0) /* vcmpgtsd - v2.07 */
case AVCMPGTSDCC:
return OPVC(4, 967, 0, 1) /* vcmpgtsd. - v2.07 */
case AVCMPNEZB:
return OPVC(4, 263, 0, 0) /* vcmpnezb - v3.00 */
case AVCMPNEZBCC:
return OPVC(4, 263, 0, 1) /* vcmpnezb. - v3.00 */
case AVCMPNEB:
return OPVC(4, 7, 0, 0) /* vcmpneb - v3.00 */
case AVCMPNEBCC:
return OPVC(4, 7, 0, 1) /* vcmpneb. - v3.00 */
case AVCMPNEH:
return OPVC(4, 71, 0, 0) /* vcmpneh - v3.00 */
case AVCMPNEHCC:
return OPVC(4, 71, 0, 1) /* vcmpneh. - v3.00 */
case AVCMPNEW:
return OPVC(4, 135, 0, 0) /* vcmpnew - v3.00 */
case AVCMPNEWCC:
return OPVC(4, 135, 0, 1) /* vcmpnew. - v3.00 */
case AVPERM:
return OPVX(4, 43, 0, 0) /* vperm - v2.03 */
case AVPERMXOR:
return OPVX(4, 45, 0, 0) /* vpermxor - v2.03 */
case AVPERMR:
return OPVX(4, 59, 0, 0) /* vpermr - v3.0 */
case AVSEL:
return OPVX(4, 42, 0, 0) /* vsel - v2.03 */
case AVCIPHER:
return OPVX(4, 1288, 0, 0) /* vcipher - v2.07 */
case AVCIPHERLAST:
return OPVX(4, 1289, 0, 0) /* vcipherlast - v2.07 */
case AVNCIPHER:
return OPVX(4, 1352, 0, 0) /* vncipher - v2.07 */
case AVNCIPHERLAST:
return OPVX(4, 1353, 0, 0) /* vncipherlast - v2.07 */
case AVSBOX:
return OPVX(4, 1480, 0, 0) /* vsbox - v2.07 */
/* End of vector instructions */
/* Vector scalar (VSX) instructions */
/* ISA 2.06 enables these for POWER7. */
case AMFVSRD, AMFVRD, AMFFPRD:
return OPVXX1(31, 51, 0) /* mfvsrd - v2.07 */
case AMFVSRWZ:
return OPVXX1(31, 115, 0) /* mfvsrwz - v2.07 */
case AMFVSRLD:
return OPVXX1(31, 307, 0) /* mfvsrld - v3.00 */
case AMTVSRD, AMTFPRD, AMTVRD:
return OPVXX1(31, 179, 0) /* mtvsrd - v2.07 */
case AMTVSRWA:
return OPVXX1(31, 211, 0) /* mtvsrwa - v2.07 */
case AMTVSRWZ:
return OPVXX1(31, 243, 0) /* mtvsrwz - v2.07 */
case AMTVSRDD:
return OPVXX1(31, 435, 0) /* mtvsrdd - v3.00 */
case AMTVSRWS:
return OPVXX1(31, 403, 0) /* mtvsrws - v3.00 */
case AXXLAND:
return OPVXX3(60, 130, 0) /* xxland - v2.06 */
case AXXLANDC:
return OPVXX3(60, 138, 0) /* xxlandc - v2.06 */
case AXXLEQV:
return OPVXX3(60, 186, 0) /* xxleqv - v2.07 */
case AXXLNAND:
return OPVXX3(60, 178, 0) /* xxlnand - v2.07 */
case AXXLORC:
return OPVXX3(60, 170, 0) /* xxlorc - v2.07 */
case AXXLNOR:
return OPVXX3(60, 162, 0) /* xxlnor - v2.06 */
case AXXLOR, AXXLORQ:
return OPVXX3(60, 146, 0) /* xxlor - v2.06 */
case AXXLXOR:
return OPVXX3(60, 154, 0) /* xxlxor - v2.06 */
case AXXSEL:
return OPVXX4(60, 3, 0) /* xxsel - v2.06 */
case AXXMRGHW:
return OPVXX3(60, 18, 0) /* xxmrghw - v2.06 */
case AXXMRGLW:
return OPVXX3(60, 50, 0) /* xxmrglw - v2.06 */
case AXXSPLTW:
return OPVXX2(60, 164, 0) /* xxspltw - v2.06 */
case AXXSPLTIB:
return OPVCC(60, 360, 0, 0) /* xxspltib - v3.0 */
case AXXPERM:
return OPVXX3(60, 26, 0) /* xxperm - v2.06 */
case AXXPERMDI:
return OPVXX3(60, 10, 0) /* xxpermdi - v2.06 */
case AXXSLDWI:
return OPVXX3(60, 2, 0) /* xxsldwi - v2.06 */
case AXXBRQ:
return OPVXX2VA(60, 475, 31) /* xxbrq - v3.0 */
case AXXBRD:
return OPVXX2VA(60, 475, 23) /* xxbrd - v3.0 */
case AXXBRW:
return OPVXX2VA(60, 475, 15) /* xxbrw - v3.0 */
case AXXBRH:
return OPVXX2VA(60, 475, 7) /* xxbrh - v3.0 */
case AXSCVDPSP:
return OPVXX2(60, 265, 0) /* xscvdpsp - v2.06 */
case AXSCVSPDP:
return OPVXX2(60, 329, 0) /* xscvspdp - v2.06 */
case AXSCVDPSPN:
return OPVXX2(60, 267, 0) /* xscvdpspn - v2.07 */
case AXSCVSPDPN:
return OPVXX2(60, 331, 0) /* xscvspdpn - v2.07 */
case AXVCVDPSP:
return OPVXX2(60, 393, 0) /* xvcvdpsp - v2.06 */
case AXVCVSPDP:
return OPVXX2(60, 457, 0) /* xvcvspdp - v2.06 */
case AXSCVDPSXDS:
return OPVXX2(60, 344, 0) /* xscvdpsxds - v2.06 */
case AXSCVDPSXWS:
return OPVXX2(60, 88, 0) /* xscvdpsxws - v2.06 */
case AXSCVDPUXDS:
return OPVXX2(60, 328, 0) /* xscvdpuxds - v2.06 */
case AXSCVDPUXWS:
return OPVXX2(60, 72, 0) /* xscvdpuxws - v2.06 */
case AXSCVSXDDP:
return OPVXX2(60, 376, 0) /* xscvsxddp - v2.06 */
case AXSCVUXDDP:
return OPVXX2(60, 360, 0) /* xscvuxddp - v2.06 */
case AXSCVSXDSP:
return OPVXX2(60, 312, 0) /* xscvsxdsp - v2.06 */
case AXSCVUXDSP:
return OPVXX2(60, 296, 0) /* xscvuxdsp - v2.06 */
case AXVCVDPSXDS:
return OPVXX2(60, 472, 0) /* xvcvdpsxds - v2.06 */
case AXVCVDPSXWS:
return OPVXX2(60, 216, 0) /* xvcvdpsxws - v2.06 */
case AXVCVDPUXDS:
return OPVXX2(60, 456, 0) /* xvcvdpuxds - v2.06 */
case AXVCVDPUXWS:
return OPVXX2(60, 200, 0) /* xvcvdpuxws - v2.06 */
case AXVCVSPSXDS:
return OPVXX2(60, 408, 0) /* xvcvspsxds - v2.07 */
case AXVCVSPSXWS:
return OPVXX2(60, 152, 0) /* xvcvspsxws - v2.07 */
case AXVCVSPUXDS:
return OPVXX2(60, 392, 0) /* xvcvspuxds - v2.07 */
case AXVCVSPUXWS:
return OPVXX2(60, 136, 0) /* xvcvspuxws - v2.07 */
case AXVCVSXDDP:
return OPVXX2(60, 504, 0) /* xvcvsxddp - v2.06 */
case AXVCVSXWDP:
return OPVXX2(60, 248, 0) /* xvcvsxwdp - v2.06 */
case AXVCVUXDDP:
return OPVXX2(60, 488, 0) /* xvcvuxddp - v2.06 */
case AXVCVUXWDP:
return OPVXX2(60, 232, 0) /* xvcvuxwdp - v2.06 */
case AXVCVSXDSP:
return OPVXX2(60, 440, 0) /* xvcvsxdsp - v2.06 */
case AXVCVSXWSP:
return OPVXX2(60, 184, 0) /* xvcvsxwsp - v2.06 */
case AXVCVUXDSP:
return OPVXX2(60, 424, 0) /* xvcvuxdsp - v2.06 */
case AXVCVUXWSP:
return OPVXX2(60, 168, 0) /* xvcvuxwsp - v2.06 */
/* End of VSX instructions */
case AMADDHD:
return OPVX(4, 48, 0, 0) /* maddhd - v3.00 */
case AMADDHDU:
return OPVX(4, 49, 0, 0) /* maddhdu - v3.00 */
case AMADDLD:
return OPVX(4, 51, 0, 0) /* maddld - v3.00 */
case AXOR:
return OPVCC(31, 316, 0, 0)
case AXORCC:
return OPVCC(31, 316, 0, 1)
}
c.ctxt.Diag("bad r/r, r/r/r or r/r/r/r opcode %v", a)
return 0
}