LLVM API Documentation

PPCGenCodeEmitter.inc

Go to the documentation of this file.
00001 //===- TableGen'erated file -------------------------------------*- C++ -*-===//
00002 //
00003 // Machine Code Emitter
00004 //
00005 // Automatically generated file, do not edit!
00006 //
00007 //===----------------------------------------------------------------------===//
00008 
00009 unsigned PPCCodeEmitter::getBinaryCodeForInstr(const MachineInstr &MI) {
00010   static const unsigned InstBits[] = {
00011     0U,
00012     0U,
00013     0U,
00014     0U,
00015     0U,
00016     0U,
00017     0U,
00018     0U,
00019     0U,
00020     0U,
00021     2080375316U,  // ADD4
00022     2080375316U,  // ADD8
00023     2080374804U,  // ADDC
00024     2080374804U,  // ADDC8
00025     2080375060U,  // ADDE
00026     2080375060U,  // ADDE8
00027     939524096U, // ADDI
00028     939524096U, // ADDI8
00029     805306368U, // ADDIC
00030     872415232U, // ADDICo
00031     1006632960U,  // ADDIS
00032     1006632960U,  // ADDIS8
00033     2080375252U,  // ADDME
00034     2080375252U,  // ADDME8
00035     2080375188U,  // ADDZE
00036     2080375188U,  // ADDZE8
00037     0U, // ADJCALLSTACKDOWN
00038     0U, // ADJCALLSTACKUP
00039     2080374840U,  // AND
00040     2080374840U,  // AND8
00041     2080374904U,  // ANDC
00042     2080374904U,  // ANDC8
00043     1946157056U,  // ANDISo
00044     1946157056U,  // ANDISo8
00045     1879048192U,  // ANDIo
00046     1879048192U,  // ANDIo8
00047     0U, // ATOMIC_CMP_SWAP_I16
00048     0U, // ATOMIC_CMP_SWAP_I32
00049     0U, // ATOMIC_CMP_SWAP_I64
00050     0U, // ATOMIC_CMP_SWAP_I8
00051     0U, // ATOMIC_LOAD_ADD_I16
00052     0U, // ATOMIC_LOAD_ADD_I32
00053     0U, // ATOMIC_LOAD_ADD_I64
00054     0U, // ATOMIC_LOAD_ADD_I8
00055     0U, // ATOMIC_LOAD_AND_I16
00056     0U, // ATOMIC_LOAD_AND_I32
00057     0U, // ATOMIC_LOAD_AND_I64
00058     0U, // ATOMIC_LOAD_AND_I8
00059     0U, // ATOMIC_LOAD_NAND_I16
00060     0U, // ATOMIC_LOAD_NAND_I32
00061     0U, // ATOMIC_LOAD_NAND_I64
00062     0U, // ATOMIC_LOAD_NAND_I8
00063     0U, // ATOMIC_LOAD_OR_I16
00064     0U, // ATOMIC_LOAD_OR_I32
00065     0U, // ATOMIC_LOAD_OR_I64
00066     0U, // ATOMIC_LOAD_OR_I8
00067     0U, // ATOMIC_LOAD_SUB_I16
00068     0U, // ATOMIC_LOAD_SUB_I32
00069     0U, // ATOMIC_LOAD_SUB_I64
00070     0U, // ATOMIC_LOAD_SUB_I8
00071     0U, // ATOMIC_LOAD_XOR_I16
00072     0U, // ATOMIC_LOAD_XOR_I32
00073     0U, // ATOMIC_LOAD_XOR_I64
00074     0U, // ATOMIC_LOAD_XOR_I8
00075     0U, // ATOMIC_SWAP_I16
00076     0U, // ATOMIC_SWAP_I32
00077     0U, // ATOMIC_SWAP_I64
00078     0U, // ATOMIC_SWAP_I8
00079     1207959552U,  // B
00080     1073741824U,  // BCC
00081     1317012512U,  // BCTR
00082     1317012513U,  // BCTRL8_ELF
00083     1317012513U,  // BCTRL8_Macho
00084     1317012513U,  // BCTRL_ELF
00085     1317012513U,  // BCTRL_Macho
00086     1207959553U,  // BL8_ELF
00087     1207959553U,  // BL8_Macho
00088     1207959555U,  // BLA8_ELF
00089     1207959555U,  // BLA8_Macho
00090     1207959555U,  // BLA_ELF
00091     1207959555U,  // BLA_Macho
00092     1275068448U,  // BLR
00093     1207959553U,  // BL_ELF
00094     1207959553U,  // BL_Macho
00095     2082471936U,  // CMPD
00096     740294656U, // CMPDI
00097     2082472000U,  // CMPLD
00098     673185792U, // CMPLDI
00099     2080374848U,  // CMPLW
00100     671088640U, // CMPLWI
00101     2080374784U,  // CMPW
00102     738197504U, // CMPWI
00103     2080374900U,  // CNTLZD
00104     2080374836U,  // CNTLZW
00105     1275068994U,  // CREQV
00106     1275069314U,  // CROR
00107     1275068994U,  // CRSET
00108     2080376300U,  // DCBA
00109     2080374956U,  // DCBF
00110     2080375724U,  // DCBI
00111     2080374892U,  // DCBST
00112     2080375340U,  // DCBT
00113     2080375276U,  // DCBTST
00114     2080376812U,  // DCBZ
00115     2082473964U,  // DCBZL
00116     2080375762U,  // DIVD
00117     2080375698U,  // DIVDU
00118     2080375766U,  // DIVW
00119     2080375702U,  // DIVWU
00120     2080376428U,  // DSS
00121     2080376428U,  // DSSALL
00122     2080375468U,  // DST
00123     2080375468U,  // DST64
00124     2080375532U,  // DSTST
00125     2080375532U,  // DSTST64
00126     2080375532U,  // DSTSTT
00127     2080375532U,  // DSTSTT64
00128     2080375468U,  // DSTT
00129     2080375468U,  // DSTT64
00130     0U, // DWARF_LOC
00131     0U, // DYNALLOC
00132     0U, // DYNALLOC8
00133     2080375352U,  // EQV
00134     2080375352U,  // EQV8
00135     2080376692U,  // EXTSB
00136     2080376692U,  // EXTSB8
00137     2080376628U,  // EXTSH
00138     2080376628U,  // EXTSH8
00139     2080376756U,  // EXTSW
00140     2080376756U,  // EXTSW_32
00141     2080376756U,  // EXTSW_32_64
00142     4227858960U,  // FABSD
00143     4227858960U,  // FABSS
00144     4227858474U,  // FADD
00145     3959423018U,  // FADDS
00146     4227858474U,  // FADDrtz
00147     4227860124U,  // FCFID
00148     4227858432U,  // FCMPUD
00149     4227858432U,  // FCMPUS
00150     4227860062U,  // FCTIDZ
00151     4227858462U,  // FCTIWZ
00152     4227858468U,  // FDIV
00153     3959423012U,  // FDIVS
00154     4227858490U,  // FMADD
00155     3959423034U,  // FMADDS
00156     4227858576U,  // FMRD
00157     4227858576U,  // FMRS
00158     4227858576U,  // FMRSD
00159     4227858488U,  // FMSUB
00160     3959423032U,  // FMSUBS
00161     4227858482U,  // FMUL
00162     3959423026U,  // FMULS
00163     4227858704U,  // FNABSD
00164     4227858704U,  // FNABSS
00165     4227858512U,  // FNEGD
00166     4227858512U,  // FNEGS
00167     4227858494U,  // FNMADD
00168     3959423038U,  // FNMADDS
00169     4227858492U,  // FNMSUB
00170     3959423036U,  // FNMSUBS
00171     4227858456U,  // FRSP
00172     4227858478U,  // FSELD
00173     4227858478U,  // FSELS
00174     4227858476U,  // FSQRT
00175     3959423020U,  // FSQRTS
00176     4227858472U,  // FSUB
00177     3959423016U,  // FSUBS
00178     939524096U, // LA
00179     2281701376U,  // LBZ
00180     2281701376U,  // LBZ8
00181     2348810240U,  // LBZU
00182     2348810240U,  // LBZU8
00183     2080374958U,  // LBZX
00184     2080374958U,  // LBZX8
00185     3892314112U,  // LD
00186     2080374952U,  // LDARX
00187     3892314113U,  // LDU
00188     2080374826U,  // LDX
00189     3355443200U,  // LFD
00190     3422552064U,  // LFDU
00191     2080375982U,  // LFDX
00192     3221225472U,  // LFS
00193     3288334336U,  // LFSU
00194     2080375854U,  // LFSX
00195     2818572288U,  // LHA
00196     2818572288U,  // LHA8
00197     2885681152U,  // LHAU
00198     2885681152U,  // LHAU8
00199     2080375470U,  // LHAX
00200     2080375470U,  // LHAX8
00201     2080376364U,  // LHBRX
00202     2684354560U,  // LHZ
00203     2684354560U,  // LHZ8
00204     2751463424U,  // LHZU
00205     2751463424U,  // LHZU8
00206     2080375342U,  // LHZX
00207     2080375342U,  // LHZX8
00208     939524096U, // LI
00209     939524096U, // LI8
00210     1006632960U,  // LIS
00211     1006632960U,  // LIS8
00212     2080374798U,  // LVEBX
00213     2080374862U,  // LVEHX
00214     2080374926U,  // LVEWX
00215     2080374796U,  // LVSL
00216     2080374860U,  // LVSR
00217     2080374990U,  // LVX
00218     2080375502U,  // LVXL
00219     3892314114U,  // LWA
00220     2080374824U,  // LWARX
00221     2080375466U,  // LWAX
00222     2080375852U,  // LWBRX
00223     2147483648U,  // LWZ
00224     2147483648U,  // LWZ8
00225     2214592512U,  // LWZU
00226     2214592512U,  // LWZU8
00227     2080374830U,  // LWZX
00228     2080374830U,  // LWZX8
00229     1275068416U,  // MCRF
00230     2080374822U,  // MFCR
00231     2080965286U,  // MFCTR
00232     2080965286U,  // MFCTR8
00233     4227859598U,  // MFFS
00234     2080899750U,  // MFLR
00235     2080899750U,  // MFLR8
00236     2081423398U,  // MFOCRF
00237     2080391846U,  // MFVRSAVE
00238     268436996U, // MFVSCR
00239     2080375072U,  // MTCRF
00240     2080965542U,  // MTCTR
00241     2080965542U,  // MTCTR8
00242     4227858572U,  // MTFSB0
00243     4227858508U,  // MTFSB1
00244     4227859854U,  // MTFSF
00245     2080900006U,  // MTLR
00246     2080900006U,  // MTLR8
00247     2080392102U,  // MTVRSAVE
00248     268437060U, // MTVSCR
00249     2080374930U,  // MULHD
00250     2080374802U,  // MULHDU
00251     2080374934U,  // MULHW
00252     2080374806U,  // MULHWU
00253     2080375250U,  // MULLD
00254     469762048U, // MULLI
00255     2080375254U,  // MULLW
00256     0U, // MovePCtoLR
00257     0U, // MovePCtoLR8
00258     2080375736U,  // NAND
00259     2080375736U,  // NAND8
00260     2080374992U,  // NEG
00261     2080374992U,  // NEG8
00262     1610612736U,  // NOP
00263     2080375032U,  // NOR
00264     2080375032U,  // NOR8
00265     2080375672U,  // OR
00266     2080375672U,  // OR4To8
00267     2080375672U,  // OR8
00268     2080375672U,  // OR8To4
00269     2080375608U,  // ORC
00270     2080375608U,  // ORC8
00271     1610612736U,  // ORI
00272     1610612736U,  // ORI8
00273     1677721600U,  // ORIS
00274     1677721600U,  // ORIS8
00275     2013265920U,  // RLDCL
00276     2013265920U,  // RLDICL
00277     2013265924U,  // RLDICR
00278     2013265932U,  // RLDIMI
00279     1342177280U,  // RLWIMI
00280     1409286144U,  // RLWINM
00281     1409286145U,  // RLWINMo
00282     1543503872U,  // RLWNM
00283     0U, // SELECT_CC_F4
00284     0U, // SELECT_CC_F8
00285     0U, // SELECT_CC_I4
00286     0U, // SELECT_CC_I8
00287     0U, // SELECT_CC_VRRC
00288     2080374838U,  // SLD
00289     2080374832U,  // SLW
00290     0U, // SPILL_CR
00291     2080376372U,  // SRAD
00292     2080376436U,  // SRADI
00293     2080376368U,  // SRAW
00294     2080376432U,  // SRAWI
00295     2080375862U,  // SRD
00296     2080375856U,  // SRW
00297     2550136832U,  // STB
00298     2550136832U,  // STB8
00299     2617245696U,  // STBU
00300     2550136832U,  // STBU8
00301     2080375214U,  // STBX
00302     2080375214U,  // STBX8
00303     4160749568U,  // STD
00304     2080375213U,  // STDCX
00305     4160749569U,  // STDU
00306     2080375146U,  // STDUX
00307     2080375082U,  // STDX
00308     2080375082U,  // STDX_32
00309     4160749568U,  // STD_32
00310     3623878656U,  // STFD
00311     2483027968U,  // STFDU
00312     2080376238U,  // STFDX
00313     2080376750U,  // STFIWX
00314     3489660928U,  // STFS
00315     2483027968U,  // STFSU
00316     2080376110U,  // STFSX
00317     2952790016U,  // STH
00318     2952790016U,  // STH8
00319     2080376620U,  // STHBRX
00320     3019898880U,  // STHU
00321     3019898880U,  // STHU8
00322     2080375598U,  // STHX
00323     2080375598U,  // STHX8
00324     2080375054U,  // STVEBX
00325     2080375118U,  // STVEHX
00326     2080375182U,  // STVEWX
00327     2080375246U,  // STVX
00328     2080375758U,  // STVXL
00329     2415919104U,  // STW
00330     2415919104U,  // STW8
00331     2080376108U,  // STWBRX
00332     2080375085U,  // STWCX
00333     2483027968U,  // STWU
00334     2483027968U,  // STWU8
00335     2080375150U,  // STWUX
00336     2080375086U,  // STWX
00337     2080375086U,  // STWX8
00338     2080374864U,  // SUBF
00339     2080374864U,  // SUBF8
00340     2080374800U,  // SUBFC
00341     2080374800U,  // SUBFC8
00342     2080375056U,  // SUBFE
00343     2080375056U,  // SUBFE8
00344     536870912U, // SUBFIC
00345     536870912U, // SUBFIC8
00346     2080375248U,  // SUBFME
00347     2080375248U,  // SUBFME8
00348     2080375184U,  // SUBFZE
00349     2080375184U,  // SUBFZE8
00350     2080375980U,  // SYNC
00351     1207959552U,  // TAILB
00352     1207959552U,  // TAILB8
00353     1207959552U,  // TAILBA
00354     1207959552U,  // TAILBA8
00355     1317012512U,  // TAILBCTR
00356     1317012512U,  // TAILBCTR8
00357     0U, // TCRETURNai
00358     0U, // TCRETURNai8
00359     0U, // TCRETURNdi
00360     0U, // TCRETURNdi8
00361     0U, // TCRETURNri
00362     0U, // TCRETURNri8
00363     2145386504U,  // TRAP
00364     0U, // UPDATE_VRSAVE
00365     268435840U, // VADDCUW
00366     268435466U, // VADDFP
00367     268436224U, // VADDSBS
00368     268436288U, // VADDSHS
00369     268436352U, // VADDSWS
00370     268435456U, // VADDUBM
00371     268435968U, // VADDUBS
00372     268435520U, // VADDUHM
00373     268436032U, // VADDUHS
00374     268435584U, // VADDUWM
00375     268436096U, // VADDUWS
00376     268436484U, // VAND
00377     268436548U, // VANDC
00378     268436738U, // VAVGSB
00379     268436802U, // VAVGSH
00380     268436866U, // VAVGSW
00381     268436482U, // VAVGUB
00382     268436546U, // VAVGUH
00383     268436610U, // VAVGUW
00384     268436298U, // VCFSX
00385     268436234U, // VCFUX
00386     268436422U, // VCMPBFP
00387     268437446U, // VCMPBFPo
00388     268435654U, // VCMPEQFP
00389     268436678U, // VCMPEQFPo
00390     268435462U, // VCMPEQUB
00391     268436486U, // VCMPEQUBo
00392     268435526U, // VCMPEQUH
00393     268436550U, // VCMPEQUHo
00394     268435590U, // VCMPEQUW
00395     268436614U, // VCMPEQUWo
00396     268435910U, // VCMPGEFP
00397     268436934U, // VCMPGEFPo
00398     268436166U, // VCMPGTFP
00399     268437190U, // VCMPGTFPo
00400     268436230U, // VCMPGTSB
00401     268437254U, // VCMPGTSBo
00402     268436294U, // VCMPGTSH
00403     268437318U, // VCMPGTSHo
00404     268436358U, // VCMPGTSW
00405     268437382U, // VCMPGTSWo
00406     268435974U, // VCMPGTUB
00407     268436998U, // VCMPGTUBo
00408     268436038U, // VCMPGTUH
00409     268437062U, // VCMPGTUHo
00410     268436102U, // VCMPGTUW
00411     268437126U, // VCMPGTUWo
00412     268436426U, // VCTSXS
00413     268436362U, // VCTUXS
00414     268435850U, // VEXPTEFP
00415     268435914U, // VLOGEFP
00416     268435502U, // VMADDFP
00417     268436490U, // VMAXFP
00418     268435714U, // VMAXSB
00419     268435778U, // VMAXSH
00420     268435842U, // VMAXSW
00421     268435458U, // VMAXUB
00422     268435522U, // VMAXUH
00423     268435586U, // VMAXUW
00424     268435488U, // VMHADDSHS
00425     268435489U, // VMHRADDSHS
00426     268436554U, // VMINFP
00427     268436226U, // VMINSB
00428     268436290U, // VMINSH
00429     268436354U, // VMINSW
00430     268435970U, // VMINUB
00431     268436034U, // VMINUH
00432     268436098U, // VMINUW
00433     268435490U, // VMLADDUHM
00434     268435468U, // VMRGHB
00435     268435532U, // VMRGHH
00436     268435596U, // VMRGHW
00437     268435724U, // VMRGLB
00438     268435788U, // VMRGLH
00439     268435852U, // VMRGLW
00440     268435493U, // VMSUMMBM
00441     268435496U, // VMSUMSHM
00442     268435497U, // VMSUMSHS
00443     268435492U, // VMSUMUBM
00444     268435494U, // VMSUMUHM
00445     268435495U, // VMSUMUHS
00446     268436232U, // VMULESB
00447     268436296U, // VMULESH
00448     268435976U, // VMULEUB
00449     268436040U, // VMULEUH
00450     268435720U, // VMULOSB
00451     268435784U, // VMULOSH
00452     268435464U, // VMULOUB
00453     268435528U, // VMULOUH
00454     268435503U, // VNMSUBFP
00455     268436740U, // VNOR
00456     268436612U, // VOR
00457     268435499U, // VPERM
00458     268436238U, // VPKPX
00459     268435854U, // VPKSHSS
00460     268435726U, // VPKSHUS
00461     268435918U, // VPKSWSS
00462     268435790U, // VPKSWUS
00463     268435470U, // VPKUHUM
00464     268435598U, // VPKUHUS
00465     268435534U, // VPKUWUM
00466     268435662U, // VPKUWUS
00467     268435722U, // VREFP
00468     268436170U, // VRFIM
00469     268435978U, // VRFIN
00470     268436106U, // VRFIP
00471     268436042U, // VRFIZ
00472     268435460U, // VRLB
00473     268435524U, // VRLH
00474     268435588U, // VRLW
00475     268435786U, // VRSQRTEFP
00476     268435498U, // VSEL
00477     268435908U, // VSL
00478     268435716U, // VSLB
00479     268435500U, // VSLDOI
00480     268435780U, // VSLH
00481     268436492U, // VSLO
00482     268435844U, // VSLW
00483     268435980U, // VSPLTB
00484     268436044U, // VSPLTH
00485     268436236U, // VSPLTISB
00486     268436300U, // VSPLTISH
00487     268436364U, // VSPLTISW
00488     268436108U, // VSPLTW
00489     268436164U, // VSR
00490     268436228U, // VSRAB
00491     268436292U, // VSRAH
00492     268436356U, // VSRAW
00493     268435972U, // VSRB
00494     268436036U, // VSRH
00495     268436556U, // VSRO
00496     268436100U, // VSRW
00497     268435530U, // VSUBCUW
00498     268435530U, // VSUBFP
00499     268437248U, // VSUBSBS
00500     268437312U, // VSUBSHS
00501     268437376U, // VSUBSWS
00502     268436480U, // VSUBUBM
00503     268436992U, // VSUBUBS
00504     268436544U, // VSUBUHM
00505     268437056U, // VSUBUHS
00506     268436608U, // VSUBUWM
00507     268437120U, // VSUBUWS
00508     268437128U, // VSUM2SWS
00509     268437128U, // VSUM4SBS
00510     268437064U, // VSUM4SHS
00511     268437000U, // VSUM4UBS
00512     268437384U, // VSUMSWS
00513     268436302U, // VUPKHPX
00514     268435982U, // VUPKHSB
00515     268436046U, // VUPKHSH
00516     268436430U, // VUPKLPX
00517     268436110U, // VUPKLSB
00518     268436174U, // VUPKLSH
00519     268436676U, // VXOR
00520     268436676U, // V_SET0
00521     2080375416U,  // XOR
00522     2080375416U,  // XOR8
00523     1744830464U,  // XORI
00524     1744830464U,  // XORI8
00525     1811939328U,  // XORIS
00526     1811939328U,  // XORIS8
00527     0U
00528   };
00529   const unsigned opcode = MI.getOpcode();
00530   unsigned Value = InstBits[opcode];
00531   unsigned op = 0;
00532   op = op;  // suppress warning
00533   switch (opcode) {
00534     case PPC::ADJCALLSTACKDOWN:
00535     case PPC::ADJCALLSTACKUP:
00536     case PPC::ATOMIC_CMP_SWAP_I16:
00537     case PPC::ATOMIC_CMP_SWAP_I32:
00538     case PPC::ATOMIC_CMP_SWAP_I64:
00539     case PPC::ATOMIC_CMP_SWAP_I8:
00540     case PPC::ATOMIC_LOAD_ADD_I16:
00541     case PPC::ATOMIC_LOAD_ADD_I32:
00542     case PPC::ATOMIC_LOAD_ADD_I64:
00543     case PPC::ATOMIC_LOAD_ADD_I8:
00544     case PPC::ATOMIC_LOAD_AND_I16:
00545     case PPC::ATOMIC_LOAD_AND_I32:
00546     case PPC::ATOMIC_LOAD_AND_I64:
00547     case PPC::ATOMIC_LOAD_AND_I8:
00548     case PPC::ATOMIC_LOAD_NAND_I16:
00549     case PPC::ATOMIC_LOAD_NAND_I32:
00550     case PPC::ATOMIC_LOAD_NAND_I64:
00551     case PPC::ATOMIC_LOAD_NAND_I8:
00552     case PPC::ATOMIC_LOAD_OR_I16:
00553     case PPC::ATOMIC_LOAD_OR_I32:
00554     case PPC::ATOMIC_LOAD_OR_I64:
00555     case PPC::ATOMIC_LOAD_OR_I8:
00556     case PPC::ATOMIC_LOAD_SUB_I16:
00557     case PPC::ATOMIC_LOAD_SUB_I32:
00558     case PPC::ATOMIC_LOAD_SUB_I64:
00559     case PPC::ATOMIC_LOAD_SUB_I8:
00560     case PPC::ATOMIC_LOAD_XOR_I16:
00561     case PPC::ATOMIC_LOAD_XOR_I32:
00562     case PPC::ATOMIC_LOAD_XOR_I64:
00563     case PPC::ATOMIC_LOAD_XOR_I8:
00564     case PPC::ATOMIC_SWAP_I16:
00565     case PPC::ATOMIC_SWAP_I32:
00566     case PPC::ATOMIC_SWAP_I64:
00567     case PPC::ATOMIC_SWAP_I8:
00568     case PPC::BCTR:
00569     case PPC::BCTRL8_ELF:
00570     case PPC::BCTRL8_Macho:
00571     case PPC::BCTRL_ELF:
00572     case PPC::BCTRL_Macho:
00573     case PPC::DWARF_LOC:
00574     case PPC::DYNALLOC:
00575     case PPC::DYNALLOC8:
00576     case PPC::MovePCtoLR:
00577     case PPC::MovePCtoLR8:
00578     case PPC::NOP:
00579     case PPC::SELECT_CC_F4:
00580     case PPC::SELECT_CC_F8:
00581     case PPC::SELECT_CC_I4:
00582     case PPC::SELECT_CC_I8:
00583     case PPC::SELECT_CC_VRRC:
00584     case PPC::SPILL_CR:
00585     case PPC::SYNC:
00586     case PPC::TAILBCTR:
00587     case PPC::TAILBCTR8:
00588     case PPC::TCRETURNai:
00589     case PPC::TCRETURNai8:
00590     case PPC::TCRETURNdi:
00591     case PPC::TCRETURNdi8:
00592     case PPC::TCRETURNri:
00593     case PPC::TCRETURNri8:
00594     case PPC::TRAP:
00595     case PPC::UPDATE_VRSAVE: {
00596       break;
00597     }
00598     case PPC::DCBA:
00599     case PPC::DCBF:
00600     case PPC::DCBI:
00601     case PPC::DCBST:
00602     case PPC::DCBT:
00603     case PPC::DCBTST:
00604     case PPC::DCBZ:
00605     case PPC::DCBZL: {
00606       // op: A
00607       op = getMachineOpValue(MI, MI.getOperand(0));
00608       Value |= (op & 31U) << 16;
00609       // op: B
00610       op = getMachineOpValue(MI, MI.getOperand(1));
00611       Value |= (op & 31U) << 11;
00612       break;
00613     }
00614     case PPC::SRADI: {
00615       // op: A
00616       op = getMachineOpValue(MI, MI.getOperand(0));
00617       Value |= (op & 31U) << 16;
00618       // op: RS
00619       op = getMachineOpValue(MI, MI.getOperand(1));
00620       Value |= (op & 31U) << 21;
00621       // op: SH
00622       op = getMachineOpValue(MI, MI.getOperand(2));
00623       Value |= (op & 31U) << 11;
00624       Value |= (op & 32U) >> 4;
00625       break;
00626     }
00627     case PPC::CNTLZD:
00628     case PPC::CNTLZW:
00629     case PPC::EXTSB:
00630     case PPC::EXTSB8:
00631     case PPC::EXTSH:
00632     case PPC::EXTSH8:
00633     case PPC::EXTSW:
00634     case PPC::EXTSW_32:
00635     case PPC::EXTSW_32_64: {
00636       // op: A
00637       op = getMachineOpValue(MI, MI.getOperand(0));
00638       Value |= (op & 31U) << 16;
00639       // op: RST
00640       op = getMachineOpValue(MI, MI.getOperand(1));
00641       Value |= (op & 31U) << 21;
00642       break;
00643     }
00644     case PPC::AND:
00645     case PPC::AND8:
00646     case PPC::ANDC:
00647     case PPC::ANDC8:
00648     case PPC::EQV:
00649     case PPC::EQV8:
00650     case PPC::NAND:
00651     case PPC::NAND8:
00652     case PPC::NOR:
00653     case PPC::NOR8:
00654     case PPC::OR:
00655     case PPC::OR4To8:
00656     case PPC::OR8:
00657     case PPC::OR8To4:
00658     case PPC::ORC:
00659     case PPC::ORC8:
00660     case PPC::SLD:
00661     case PPC::SLW:
00662     case PPC::SRAD:
00663     case PPC::SRAW:
00664     case PPC::SRAWI:
00665     case PPC::SRD:
00666     case PPC::SRW:
00667     case PPC::XOR:
00668     case PPC::XOR8: {
00669       // op: A
00670       op = getMachineOpValue(MI, MI.getOperand(0));
00671       Value |= (op & 31U) << 16;
00672       // op: RST
00673       op = getMachineOpValue(MI, MI.getOperand(1));
00674       Value |= (op & 31U) << 21;
00675       // op: B
00676       op = getMachineOpValue(MI, MI.getOperand(2));
00677       Value |= (op & 31U) << 11;
00678       break;
00679     }
00680     case PPC::ADDI:
00681     case PPC::ADDI8:
00682     case PPC::ADDIC:
00683     case PPC::ADDICo:
00684     case PPC::ADDIS:
00685     case PPC::ADDIS8:
00686     case PPC::LA:
00687     case PPC::MULLI:
00688     case PPC::SUBFIC:
00689     case PPC::SUBFIC8: {
00690       // op: A
00691       op = getMachineOpValue(MI, MI.getOperand(0));
00692       Value |= (op & 31U) << 21;
00693       // op: B
00694       op = getMachineOpValue(MI, MI.getOperand(1));
00695       Value |= (op & 31U) << 16;
00696       // op: C
00697       op = getMachineOpValue(MI, MI.getOperand(2));
00698       Value |= op & 65535U;
00699       break;
00700     }
00701     case PPC::LI:
00702     case PPC::LI8:
00703     case PPC::LIS:
00704     case PPC::LIS8: {
00705       // op: A
00706       op = getMachineOpValue(MI, MI.getOperand(0));
00707       Value |= (op & 31U) << 21;
00708       // op: B
00709       op = getMachineOpValue(MI, MI.getOperand(1));
00710       Value |= op & 65535U;
00711       break;
00712     }
00713     case PPC::LBZ:
00714     case PPC::LBZ8:
00715     case PPC::LFD:
00716     case PPC::LFS:
00717     case PPC::LHA:
00718     case PPC::LHA8:
00719     case PPC::LHZ:
00720     case PPC::LHZ8:
00721     case PPC::LWZ:
00722     case PPC::LWZ8:
00723     case PPC::STB:
00724     case PPC::STB8:
00725     case PPC::STFD:
00726     case PPC::STFS:
00727     case PPC::STH:
00728     case PPC::STH8:
00729     case PPC::STW:
00730     case PPC::STW8: {
00731       // op: A
00732       op = getMachineOpValue(MI, MI.getOperand(0));
00733       Value |= (op & 31U) << 21;
00734       // op: C
00735       op = getMachineOpValue(MI, MI.getOperand(1));
00736       Value |= op & 65535U;
00737       // op: B
00738       op = getMachineOpValue(MI, MI.getOperand(2));
00739       Value |= (op & 31U) << 16;
00740       break;
00741     }
00742     case PPC::LBZU:
00743     case PPC::LBZU8:
00744     case PPC::LFDU:
00745     case PPC::LFSU:
00746     case PPC::LHAU:
00747     case PPC::LHAU8:
00748     case PPC::LHZU:
00749     case PPC::LHZU8:
00750     case PPC::LWZU:
00751     case PPC::LWZU8: {
00752       // op: A
00753       op = getMachineOpValue(MI, MI.getOperand(0));
00754       Value |= (op & 31U) << 21;
00755       // op: C
00756       op = getMachineOpValue(MI, MI.getOperand(2));
00757       Value |= op & 65535U;
00758       // op: B
00759       op = getMachineOpValue(MI, MI.getOperand(3));
00760       Value |= (op & 31U) << 16;
00761       break;
00762     }
00763     case PPC::STBU:
00764     case PPC::STBU8:
00765     case PPC::STFDU:
00766     case PPC::STFSU:
00767     case PPC::STHU:
00768     case PPC::STHU8:
00769     case PPC::STWU:
00770     case PPC::STWU8: {
00771       // op: A
00772       op = getMachineOpValue(MI, MI.getOperand(1));
00773       Value |= (op & 31U) << 21;
00774       // op: C
00775       op = getMachineOpValue(MI, MI.getOperand(2));
00776       Value |= op & 65535U;
00777       // op: B
00778       op = getMachineOpValue(MI, MI.getOperand(3));
00779       Value |= (op & 31U) << 16;
00780       break;
00781     }
00782     case PPC::ANDISo:
00783     case PPC::ANDISo8:
00784     case PPC::ANDIo:
00785     case PPC::ANDIo8:
00786     case PPC::ORI:
00787     case PPC::ORI8:
00788     case PPC::ORIS:
00789     case PPC::ORIS8:
00790     case PPC::XORI:
00791     case PPC::XORI8:
00792     case PPC::XORIS:
00793     case PPC::XORIS8: {
00794       // op: B
00795       op = getMachineOpValue(MI, MI.getOperand(0));
00796       Value |= (op & 31U) << 16;
00797       // op: A
00798       op = getMachineOpValue(MI, MI.getOperand(1));
00799       Value |= (op & 31U) << 21;
00800       // op: C
00801       op = getMachineOpValue(MI, MI.getOperand(2));
00802       Value |= op & 65535U;
00803       break;
00804     }
00805     case PPC::MCRF: {
00806       // op: BF
00807       op = getMachineOpValue(MI, MI.getOperand(0));
00808       Value |= (op & 7U) << 23;
00809       // op: BFA
00810       op = getMachineOpValue(MI, MI.getOperand(1));
00811       Value |= (op & 7U) << 18;
00812       break;
00813     }
00814     case PPC::FCMPUD:
00815     case PPC::FCMPUS: {
00816       // op: BF
00817       op = getMachineOpValue(MI, MI.getOperand(0));
00818       Value |= (op & 7U) << 23;
00819       // op: FRA
00820       op = getMachineOpValue(MI, MI.getOperand(1));
00821       Value |= (op & 31U) << 16;
00822       // op: FRB
00823       op = getMachineOpValue(MI, MI.getOperand(2));
00824       Value |= (op & 31U) << 11;
00825       break;
00826     }
00827     case PPC::CMPDI:
00828     case PPC::CMPLDI:
00829     case PPC::CMPLWI:
00830     case PPC::CMPWI: {
00831       // op: BF
00832       op = getMachineOpValue(MI, MI.getOperand(0));
00833       Value |= (op & 7U) << 23;
00834       // op: RA
00835       op = getMachineOpValue(MI, MI.getOperand(1));
00836       Value |= (op & 31U) << 16;
00837       // op: I
00838       op = getMachineOpValue(MI, MI.getOperand(2));
00839       Value |= op & 65535U;
00840       break;
00841     }
00842     case PPC::CMPD:
00843     case PPC::CMPLD:
00844     case PPC::CMPLW:
00845     case PPC::CMPW: {
00846       // op: BF
00847       op = getMachineOpValue(MI, MI.getOperand(0));
00848       Value |= (op & 7U) << 23;
00849       // op: RA
00850       op = getMachineOpValue(MI, MI.getOperand(1));
00851       Value |= (op & 31U) << 16;
00852       // op: RB
00853       op = getMachineOpValue(MI, MI.getOperand(2));
00854       Value |= (op & 31U) << 11;
00855       break;
00856     }
00857     case PPC::BCC: {
00858       // op: BIBO
00859       op = getMachineOpValue(MI, MI.getOperand(0));
00860       Value |= (op & 31U) << 21;
00861       Value |= (op & 96U) << 11;
00862       // op: CR
00863       op = getMachineOpValue(MI, MI.getOperand(1));
00864       Value |= (op & 7U) << 18;
00865       // op: BD
00866       op = getMachineOpValue(MI, MI.getOperand(2));
00867       Value |= (op & 16383U) << 2;
00868       break;
00869     }
00870     case PPC::BLR: {
00871       // op: BIBO
00872       op = getMachineOpValue(MI, MI.getOperand(0));
00873       Value |= (op & 4U) << 23;
00874       Value |= (op & 8U) << 21;
00875       Value |= (op & 16U) << 19;
00876       Value |= (op & 32U) << 17;
00877       Value |= (op & 64U) << 15;
00878       Value |= (op & 3U) << 16;
00879       // op: CR
00880       op = getMachineOpValue(MI, MI.getOperand(1));
00881       Value |= (op & 1U) << 20;
00882       Value |= (op & 2U) << 18;
00883       Value |= (op & 4U) << 16;
00884       break;
00885     }
00886     case PPC::CREQV:
00887     case PPC::CROR: {
00888       // op: CRD
00889       op = getMachineOpValue(MI, MI.getOperand(0));
00890       Value |= (op & 31U) << 21;
00891       // op: CRA
00892       op = getMachineOpValue(MI, MI.getOperand(1));
00893       Value |= (op & 31U) << 16;
00894       // op: CRB
00895       op = getMachineOpValue(MI, MI.getOperand(2));
00896       Value |= (op & 31U) << 11;
00897       break;
00898     }
00899     case PPC::CRSET: {
00900       // op: CRD
00901       op = getMachineOpValue(MI, MI.getOperand(0));
00902       Value |= (op & 31U) << 21;
00903       Value |= (op & 31U) << 16;
00904       Value |= (op & 31U) << 11;
00905       break;
00906     }
00907     case PPC::MTFSF: {
00908       // op: FM
00909       op = getMachineOpValue(MI, MI.getOperand(0));
00910       Value |= (op & 255U) << 17;
00911       // op: RT
00912       op = getMachineOpValue(MI, MI.getOperand(1));
00913       Value |= (op & 31U) << 11;
00914       break;
00915     }
00916     case PPC::MTFSB0:
00917     case PPC::MTFSB1: {
00918       // op: FM
00919       op = getMachineOpValue(MI, MI.getOperand(0));
00920       Value |= (op & 31U) << 21;
00921       break;
00922     }
00923     case PPC::FADD:
00924     case PPC::FADDS:
00925     case PPC::FADDrtz:
00926     case PPC::FDIV:
00927     case PPC::FDIVS:
00928     case PPC::FSUB:
00929     case PPC::FSUBS: {
00930       // op: FRT
00931       op = getMachineOpValue(MI, MI.getOperand(0));
00932       Value |= (op & 31U) << 21;
00933       // op: FRA
00934       op = getMachineOpValue(MI, MI.getOperand(1));
00935       Value |= (op & 31U) << 16;
00936       // op: FRB
00937       op = getMachineOpValue(MI, MI.getOperand(2));
00938       Value |= (op & 31U) << 11;
00939       break;
00940     }
00941     case PPC::FMUL:
00942     case PPC::FMULS: {
00943       // op: FRT
00944       op = getMachineOpValue(MI, MI.getOperand(0));
00945       Value |= (op & 31U) << 21;
00946       // op: FRA
00947       op = getMachineOpValue(MI, MI.getOperand(1));
00948       Value |= (op & 31U) << 16;
00949       // op: FRC
00950       op = getMachineOpValue(MI, MI.getOperand(2));
00951       Value |= (op & 31U) << 6;
00952       break;
00953     }
00954     case PPC::FMADD:
00955     case PPC::FMADDS:
00956     case PPC::FMSUB:
00957     case PPC::FMSUBS:
00958     case PPC::FNMADD:
00959     case PPC::FNMADDS:
00960     case PPC::FNMSUB:
00961     case PPC::FNMSUBS:
00962     case PPC::FSELD:
00963     case PPC::FSELS: {
00964       // op: FRT
00965       op = getMachineOpValue(MI, MI.getOperand(0));
00966       Value |= (op & 31U) << 21;
00967       // op: FRA
00968       op = getMachineOpValue(MI, MI.getOperand(1));
00969       Value |= (op & 31U) << 16;
00970       // op: FRC
00971       op = getMachineOpValue(MI, MI.getOperand(2));
00972       Value |= (op & 31U) << 6;
00973       // op: FRB
00974       op = getMachineOpValue(MI, MI.getOperand(3));
00975       Value |= (op & 31U) << 11;
00976       break;
00977     }
00978     case PPC::MTCRF: {
00979       // op: FXM
00980       op = getMachineOpValue(MI, MI.getOperand(0));
00981       Value |= (op & 255U) << 12;
00982       // op: ST
00983       op = getMachineOpValue(MI, MI.getOperand(1));
00984       Value |= (op & 31U) << 21;
00985       break;
00986     }
00987     case PPC::B:
00988     case PPC::BL8_ELF:
00989     case PPC::BL8_Macho:
00990     case PPC::BLA8_ELF:
00991     case PPC::BLA8_Macho:
00992     case PPC::BLA_ELF:
00993     case PPC::BLA_Macho:
00994     case PPC::BL_ELF:
00995     case PPC::BL_Macho:
00996     case PPC::TAILB:
00997     case PPC::TAILB8:
00998     case PPC::TAILBA:
00999     case PPC::TAILBA8: {
01000       // op: LI
01001       op = getMachineOpValue(MI, MI.getOperand(0));
01002       Value |= (op & 16777215U) << 2;
01003       break;
01004     }
01005     case PPC::RLWINM:
01006     case PPC::RLWINMo:
01007     case PPC::RLWNM: {
01008       // op: RA
01009       op = getMachineOpValue(MI, MI.getOperand(0));
01010       Value |= (op & 31U) << 16;
01011       // op: RS
01012       op = getMachineOpValue(MI, MI.getOperand(1));
01013       Value |= (op & 31U) << 21;
01014       // op: RB
01015       op = getMachineOpValue(MI, MI.getOperand(2));
01016       Value |= (op & 31U) << 11;
01017       // op: MB
01018       op = getMachineOpValue(MI, MI.getOperand(3));
01019       Value |= (op & 31U) << 6;
01020       // op: ME
01021       op = getMachineOpValue(MI, MI.getOperand(4));
01022       Value |= (op & 31U) << 1;
01023       break;
01024     }
01025     case PPC::RLDCL:
01026     case PPC::RLDICL:
01027     case PPC::RLDICR: {
01028       // op: RA
01029       op = getMachineOpValue(MI, MI.getOperand(0));
01030       Value |= (op & 31U) << 16;
01031       // op: RS
01032       op = getMachineOpValue(MI, MI.getOperand(1));
01033       Value |= (op & 31U) << 21;
01034       // op: SH
01035       op = getMachineOpValue(MI, MI.getOperand(2));
01036       Value |= (op & 31U) << 11;
01037       Value |= (op & 32U) >> 4;
01038       // op: MBE
01039       op = getMachineOpValue(MI, MI.getOperand(3));
01040       Value |= (op & 31U) << 6;
01041       Value |= op & 32U;
01042       break;
01043     }
01044     case PPC::RLWIMI: {
01045       // op: RA
01046       op = getMachineOpValue(MI, MI.getOperand(0));
01047       Value |= (op & 31U) << 16;
01048       // op: RS
01049       op = getMachineOpValue(MI, MI.getOperand(2));
01050       Value |= (op & 31U) << 21;
01051       // op: RB
01052       op = getMachineOpValue(MI, MI.getOperand(3));
01053       Value |= (op & 31U) << 11;
01054       // op: MB
01055       op = getMachineOpValue(MI, MI.getOperand(4));
01056       Value |= (op & 31U) << 6;
01057       // op: ME
01058       op = getMachineOpValue(MI, MI.getOperand(5));
01059       Value |= (op & 31U) << 1;
01060       break;
01061     }
01062     case PPC::RLDIMI: {
01063       // op: RA
01064       op = getMachineOpValue(MI, MI.getOperand(0));
01065       Value |= (op & 31U) << 16;
01066       // op: RS
01067       op = getMachineOpValue(MI, MI.getOperand(2));
01068       Value |= (op & 31U) << 21;
01069       // op: SH
01070       op = getMachineOpValue(MI, MI.getOperand(3));
01071       Value |= (op & 31U) << 11;
01072       Value |= (op & 32U) >> 4;
01073       // op: MBE
01074       op = getMachineOpValue(MI, MI.getOperand(4));
01075       Value |= (op & 31U) << 6;
01076       Value |= op & 32U;
01077       break;
01078     }
01079     case PPC::MFFS: {
01080       // op: RST
01081       op = getMachineOpValue(MI, MI.getOperand(0));
01082       Value |= (op & 31U) << 21;
01083       break;
01084     }
01085     case PPC::LBZX:
01086     case PPC::LBZX8:
01087     case PPC::LDARX:
01088     case PPC::LDX:
01089     case PPC::LFDX:
01090     case PPC::LFSX:
01091     case PPC::LHAX:
01092     case PPC::LHAX8:
01093     case PPC::LHBRX:
01094     case PPC::LHZX:
01095     case PPC::LHZX8:
01096     case PPC::LVEBX:
01097     case PPC::LVEHX:
01098     case PPC::LVEWX:
01099     case PPC::LVSL:
01100     case PPC::LVSR:
01101     case PPC::LVX:
01102     case PPC::LVXL:
01103     case PPC::LWARX:
01104     case PPC::LWAX:
01105     case PPC::LWBRX:
01106     case PPC::LWZX:
01107     case PPC::LWZX8:
01108     case PPC::STBX:
01109     case PPC::STBX8:
01110     case PPC::STDCX:
01111     case PPC::STDUX:
01112     case PPC::STDX:
01113     case PPC::STDX_32:
01114     case PPC::STFDX:
01115     case PPC::STFIWX:
01116     case PPC::STFSX:
01117     case PPC::STHBRX:
01118     case PPC::STHX:
01119     case PPC::STHX8:
01120     case PPC::STVEBX:
01121     case PPC::STVEHX:
01122     case PPC::STVEWX:
01123     case PPC::STVX:
01124     case PPC::STVXL:
01125     case PPC::STWBRX:
01126     case PPC::STWCX:
01127     case PPC::STWUX:
01128     case PPC::STWX:
01129     case PPC::STWX8: {
01130       // op: RST
01131       op = getMachineOpValue(MI, MI.getOperand(0));
01132       Value |= (op & 31U) << 21;
01133       // op: A
01134       op = getMachineOpValue(MI, MI.getOperand(1));
01135       Value |= (op & 31U) << 16;
01136       // op: B
01137       op = getMachineOpValue(MI, MI.getOperand(2));
01138       Value |= (op & 31U) << 11;
01139       break;
01140     }
01141     case PPC::FABSD:
01142     case PPC::FABSS:
01143     case PPC::FCFID:
01144     case PPC::FCTIDZ:
01145     case PPC::FCTIWZ:
01146     case PPC::FMRD:
01147     case PPC::FMRS:
01148     case PPC::FMRSD:
01149     case PPC::FNABSD:
01150     case PPC::FNABSS:
01151     case PPC::FNEGD:
01152     case PPC::FNEGS:
01153     case PPC::FRSP:
01154     case PPC::FSQRT:
01155     case PPC::FSQRTS: {
01156       // op: RST
01157       op = getMachineOpValue(MI, MI.getOperand(0));
01158       Value |= (op & 31U) << 21;
01159       // op: B
01160       op = getMachineOpValue(MI, MI.getOperand(1));
01161       Value |= (op & 31U) << 11;
01162       break;
01163     }
01164     case PPC::LD:
01165     case PPC::LWA:
01166     case PPC::STD:
01167     case PPC::STD_32: {
01168       // op: RST
01169       op = getMachineOpValue(MI, MI.getOperand(0));
01170       Value |= (op & 31U) << 21;
01171       // op: DS
01172       op = getMachineOpValue(MI, MI.getOperand(1));
01173       Value |= (op & 16383U) << 2;
01174       // op: RA
01175       op = getMachineOpValue(MI, MI.getOperand(2));
01176       Value |= (op & 31U) << 16;
01177       break;
01178     }
01179     case PPC::LDU: {
01180       // op: RST
01181       op = getMachineOpValue(MI, MI.getOperand(0));
01182       Value |= (op & 31U) << 21;
01183       // op: DS
01184       op = getMachineOpValue(MI, MI.getOperand(2));
01185       Value |= (op & 16383U) << 2;
01186       // op: RA
01187       op = getMachineOpValue(MI, MI.getOperand(3));
01188       Value |= (op & 31U) << 16;
01189       break;
01190     }
01191     case PPC::STDU: {
01192       // op: RST
01193       op = getMachineOpValue(MI, MI.getOperand(1));
01194       Value |= (op & 31U) << 21;
01195       // op: DS
01196       op = getMachineOpValue(MI, MI.getOperand(2));
01197       Value |= (op & 16383U) << 2;
01198       // op: RA
01199       op = getMachineOpValue(MI, MI.getOperand(3));
01200       Value |= (op & 31U) << 16;
01201       break;
01202     }
01203     case PPC::MFCR:
01204     case PPC::MFCTR:
01205     case PPC::MFCTR8:
01206     case PPC::MFLR:
01207     case PPC::MFLR8:
01208     case PPC::MFVRSAVE:
01209     case PPC::MTCTR:
01210     case PPC::MTCTR8:
01211     case PPC::MTLR:
01212     case PPC::MTLR8:
01213     case PPC::MTVRSAVE: {
01214       // op: RT
01215       op = getMachineOpValue(MI, MI.getOperand(0));
01216       Value |= (op & 31U) << 21;
01217       break;
01218     }
01219     case PPC::ADDME:
01220     case PPC::ADDME8:
01221     case PPC::ADDZE:
01222     case PPC::ADDZE8:
01223     case PPC::NEG:
01224     case PPC::NEG8:
01225     case PPC::SUBFME:
01226     case PPC::SUBFME8:
01227     case PPC::SUBFZE:
01228     case PPC::SUBFZE8: {
01229       // op: RT
01230       op = getMachineOpValue(MI, MI.getOperand(0));
01231       Value |= (op & 31U) << 21;
01232       // op: RA
01233       op = getMachineOpValue(MI, MI.getOperand(1));
01234       Value |= (op & 31U) << 16;
01235       break;
01236     }
01237     case PPC::ADD4:
01238     case PPC::ADD8:
01239     case PPC::ADDC:
01240     case PPC::ADDC8:
01241     case PPC::ADDE:
01242     case PPC::ADDE8:
01243     case PPC::DIVD:
01244     case PPC::DIVDU:
01245     case PPC::DIVW:
01246     case PPC::DIVWU:
01247     case PPC::MULHD:
01248     case PPC::MULHDU:
01249     case PPC::MULHW:
01250     case PPC::MULHWU:
01251     case PPC::MULLD:
01252     case PPC::MULLW:
01253     case PPC::SUBF:
01254     case PPC::SUBF8:
01255     case PPC::SUBFC:
01256     case PPC::SUBFC8:
01257     case PPC::SUBFE:
01258     case PPC::SUBFE8: {
01259       // op: RT
01260       op = getMachineOpValue(MI, MI.getOperand(0));
01261       Value |= (op & 31U) << 21;
01262       // op: RA
01263       op = getMachineOpValue(MI, MI.getOperand(1));
01264       Value |= (op & 31U) << 16;
01265       // op: RB
01266       op = getMachineOpValue(MI, MI.getOperand(2));
01267       Value |= (op & 31U) << 11;
01268       break;
01269     }
01270     case PPC::MFOCRF: {
01271       // op: ST
01272       op = getMachineOpValue(MI, MI.getOperand(0));
01273       Value |= (op & 31U) << 21;
01274       // op: FXM
01275       op = getMachineOpValue(MI, MI.getOperand(1));
01276       Value |= (op & 255U) << 12;
01277       break;
01278     }
01279     case PPC::DSS:
01280     case PPC::DSSALL:
01281     case PPC::DST:
01282     case PPC::DST64:
01283     case PPC::DSTST:
01284     case PPC::DSTST64:
01285     case PPC::DSTSTT:
01286     case PPC::DSTSTT64:
01287     case PPC::DSTT:
01288     case PPC::DSTT64: {
01289       // op: T
01290       op = getMachineOpValue(MI, MI.getOperand(0));
01291       Value |= (op & 1U) << 25;
01292       // op: STRM
01293       op = getMachineOpValue(MI, MI.getOperand(1));
01294       Value |= (op & 3U) << 21;
01295       // op: A
01296       op = getMachineOpValue(MI, MI.getOperand(2));
01297       Value |= (op & 31U) << 16;
01298       // op: B
01299       op = getMachineOpValue(MI, MI.getOperand(3));
01300       Value |= (op & 31U) << 11;
01301       break;
01302     }
01303     case PPC::MTVSCR: {
01304       // op: VB
01305       op = getMachineOpValue(MI, MI.getOperand(0));
01306       Value |= (op & 31U) << 11;
01307       break;
01308     }
01309     case PPC::MFVSCR: {
01310       // op: VD
01311       op = getMachineOpValue(MI, MI.getOperand(0));
01312       Value |= (op & 31U) << 21;
01313       break;
01314     }
01315     case PPC::VSPLTISB:
01316     case PPC::VSPLTISH:
01317     case PPC::VSPLTISW: {
01318       // op: VD
01319       op = getMachineOpValue(MI, MI.getOperand(0));
01320       Value |= (op & 31U) << 21;
01321       // op: IMM
01322       op = getMachineOpValue(MI, MI.getOperand(1));
01323       Value |= (op & 31U) << 16;
01324       break;
01325     }
01326     case PPC::VADDCUW:
01327     case PPC::VADDFP:
01328     case PPC::VADDSBS:
01329     case PPC::VADDSHS:
01330     case PPC::VADDSWS:
01331     case PPC::VADDUBM:
01332     case PPC::VADDUBS:
01333     case PPC::VADDUHM:
01334     case PPC::VADDUHS:
01335     case PPC::VADDUWM:
01336     case PPC::VADDUWS:
01337     case PPC::VAND:
01338     case PPC::VANDC:
01339     case PPC::VAVGSB:
01340     case PPC::VAVGSH:
01341     case PPC::VAVGSW:
01342     case PPC::VAVGUB:
01343     case PPC::VAVGUH:
01344     case PPC::VAVGUW:
01345     case PPC::VCFSX:
01346     case PPC::VCFUX:
01347     case PPC::VCMPBFP:
01348     case PPC::VCMPBFPo:
01349     case PPC::VCMPEQFP:
01350     case PPC::VCMPEQFPo:
01351     case PPC::VCMPEQUB:
01352     case PPC::VCMPEQUBo:
01353     case PPC::VCMPEQUH:
01354     case PPC::VCMPEQUHo:
01355     case PPC::VCMPEQUW:
01356     case PPC::VCMPEQUWo:
01357     case PPC::VCMPGEFP:
01358     case PPC::VCMPGEFPo:
01359     case PPC::VCMPGTFP:
01360     case PPC::VCMPGTFPo:
01361     case PPC::VCMPGTSB:
01362     case PPC::VCMPGTSBo:
01363     case PPC::VCMPGTSH:
01364     case PPC::VCMPGTSHo:
01365     case PPC::VCMPGTSW:
01366     case PPC::VCMPGTSWo:
01367     case PPC::VCMPGTUB:
01368     case PPC::VCMPGTUBo:
01369     case PPC::VCMPGTUH:
01370     case PPC::VCMPGTUHo:
01371     case PPC::VCMPGTUW:
01372     case PPC::VCMPGTUWo:
01373     case PPC::VCTSXS:
01374     case PPC::VCTUXS:
01375     case PPC::VMAXFP:
01376     case PPC::VMAXSB:
01377     case PPC::VMAXSH:
01378     case PPC::VMAXSW:
01379     case PPC::VMAXUB:
01380     case PPC::VMAXUH:
01381     case PPC::VMAXUW:
01382     case PPC::VMINFP:
01383     case PPC::VMINSB:
01384     case PPC::VMINSH:
01385     case PPC::VMINSW:
01386     case PPC::VMINUB:
01387     case PPC::VMINUH:
01388     case PPC::VMINUW:
01389     case PPC::VMRGHB:
01390     case PPC::VMRGHH:
01391     case PPC::VMRGHW:
01392     case PPC::VMRGLB:
01393     case PPC::VMRGLH:
01394     case PPC::VMRGLW:
01395     case PPC::VMULESB:
01396     case PPC::VMULESH:
01397     case PPC::VMULEUB:
01398     case PPC::VMULEUH:
01399     case PPC::VMULOSB:
01400     case PPC::VMULOSH:
01401     case PPC::VMULOUB:
01402     case PPC::VMULOUH:
01403     case PPC::VNOR:
01404     case PPC::VOR:
01405     case PPC::VPKPX:
01406     case PPC::VPKSHSS:
01407     case PPC::VPKSHUS:
01408     case PPC::VPKSWSS:
01409     case PPC::VPKSWUS:
01410     case PPC::VPKUHUM:
01411     case PPC::VPKUHUS:
01412     case PPC::VPKUWUM:
01413     case PPC::VPKUWUS:
01414     case PPC::VRLB:
01415     case PPC::VRLH:
01416     case PPC::VRLW:
01417     case PPC::VSL:
01418     case PPC::VSLB:
01419     case PPC::VSLH:
01420     case PPC::VSLO:
01421     case PPC::VSLW:
01422     case PPC::VSPLTB:
01423     case PPC::VSPLTH:
01424     case PPC::VSPLTW:
01425     case PPC::VSR:
01426     case PPC::VSRAB:
01427     case PPC::VSRAH:
01428     case PPC::VSRAW:
01429     case PPC::VSRB:
01430     case PPC::VSRH:
01431     case PPC::VSRO:
01432     case PPC::VSRW:
01433     case PPC::VSUBCUW:
01434     case PPC::VSUBFP:
01435     case PPC::VSUBSBS:
01436     case PPC::VSUBSHS:
01437     case PPC::VSUBSWS:
01438     case PPC::VSUBUBM:
01439     case PPC::VSUBUBS:
01440     case PPC::VSUBUHM:
01441     case PPC::VSUBUHS:
01442     case PPC::VSUBUWM:
01443     case PPC::VSUBUWS:
01444     case PPC::VSUM2SWS:
01445     case PPC::VSUM4SBS:
01446     case PPC::VSUM4SHS:
01447     case PPC::VSUM4UBS:
01448     case PPC::VSUMSWS:
01449     case PPC::VXOR: {
01450       // op: VD
01451       op = getMachineOpValue(MI, MI.getOperand(0));
01452       Value |= (op & 31U) << 21;
01453       // op: VA
01454       op = getMachineOpValue(MI, MI.getOperand(1));
01455       Value |= (op & 31U) << 16;
01456       // op: VB
01457       op = getMachineOpValue(MI, MI.getOperand(2));
01458       Value |= (op & 31U) << 11;
01459       break;
01460     }
01461     case PPC::VSLDOI: {
01462       // op: VD
01463       op = getMachineOpValue(MI, MI.getOperand(0));
01464       Value |= (op & 31U) << 21;
01465       // op: VA
01466       op = getMachineOpValue(MI, MI.getOperand(1));
01467       Value |= (op & 31U) << 16;
01468       // op: VB
01469       op = getMachineOpValue(MI, MI.getOperand(2));
01470       Value |= (op & 31U) << 11;
01471       // op: SH
01472       op = getMachineOpValue(MI, MI.getOperand(3));
01473       Value |= (op & 15U) << 6;
01474       break;
01475     }
01476     case PPC::VMHADDSHS:
01477     case PPC::VMHRADDSHS:
01478     case PPC::VMLADDUHM:
01479     case PPC::VMSUMMBM:
01480     case PPC::VMSUMSHM:
01481     case PPC::VMSUMSHS:
01482     case PPC::VMSUMUBM:
01483     case PPC::VMSUMUHM:
01484     case PPC::VMSUMUHS:
01485     case PPC::VPERM:
01486     case PPC::VSEL: {
01487       // op: VD
01488       op = getMachineOpValue(MI, MI.getOperand(0));
01489       Value |= (op & 31U) << 21;
01490       // op: VA
01491       op = getMachineOpValue(MI, MI.getOperand(1));
01492       Value |= (op & 31U) << 16;
01493       // op: VB
01494       op = getMachineOpValue(MI, MI.getOperand(2));
01495       Value |= (op & 31U) << 11;
01496       // op: VC
01497       op = getMachineOpValue(MI, MI.getOperand(3));
01498       Value |= (op & 31U) << 6;
01499       break;
01500     }
01501     case PPC::VMADDFP:
01502     case PPC::VNMSUBFP: {
01503       // op: VD
01504       op = getMachineOpValue(MI, MI.getOperand(0));
01505       Value |= (op & 31U) << 21;
01506       // op: VA
01507       op = getMachineOpValue(MI, MI.getOperand(1));
01508       Value |= (op & 31U) << 16;
01509       // op: VC
01510       op = getMachineOpValue(MI, MI.getOperand(2));
01511       Value |= (op & 31U) << 6;
01512       // op: VB
01513       op = getMachineOpValue(MI, MI.getOperand(3));
01514       Value |= (op & 31U) << 11;
01515       break;
01516     }
01517     case PPC::VEXPTEFP:
01518     case PPC::VLOGEFP:
01519     case PPC::VREFP:
01520     case PPC::VRFIM:
01521     case PPC::VRFIN:
01522     case PPC::VRFIP:
01523     case PPC::VRFIZ:
01524     case PPC::VRSQRTEFP:
01525     case PPC::VUPKHPX:
01526     case PPC::VUPKHSB:
01527     case PPC::VUPKHSH:
01528     case PPC::VUPKLPX:
01529     case PPC::VUPKLSB:
01530     case PPC::VUPKLSH: {
01531       // op: VD
01532       op = getMachineOpValue(MI, MI.getOperand(0));
01533       Value |= (op & 31U) << 21;
01534       // op: VB
01535       op = getMachineOpValue(MI, MI.getOperand(1));
01536       Value |= (op & 31U) << 11;
01537       break;
01538     }
01539     case PPC::V_SET0: {
01540       // op: VD
01541       op = getMachineOpValue(MI, MI.getOperand(0));
01542       Value |= (op & 31U) << 21;
01543       Value |= (op & 31U) << 16;
01544       Value |= (op & 31U) << 11;
01545       break;
01546     }
01547   default:
01548     cerr << "Not supported instr: " << MI << "\n";
01549     abort();
01550   }
01551   return Value;
01552 }
01553