1//===- TableGen'erated file -------------------------------------*- C++ -*-===// 2// 3// Machine Code Emitter 4// 5// Automatically generated file, do not edit! 6// 7//===----------------------------------------------------------------------===// 8 9unsigned PPCCodeEmitter::getBinaryCodeForInstr(const MachineInstr &MI) { 10 static const unsigned InstBits[] = { 11 0U, 12 0U, 13 0U, 14 0U, 15 0U, 16 0U, 17 0U, 18 0U, 19 0U, 20 0U, 21 0U, 22 0U, 23 0U, 24 0U, 25 2080375316U, // ADD4 26 2080375316U, // ADD8 27 2080374804U, // ADDC 28 2080374804U, // ADDC8 29 2080375060U, // ADDE 30 2080375060U, // ADDE8 31 939524096U, // ADDI 32 939524096U, // ADDI8 33 805306368U, // ADDIC 34 805306368U, // ADDIC8 35 872415232U, // ADDICo 36 1006632960U, // ADDIS 37 1006632960U, // ADDIS8 38 2080375252U, // ADDME 39 2080375252U, // ADDME8 40 2080375188U, // ADDZE 41 2080375188U, // ADDZE8 42 0U, // ADJCALLSTACKDOWN 43 0U, // ADJCALLSTACKUP 44 2080374840U, // AND 45 2080374840U, // AND8 46 2080374904U, // ANDC 47 2080374904U, // ANDC8 48 1946157056U, // ANDISo 49 1946157056U, // ANDISo8 50 1879048192U, // ANDIo 51 1879048192U, // ANDIo8 52 0U, // ATOMIC_CMP_SWAP_I16 53 0U, // ATOMIC_CMP_SWAP_I32 54 0U, // ATOMIC_CMP_SWAP_I64 55 0U, // ATOMIC_CMP_SWAP_I8 56 0U, // ATOMIC_LOAD_ADD_I16 57 0U, // ATOMIC_LOAD_ADD_I32 58 0U, // ATOMIC_LOAD_ADD_I64 59 0U, // ATOMIC_LOAD_ADD_I8 60 0U, // ATOMIC_LOAD_AND_I16 61 0U, // ATOMIC_LOAD_AND_I32 62 0U, // ATOMIC_LOAD_AND_I64 63 0U, // ATOMIC_LOAD_AND_I8 64 0U, // ATOMIC_LOAD_NAND_I16 65 0U, // ATOMIC_LOAD_NAND_I32 66 0U, // ATOMIC_LOAD_NAND_I64 67 0U, // ATOMIC_LOAD_NAND_I8 68 0U, // ATOMIC_LOAD_OR_I16 69 0U, // ATOMIC_LOAD_OR_I32 70 0U, // ATOMIC_LOAD_OR_I64 71 0U, // ATOMIC_LOAD_OR_I8 72 0U, // ATOMIC_LOAD_SUB_I16 73 0U, // ATOMIC_LOAD_SUB_I32 74 0U, // ATOMIC_LOAD_SUB_I64 75 0U, // ATOMIC_LOAD_SUB_I8 76 0U, // ATOMIC_LOAD_XOR_I16 77 0U, // ATOMIC_LOAD_XOR_I32 78 0U, // ATOMIC_LOAD_XOR_I64 79 0U, // ATOMIC_LOAD_XOR_I8 80 0U, // ATOMIC_SWAP_I16 81 0U, // ATOMIC_SWAP_I32 82 0U, // ATOMIC_SWAP_I64 83 0U, // ATOMIC_SWAP_I8 84 1207959552U, // B 85 1073741824U, // BCC 86 1317012512U, // BCTR 87 1317012513U, // BCTRL8_Darwin 88 1317012513U, // BCTRL8_ELF 89 1317012513U, // BCTRL_Darwin 90 1317012513U, // BCTRL_SVR4 91 1207959553U, // BL8_Darwin 92 1207959553U, // BL8_ELF 93 1207959555U, // BLA8_Darwin 94 1207959555U, // BLA8_ELF 95 1207959555U, // BLA_Darwin 96 1207959555U, // BLA_SVR4 97 1275068448U, // BLR 98 1207959553U, // BL_Darwin 99 1207959553U, // BL_SVR4 100 2082471936U, // CMPD 101 740294656U, // CMPDI 102 2082472000U, // CMPLD 103 673185792U, // CMPLDI 104 2080374848U, // CMPLW 105 671088640U, // CMPLWI 106 2080374784U, // CMPW 107 738197504U, // CMPWI 108 2080374900U, // CNTLZD 109 2080374836U, // CNTLZW 110 1275068994U, // CREQV 111 1275069314U, // CROR 112 1275068994U, // CRSET 113 2080376300U, // DCBA 114 2080374956U, // DCBF 115 2080375724U, // DCBI 116 2080374892U, // DCBST 117 2080375340U, // DCBT 118 2080375276U, // DCBTST 119 2080376812U, // DCBZ 120 2082473964U, // DCBZL 121 2080375762U, // DIVD 122 2080375698U, // DIVDU 123 2080375766U, // DIVW 124 2080375702U, // DIVWU 125 2080376428U, // DSS 126 2080376428U, // DSSALL 127 2080375468U, // DST 128 2080375468U, // DST64 129 2080375532U, // DSTST 130 2080375532U, // DSTST64 131 2080375532U, // DSTSTT 132 2080375532U, // DSTSTT64 133 2080375468U, // DSTT 134 2080375468U, // DSTT64 135 0U, // DYNALLOC 136 0U, // DYNALLOC8 137 2080375352U, // EQV 138 2080375352U, // EQV8 139 2080376692U, // EXTSB 140 2080376692U, // EXTSB8 141 2080376628U, // EXTSH 142 2080376628U, // EXTSH8 143 2080376756U, // EXTSW 144 2080376756U, // EXTSW_32 145 2080376756U, // EXTSW_32_64 146 4227858960U, // FABSD 147 4227858960U, // FABSS 148 4227858474U, // FADD 149 3959423018U, // FADDS 150 4227858474U, // FADDrtz 151 4227860124U, // FCFID 152 4227858432U, // FCMPUD 153 4227858432U, // FCMPUS 154 4227860062U, // FCTIDZ 155 4227858462U, // FCTIWZ 156 4227858468U, // FDIV 157 3959423012U, // FDIVS 158 4227858490U, // FMADD 159 3959423034U, // FMADDS 160 4227858576U, // FMR 161 4227858488U, // FMSUB 162 3959423032U, // FMSUBS 163 4227858482U, // FMUL 164 3959423026U, // FMULS 165 4227858704U, // FNABSD 166 4227858704U, // FNABSS 167 4227858512U, // FNEGD 168 4227858512U, // FNEGS 169 4227858494U, // FNMADD 170 3959423038U, // FNMADDS 171 4227858492U, // FNMSUB 172 3959423036U, // FNMSUBS 173 4227858456U, // FRSP 174 4227858478U, // FSELD 175 4227858478U, // FSELS 176 4227858476U, // FSQRT 177 3959423020U, // FSQRTS 178 4227858472U, // FSUB 179 3959423016U, // FSUBS 180 939524096U, // LA 181 2281701376U, // LBZ 182 2281701376U, // LBZ8 183 2348810240U, // LBZU 184 2348810240U, // LBZU8 185 2080374958U, // LBZX 186 2080374958U, // LBZX8 187 3892314112U, // LD 188 2080374952U, // LDARX 189 3892314113U, // LDU 190 2080374826U, // LDX 191 3896508448U, // LDinto_toc 192 3892314112U, // LDtoc 193 3896574112U, // LDtoc_restore 194 3355443200U, // LFD 195 3422552064U, // LFDU 196 2080375982U, // LFDX 197 3221225472U, // LFS 198 3288334336U, // LFSU 199 2080375854U, // LFSX 200 2818572288U, // LHA 201 2818572288U, // LHA8 202 2885681152U, // LHAU 203 2885681152U, // LHAU8 204 2080375470U, // LHAX 205 2080375470U, // LHAX8 206 2080376364U, // LHBRX 207 2684354560U, // LHZ 208 2684354560U, // LHZ8 209 2751463424U, // LHZU 210 2751463424U, // LHZU8 211 2080375342U, // LHZX 212 2080375342U, // LHZX8 213 939524096U, // LI 214 939524096U, // LI8 215 1006632960U, // LIS 216 1006632960U, // LIS8 217 2080374798U, // LVEBX 218 2080374862U, // LVEHX 219 2080374926U, // LVEWX 220 2080374796U, // LVSL 221 2080374860U, // LVSR 222 2080374990U, // LVX 223 2080375502U, // LVXL 224 3892314114U, // LWA 225 2080374824U, // LWARX 226 2080375466U, // LWAX 227 2080375852U, // LWBRX 228 2147483648U, // LWZ 229 2147483648U, // LWZ8 230 2214592512U, // LWZU 231 2214592512U, // LWZU8 232 2080374830U, // LWZX 233 2080374830U, // LWZX8 234 1275068416U, // MCRF 235 2080374822U, // MFCRpseud 236 2080965286U, // MFCTR 237 2080965286U, // MFCTR8 238 4227859598U, // MFFS 239 2080899750U, // MFLR 240 2080899750U, // MFLR8 241 2081423398U, // MFOCRF 242 2080391846U, // MFVRSAVE 243 268436996U, // MFVSCR 244 2080375072U, // MTCRF 245 2080965542U, // MTCTR 246 2080965542U, // MTCTR8 247 4227858572U, // MTFSB0 248 4227858508U, // MTFSB1 249 4227859854U, // MTFSF 250 2080900006U, // MTLR 251 2080900006U, // MTLR8 252 2080392102U, // MTVRSAVE 253 268437060U, // MTVSCR 254 2080374930U, // MULHD 255 2080374802U, // MULHDU 256 2080374934U, // MULHW 257 2080374806U, // MULHWU 258 2080375250U, // MULLD 259 469762048U, // MULLI 260 2080375254U, // MULLW 261 0U, // MovePCtoLR 262 0U, // MovePCtoLR8 263 2080375736U, // NAND 264 2080375736U, // NAND8 265 2080374992U, // NEG 266 2080374992U, // NEG8 267 1610612736U, // NOP 268 2080375032U, // NOR 269 2080375032U, // NOR8 270 2080375672U, // OR 271 2080375672U, // OR4To8 272 2080375672U, // OR8 273 2080375672U, // OR8To4 274 2080375608U, // ORC 275 2080375608U, // ORC8 276 1610612736U, // ORI 277 1610612736U, // ORI8 278 1677721600U, // ORIS 279 1677721600U, // ORIS8 280 2013265920U, // RLDCL 281 2013265920U, // RLDICL 282 2013265924U, // RLDICR 283 2013265932U, // RLDIMI 284 1342177280U, // RLWIMI 285 1409286144U, // RLWINM 286 1409286145U, // RLWINMo 287 1543503872U, // RLWNM 288 0U, // SELECT_CC_F4 289 0U, // SELECT_CC_F8 290 0U, // SELECT_CC_I4 291 0U, // SELECT_CC_I8 292 0U, // SELECT_CC_VRRC 293 2080374838U, // SLD 294 2080374832U, // SLW 295 0U, // SPILL_CR 296 2080376372U, // SRAD 297 2080376436U, // SRADI 298 2080376368U, // SRAW 299 2080376432U, // SRAWI 300 2080375862U, // SRD 301 2080375856U, // SRW 302 2550136832U, // STB 303 2550136832U, // STB8 304 2617245696U, // STBU 305 2550136832U, // STBU8 306 2080375214U, // STBX 307 2080375214U, // STBX8 308 4160749568U, // STD 309 2080375213U, // STDCX 310 4160749569U, // STDU 311 2080375146U, // STDUX 312 2080375082U, // STDX 313 2080375082U, // STDX_32 314 4160749568U, // STD_32 315 3623878656U, // STFD 316 2483027968U, // STFDU 317 2080376238U, // STFDX 318 2080376750U, // STFIWX 319 3489660928U, // STFS 320 2483027968U, // STFSU 321 2080376110U, // STFSX 322 2952790016U, // STH 323 2952790016U, // STH8 324 2080376620U, // STHBRX 325 3019898880U, // STHU 326 3019898880U, // STHU8 327 2080375598U, // STHX 328 2080375598U, // STHX8 329 2080375054U, // STVEBX 330 2080375118U, // STVEHX 331 2080375182U, // STVEWX 332 2080375246U, // STVX 333 2080375758U, // STVXL 334 2415919104U, // STW 335 2415919104U, // STW8 336 2080376108U, // STWBRX 337 2080375085U, // STWCX 338 2483027968U, // STWU 339 2080375150U, // STWUX 340 2080375086U, // STWX 341 2080375086U, // STWX8 342 2080374864U, // SUBF 343 2080374864U, // SUBF8 344 2080374800U, // SUBFC 345 2080374800U, // SUBFC8 346 2080375056U, // SUBFE 347 2080375056U, // SUBFE8 348 536870912U, // SUBFIC 349 536870912U, // SUBFIC8 350 2080375248U, // SUBFME 351 2080375248U, // SUBFME8 352 2080375184U, // SUBFZE 353 2080375184U, // SUBFZE8 354 2080375980U, // SYNC 355 1207959552U, // TAILB 356 1207959552U, // TAILB8 357 1207959552U, // TAILBA 358 1207959552U, // TAILBA8 359 1317012512U, // TAILBCTR 360 1317012512U, // TAILBCTR8 361 0U, // TCRETURNai 362 0U, // TCRETURNai8 363 0U, // TCRETURNdi 364 0U, // TCRETURNdi8 365 0U, // TCRETURNri 366 0U, // TCRETURNri8 367 2145386504U, // TRAP 368 0U, // UPDATE_VRSAVE 369 268435840U, // VADDCUW 370 268435466U, // VADDFP 371 268436224U, // VADDSBS 372 268436288U, // VADDSHS 373 268436352U, // VADDSWS 374 268435456U, // VADDUBM 375 268435968U, // VADDUBS 376 268435520U, // VADDUHM 377 268436032U, // VADDUHS 378 268435584U, // VADDUWM 379 268436096U, // VADDUWS 380 268436484U, // VAND 381 268436548U, // VANDC 382 268436738U, // VAVGSB 383 268436802U, // VAVGSH 384 268436866U, // VAVGSW 385 268436482U, // VAVGUB 386 268436546U, // VAVGUH 387 268436610U, // VAVGUW 388 268436298U, // VCFSX 389 268436234U, // VCFUX 390 268436422U, // VCMPBFP 391 268437446U, // VCMPBFPo 392 268435654U, // VCMPEQFP 393 268436678U, // VCMPEQFPo 394 268435462U, // VCMPEQUB 395 268436486U, // VCMPEQUBo 396 268435526U, // VCMPEQUH 397 268436550U, // VCMPEQUHo 398 268435590U, // VCMPEQUW 399 268436614U, // VCMPEQUWo 400 268435910U, // VCMPGEFP 401 268436934U, // VCMPGEFPo 402 268436166U, // VCMPGTFP 403 268437190U, // VCMPGTFPo 404 268436230U, // VCMPGTSB 405 268437254U, // VCMPGTSBo 406 268436294U, // VCMPGTSH 407 268437318U, // VCMPGTSHo 408 268436358U, // VCMPGTSW 409 268437382U, // VCMPGTSWo 410 268435974U, // VCMPGTUB 411 268436998U, // VCMPGTUBo 412 268436038U, // VCMPGTUH 413 268437062U, // VCMPGTUHo 414 268436102U, // VCMPGTUW 415 268437126U, // VCMPGTUWo 416 268436426U, // VCTSXS 417 268436362U, // VCTUXS 418 268435850U, // VEXPTEFP 419 268435914U, // VLOGEFP 420 268435502U, // VMADDFP 421 268436490U, // VMAXFP 422 268435714U, // VMAXSB 423 268435778U, // VMAXSH 424 268435842U, // VMAXSW 425 268435458U, // VMAXUB 426 268435522U, // VMAXUH 427 268435586U, // VMAXUW 428 268435488U, // VMHADDSHS 429 268435489U, // VMHRADDSHS 430 268436554U, // VMINFP 431 268436226U, // VMINSB 432 268436290U, // VMINSH 433 268436354U, // VMINSW 434 268435970U, // VMINUB 435 268436034U, // VMINUH 436 268436098U, // VMINUW 437 268435490U, // VMLADDUHM 438 268435468U, // VMRGHB 439 268435532U, // VMRGHH 440 268435596U, // VMRGHW 441 268435724U, // VMRGLB 442 268435788U, // VMRGLH 443 268435852U, // VMRGLW 444 268435493U, // VMSUMMBM 445 268435496U, // VMSUMSHM 446 268435497U, // VMSUMSHS 447 268435492U, // VMSUMUBM 448 268435494U, // VMSUMUHM 449 268435495U, // VMSUMUHS 450 268436232U, // VMULESB 451 268436296U, // VMULESH 452 268435976U, // VMULEUB 453 268436040U, // VMULEUH 454 268435720U, // VMULOSB 455 268435784U, // VMULOSH 456 268435464U, // VMULOUB 457 268435528U, // VMULOUH 458 268435503U, // VNMSUBFP 459 268436740U, // VNOR 460 268436612U, // VOR 461 268435499U, // VPERM 462 268436238U, // VPKPX 463 268435854U, // VPKSHSS 464 268435726U, // VPKSHUS 465 268435918U, // VPKSWSS 466 268435790U, // VPKSWUS 467 268435470U, // VPKUHUM 468 268435598U, // VPKUHUS 469 268435534U, // VPKUWUM 470 268435662U, // VPKUWUS 471 268435722U, // VREFP 472 268436170U, // VRFIM 473 268435978U, // VRFIN 474 268436106U, // VRFIP 475 268436042U, // VRFIZ 476 268435460U, // VRLB 477 268435524U, // VRLH 478 268435588U, // VRLW 479 268435786U, // VRSQRTEFP 480 268435498U, // VSEL 481 268435908U, // VSL 482 268435716U, // VSLB 483 268435500U, // VSLDOI 484 268435780U, // VSLH 485 268436492U, // VSLO 486 268435844U, // VSLW 487 268435980U, // VSPLTB 488 268436044U, // VSPLTH 489 268436236U, // VSPLTISB 490 268436300U, // VSPLTISH 491 268436364U, // VSPLTISW 492 268436108U, // VSPLTW 493 268436164U, // VSR 494 268436228U, // VSRAB 495 268436292U, // VSRAH 496 268436356U, // VSRAW 497 268435972U, // VSRB 498 268436036U, // VSRH 499 268436556U, // VSRO 500 268436100U, // VSRW 501 268435530U, // VSUBCUW 502 268435530U, // VSUBFP 503 268437248U, // VSUBSBS 504 268437312U, // VSUBSHS 505 268437376U, // VSUBSWS 506 268436480U, // VSUBUBM 507 268436992U, // VSUBUBS 508 268436544U, // VSUBUHM 509 268437056U, // VSUBUHS 510 268436608U, // VSUBUWM 511 268437120U, // VSUBUWS 512 268437128U, // VSUM2SWS 513 268437128U, // VSUM4SBS 514 268437064U, // VSUM4SHS 515 268437000U, // VSUM4UBS 516 268437384U, // VSUMSWS 517 268436302U, // VUPKHPX 518 268435982U, // VUPKHSB 519 268436046U, // VUPKHSH 520 268436430U, // VUPKLPX 521 268436110U, // VUPKLSB 522 268436174U, // VUPKLSH 523 268436676U, // VXOR 524 268436676U, // V_SET0 525 2080375416U, // XOR 526 2080375416U, // XOR8 527 1744830464U, // XORI 528 1744830464U, // XORI8 529 1811939328U, // XORIS 530 1811939328U, // XORIS8 531 0U 532 }; 533 const unsigned opcode = MI.getOpcode(); 534 unsigned Value = InstBits[opcode]; 535 unsigned op = 0; 536 op = op; // suppress warning 537 switch (opcode) { 538 case PPC::ADJCALLSTACKDOWN: 539 case PPC::ADJCALLSTACKUP: 540 case PPC::ATOMIC_CMP_SWAP_I16: 541 case PPC::ATOMIC_CMP_SWAP_I32: 542 case PPC::ATOMIC_CMP_SWAP_I64: 543 case PPC::ATOMIC_CMP_SWAP_I8: 544 case PPC::ATOMIC_LOAD_ADD_I16: 545 case PPC::ATOMIC_LOAD_ADD_I32: 546 case PPC::ATOMIC_LOAD_ADD_I64: 547 case PPC::ATOMIC_LOAD_ADD_I8: 548 case PPC::ATOMIC_LOAD_AND_I16: 549 case PPC::ATOMIC_LOAD_AND_I32: 550 case PPC::ATOMIC_LOAD_AND_I64: 551 case PPC::ATOMIC_LOAD_AND_I8: 552 case PPC::ATOMIC_LOAD_NAND_I16: 553 case PPC::ATOMIC_LOAD_NAND_I32: 554 case PPC::ATOMIC_LOAD_NAND_I64: 555 case PPC::ATOMIC_LOAD_NAND_I8: 556 case PPC::ATOMIC_LOAD_OR_I16: 557 case PPC::ATOMIC_LOAD_OR_I32: 558 case PPC::ATOMIC_LOAD_OR_I64: 559 case PPC::ATOMIC_LOAD_OR_I8: 560 case PPC::ATOMIC_LOAD_SUB_I16: 561 case PPC::ATOMIC_LOAD_SUB_I32: 562 case PPC::ATOMIC_LOAD_SUB_I64: 563 case PPC::ATOMIC_LOAD_SUB_I8: 564 case PPC::ATOMIC_LOAD_XOR_I16: 565 case PPC::ATOMIC_LOAD_XOR_I32: 566 case PPC::ATOMIC_LOAD_XOR_I64: 567 case PPC::ATOMIC_LOAD_XOR_I8: 568 case PPC::ATOMIC_SWAP_I16: 569 case PPC::ATOMIC_SWAP_I32: 570 case PPC::ATOMIC_SWAP_I64: 571 case PPC::ATOMIC_SWAP_I8: 572 case PPC::BCTR: 573 case PPC::BCTRL8_Darwin: 574 case PPC::BCTRL8_ELF: 575 case PPC::BCTRL_Darwin: 576 case PPC::BCTRL_SVR4: 577 case PPC::DYNALLOC: 578 case PPC::DYNALLOC8: 579 case PPC::LDtoc_restore: 580 case PPC::MovePCtoLR: 581 case PPC::MovePCtoLR8: 582 case PPC::NOP: 583 case PPC::SELECT_CC_F4: 584 case PPC::SELECT_CC_F8: 585 case PPC::SELECT_CC_I4: 586 case PPC::SELECT_CC_I8: 587 case PPC::SELECT_CC_VRRC: 588 case PPC::SPILL_CR: 589 case PPC::SYNC: 590 case PPC::TAILBCTR: 591 case PPC::TAILBCTR8: 592 case PPC::TCRETURNai: 593 case PPC::TCRETURNai8: 594 case PPC::TCRETURNdi: 595 case PPC::TCRETURNdi8: 596 case PPC::TCRETURNri: 597 case PPC::TCRETURNri8: 598 case PPC::TRAP: 599 case PPC::UPDATE_VRSAVE: { 600 break; 601 } 602 case PPC::DCBA: 603 case PPC::DCBF: 604 case PPC::DCBI: 605 case PPC::DCBST: 606 case PPC::DCBT: 607 case PPC::DCBTST: 608 case PPC::DCBZ: 609 case PPC::DCBZL: { 610 // op: A 611 op = getMachineOpValue(MI, MI.getOperand(0)); 612 Value |= (op & 31U) << 16; 613 // op: B 614 op = getMachineOpValue(MI, MI.getOperand(1)); 615 Value |= (op & 31U) << 11; 616 break; 617 } 618 case PPC::SRADI: { 619 // op: A 620 op = getMachineOpValue(MI, MI.getOperand(0)); 621 Value |= (op & 31U) << 16; 622 // op: RS 623 op = getMachineOpValue(MI, MI.getOperand(1)); 624 Value |= (op & 31U) << 21; 625 // op: SH 626 op = getMachineOpValue(MI, MI.getOperand(2)); 627 Value |= (op & 31U) << 11; 628 Value |= (op & 32U) >> 4; 629 break; 630 } 631 case PPC::CNTLZD: 632 case PPC::CNTLZW: 633 case PPC::EXTSB: 634 case PPC::EXTSB8: 635 case PPC::EXTSH: 636 case PPC::EXTSH8: 637 case PPC::EXTSW: 638 case PPC::EXTSW_32: 639 case PPC::EXTSW_32_64: { 640 // op: A 641 op = getMachineOpValue(MI, MI.getOperand(0)); 642 Value |= (op & 31U) << 16; 643 // op: RST 644 op = getMachineOpValue(MI, MI.getOperand(1)); 645 Value |= (op & 31U) << 21; 646 break; 647 } 648 case PPC::AND: 649 case PPC::AND8: 650 case PPC::ANDC: 651 case PPC::ANDC8: 652 case PPC::EQV: 653 case PPC::EQV8: 654 case PPC::NAND: 655 case PPC::NAND8: 656 case PPC::NOR: 657 case PPC::NOR8: 658 case PPC::OR: 659 case PPC::OR4To8: 660 case PPC::OR8: 661 case PPC::OR8To4: 662 case PPC::ORC: 663 case PPC::ORC8: 664 case PPC::SLD: 665 case PPC::SLW: 666 case PPC::SRAD: 667 case PPC::SRAW: 668 case PPC::SRAWI: 669 case PPC::SRD: 670 case PPC::SRW: 671 case PPC::XOR: 672 case PPC::XOR8: { 673 // op: A 674 op = getMachineOpValue(MI, MI.getOperand(0)); 675 Value |= (op & 31U) << 16; 676 // op: RST 677 op = getMachineOpValue(MI, MI.getOperand(1)); 678 Value |= (op & 31U) << 21; 679 // op: B 680 op = getMachineOpValue(MI, MI.getOperand(2)); 681 Value |= (op & 31U) << 11; 682 break; 683 } 684 case PPC::ADDI: 685 case PPC::ADDI8: 686 case PPC::ADDIC: 687 case PPC::ADDIC8: 688 case PPC::ADDICo: 689 case PPC::ADDIS: 690 case PPC::ADDIS8: 691 case PPC::LA: 692 case PPC::MULLI: 693 case PPC::SUBFIC: 694 case PPC::SUBFIC8: { 695 // op: A 696 op = getMachineOpValue(MI, MI.getOperand(0)); 697 Value |= (op & 31U) << 21; 698 // op: B 699 op = getMachineOpValue(MI, MI.getOperand(1)); 700 Value |= (op & 31U) << 16; 701 // op: C 702 op = getMachineOpValue(MI, MI.getOperand(2)); 703 Value |= op & 65535U; 704 break; 705 } 706 case PPC::LI: 707 case PPC::LI8: 708 case PPC::LIS: 709 case PPC::LIS8: { 710 // op: A 711 op = getMachineOpValue(MI, MI.getOperand(0)); 712 Value |= (op & 31U) << 21; 713 // op: B 714 op = getMachineOpValue(MI, MI.getOperand(1)); 715 Value |= op & 65535U; 716 break; 717 } 718 case PPC::LBZ: 719 case PPC::LBZ8: 720 case PPC::LFD: 721 case PPC::LFS: 722 case PPC::LHA: 723 case PPC::LHA8: 724 case PPC::LHZ: 725 case PPC::LHZ8: 726 case PPC::LWZ: 727 case PPC::LWZ8: 728 case PPC::STB: 729 case PPC::STB8: 730 case PPC::STFD: 731 case PPC::STFS: 732 case PPC::STH: 733 case PPC::STH8: 734 case PPC::STW: 735 case PPC::STW8: { 736 // op: A 737 op = getMachineOpValue(MI, MI.getOperand(0)); 738 Value |= (op & 31U) << 21; 739 // op: C 740 op = getMachineOpValue(MI, MI.getOperand(1)); 741 Value |= op & 65535U; 742 // op: B 743 op = getMachineOpValue(MI, MI.getOperand(2)); 744 Value |= (op & 31U) << 16; 745 break; 746 } 747 case PPC::LBZU: 748 case PPC::LBZU8: 749 case PPC::LFDU: 750 case PPC::LFSU: 751 case PPC::LHAU: 752 case PPC::LHAU8: 753 case PPC::LHZU: 754 case PPC::LHZU8: 755 case PPC::LWZU: 756 case PPC::LWZU8: { 757 // op: A 758 op = getMachineOpValue(MI, MI.getOperand(0)); 759 Value |= (op & 31U) << 21; 760 // op: C 761 op = getMachineOpValue(MI, MI.getOperand(2)); 762 Value |= op & 65535U; 763 // op: B 764 op = getMachineOpValue(MI, MI.getOperand(3)); 765 Value |= (op & 31U) << 16; 766 break; 767 } 768 case PPC::STBU: 769 case PPC::STBU8: 770 case PPC::STFDU: 771 case PPC::STFSU: 772 case PPC::STHU: 773 case PPC::STHU8: 774 case PPC::STWU: { 775 // op: A 776 op = getMachineOpValue(MI, MI.getOperand(1)); 777 Value |= (op & 31U) << 21; 778 // op: C 779 op = getMachineOpValue(MI, MI.getOperand(2)); 780 Value |= op & 65535U; 781 // op: B 782 op = getMachineOpValue(MI, MI.getOperand(3)); 783 Value |= (op & 31U) << 16; 784 break; 785 } 786 case PPC::ANDISo: 787 case PPC::ANDISo8: 788 case PPC::ANDIo: 789 case PPC::ANDIo8: 790 case PPC::ORI: 791 case PPC::ORI8: 792 case PPC::ORIS: 793 case PPC::ORIS8: 794 case PPC::XORI: 795 case PPC::XORI8: 796 case PPC::XORIS: 797 case PPC::XORIS8: { 798 // op: B 799 op = getMachineOpValue(MI, MI.getOperand(0)); 800 Value |= (op & 31U) << 16; 801 // op: A 802 op = getMachineOpValue(MI, MI.getOperand(1)); 803 Value |= (op & 31U) << 21; 804 // op: C 805 op = getMachineOpValue(MI, MI.getOperand(2)); 806 Value |= op & 65535U; 807 break; 808 } 809 case PPC::MCRF: { 810 // op: BF 811 op = getMachineOpValue(MI, MI.getOperand(0)); 812 Value |= (op & 7U) << 23; 813 // op: BFA 814 op = getMachineOpValue(MI, MI.getOperand(1)); 815 Value |= (op & 7U) << 18; 816 break; 817 } 818 case PPC::FCMPUD: 819 case PPC::FCMPUS: { 820 // op: BF 821 op = getMachineOpValue(MI, MI.getOperand(0)); 822 Value |= (op & 7U) << 23; 823 // op: FRA 824 op = getMachineOpValue(MI, MI.getOperand(1)); 825 Value |= (op & 31U) << 16; 826 // op: FRB 827 op = getMachineOpValue(MI, MI.getOperand(2)); 828 Value |= (op & 31U) << 11; 829 break; 830 } 831 case PPC::CMPDI: 832 case PPC::CMPLDI: 833 case PPC::CMPLWI: 834 case PPC::CMPWI: { 835 // op: BF 836 op = getMachineOpValue(MI, MI.getOperand(0)); 837 Value |= (op & 7U) << 23; 838 // op: RA 839 op = getMachineOpValue(MI, MI.getOperand(1)); 840 Value |= (op & 31U) << 16; 841 // op: I 842 op = getMachineOpValue(MI, MI.getOperand(2)); 843 Value |= op & 65535U; 844 break; 845 } 846 case PPC::CMPD: 847 case PPC::CMPLD: 848 case PPC::CMPLW: 849 case PPC::CMPW: { 850 // op: BF 851 op = getMachineOpValue(MI, MI.getOperand(0)); 852 Value |= (op & 7U) << 23; 853 // op: RA 854 op = getMachineOpValue(MI, MI.getOperand(1)); 855 Value |= (op & 31U) << 16; 856 // op: RB 857 op = getMachineOpValue(MI, MI.getOperand(2)); 858 Value |= (op & 31U) << 11; 859 break; 860 } 861 case PPC::BCC: { 862 // op: BIBO 863 op = getMachineOpValue(MI, MI.getOperand(0)); 864 Value |= (op & 31U) << 21; 865 Value |= (op & 96U) << 11; 866 // op: CR 867 op = getMachineOpValue(MI, MI.getOperand(1)); 868 Value |= (op & 7U) << 18; 869 // op: BD 870 op = getMachineOpValue(MI, MI.getOperand(2)); 871 Value |= (op & 16383U) << 2; 872 break; 873 } 874 case PPC::BLR: { 875 // op: BIBO 876 op = getMachineOpValue(MI, MI.getOperand(0)); 877 Value |= (op & 4U) << 23; 878 Value |= (op & 8U) << 21; 879 Value |= (op & 16U) << 19; 880 Value |= (op & 32U) << 17; 881 Value |= (op & 64U) << 15; 882 Value |= (op & 3U) << 16; 883 // op: CR 884 op = getMachineOpValue(MI, MI.getOperand(1)); 885 Value |= (op & 1U) << 20; 886 Value |= (op & 2U) << 18; 887 Value |= (op & 4U) << 16; 888 break; 889 } 890 case PPC::CREQV: 891 case PPC::CROR: { 892 // op: CRD 893 op = getMachineOpValue(MI, MI.getOperand(0)); 894 Value |= (op & 31U) << 21; 895 // op: CRA 896 op = getMachineOpValue(MI, MI.getOperand(1)); 897 Value |= (op & 31U) << 16; 898 // op: CRB 899 op = getMachineOpValue(MI, MI.getOperand(2)); 900 Value |= (op & 31U) << 11; 901 break; 902 } 903 case PPC::CRSET: { 904 // op: CRD 905 op = getMachineOpValue(MI, MI.getOperand(0)); 906 Value |= (op & 31U) << 21; 907 Value |= (op & 31U) << 16; 908 Value |= (op & 31U) << 11; 909 break; 910 } 911 case PPC::MTFSF: { 912 // op: FM 913 op = getMachineOpValue(MI, MI.getOperand(0)); 914 Value |= (op & 255U) << 17; 915 // op: RT 916 op = getMachineOpValue(MI, MI.getOperand(1)); 917 Value |= (op & 31U) << 11; 918 break; 919 } 920 case PPC::MTFSB0: 921 case PPC::MTFSB1: { 922 // op: FM 923 op = getMachineOpValue(MI, MI.getOperand(0)); 924 Value |= (op & 31U) << 21; 925 break; 926 } 927 case PPC::FADD: 928 case PPC::FADDS: 929 case PPC::FADDrtz: 930 case PPC::FDIV: 931 case PPC::FDIVS: 932 case PPC::FSUB: 933 case PPC::FSUBS: { 934 // op: FRT 935 op = getMachineOpValue(MI, MI.getOperand(0)); 936 Value |= (op & 31U) << 21; 937 // op: FRA 938 op = getMachineOpValue(MI, MI.getOperand(1)); 939 Value |= (op & 31U) << 16; 940 // op: FRB 941 op = getMachineOpValue(MI, MI.getOperand(2)); 942 Value |= (op & 31U) << 11; 943 break; 944 } 945 case PPC::FMUL: 946 case PPC::FMULS: { 947 // op: FRT 948 op = getMachineOpValue(MI, MI.getOperand(0)); 949 Value |= (op & 31U) << 21; 950 // op: FRA 951 op = getMachineOpValue(MI, MI.getOperand(1)); 952 Value |= (op & 31U) << 16; 953 // op: FRC 954 op = getMachineOpValue(MI, MI.getOperand(2)); 955 Value |= (op & 31U) << 6; 956 break; 957 } 958 case PPC::FMADD: 959 case PPC::FMADDS: 960 case PPC::FMSUB: 961 case PPC::FMSUBS: 962 case PPC::FNMADD: 963 case PPC::FNMADDS: 964 case PPC::FNMSUB: 965 case PPC::FNMSUBS: 966 case PPC::FSELD: 967 case PPC::FSELS: { 968 // op: FRT 969 op = getMachineOpValue(MI, MI.getOperand(0)); 970 Value |= (op & 31U) << 21; 971 // op: FRA 972 op = getMachineOpValue(MI, MI.getOperand(1)); 973 Value |= (op & 31U) << 16; 974 // op: FRC 975 op = getMachineOpValue(MI, MI.getOperand(2)); 976 Value |= (op & 31U) << 6; 977 // op: FRB 978 op = getMachineOpValue(MI, MI.getOperand(3)); 979 Value |= (op & 31U) << 11; 980 break; 981 } 982 case PPC::MTCRF: { 983 // op: FXM 984 op = getMachineOpValue(MI, MI.getOperand(0)); 985 Value |= (op & 255U) << 12; 986 // op: ST 987 op = getMachineOpValue(MI, MI.getOperand(1)); 988 Value |= (op & 31U) << 21; 989 break; 990 } 991 case PPC::B: 992 case PPC::BL8_Darwin: 993 case PPC::BL8_ELF: 994 case PPC::BLA8_Darwin: 995 case PPC::BLA8_ELF: 996 case PPC::BLA_Darwin: 997 case PPC::BLA_SVR4: 998 case PPC::BL_Darwin: 999 case PPC::BL_SVR4: 1000 case PPC::TAILB: 1001 case PPC::TAILB8: 1002 case PPC::TAILBA: 1003 case PPC::TAILBA8: { 1004 // op: LI 1005 op = getMachineOpValue(MI, MI.getOperand(0)); 1006 Value |= (op & 16777215U) << 2; 1007 break; 1008 } 1009 case PPC::LDinto_toc: { 1010 // op: RA 1011 op = getMachineOpValue(MI, MI.getOperand(0)); 1012 Value |= (op & 31U) << 16; 1013 break; 1014 } 1015 case PPC::RLWINM: 1016 case PPC::RLWINMo: 1017 case PPC::RLWNM: { 1018 // op: RA 1019 op = getMachineOpValue(MI, MI.getOperand(0)); 1020 Value |= (op & 31U) << 16; 1021 // op: RS 1022 op = getMachineOpValue(MI, MI.getOperand(1)); 1023 Value |= (op & 31U) << 21; 1024 // op: RB 1025 op = getMachineOpValue(MI, MI.getOperand(2)); 1026 Value |= (op & 31U) << 11; 1027 // op: MB 1028 op = getMachineOpValue(MI, MI.getOperand(3)); 1029 Value |= (op & 31U) << 6; 1030 // op: ME 1031 op = getMachineOpValue(MI, MI.getOperand(4)); 1032 Value |= (op & 31U) << 1; 1033 break; 1034 } 1035 case PPC::RLDCL: 1036 case PPC::RLDICL: 1037 case PPC::RLDICR: { 1038 // op: RA 1039 op = getMachineOpValue(MI, MI.getOperand(0)); 1040 Value |= (op & 31U) << 16; 1041 // op: RS 1042 op = getMachineOpValue(MI, MI.getOperand(1)); 1043 Value |= (op & 31U) << 21; 1044 // op: SH 1045 op = getMachineOpValue(MI, MI.getOperand(2)); 1046 Value |= (op & 31U) << 11; 1047 Value |= (op & 32U) >> 4; 1048 // op: MBE 1049 op = getMachineOpValue(MI, MI.getOperand(3)); 1050 Value |= (op & 31U) << 6; 1051 Value |= op & 32U; 1052 break; 1053 } 1054 case PPC::RLWIMI: { 1055 // op: RA 1056 op = getMachineOpValue(MI, MI.getOperand(0)); 1057 Value |= (op & 31U) << 16; 1058 // op: RS 1059 op = getMachineOpValue(MI, MI.getOperand(2)); 1060 Value |= (op & 31U) << 21; 1061 // op: RB 1062 op = getMachineOpValue(MI, MI.getOperand(3)); 1063 Value |= (op & 31U) << 11; 1064 // op: MB 1065 op = getMachineOpValue(MI, MI.getOperand(4)); 1066 Value |= (op & 31U) << 6; 1067 // op: ME 1068 op = getMachineOpValue(MI, MI.getOperand(5)); 1069 Value |= (op & 31U) << 1; 1070 break; 1071 } 1072 case PPC::RLDIMI: { 1073 // op: RA 1074 op = getMachineOpValue(MI, MI.getOperand(0)); 1075 Value |= (op & 31U) << 16; 1076 // op: RS 1077 op = getMachineOpValue(MI, MI.getOperand(2)); 1078 Value |= (op & 31U) << 21; 1079 // op: SH 1080 op = getMachineOpValue(MI, MI.getOperand(3)); 1081 Value |= (op & 31U) << 11; 1082 Value |= (op & 32U) >> 4; 1083 // op: MBE 1084 op = getMachineOpValue(MI, MI.getOperand(4)); 1085 Value |= (op & 31U) << 6; 1086 Value |= op & 32U; 1087 break; 1088 } 1089 case PPC::MFFS: { 1090 // op: RST 1091 op = getMachineOpValue(MI, MI.getOperand(0)); 1092 Value |= (op & 31U) << 21; 1093 break; 1094 } 1095 case PPC::LBZX: 1096 case PPC::LBZX8: 1097 case PPC::LDARX: 1098 case PPC::LDX: 1099 case PPC::LFDX: 1100 case PPC::LFSX: 1101 case PPC::LHAX: 1102 case PPC::LHAX8: 1103 case PPC::LHBRX: 1104 case PPC::LHZX: 1105 case PPC::LHZX8: 1106 case PPC::LVEBX: 1107 case PPC::LVEHX: 1108 case PPC::LVEWX: 1109 case PPC::LVSL: 1110 case PPC::LVSR: 1111 case PPC::LVX: 1112 case PPC::LVXL: 1113 case PPC::LWARX: 1114 case PPC::LWAX: 1115 case PPC::LWBRX: 1116 case PPC::LWZX: 1117 case PPC::LWZX8: 1118 case PPC::STBX: 1119 case PPC::STBX8: 1120 case PPC::STDCX: 1121 case PPC::STDUX: 1122 case PPC::STDX: 1123 case PPC::STDX_32: 1124 case PPC::STFDX: 1125 case PPC::STFIWX: 1126 case PPC::STFSX: 1127 case PPC::STHBRX: 1128 case PPC::STHX: 1129 case PPC::STHX8: 1130 case PPC::STVEBX: 1131 case PPC::STVEHX: 1132 case PPC::STVEWX: 1133 case PPC::STVX: 1134 case PPC::STVXL: 1135 case PPC::STWBRX: 1136 case PPC::STWCX: 1137 case PPC::STWUX: 1138 case PPC::STWX: 1139 case PPC::STWX8: { 1140 // op: RST 1141 op = getMachineOpValue(MI, MI.getOperand(0)); 1142 Value |= (op & 31U) << 21; 1143 // op: A 1144 op = getMachineOpValue(MI, MI.getOperand(1)); 1145 Value |= (op & 31U) << 16; 1146 // op: B 1147 op = getMachineOpValue(MI, MI.getOperand(2)); 1148 Value |= (op & 31U) << 11; 1149 break; 1150 } 1151 case PPC::FABSD: 1152 case PPC::FABSS: 1153 case PPC::FCFID: 1154 case PPC::FCTIDZ: 1155 case PPC::FCTIWZ: 1156 case PPC::FMR: 1157 case PPC::FNABSD: 1158 case PPC::FNABSS: 1159 case PPC::FNEGD: 1160 case PPC::FNEGS: 1161 case PPC::FRSP: 1162 case PPC::FSQRT: 1163 case PPC::FSQRTS: { 1164 // op: RST 1165 op = getMachineOpValue(MI, MI.getOperand(0)); 1166 Value |= (op & 31U) << 21; 1167 // op: B 1168 op = getMachineOpValue(MI, MI.getOperand(1)); 1169 Value |= (op & 31U) << 11; 1170 break; 1171 } 1172 case PPC::LD: 1173 case PPC::LDtoc: 1174 case PPC::LWA: 1175 case PPC::STD: 1176 case PPC::STD_32: { 1177 // op: RST 1178 op = getMachineOpValue(MI, MI.getOperand(0)); 1179 Value |= (op & 31U) << 21; 1180 // op: DS 1181 op = getMachineOpValue(MI, MI.getOperand(1)); 1182 Value |= (op & 16383U) << 2; 1183 // op: RA 1184 op = getMachineOpValue(MI, MI.getOperand(2)); 1185 Value |= (op & 31U) << 16; 1186 break; 1187 } 1188 case PPC::LDU: { 1189 // op: RST 1190 op = getMachineOpValue(MI, MI.getOperand(0)); 1191 Value |= (op & 31U) << 21; 1192 // op: DS 1193 op = getMachineOpValue(MI, MI.getOperand(2)); 1194 Value |= (op & 16383U) << 2; 1195 // op: RA 1196 op = getMachineOpValue(MI, MI.getOperand(3)); 1197 Value |= (op & 31U) << 16; 1198 break; 1199 } 1200 case PPC::STDU: { 1201 // op: RST 1202 op = getMachineOpValue(MI, MI.getOperand(1)); 1203 Value |= (op & 31U) << 21; 1204 // op: DS 1205 op = getMachineOpValue(MI, MI.getOperand(2)); 1206 Value |= (op & 16383U) << 2; 1207 // op: RA 1208 op = getMachineOpValue(MI, MI.getOperand(3)); 1209 Value |= (op & 31U) << 16; 1210 break; 1211 } 1212 case PPC::MFCRpseud: 1213 case PPC::MFCTR: 1214 case PPC::MFCTR8: 1215 case PPC::MFLR: 1216 case PPC::MFLR8: 1217 case PPC::MFVRSAVE: 1218 case PPC::MTCTR: 1219 case PPC::MTCTR8: 1220 case PPC::MTLR: 1221 case PPC::MTLR8: 1222 case PPC::MTVRSAVE: { 1223 // op: RT 1224 op = getMachineOpValue(MI, MI.getOperand(0)); 1225 Value |= (op & 31U) << 21; 1226 break; 1227 } 1228 case PPC::ADDME: 1229 case PPC::ADDME8: 1230 case PPC::ADDZE: 1231 case PPC::ADDZE8: 1232 case PPC::NEG: 1233 case PPC::NEG8: 1234 case PPC::SUBFME: 1235 case PPC::SUBFME8: 1236 case PPC::SUBFZE: 1237 case PPC::SUBFZE8: { 1238 // op: RT 1239 op = getMachineOpValue(MI, MI.getOperand(0)); 1240 Value |= (op & 31U) << 21; 1241 // op: RA 1242 op = getMachineOpValue(MI, MI.getOperand(1)); 1243 Value |= (op & 31U) << 16; 1244 break; 1245 } 1246 case PPC::ADD4: 1247 case PPC::ADD8: 1248 case PPC::ADDC: 1249 case PPC::ADDC8: 1250 case PPC::ADDE: 1251 case PPC::ADDE8: 1252 case PPC::DIVD: 1253 case PPC::DIVDU: 1254 case PPC::DIVW: 1255 case PPC::DIVWU: 1256 case PPC::MULHD: 1257 case PPC::MULHDU: 1258 case PPC::MULHW: 1259 case PPC::MULHWU: 1260 case PPC::MULLD: 1261 case PPC::MULLW: 1262 case PPC::SUBF: 1263 case PPC::SUBF8: 1264 case PPC::SUBFC: 1265 case PPC::SUBFC8: 1266 case PPC::SUBFE: 1267 case PPC::SUBFE8: { 1268 // op: RT 1269 op = getMachineOpValue(MI, MI.getOperand(0)); 1270 Value |= (op & 31U) << 21; 1271 // op: RA 1272 op = getMachineOpValue(MI, MI.getOperand(1)); 1273 Value |= (op & 31U) << 16; 1274 // op: RB 1275 op = getMachineOpValue(MI, MI.getOperand(2)); 1276 Value |= (op & 31U) << 11; 1277 break; 1278 } 1279 case PPC::MFOCRF: { 1280 // op: ST 1281 op = getMachineOpValue(MI, MI.getOperand(0)); 1282 Value |= (op & 31U) << 21; 1283 // op: FXM 1284 op = getMachineOpValue(MI, MI.getOperand(1)); 1285 Value |= (op & 255U) << 12; 1286 break; 1287 } 1288 case PPC::DSS: 1289 case PPC::DSSALL: 1290 case PPC::DST: 1291 case PPC::DST64: 1292 case PPC::DSTST: 1293 case PPC::DSTST64: 1294 case PPC::DSTSTT: 1295 case PPC::DSTSTT64: 1296 case PPC::DSTT: 1297 case PPC::DSTT64: { 1298 // op: T 1299 op = getMachineOpValue(MI, MI.getOperand(0)); 1300 Value |= (op & 1U) << 25; 1301 // op: STRM 1302 op = getMachineOpValue(MI, MI.getOperand(1)); 1303 Value |= (op & 3U) << 21; 1304 // op: A 1305 op = getMachineOpValue(MI, MI.getOperand(2)); 1306 Value |= (op & 31U) << 16; 1307 // op: B 1308 op = getMachineOpValue(MI, MI.getOperand(3)); 1309 Value |= (op & 31U) << 11; 1310 break; 1311 } 1312 case PPC::MTVSCR: { 1313 // op: VB 1314 op = getMachineOpValue(MI, MI.getOperand(0)); 1315 Value |= (op & 31U) << 11; 1316 break; 1317 } 1318 case PPC::MFVSCR: { 1319 // op: VD 1320 op = getMachineOpValue(MI, MI.getOperand(0)); 1321 Value |= (op & 31U) << 21; 1322 break; 1323 } 1324 case PPC::VSPLTISB: 1325 case PPC::VSPLTISH: 1326 case PPC::VSPLTISW: { 1327 // op: VD 1328 op = getMachineOpValue(MI, MI.getOperand(0)); 1329 Value |= (op & 31U) << 21; 1330 // op: IMM 1331 op = getMachineOpValue(MI, MI.getOperand(1)); 1332 Value |= (op & 31U) << 16; 1333 break; 1334 } 1335 case PPC::VADDCUW: 1336 case PPC::VADDFP: 1337 case PPC::VADDSBS: 1338 case PPC::VADDSHS: 1339 case PPC::VADDSWS: 1340 case PPC::VADDUBM: 1341 case PPC::VADDUBS: 1342 case PPC::VADDUHM: 1343 case PPC::VADDUHS: 1344 case PPC::VADDUWM: 1345 case PPC::VADDUWS: 1346 case PPC::VAND: 1347 case PPC::VANDC: 1348 case PPC::VAVGSB: 1349 case PPC::VAVGSH: 1350 case PPC::VAVGSW: 1351 case PPC::VAVGUB: 1352 case PPC::VAVGUH: 1353 case PPC::VAVGUW: 1354 case PPC::VCFSX: 1355 case PPC::VCFUX: 1356 case PPC::VCMPBFP: 1357 case PPC::VCMPBFPo: 1358 case PPC::VCMPEQFP: 1359 case PPC::VCMPEQFPo: 1360 case PPC::VCMPEQUB: 1361 case PPC::VCMPEQUBo: 1362 case PPC::VCMPEQUH: 1363 case PPC::VCMPEQUHo: 1364 case PPC::VCMPEQUW: 1365 case PPC::VCMPEQUWo: 1366 case PPC::VCMPGEFP: 1367 case PPC::VCMPGEFPo: 1368 case PPC::VCMPGTFP: 1369 case PPC::VCMPGTFPo: 1370 case PPC::VCMPGTSB: 1371 case PPC::VCMPGTSBo: 1372 case PPC::VCMPGTSH: 1373 case PPC::VCMPGTSHo: 1374 case PPC::VCMPGTSW: 1375 case PPC::VCMPGTSWo: 1376 case PPC::VCMPGTUB: 1377 case PPC::VCMPGTUBo: 1378 case PPC::VCMPGTUH: 1379 case PPC::VCMPGTUHo: 1380 case PPC::VCMPGTUW: 1381 case PPC::VCMPGTUWo: 1382 case PPC::VCTSXS: 1383 case PPC::VCTUXS: 1384 case PPC::VMAXFP: 1385 case PPC::VMAXSB: 1386 case PPC::VMAXSH: 1387 case PPC::VMAXSW: 1388 case PPC::VMAXUB: 1389 case PPC::VMAXUH: 1390 case PPC::VMAXUW: 1391 case PPC::VMINFP: 1392 case PPC::VMINSB: 1393 case PPC::VMINSH: 1394 case PPC::VMINSW: 1395 case PPC::VMINUB: 1396 case PPC::VMINUH: 1397 case PPC::VMINUW: 1398 case PPC::VMRGHB: 1399 case PPC::VMRGHH: 1400 case PPC::VMRGHW: 1401 case PPC::VMRGLB: 1402 case PPC::VMRGLH: 1403 case PPC::VMRGLW: 1404 case PPC::VMULESB: 1405 case PPC::VMULESH: 1406 case PPC::VMULEUB: 1407 case PPC::VMULEUH: 1408 case PPC::VMULOSB: 1409 case PPC::VMULOSH: 1410 case PPC::VMULOUB: 1411 case PPC::VMULOUH: 1412 case PPC::VNOR: 1413 case PPC::VOR: 1414 case PPC::VPKPX: 1415 case PPC::VPKSHSS: 1416 case PPC::VPKSHUS: 1417 case PPC::VPKSWSS: 1418 case PPC::VPKSWUS: 1419 case PPC::VPKUHUM: 1420 case PPC::VPKUHUS: 1421 case PPC::VPKUWUM: 1422 case PPC::VPKUWUS: 1423 case PPC::VRLB: 1424 case PPC::VRLH: 1425 case PPC::VRLW: 1426 case PPC::VSL: 1427 case PPC::VSLB: 1428 case PPC::VSLH: 1429 case PPC::VSLO: 1430 case PPC::VSLW: 1431 case PPC::VSPLTB: 1432 case PPC::VSPLTH: 1433 case PPC::VSPLTW: 1434 case PPC::VSR: 1435 case PPC::VSRAB: 1436 case PPC::VSRAH: 1437 case PPC::VSRAW: 1438 case PPC::VSRB: 1439 case PPC::VSRH: 1440 case PPC::VSRO: 1441 case PPC::VSRW: 1442 case PPC::VSUBCUW: 1443 case PPC::VSUBFP: 1444 case PPC::VSUBSBS: 1445 case PPC::VSUBSHS: 1446 case PPC::VSUBSWS: 1447 case PPC::VSUBUBM: 1448 case PPC::VSUBUBS: 1449 case PPC::VSUBUHM: 1450 case PPC::VSUBUHS: 1451 case PPC::VSUBUWM: 1452 case PPC::VSUBUWS: 1453 case PPC::VSUM2SWS: 1454 case PPC::VSUM4SBS: 1455 case PPC::VSUM4SHS: 1456 case PPC::VSUM4UBS: 1457 case PPC::VSUMSWS: 1458 case PPC::VXOR: { 1459 // op: VD 1460 op = getMachineOpValue(MI, MI.getOperand(0)); 1461 Value |= (op & 31U) << 21; 1462 // op: VA 1463 op = getMachineOpValue(MI, MI.getOperand(1)); 1464 Value |= (op & 31U) << 16; 1465 // op: VB 1466 op = getMachineOpValue(MI, MI.getOperand(2)); 1467 Value |= (op & 31U) << 11; 1468 break; 1469 } 1470 case PPC::VSLDOI: { 1471 // op: VD 1472 op = getMachineOpValue(MI, MI.getOperand(0)); 1473 Value |= (op & 31U) << 21; 1474 // op: VA 1475 op = getMachineOpValue(MI, MI.getOperand(1)); 1476 Value |= (op & 31U) << 16; 1477 // op: VB 1478 op = getMachineOpValue(MI, MI.getOperand(2)); 1479 Value |= (op & 31U) << 11; 1480 // op: SH 1481 op = getMachineOpValue(MI, MI.getOperand(3)); 1482 Value |= (op & 15U) << 6; 1483 break; 1484 } 1485 case PPC::VMHADDSHS: 1486 case PPC::VMHRADDSHS: 1487 case PPC::VMLADDUHM: 1488 case PPC::VMSUMMBM: 1489 case PPC::VMSUMSHM: 1490 case PPC::VMSUMSHS: 1491 case PPC::VMSUMUBM: 1492 case PPC::VMSUMUHM: 1493 case PPC::VMSUMUHS: 1494 case PPC::VPERM: 1495 case PPC::VSEL: { 1496 // op: VD 1497 op = getMachineOpValue(MI, MI.getOperand(0)); 1498 Value |= (op & 31U) << 21; 1499 // op: VA 1500 op = getMachineOpValue(MI, MI.getOperand(1)); 1501 Value |= (op & 31U) << 16; 1502 // op: VB 1503 op = getMachineOpValue(MI, MI.getOperand(2)); 1504 Value |= (op & 31U) << 11; 1505 // op: VC 1506 op = getMachineOpValue(MI, MI.getOperand(3)); 1507 Value |= (op & 31U) << 6; 1508 break; 1509 } 1510 case PPC::VMADDFP: 1511 case PPC::VNMSUBFP: { 1512 // op: VD 1513 op = getMachineOpValue(MI, MI.getOperand(0)); 1514 Value |= (op & 31U) << 21; 1515 // op: VA 1516 op = getMachineOpValue(MI, MI.getOperand(1)); 1517 Value |= (op & 31U) << 16; 1518 // op: VC 1519 op = getMachineOpValue(MI, MI.getOperand(2)); 1520 Value |= (op & 31U) << 6; 1521 // op: VB 1522 op = getMachineOpValue(MI, MI.getOperand(3)); 1523 Value |= (op & 31U) << 11; 1524 break; 1525 } 1526 case PPC::VEXPTEFP: 1527 case PPC::VLOGEFP: 1528 case PPC::VREFP: 1529 case PPC::VRFIM: 1530 case PPC::VRFIN: 1531 case PPC::VRFIP: 1532 case PPC::VRFIZ: 1533 case PPC::VRSQRTEFP: 1534 case PPC::VUPKHPX: 1535 case PPC::VUPKHSB: 1536 case PPC::VUPKHSH: 1537 case PPC::VUPKLPX: 1538 case PPC::VUPKLSB: 1539 case PPC::VUPKLSH: { 1540 // op: VD 1541 op = getMachineOpValue(MI, MI.getOperand(0)); 1542 Value |= (op & 31U) << 21; 1543 // op: VB 1544 op = getMachineOpValue(MI, MI.getOperand(1)); 1545 Value |= (op & 31U) << 11; 1546 break; 1547 } 1548 case PPC::V_SET0: { 1549 // op: VD 1550 op = getMachineOpValue(MI, MI.getOperand(0)); 1551 Value |= (op & 31U) << 21; 1552 Value |= (op & 31U) << 16; 1553 Value |= (op & 31U) << 11; 1554 break; 1555 } 1556 default: 1557 std::string msg; 1558 raw_string_ostream Msg(msg); 1559 Msg << "Not supported instr: " << MI; 1560 report_fatal_error(Msg.str()); 1561 } 1562 return Value; 1563} 1564 1565