LLVM API Documentation
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