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(MachineInstr &MI) {
00010   static const unsigned InstBits[] = {
00011     0U,
00012     0U,
00013     2080375316U,
00014     2080375316U,
00015     2080374804U,
00016     2080375060U,
00017     939524096U,
00018     939524096U,
00019     805306368U,
00020     872415232U,
00021     1006632960U,
00022     1006632960U,
00023     2080375252U,
00024     2080375188U,
00025     0U,
00026     0U,
00027     2080374840U,
00028     2080374840U,
00029     2080374904U,
00030     2080374904U,
00031     1946157056U,
00032     1946157056U,
00033     1879048192U,
00034     1879048192U,
00035     1207959552U,
00036     1317012512U,
00037     1317012513U,
00038     1099038720U,
00039     1082130432U,
00040     1098973184U,
00041     1207959553U,
00042     1207959555U,
00043     1082195968U,
00044     1317011488U,
00045     1098907648U,
00046     1082261504U,
00047     1082327040U,
00048     1099104256U,
00049     2082471936U,
00050     740294656U,
00051     2082472000U,
00052     673185792U,
00053     2080374848U,
00054     671088640U,
00055     2080374784U,
00056     738197504U,
00057     2080374836U,
00058     0U,
00059     2080376812U,
00060     2082473964U,
00061     2080375762U,
00062     2080375698U,
00063     2080375766U,
00064     2080375702U,
00065     2080376428U,
00066     2080375468U,
00067     2080375532U,
00068     0U,
00069     0U,
00070     2080375352U,
00071     2080375352U,
00072     2080376692U,
00073     2080376628U,
00074     2080376756U,
00075     2080376756U,
00076     2080376756U,
00077     4227858960U,
00078     4227858960U,
00079     4227858474U,
00080     3959423018U,
00081     4227860124U,
00082     4227858432U,
00083     4227858432U,
00084     4227860062U,
00085     4227858462U,
00086     4227858468U,
00087     3959423012U,
00088     4227858490U,
00089     3959423034U,
00090     4227858576U,
00091     4227858576U,
00092     4227858576U,
00093     4227858488U,
00094     3959423032U,
00095     4227858482U,
00096     3959423026U,
00097     4227858704U,
00098     4227858704U,
00099     4227858512U,
00100     4227858512U,
00101     4227858494U,
00102     3959423038U,
00103     4227858492U,
00104     3959423036U,
00105     4227858456U,
00106     4227858478U,
00107     4227858478U,
00108     4227858476U,
00109     3959423020U,
00110     4227858472U,
00111     3959423016U,
00112     0U,
00113     0U,
00114     0U,
00115     0U,
00116     0U,
00117     939524096U,
00118     2281701376U,
00119     2281701376U,
00120     2080374958U,
00121     2080374958U,
00122     3892314112U,
00123     2080374826U,
00124     3355443200U,
00125     2080375982U,
00126     3221225472U,
00127     2080375854U,
00128     2818572288U,
00129     2818572288U,
00130     2080375470U,
00131     2080375470U,
00132     2080376364U,
00133     2684354560U,
00134     2684354560U,
00135     2080375342U,
00136     2080375342U,
00137     939524096U,
00138     939524096U,
00139     1006632960U,
00140     1006632960U,
00141     2080374798U,
00142     2080374862U,
00143     2080374926U,
00144     2080374796U,
00145     2080374860U,
00146     2080374990U,
00147     2080375502U,
00148     3892314114U,
00149     2080375466U,
00150     2080375852U,
00151     2147483648U,
00152     2147483648U,
00153     2348810240U,
00154     2080374830U,
00155     2080374830U,
00156     1275068416U,
00157     2080374822U,
00158     2080965286U,
00159     2080899750U,
00160     2081423398U,
00161     2080391846U,
00162     268436996U,
00163     2080375072U,
00164     2080965542U,
00165     2080965542U,
00166     2080900006U,
00167     2080392102U,
00168     268437060U,
00169     2080374930U,
00170     2080374802U,
00171     2080374934U,
00172     2080374806U,
00173     2080375250U,
00174     469762048U,
00175     2080375254U,
00176     0U,
00177     2080375736U,
00178     2080375736U,
00179     2080374992U,
00180     1610612736U,
00181     2080375032U,
00182     2080375032U,
00183     2080375672U,
00184     2080375672U,
00185     2080375672U,
00186     2080375672U,
00187     2080375608U,
00188     2080375608U,
00189     1610612736U,
00190     1610612736U,
00191     1677721600U,
00192     1677721600U,
00193     2013265920U,
00194     2013265924U,
00195     2013265932U,
00196     1342177280U,
00197     1409286144U,
00198     1409286145U,
00199     1543503872U,
00200     0U,
00201     0U,
00202     0U,
00203     0U,
00204     0U,
00205     2080374838U,
00206     2080374832U,
00207     2080376372U,
00208     2080376436U,
00209     2080376368U,
00210     2080376432U,
00211     2080375862U,
00212     2080375856U,
00213     2550136832U,
00214     2550136832U,
00215     2080375214U,
00216     2080375214U,
00217     4160749568U,
00218     2080375146U,
00219     2080375082U,
00220     2080375082U,
00221     4160749568U,
00222     3623878656U,
00223     2080376238U,
00224     2080376750U,
00225     3489660928U,
00226     2080376110U,
00227     2952790016U,
00228     2952790016U,
00229     2080376620U,
00230     2080375598U,
00231     2080375598U,
00232     2080375054U,
00233     2080375118U,
00234     2080375182U,
00235     2080375246U,
00236     2080375758U,
00237     2415919104U,
00238     2415919104U,
00239     2080376108U,
00240     2483027968U,
00241     2080375150U,
00242     2080375086U,
00243     2080375086U,
00244     2080374864U,
00245     2080374864U,
00246     2080374800U,
00247     2080375056U,
00248     536870912U,
00249     536870912U,
00250     2080375248U,
00251     2080375184U,
00252     0U,
00253     268435840U,
00254     268435466U,
00255     268436224U,
00256     268436288U,
00257     268436352U,
00258     268435456U,
00259     268435968U,
00260     268435520U,
00261     268436032U,
00262     268435584U,
00263     268436096U,
00264     268436484U,
00265     268436548U,
00266     268436738U,
00267     268436802U,
00268     268436866U,
00269     268436482U,
00270     268436546U,
00271     268436610U,
00272     268436298U,
00273     268436234U,
00274     268436422U,
00275     268437446U,
00276     268435654U,
00277     268436678U,
00278     268435462U,
00279     268436486U,
00280     268435526U,
00281     268436550U,
00282     268435590U,
00283     268436614U,
00284     268435910U,
00285     268436934U,
00286     268436166U,
00287     268437190U,
00288     268436230U,
00289     268437254U,
00290     268436294U,
00291     268437318U,
00292     268436358U,
00293     268437382U,
00294     268435974U,
00295     268436998U,
00296     268436038U,
00297     268437062U,
00298     268436102U,
00299     268437126U,
00300     268436426U,
00301     268436362U,
00302     268435850U,
00303     268435914U,
00304     268435502U,
00305     268436490U,
00306     268435714U,
00307     268435778U,
00308     268435842U,
00309     268435458U,
00310     268435522U,
00311     268435586U,
00312     268435488U,
00313     268435489U,
00314     268436554U,
00315     268436226U,
00316     268436290U,
00317     268436352U,
00318     268435970U,
00319     268436034U,
00320     268436098U,
00321     268435490U,
00322     268435468U,
00323     268435532U,
00324     268435596U,
00325     268435724U,
00326     268435788U,
00327     268435852U,
00328     268435493U,
00329     268435496U,
00330     268435497U,
00331     268435492U,
00332     268435494U,
00333     268435495U,
00334     268436232U,
00335     268436296U,
00336     268435976U,
00337     268436040U,
00338     268435720U,
00339     268435784U,
00340     268435464U,
00341     268435528U,
00342     268435503U,
00343     268436740U,
00344     268436612U,
00345     268435499U,
00346     268436238U,
00347     268435854U,
00348     268435726U,
00349     268435918U,
00350     268435790U,
00351     268435470U,
00352     268435598U,
00353     268435534U,
00354     268435662U,
00355     268435722U,
00356     268436170U,
00357     268435978U,
00358     268436106U,
00359     268436042U,
00360     268435460U,
00361     268435524U,
00362     268435588U,
00363     268435786U,
00364     268435498U,
00365     268435908U,
00366     268435716U,
00367     268435500U,
00368     268435780U,
00369     268436492U,
00370     268435844U,
00371     268435980U,
00372     268436044U,
00373     268436236U,
00374     268436300U,
00375     268436364U,
00376     268436108U,
00377     268436164U,
00378     268436228U,
00379     268436292U,
00380     268436356U,
00381     268435972U,
00382     268436036U,
00383     268436556U,
00384     268436100U,
00385     268435530U,
00386     268435530U,
00387     268437248U,
00388     268437312U,
00389     268437376U,
00390     268436480U,
00391     268436992U,
00392     268436544U,
00393     268437056U,
00394     268436608U,
00395     268437120U,
00396     268437128U,
00397     268437128U,
00398     268437064U,
00399     268437000U,
00400     268437384U,
00401     268436302U,
00402     268435982U,
00403     268436046U,
00404     268436430U,
00405     268436110U,
00406     268436174U,
00407     268436676U,
00408     268436676U,
00409     2080375416U,
00410     2080375416U,
00411     1744830464U,
00412     1744830464U,
00413     1811939328U,
00414     1811939328U
00415   };
00416   const unsigned opcode = MI.getOpcode();
00417   unsigned Value = InstBits[opcode];
00418   unsigned op;
00419   switch (opcode) {
00420     case PPC::ADJCALLSTACKDOWN:
00421     case PPC::ADJCALLSTACKUP:
00422     case PPC::BCTR:
00423     case PPC::BCTRL:
00424     case PPC::BLR:
00425     case PPC::COND_BRANCH:
00426     case PPC::DWARF_LABEL:
00427     case PPC::DWARF_LOC:
00428     case PPC::IMPLICIT_DEF_F4:
00429     case PPC::IMPLICIT_DEF_F8:
00430     case PPC::IMPLICIT_DEF_G8RC:
00431     case PPC::IMPLICIT_DEF_GPRC:
00432     case PPC::IMPLICIT_DEF_VRRC:
00433     case PPC::MovePCtoLR:
00434     case PPC::NOP:
00435     case PPC::SELECT_CC_F4:
00436     case PPC::SELECT_CC_F8:
00437     case PPC::SELECT_CC_I4:
00438     case PPC::SELECT_CC_I8:
00439     case PPC::SELECT_CC_VRRC:
00440     case PPC::UPDATE_VRSAVE: {
00441       break;
00442     }
00443     case PPC::DCBZ:
00444     case PPC::DCBZL: {
00445       // op: A
00446       op = getMachineOpValue(MI, MI.getOperand(0));
00447       Value |= (op & 31U) << 16;
00448       // op: B
00449       op = getMachineOpValue(MI, MI.getOperand(1));
00450       Value |= (op & 31U) << 11;
00451       break;
00452     }
00453     case PPC::CNTLZW:
00454     case PPC::EXTSB:
00455     case PPC::EXTSH:
00456     case PPC::EXTSW:
00457     case PPC::EXTSW_32:
00458     case PPC::EXTSW_32_64: {
00459       // op: A
00460       op = getMachineOpValue(MI, MI.getOperand(0));
00461       Value |= (op & 31U) << 16;
00462       // op: RST
00463       op = getMachineOpValue(MI, MI.getOperand(1));
00464       Value |= (op & 31U) << 21;
00465       break;
00466     }
00467     case PPC::AND:
00468     case PPC::AND8:
00469     case PPC::ANDC:
00470     case PPC::ANDC8:
00471     case PPC::EQV:
00472     case PPC::EQV8:
00473     case PPC::NAND:
00474     case PPC::NAND8:
00475     case PPC::NOR:
00476     case PPC::NOR8:
00477     case PPC::OR:
00478     case PPC::OR4To8:
00479     case PPC::OR8:
00480     case PPC::OR8To4:
00481     case PPC::ORC:
00482     case PPC::ORC8:
00483     case PPC::SLD:
00484     case PPC::SLW:
00485     case PPC::SRAD:
00486     case PPC::SRAW:
00487     case PPC::SRAWI:
00488     case PPC::SRD:
00489     case PPC::SRW:
00490     case PPC::XOR:
00491     case PPC::XOR8: {
00492       // op: A
00493       op = getMachineOpValue(MI, MI.getOperand(0));
00494       Value |= (op & 31U) << 16;
00495       // op: RST
00496       op = getMachineOpValue(MI, MI.getOperand(1));
00497       Value |= (op & 31U) << 21;
00498       // op: B
00499       op = getMachineOpValue(MI, MI.getOperand(2));
00500       Value |= (op & 31U) << 11;
00501       break;
00502     }
00503     case PPC::ADDI:
00504     case PPC::ADDI8:
00505     case PPC::ADDIC:
00506     case PPC::ADDICo:
00507     case PPC::ADDIS:
00508     case PPC::ADDIS8:
00509     case PPC::LA:
00510     case PPC::MULLI:
00511     case PPC::SUBFIC:
00512     case PPC::SUBFIC8: {
00513       // op: A
00514       op = getMachineOpValue(MI, MI.getOperand(0));
00515       Value |= (op & 31U) << 21;
00516       // op: B
00517       op = getMachineOpValue(MI, MI.getOperand(1));
00518       Value |= (op & 31U) << 16;
00519       // op: C
00520       op = getMachineOpValue(MI, MI.getOperand(2));
00521       Value |= op & 65535U;
00522       break;
00523     }
00524     case PPC::LI:
00525     case PPC::LI8:
00526     case PPC::LIS:
00527     case PPC::LIS8: {
00528       // op: A
00529       op = getMachineOpValue(MI, MI.getOperand(0));
00530       Value |= (op & 31U) << 21;
00531       // op: B
00532       op = getMachineOpValue(MI, MI.getOperand(1));
00533       Value |= op & 65535U;
00534       break;
00535     }
00536     case PPC::LBZ:
00537     case PPC::LBZ8:
00538     case PPC::LFD:
00539     case PPC::LFS:
00540     case PPC::LHA:
00541     case PPC::LHA8:
00542     case PPC::LHZ:
00543     case PPC::LHZ8:
00544     case PPC::LWZ:
00545     case PPC::LWZ8:
00546     case PPC::LWZU:
00547     case PPC::STB:
00548     case PPC::STB8:
00549     case PPC::STFD:
00550     case PPC::STFS:
00551     case PPC::STH:
00552     case PPC::STH8:
00553     case PPC::STW:
00554     case PPC::STW8:
00555     case PPC::STWU: {
00556       // op: A
00557       op = getMachineOpValue(MI, MI.getOperand(0));
00558       Value |= (op & 31U) << 21;
00559       // op: C
00560       op = getMachineOpValue(MI, MI.getOperand(1));
00561       Value |= op & 65535U;
00562       // op: B
00563       op = getMachineOpValue(MI, MI.getOperand(2));
00564       Value |= (op & 31U) << 16;
00565       break;
00566     }
00567     case PPC::ANDISo:
00568     case PPC::ANDISo8:
00569     case PPC::ANDIo:
00570     case PPC::ANDIo8:
00571     case PPC::ORI:
00572     case PPC::ORI8:
00573     case PPC::ORIS:
00574     case PPC::ORIS8:
00575     case PPC::XORI:
00576     case PPC::XORI8:
00577     case PPC::XORIS:
00578     case PPC::XORIS8: {
00579       // op: B
00580       op = getMachineOpValue(MI, MI.getOperand(0));
00581       Value |= (op & 31U) << 16;
00582       // op: A
00583       op = getMachineOpValue(MI, MI.getOperand(1));
00584       Value |= (op & 31U) << 21;
00585       // op: C
00586       op = getMachineOpValue(MI, MI.getOperand(2));
00587       Value |= op & 65535U;
00588       break;
00589     }
00590     case PPC::MCRF: {
00591       // op: BF
00592       op = getMachineOpValue(MI, MI.getOperand(0));
00593       Value |= (op & 7U) << 23;
00594       // op: BFA
00595       op = getMachineOpValue(MI, MI.getOperand(1));
00596       Value |= (op & 7U) << 18;
00597       break;
00598     }
00599     case PPC::FCMPUD:
00600     case PPC::FCMPUS: {
00601       // op: BF
00602       op = getMachineOpValue(MI, MI.getOperand(0));
00603       Value |= (op & 7U) << 23;
00604       // op: FRA
00605       op = getMachineOpValue(MI, MI.getOperand(1));
00606       Value |= (op & 31U) << 16;
00607       // op: FRB
00608       op = getMachineOpValue(MI, MI.getOperand(2));
00609       Value |= (op & 31U) << 11;
00610       break;
00611     }
00612     case PPC::CMPDI:
00613     case PPC::CMPLDI:
00614     case PPC::CMPLWI:
00615     case PPC::CMPWI: {
00616       // op: BF
00617       op = getMachineOpValue(MI, MI.getOperand(0));
00618       Value |= (op & 7U) << 23;
00619       // op: RA
00620       op = getMachineOpValue(MI, MI.getOperand(1));
00621       Value |= (op & 31U) << 16;
00622       // op: I
00623       op = getMachineOpValue(MI, MI.getOperand(2));
00624       Value |= op & 65535U;
00625       break;
00626     }
00627     case PPC::CMPD:
00628     case PPC::CMPLD:
00629     case PPC::CMPLW:
00630     case PPC::CMPW: {
00631       // op: BF
00632       op = getMachineOpValue(MI, MI.getOperand(0));
00633       Value |= (op & 7U) << 23;
00634       // op: RA
00635       op = getMachineOpValue(MI, MI.getOperand(1));
00636       Value |= (op & 31U) << 16;
00637       // op: RB
00638       op = getMachineOpValue(MI, MI.getOperand(2));
00639       Value |= (op & 31U) << 11;
00640       break;
00641     }
00642     case PPC::BEQ:
00643     case PPC::BGE:
00644     case PPC::BGT:
00645     case PPC::BLE:
00646     case PPC::BLT:
00647     case PPC::BNE:
00648     case PPC::BNU:
00649     case PPC::BUN: {
00650       // op: CR
00651       op = getMachineOpValue(MI, MI.getOperand(0));
00652       Value |= (op & 7U) << 18;
00653       // op: BD
00654       op = getMachineOpValue(MI, MI.getOperand(1));
00655       Value |= (op & 16383U) << 2;
00656       break;
00657     }
00658     case PPC::FADD:
00659     case PPC::FADDS:
00660     case PPC::FDIV:
00661     case PPC::FDIVS:
00662     case PPC::FSUB:
00663     case PPC::FSUBS: {
00664       // op: FRT
00665       op = getMachineOpValue(MI, MI.getOperand(0));
00666       Value |= (op & 31U) << 21;
00667       // op: FRA
00668       op = getMachineOpValue(MI, MI.getOperand(1));
00669       Value |= (op & 31U) << 16;
00670       // op: FRB
00671       op = getMachineOpValue(MI, MI.getOperand(2));
00672       Value |= (op & 31U) << 11;
00673       break;
00674     }
00675     case PPC::FMUL:
00676     case PPC::FMULS: {
00677       // op: FRT
00678       op = getMachineOpValue(MI, MI.getOperand(0));
00679       Value |= (op & 31U) << 21;
00680       // op: FRA
00681       op = getMachineOpValue(MI, MI.getOperand(1));
00682       Value |= (op & 31U) << 16;
00683       // op: FRC
00684       op = getMachineOpValue(MI, MI.getOperand(2));
00685       Value |= (op & 31U) << 6;
00686       break;
00687     }
00688     case PPC::FMADD:
00689     case PPC::FMADDS:
00690     case PPC::FMSUB:
00691     case PPC::FMSUBS:
00692     case PPC::FNMADD:
00693     case PPC::FNMADDS:
00694     case PPC::FNMSUB:
00695     case PPC::FNMSUBS:
00696     case PPC::FSELD:
00697     case PPC::FSELS: {
00698       // op: FRT
00699       op = getMachineOpValue(MI, MI.getOperand(0));
00700       Value |= (op & 31U) << 21;
00701       // op: FRA
00702       op = getMachineOpValue(MI, MI.getOperand(1));
00703       Value |= (op & 31U) << 16;
00704       // op: FRC
00705       op = getMachineOpValue(MI, MI.getOperand(2));
00706       Value |= (op & 31U) << 6;
00707       // op: FRB
00708       op = getMachineOpValue(MI, MI.getOperand(3));
00709       Value |= (op & 31U) << 11;
00710       break;
00711     }
00712     case PPC::MTCRF: {
00713       // op: FXM
00714       op = getMachineOpValue(MI, MI.getOperand(0));
00715       Value |= (op & 255U) << 12;
00716       // op: ST
00717       op = getMachineOpValue(MI, MI.getOperand(1));
00718       Value |= (op & 31U) << 21;
00719       break;
00720     }
00721     case PPC::B:
00722     case PPC::BL:
00723     case PPC::BLA: {
00724       // op: LI
00725       op = getMachineOpValue(MI, MI.getOperand(0));
00726       Value |= (op & 16777215U) << 2;
00727       break;
00728     }
00729     case PPC::RLWIMI:
00730     case PPC::RLWINM:
00731     case PPC::RLWINMo:
00732     case PPC::RLWNM: {
00733       // op: RA
00734       op = getMachineOpValue(MI, MI.getOperand(0));
00735       Value |= (op & 31U) << 16;
00736       // op: RS
00737       op = getMachineOpValue(MI, MI.getOperand(1));
00738       Value |= (op & 31U) << 21;
00739       // op: RB
00740       op = getMachineOpValue(MI, MI.getOperand(2));
00741       Value |= (op & 31U) << 11;
00742       // op: MB
00743       op = getMachineOpValue(MI, MI.getOperand(3));
00744       Value |= (op & 31U) << 6;
00745       // op: ME
00746       op = getMachineOpValue(MI, MI.getOperand(4));
00747       Value |= (op & 31U) << 1;
00748       break;
00749     }
00750     case PPC::RLDICL:
00751     case PPC::RLDICR:
00752     case PPC::RLDIMI: {
00753       // op: RA
00754       op = getMachineOpValue(MI, MI.getOperand(0));
00755       Value |= (op & 31U) << 16;
00756       // op: RS
00757       op = getMachineOpValue(MI, MI.getOperand(1));
00758       Value |= (op & 31U) << 21;
00759       // op: SH
00760       op = getMachineOpValue(MI, MI.getOperand(2));
00761       Value |= (op & 31U) << 11;
00762       Value |= (op & 32U) >> 4;
00763       // op: MBE
00764       op = getMachineOpValue(MI, MI.getOperand(3));
00765       Value |= (op & 31U) << 6;
00766       Value |= op & 32U;
00767       break;
00768     }
00769     case PPC::SRADI: {
00770       // op: RS
00771       op = getMachineOpValue(MI, MI.getOperand(0));
00772       Value |= (op & 31U) << 21;
00773       // op: A
00774       op = getMachineOpValue(MI, MI.getOperand(1));
00775       Value |= (op & 31U) << 16;
00776       // op: SH
00777       op = getMachineOpValue(MI, MI.getOperand(2));
00778       Value |= (op & 2U) << 14;
00779       Value |= (op & 4U) << 12;
00780       Value |= (op & 8U) << 10;
00781       Value |= (op & 16U) << 8;
00782       Value |= (op & 32U) << 6;
00783       Value |= (op & 1U) << 1;
00784       break;
00785     }
00786     case PPC::LBZX:
00787     case PPC::LBZX8:
00788     case PPC::LDX:
00789     case PPC::LFDX:
00790     case PPC::LFSX:
00791     case PPC::LHAX:
00792     case PPC::LHAX8:
00793     case PPC::LHBRX:
00794     case PPC::LHZX:
00795     case PPC::LHZX8:
00796     case PPC::LVEBX:
00797     case PPC::LVEHX:
00798     case PPC::LVEWX:
00799     case PPC::LVSL:
00800     case PPC::LVSR:
00801     case PPC::LVX:
00802     case PPC::LVXL:
00803     case PPC::LWAX:
00804     case PPC::LWBRX:
00805     case PPC::LWZX:
00806     case PPC::LWZX8:
00807     case PPC::STBX:
00808     case PPC::STBX8:
00809     case PPC::STDUX:
00810     case PPC::STDX:
00811     case PPC::STDX_32:
00812     case PPC::STFDX:
00813     case PPC::STFIWX:
00814     case PPC::STFSX:
00815     case PPC::STHBRX:
00816     case PPC::STHX:
00817     case PPC::STHX8:
00818     case PPC::STVEBX:
00819     case PPC::STVEHX:
00820     case PPC::STVEWX:
00821     case PPC::STVX:
00822     case PPC::STVXL:
00823     case PPC::STWBRX:
00824     case PPC::STWUX:
00825     case PPC::STWX:
00826     case PPC::STWX8: {
00827       // op: RST
00828       op = getMachineOpValue(MI, MI.getOperand(0));
00829       Value |= (op & 31U) << 21;
00830       // op: A
00831       op = getMachineOpValue(MI, MI.getOperand(1));
00832       Value |= (op & 31U) << 16;
00833       // op: B
00834       op = getMachineOpValue(MI, MI.getOperand(2));
00835       Value |= (op & 31U) << 11;
00836       break;
00837     }
00838     case PPC::FABSD:
00839     case PPC::FABSS:
00840     case PPC::FCFID:
00841     case PPC::FCTIDZ:
00842     case PPC::FCTIWZ:
00843     case PPC::FMRD:
00844     case PPC::FMRS:
00845     case PPC::FMRSD:
00846     case PPC::FNABSD:
00847     case PPC::FNABSS:
00848     case PPC::FNEGD:
00849     case PPC::FNEGS:
00850     case PPC::FRSP:
00851     case PPC::FSQRT:
00852     case PPC::FSQRTS: {
00853       // op: RST
00854       op = getMachineOpValue(MI, MI.getOperand(0));
00855       Value |= (op & 31U) << 21;
00856       // op: B
00857       op = getMachineOpValue(MI, MI.getOperand(1));
00858       Value |= (op & 31U) << 11;
00859       break;
00860     }
00861     case PPC::LD:
00862     case PPC::LWA:
00863     case PPC::STD:
00864     case PPC::STD_32: {
00865       // op: RST
00866       op = getMachineOpValue(MI, MI.getOperand(0));
00867       Value |= (op & 31U) << 21;
00868       // op: DS
00869       op = getMachineOpValue(MI, MI.getOperand(1));
00870       Value |= (op & 16383U) << 2;
00871       // op: RA
00872       op = getMachineOpValue(MI, MI.getOperand(2));
00873       Value |= (op & 31U) << 16;
00874       break;
00875     }
00876     case PPC::MFCR:
00877     case PPC::MFCTR:
00878     case PPC::MFLR:
00879     case PPC::MFVRSAVE:
00880     case PPC::MTCTR:
00881     case PPC::MTCTR8:
00882     case PPC::MTLR:
00883     case PPC::MTVRSAVE: {
00884       // op: RT
00885       op = getMachineOpValue(MI, MI.getOperand(0));
00886       Value |= (op & 31U) << 21;
00887       break;
00888     }
00889     case PPC::ADDME:
00890     case PPC::ADDZE:
00891     case PPC::NEG:
00892     case PPC::SUBFME:
00893     case PPC::SUBFZE: {
00894       // op: RT
00895       op = getMachineOpValue(MI, MI.getOperand(0));
00896       Value |= (op & 31U) << 21;
00897       // op: RA
00898       op = getMachineOpValue(MI, MI.getOperand(1));
00899       Value |= (op & 31U) << 16;
00900       break;
00901     }
00902     case PPC::ADD4:
00903     case PPC::ADD8:
00904     case PPC::ADDC:
00905     case PPC::ADDE:
00906     case PPC::DIVD:
00907     case PPC::DIVDU:
00908     case PPC::DIVW:
00909     case PPC::DIVWU:
00910     case PPC::MULHD:
00911     case PPC::MULHDU:
00912     case PPC::MULHW:
00913     case PPC::MULHWU:
00914     case PPC::MULLD:
00915     case PPC::MULLW:
00916     case PPC::SUBF:
00917     case PPC::SUBF8:
00918     case PPC::SUBFC:
00919     case PPC::SUBFE: {
00920       // op: RT
00921       op = getMachineOpValue(MI, MI.getOperand(0));
00922       Value |= (op & 31U) << 21;
00923       // op: RA
00924       op = getMachineOpValue(MI, MI.getOperand(1));
00925       Value |= (op & 31U) << 16;
00926       // op: RB
00927       op = getMachineOpValue(MI, MI.getOperand(2));
00928       Value |= (op & 31U) << 11;
00929       break;
00930     }
00931     case PPC::MFOCRF: {
00932       // op: ST
00933       op = getMachineOpValue(MI, MI.getOperand(0));
00934       Value |= (op & 31U) << 21;
00935       // op: FXM
00936       op = getMachineOpValue(MI, MI.getOperand(1));
00937       Value |= (op & 255U) << 12;
00938       break;
00939     }
00940     case PPC::DSS:
00941     case PPC::DST:
00942     case PPC::DSTST: {
00943       // op: T
00944       op = getMachineOpValue(MI, MI.getOperand(0));
00945       Value |= (op & 1U) << 25;
00946       // op: STRM
00947       op = getMachineOpValue(MI, MI.getOperand(1));
00948       Value |= (op & 3U) << 21;
00949       // op: A
00950       op = getMachineOpValue(MI, MI.getOperand(2));
00951       Value |= (op & 31U) << 16;
00952       // op: B
00953       op = getMachineOpValue(MI, MI.getOperand(3));
00954       Value |= (op & 31U) << 11;
00955       break;
00956     }
00957     case PPC::MTVSCR: {
00958       // op: VB
00959       op = getMachineOpValue(MI, MI.getOperand(0));
00960       Value |= (op & 31U) << 11;
00961       break;
00962     }
00963     case PPC::MFVSCR: {
00964       // op: VD
00965       op = getMachineOpValue(MI, MI.getOperand(0));
00966       Value |= (op & 31U) << 21;
00967       break;
00968     }
00969     case PPC::VSPLTISB:
00970     case PPC::VSPLTISH:
00971     case PPC::VSPLTISW: {
00972       // op: VD
00973       op = getMachineOpValue(MI, MI.getOperand(0));
00974       Value |= (op & 31U) << 21;
00975       // op: IMM
00976       op = getMachineOpValue(MI, MI.getOperand(1));
00977       Value |= (op & 31U) << 16;
00978       break;
00979     }
00980     case PPC::VADDCUW:
00981     case PPC::VADDFP:
00982     case PPC::VADDSBS:
00983     case PPC::VADDSHS:
00984     case PPC::VADDSWS:
00985     case PPC::VADDUBM:
00986     case PPC::VADDUBS:
00987     case PPC::VADDUHM:
00988     case PPC::VADDUHS:
00989     case PPC::VADDUWM:
00990     case PPC::VADDUWS:
00991     case PPC::VAND:
00992     case PPC::VANDC:
00993     case PPC::VAVGSB:
00994     case PPC::VAVGSH:
00995     case PPC::VAVGSW:
00996     case PPC::VAVGUB:
00997     case PPC::VAVGUH:
00998     case PPC::VAVGUW:
00999     case PPC::VCFSX:
01000     case PPC::VCFUX:
01001     case PPC::VCMPBFP:
01002     case PPC::VCMPBFPo:
01003     case PPC::VCMPEQFP:
01004     case PPC::VCMPEQFPo:
01005     case PPC::VCMPEQUB:
01006     case PPC::VCMPEQUBo:
01007     case PPC::VCMPEQUH:
01008     case PPC::VCMPEQUHo:
01009     case PPC::VCMPEQUW:
01010     case PPC::VCMPEQUWo:
01011     case PPC::VCMPGEFP:
01012     case PPC::VCMPGEFPo:
01013     case PPC::VCMPGTFP:
01014     case PPC::VCMPGTFPo:
01015     case PPC::VCMPGTSB:
01016     case PPC::VCMPGTSBo:
01017     case PPC::VCMPGTSH:
01018     case PPC::VCMPGTSHo:
01019     case PPC::VCMPGTSW:
01020     case PPC::VCMPGTSWo:
01021     case PPC::VCMPGTUB:
01022     case PPC::VCMPGTUBo:
01023     case PPC::VCMPGTUH:
01024     case PPC::VCMPGTUHo:
01025     case PPC::VCMPGTUW:
01026     case PPC::VCMPGTUWo:
01027     case PPC::VCTSXS:
01028     case PPC::VCTUXS:
01029     case PPC::VMAXFP:
01030     case PPC::VMAXSB:
01031     case PPC::VMAXSH:
01032     case PPC::VMAXSW:
01033     case PPC::VMAXUB:
01034     case PPC::VMAXUH:
01035     case PPC::VMAXUW:
01036     case PPC::VMINFP:
01037     case PPC::VMINSB:
01038     case PPC::VMINSH:
01039     case PPC::VMINSW:
01040     case PPC::VMINUB:
01041     case PPC::VMINUH:
01042     case PPC::VMINUW:
01043     case PPC::VMRGHB:
01044     case PPC::VMRGHH:
01045     case PPC::VMRGHW:
01046     case PPC::VMRGLB:
01047     case PPC::VMRGLH:
01048     case PPC::VMRGLW:
01049     case PPC::VMULESB:
01050     case PPC::VMULESH:
01051     case PPC::VMULEUB:
01052     case PPC::VMULEUH:
01053     case PPC::VMULOSB:
01054     case PPC::VMULOSH:
01055     case PPC::VMULOUB:
01056     case PPC::VMULOUH:
01057     case PPC::VNOR:
01058     case PPC::VOR:
01059     case PPC::VPKPX:
01060     case PPC::VPKSHSS:
01061     case PPC::VPKSHUS:
01062     case PPC::VPKSWSS:
01063     case PPC::VPKSWUS:
01064     case PPC::VPKUHUM:
01065     case PPC::VPKUHUS:
01066     case PPC::VPKUWUM:
01067     case PPC::VPKUWUS:
01068     case PPC::VRLB:
01069     case PPC::VRLH:
01070     case PPC::VRLW:
01071     case PPC::VSL:
01072     case PPC::VSLB:
01073     case PPC::VSLH:
01074     case PPC::VSLO:
01075     case PPC::VSLW:
01076     case PPC::VSPLTB:
01077     case PPC::VSPLTH:
01078     case PPC::VSPLTW:
01079     case PPC::VSR:
01080     case PPC::VSRAB:
01081     case PPC::VSRAH:
01082     case PPC::VSRAW:
01083     case PPC::VSRB:
01084     case PPC::VSRH:
01085     case PPC::VSRO:
01086     case PPC::VSRW:
01087     case PPC::VSUBCUW:
01088     case PPC::VSUBFP:
01089     case PPC::VSUBSBS:
01090     case PPC::VSUBSHS:
01091     case PPC::VSUBSWS:
01092     case PPC::VSUBUBM:
01093     case PPC::VSUBUBS:
01094     case PPC::VSUBUHM:
01095     case PPC::VSUBUHS:
01096     case PPC::VSUBUWM:
01097     case PPC::VSUBUWS:
01098     case PPC::VSUM2SWS:
01099     case PPC::VSUM4SBS:
01100     case PPC::VSUM4SHS:
01101     case PPC::VSUM4UBS:
01102     case PPC::VSUMSWS:
01103     case PPC::VXOR: {
01104       // op: VD
01105       op = getMachineOpValue(MI, MI.getOperand(0));
01106       Value |= (op & 31U) << 21;
01107       // op: VA
01108       op = getMachineOpValue(MI, MI.getOperand(1));
01109       Value |= (op & 31U) << 16;
01110       // op: VB
01111       op = getMachineOpValue(MI, MI.getOperand(2));
01112       Value |= (op & 31U) << 11;
01113       break;
01114     }
01115     case PPC::VSLDOI: {
01116       // op: VD
01117       op = getMachineOpValue(MI, MI.getOperand(0));
01118       Value |= (op & 31U) << 21;
01119       // op: VA
01120       op = getMachineOpValue(MI, MI.getOperand(1));
01121       Value |= (op & 31U) << 16;
01122       // op: VB
01123       op = getMachineOpValue(MI, MI.getOperand(2));
01124       Value |= (op & 31U) << 11;
01125       // op: SH
01126       op = getMachineOpValue(MI, MI.getOperand(3));
01127       Value |= (op & 15U) << 6;
01128       break;
01129     }
01130     case PPC::VMHADDSHS:
01131     case PPC::VMHRADDSHS:
01132     case PPC::VMLADDUHM:
01133     case PPC::VMSUMMBM:
01134     case PPC::VMSUMSHM:
01135     case PPC::VMSUMSHS:
01136     case PPC::VMSUMUBM:
01137     case PPC::VMSUMUHM:
01138     case PPC::VMSUMUHS:
01139     case PPC::VPERM:
01140     case PPC::VSEL: {
01141       // op: VD
01142       op = getMachineOpValue(MI, MI.getOperand(0));
01143       Value |= (op & 31U) << 21;
01144       // op: VA
01145       op = getMachineOpValue(MI, MI.getOperand(1));
01146       Value |= (op & 31U) << 16;
01147       // op: VB
01148       op = getMachineOpValue(MI, MI.getOperand(2));
01149       Value |= (op & 31U) << 11;
01150       // op: VC
01151       op = getMachineOpValue(MI, MI.getOperand(3));
01152       Value |= (op & 31U) << 6;
01153       break;
01154     }
01155     case PPC::VMADDFP:
01156     case PPC::VNMSUBFP: {
01157       // op: VD
01158       op = getMachineOpValue(MI, MI.getOperand(0));
01159       Value |= (op & 31U) << 21;
01160       // op: VA
01161       op = getMachineOpValue(MI, MI.getOperand(1));
01162       Value |= (op & 31U) << 16;
01163       // op: VC
01164       op = getMachineOpValue(MI, MI.getOperand(2));
01165       Value |= (op & 31U) << 6;
01166       // op: VB
01167       op = getMachineOpValue(MI, MI.getOperand(3));
01168       Value |= (op & 31U) << 11;
01169       break;
01170     }
01171     case PPC::VEXPTEFP:
01172     case PPC::VLOGEFP:
01173     case PPC::VREFP:
01174     case PPC::VRFIM:
01175     case PPC::VRFIN:
01176     case PPC::VRFIP:
01177     case PPC::VRFIZ:
01178     case PPC::VRSQRTEFP:
01179     case PPC::VUPKHPX:
01180     case PPC::VUPKHSB:
01181     case PPC::VUPKHSH:
01182     case PPC::VUPKLPX:
01183     case PPC::VUPKLSB:
01184     case PPC::VUPKLSH: {
01185       // op: VD
01186       op = getMachineOpValue(MI, MI.getOperand(0));
01187       Value |= (op & 31U) << 21;
01188       // op: VB
01189       op = getMachineOpValue(MI, MI.getOperand(1));
01190       Value |= (op & 31U) << 11;
01191       break;
01192     }
01193     case PPC::V_SET0: {
01194       // op: VD
01195       op = getMachineOpValue(MI, MI.getOperand(0));
01196       Value |= (op & 31U) << 21;
01197       Value |= (op & 31U) << 16;
01198       Value |= (op & 31U) << 11;
01199       break;
01200     }
01201   default:
01202     std::cerr << "Not supported instr: " << MI << "\n";
01203     abort();
01204   }
01205   return Value;
01206 }
01207