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(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