LLVM API Documentation
00001 //===- TableGen'erated file -------------------------------------*- C++ -*-===// 00002 // 00003 // Assembly Writer Source Fragment 00004 // 00005 // Automatically generated file, do not edit! 00006 // 00007 //===----------------------------------------------------------------------===// 00008 00009 /// printInstruction - This method is automatically generated by tablegen 00010 /// from the instruction set description. This method returns true if the 00011 /// machine instruction was sufficiently described to print it, otherwise 00012 /// it returns false. 00013 bool PPCAsmPrinter::printInstruction(const MachineInstr *MI) { 00014 static const unsigned OpInfo[] = { 00015 0U, // PHI 00016 0U, // INLINEASM 00017 268435465U, // ADD4 00018 268435465U, // ADD8 00019 268435470U, // ADDC 00020 268435476U, // ADDE 00021 268566554U, // ADDI 00022 268566554U, // ADDI8 00023 268566560U, // ADDIC 00024 268566567U, // ADDICo 00025 268697647U, // ADDIS 00026 268697647U, // ADDIS8 00027 269484086U, // ADDME 00028 269484093U, // ADDZE 00029 68U, // ADJCALLSTACKDOWN 00030 88U, // ADJCALLSTACKUP 00031 268435562U, // AND 00032 268435562U, // AND8 00033 268435567U, // ANDC 00034 268435567U, // ANDC8 00035 268828789U, // ANDISo 00036 268828789U, // ANDISo8 00037 268828797U, // ANDIo 00038 268828797U, // ANDIo8 00039 536871044U, // B 00040 135U, // BCTR 00041 141U, // BCTRL 00042 270532756U, // BEQ 00043 270532761U, // BGE 00044 270532766U, // BGT 00045 805306531U, // BL 00046 1073741991U, // BLA 00047 270532780U, // BLE 00048 177U, // BLR 00049 270532790U, // BLT 00050 270532795U, // BNE 00051 270532800U, // BNU 00052 270532805U, // BUN 00053 268435658U, // CMPD 00054 268566736U, // CMPDI 00055 268435671U, // CMPLD 00056 268828894U, // CMPLDI 00057 268435686U, // CMPLW 00058 268828909U, // CMPLWI 00059 268435701U, // CMPW 00060 268566779U, // CMPWI 00061 269484290U, // CNTLZW 00062 272630026U, // COND_BRANCH 00063 1342177561U, // DCBZ 00064 1342177567U, // DCBZL 00065 268435750U, // DIVD 00066 268435756U, // DIVDU 00067 268435763U, // DIVW 00068 268435769U, // DIVWU 00069 1610613056U, // DSS 00070 1912602949U, // DST 00071 1912602954U, // DSTST 00072 335544657U, // DWARF_LABEL 00073 1979711837U, // DWARF_LOC 00074 268435813U, // EQV 00075 268435813U, // EQV8 00076 269484394U, // EXTSB 00077 269484401U, // EXTSH 00078 269484408U, // EXTSW 00079 269484408U, // EXTSW_32 00080 269484408U, // EXTSW_32_64 00081 269484415U, // FABSD 00082 269484415U, // FABSS 00083 268435845U, // FADD 00084 268435851U, // FADDS 00085 269484434U, // FCFID 00086 268435865U, // FCMPUD 00087 268435865U, // FCMPUS 00088 269484448U, // FCTIDZ 00089 269484456U, // FCTIWZ 00090 268435888U, // FDIV 00091 268435894U, // FDIVS 00092 268501437U, // FMADD 00093 268501444U, // FMADDS 00094 269484492U, // FMRD 00095 269484492U, // FMRS 00096 269484492U, // FMRSD 00097 268501457U, // FMSUB 00098 268501464U, // FMSUBS 00099 268435936U, // FMUL 00100 268435942U, // FMULS 00101 269484525U, // FNABSD 00102 269484525U, // FNABSS 00103 269484532U, // FNEGD 00104 269484532U, // FNEGS 00105 268501498U, // FNMADD 00106 268501506U, // FNMADDS 00107 268501515U, // FNMSUB 00108 268501523U, // FNMSUBS 00109 269484572U, // FRSP 00110 268501538U, // FSELD 00111 268501538U, // FSELS 00112 269484584U, // FSQRT 00113 269484591U, // FSQRTS 00114 268436023U, // FSUB 00115 268436029U, // FSUBS 00116 402653764U, // IMPLICIT_DEF_F4 00117 402653783U, // IMPLICIT_DEF_F8 00118 402653802U, // IMPLICIT_DEF_G8RC 00119 402653823U, // IMPLICIT_DEF_GPRC 00120 402653844U, // IMPLICIT_DEF_VRRC 00121 274727593U, // LA 00122 276824749U, // LBZ 00123 276824749U, // LBZ8 00124 278921906U, // LBZX 00125 278921906U, // LBZX8 00126 281019064U, // LD 00127 278921916U, // LDX 00128 276824769U, // LFD 00129 278921926U, // LFDX 00130 276824780U, // LFS 00131 278921937U, // LFSX 00132 276824791U, // LHA 00133 276824791U, // LHA8 00134 278921948U, // LHAX 00135 278921948U, // LHAX8 00136 278921954U, // LHBRX 00137 276824809U, // LHZ 00138 276824809U, // LHZ8 00139 278921966U, // LHZX 00140 278921966U, // LHZX8 00141 283116276U, // LI 00142 283116276U, // LI8 00143 285213432U, // LIS 00144 285213432U, // LIS8 00145 278921981U, // LVEBX 00146 278921988U, // LVEHX 00147 278921995U, // LVEWX 00148 278922002U, // LVSL 00149 278922008U, // LVSR 00150 278922014U, // LVX 00151 278922019U, // LVXL 00152 281019177U, // LWA 00153 278922030U, // LWAX 00154 278922036U, // LWBRX 00155 276824891U, // LWZ 00156 276824891U, // LWZ8 00157 287310656U, // LWZU 00158 278922054U, // LWZX 00159 278922054U, // LWZX8 00160 269484876U, // MCRF 00161 402654034U, // MFCR 00162 402654040U, // MFCTR 00163 402654047U, // MFLR 00164 289407826U, // MFOCRF 00165 436208485U, // MFVRSAVE 00166 402654060U, // MFVSCR 00167 2147484531U, // MTCRF 00168 402654074U, // MTCTR 00169 402654074U, // MTCTR8 00170 402654081U, // MTLR 00171 402654087U, // MTVRSAVE 00172 402654099U, // MTVSCR 00173 268436378U, // MULHD 00174 268436385U, // MULHDU 00175 268436393U, // MULHW 00176 268436400U, // MULHWU 00177 268436408U, // MULLD 00178 268567487U, // MULLI 00179 268436422U, // MULLW 00180 2415919267U, // MovePCtoLR 00181 268436429U, // NAND 00182 268436429U, // NAND8 00183 269485011U, // NEG 00184 984U, // NOP 00185 268436445U, // NOR 00186 268436445U, // NOR8 00187 268436450U, // OR 00188 268436450U, // OR4To8 00189 268436450U, // OR8 00190 268436450U, // OR8To4 00191 268436454U, // ORC 00192 268436454U, // ORC8 00193 268829675U, // ORI 00194 268829675U, // ORI8 00195 268829680U, // ORIS 00196 268829680U, // ORIS8 00197 269042678U, // RLDICL 00198 269042686U, // RLDICR 00199 269042694U, // RLDIMI 00200 269190158U, // RLWIMI 00201 269190166U, // RLWINM 00202 269190174U, // RLWINMo 00203 268534823U, // RLWNM 00204 1070U, // SELECT_CC_F4 00205 1070U, // SELECT_CC_F8 00206 1070U, // SELECT_CC_I4 00207 1070U, // SELECT_CC_I8 00208 1070U, // SELECT_CC_VRRC 00209 268436547U, // SLD 00210 268436552U, // SLW 00211 268436557U, // SRAD 00212 268960851U, // SRADI 00213 268436570U, // SRAW 00214 269091936U, // SRAWI 00215 268436583U, // SRD 00216 268436588U, // SRW 00217 276825201U, // STB 00218 276825201U, // STB8 00219 278922358U, // STBX 00220 278922358U, // STBX8 00221 281019516U, // STD 00222 278922369U, // STDUX 00223 278922376U, // STDX 00224 278922376U, // STDX_32 00225 281019516U, // STD_32 00226 276825230U, // STFD 00227 278922388U, // STFDX 00228 278922395U, // STFIWX 00229 276825251U, // STFS 00230 278922409U, // STFSX 00231 276825264U, // STH 00232 276825264U, // STH8 00233 278922421U, // STHBRX 00234 278922429U, // STHX 00235 278922429U, // STHX8 00236 278922435U, // STVEBX 00237 278922443U, // STVEHX 00238 278922451U, // STVEWX 00239 278922459U, // STVX 00240 278922465U, // STVXL 00241 276825320U, // STW 00242 276825320U, // STW8 00243 278922477U, // STWBRX 00244 287311093U, // STWU 00245 268436731U, // STWUX 00246 278922498U, // STWX 00247 278922498U, // STWX8 00248 268436744U, // SUBF 00249 268436744U, // SUBF8 00250 268436750U, // SUBFC 00251 268436757U, // SUBFE 00252 268567836U, // SUBFIC 00253 268567836U, // SUBFIC8 00254 269485348U, // SUBFME 00255 269485356U, // SUBFZE 00256 269485364U, // UPDATE_VRSAVE 00257 268436803U, // VADDCUW 00258 268436812U, // VADDFP 00259 268436820U, // VADDSBS 00260 268436829U, // VADDSHS 00261 268436838U, // VADDSWS 00262 268436847U, // VADDUBM 00263 268436856U, // VADDUBS 00264 268436865U, // VADDUHM 00265 268436874U, // VADDUHS 00266 268436883U, // VADDUWM 00267 268436892U, // VADDUWS 00268 268436901U, // VAND 00269 268436907U, // VANDC 00270 268436914U, // VAVGSB 00271 268436922U, // VAVGSH 00272 268436930U, // VAVGSW 00273 268436938U, // VAVGUB 00274 268436946U, // VAVGUH 00275 268436954U, // VAVGUW 00276 291505634U, // VCFSX 00277 291505641U, // VCFUX 00278 268436976U, // VCMPBFP 00279 268436985U, // VCMPBFPo 00280 268436995U, // VCMPEQFP 00281 268437005U, // VCMPEQFPo 00282 268437016U, // VCMPEQUB 00283 268437026U, // VCMPEQUBo 00284 268437037U, // VCMPEQUH 00285 268437047U, // VCMPEQUHo 00286 268437058U, // VCMPEQUW 00287 268437068U, // VCMPEQUWo 00288 268437079U, // VCMPGEFP 00289 268437089U, // VCMPGEFPo 00290 268437100U, // VCMPGTFP 00291 268437110U, // VCMPGTFPo 00292 268437121U, // VCMPGTSB 00293 268437131U, // VCMPGTSBo 00294 268437142U, // VCMPGTSH 00295 268437152U, // VCMPGTSHo 00296 268437163U, // VCMPGTSW 00297 268437173U, // VCMPGTSWo 00298 268437184U, // VCMPGTUB 00299 268437194U, // VCMPGTUBo 00300 268437205U, // VCMPGTUH 00301 268437215U, // VCMPGTUHo 00302 268437226U, // VCMPGTUW 00303 268437236U, // VCMPGTUWo 00304 291505919U, // VCTSXS 00305 291505927U, // VCTUXS 00306 269485839U, // VEXPTEFP 00307 269485849U, // VLOGEFP 00308 268502818U, // VMADDFP 00309 268437291U, // VMAXFP 00310 268437299U, // VMAXSB 00311 268437307U, // VMAXSH 00312 268437315U, // VMAXSW 00313 268437323U, // VMAXUB 00314 268437331U, // VMAXUH 00315 268437339U, // VMAXUW 00316 268502883U, // VMHADDSHS 00317 268502894U, // VMHRADDSHS 00318 268437370U, // VMINFP 00319 268437378U, // VMINSB 00320 268437386U, // VMINSH 00321 268437394U, // VMINSW 00322 268437402U, // VMINUB 00323 268437410U, // VMINUH 00324 268437418U, // VMINUW 00325 268502962U, // VMLADDUHM 00326 268437437U, // VMRGHB 00327 268437445U, // VMRGHH 00328 268437453U, // VMRGHW 00329 268437461U, // VMRGLB 00330 268437469U, // VMRGLH 00331 268437477U, // VMRGLW 00332 268503021U, // VMSUMMBM 00333 268503031U, // VMSUMSHM 00334 268503041U, // VMSUMSHS 00335 268503051U, // VMSUMUBM 00336 268503061U, // VMSUMUHM 00337 268503071U, // VMSUMUHS 00338 268437545U, // VMULESB 00339 268437554U, // VMULESH 00340 268437563U, // VMULEUB 00341 268437572U, // VMULEUH 00342 268437581U, // VMULOSB 00343 268437590U, // VMULOSH 00344 268437599U, // VMULOUB 00345 268437608U, // VMULOUH 00346 268503153U, // VNMSUBFP 00347 268437627U, // VNOR 00348 268437633U, // VOR 00349 268503174U, // VPERM 00350 268437645U, // VPKPX 00351 268437652U, // VPKSHSS 00352 268437661U, // VPKSHUS 00353 268437670U, // VPKSWSS 00354 268437679U, // VPKSWUS 00355 268437688U, // VPKUHUM 00356 268437697U, // VPKUHUS 00357 268437706U, // VPKUWUM 00358 268437715U, // VPKUWUS 00359 269486300U, // VREFP 00360 269486307U, // VRFIM 00361 269486314U, // VRFIN 00362 269486321U, // VRFIP 00363 269486328U, // VRFIZ 00364 268437759U, // VRLB 00365 268437765U, // VRLH 00366 268437771U, // VRLW 00367 269486353U, // VRSQRTEFP 00368 268503324U, // VSEL 00369 268437794U, // VSL 00370 268437799U, // VSLB 00371 268544301U, // VSLDOI 00372 268437813U, // VSLH 00373 268437819U, // VSLO 00374 268437825U, // VSLW 00375 291506503U, // VSPLTB 00376 291506511U, // VSPLTH 00377 293603671U, // VSPLTISB 00378 293603681U, // VSPLTISH 00379 293603691U, // VSPLTISW 00380 291506549U, // VSPLTW 00381 268437885U, // VSR 00382 268437890U, // VSRAB 00383 268437897U, // VSRAH 00384 268437904U, // VSRAW 00385 268437911U, // VSRB 00386 268437917U, // VSRH 00387 268437923U, // VSRO 00388 268437929U, // VSRW 00389 268437935U, // VSUBCUW 00390 268437944U, // VSUBFP 00391 268437952U, // VSUBSBS 00392 268437961U, // VSUBSHS 00393 268437970U, // VSUBSWS 00394 268437979U, // VSUBUBM 00395 268437988U, // VSUBUBS 00396 268437997U, // VSUBUHM 00397 268438006U, // VSUBUHS 00398 268438015U, // VSUBUWM 00399 268438024U, // VSUBUWS 00400 268438033U, // VSUM2SWS 00401 268438043U, // VSUM4SBS 00402 268438053U, // VSUM4SHS 00403 268438063U, // VSUM4UBS 00404 268438073U, // VSUMSWS 00405 269486658U, // VUPKHPX 00406 269486667U, // VUPKHSB 00407 269486676U, // VUPKHSH 00408 269486685U, // VUPKLPX 00409 269486694U, // VUPKLSB 00410 269486703U, // VUPKLSH 00411 268438136U, // VXOR 00412 295701112U, // V_SET0 00413 268438142U, // XOR 00414 268438142U, // XOR8 00415 268831363U, // XORI 00416 268831363U, // XORI8 00417 268831369U, // XORIS 00418 268831369U, // XORIS8 00419 0U 00420 }; 00421 00422 const char *AsmStrs = 00423 "PHINODE\n\000add \000addc \000adde \000addi \000addic \000addic. \000ad" 00424 "dis \000addme \000addze \000; ADJCALLSTACKDOWN\n\000; ADJCALLSTACKUP\n\000" 00425 "and \000andc \000andis. \000andi. \000b \000bctr\n\000bctrl\n\000beq \000" 00426 "bge \000bgt \000bl \000bla \000ble \000blr\n\000blt \000bne \000bnu \000" 00427 "bun \000cmpd \000cmpdi \000cmpld \000cmpldi \000cmplw \000cmplwi \000cm" 00428 "pw \000cmpwi \000cntlzw \000; COND_BRANCH \000dcbz \000dcbzl \000divd \000" 00429 "divdu \000divw \000divwu \000dss \000dst \000dstst \000\nLdebug_loc\000" 00430 "; .loc \000eqv \000extsb \000extsh \000extsw \000fabs \000fadd \000fadd" 00431 "s \000fcfid \000fcmpu \000fctidz \000fctiwz \000fdiv \000fdivs \000fmad" 00432 "d \000fmadds \000fmr \000fmsub \000fmsubs \000fmul \000fmuls \000fnabs " 00433 "\000fneg \000fnmadd \000fnmadds \000fnmsub \000fnmsubs \000frsp \000fse" 00434 "l \000fsqrt \000fsqrts \000fsub \000fsubs \000; IMPLICIT_DEF_F4 \000; I" 00435 "MPLICIT_DEF_F8 \000; IMPLICIT_DEF_G8RC \000; IMPLICIT_DEF_GPRC \000; IM" 00436 "PLICIT_DEF_VRRC \000la \000lbz \000lbzx \000ld \000ldx \000lfd \000lfdx" 00437 " \000lfs \000lfsx \000lha \000lhax \000lhbrx \000lhz \000lhzx \000li \000" 00438 "lis \000lvebx \000lvehx \000lvewx \000lvsl \000lvsr \000lvx \000lvxl \000" 00439 "lwa \000lwax \000lwbrx \000lwz \000lwzu \000lwzx \000mcrf \000mfcr \000" 00440 "mfctr \000mflr \000mfspr \000mfvcr \000mtcrf \000mtctr \000mtlr \000mts" 00441 "pr 256, \000mtvcr \000mulhd \000mulhdu \000mulhw \000mulhwu \000mulld \000" 00442 "mulli \000mullw \000nand \000neg \000nop\n\000nor \000or \000orc \000or" 00443 "i \000oris \000rldicl \000rldicr \000rldimi \000rlwimi \000rlwinm \000r" 00444 "lwinm. \000rlwnm \000; SELECT_CC PSEUDO!\n\000sld \000slw \000srad \000" 00445 "sradi \000sraw \000srawi \000srd \000srw \000stb \000stbx \000std \000s" 00446 "tdux \000stdx \000stfd \000stfdx \000stfiwx \000stfs \000stfsx \000sth " 00447 "\000sthbrx \000sthx \000stvebx \000stvehx \000stvewx \000stvx \000stvxl" 00448 " \000stw \000stwbrx \000stwu \000stwux \000stwx \000subf \000subfc \000" 00449 "subfe \000subfic \000subfme \000subfze \000UPDATE_VRSAVE \000vaddcuw \000" 00450 "vaddfp \000vaddsbs \000vaddshs \000vaddsws \000vaddubm \000vaddubs \000" 00451 "vadduhm \000vadduhs \000vadduwm \000vadduws \000vand \000vandc \000vavg" 00452 "sb \000vavgsh \000vavgsw \000vavgub \000vavguh \000vavguw \000vcfsx \000" 00453 "vcfux \000vcmpbfp \000vcmpbfp. \000vcmpeqfp \000vcmpeqfp. \000vcmpequb " 00454 "\000vcmpequb. \000vcmpequh \000vcmpequh. \000vcmpequw \000vcmpequw. \000" 00455 "vcmpgefp \000vcmpgefp. \000vcmpgtfp \000vcmpgtfp. \000vcmpgtsb \000vcmp" 00456 "gtsb. \000vcmpgtsh \000vcmpgtsh. \000vcmpgtsw \000vcmpgtsw. \000vcmpgtu" 00457 "b \000vcmpgtub. \000vcmpgtuh \000vcmpgtuh. \000vcmpgtuw \000vcmpgtuw. \000" 00458 "vctsxs \000vctuxs \000vexptefp \000vlogefp \000vmaddfp \000vmaxfp \000v" 00459 "maxsb \000vmaxsh \000vmaxsw \000vmaxub \000vmaxuh \000vmaxuw \000vmhadd" 00460 "shs \000vmhraddshs \000vminfp \000vminsb \000vminsh \000vminsw \000vmin" 00461 "ub \000vminuh \000vminuw \000vmladduhm \000vmrghb \000vmrghh \000vmrghw" 00462 " \000vmrglb \000vmrglh \000vmrglw \000vmsummbm \000vmsumshm \000vmsumsh" 00463 "s \000vmsumubm \000vmsumuhm \000vmsumuhs \000vmulesb \000vmulesh \000vm" 00464 "uleub \000vmuleuh \000vmulosb \000vmulosh \000vmuloub \000vmulouh \000v" 00465 "nmsubfp \000vnor \000vor \000vperm \000vpkpx \000vpkshss \000vpkshus \000" 00466 "vpkswss \000vpkswus \000vpkuhum \000vpkuhus \000vpkuwum \000vpkuwus \000" 00467 "vrefp \000vrfim \000vrfin \000vrfip \000vrfiz \000vrlb \000vrlh \000vrl" 00468 "w \000vrsqrtefp \000vsel \000vsl \000vslb \000vsldoi \000vslh \000vslo " 00469 "\000vslw \000vspltb \000vsplth \000vspltisb \000vspltish \000vspltisw \000" 00470 "vspltw \000vsr \000vsrab \000vsrah \000vsraw \000vsrb \000vsrh \000vsro" 00471 " \000vsrw \000vsubcuw \000vsubfp \000vsubsbs \000vsubshs \000vsubsws \000" 00472 "vsububm \000vsububs \000vsubuhm \000vsubuhs \000vsubuwm \000vsubuws \000" 00473 "vsum2sws \000vsum4sbs \000vsum4shs \000vsum4ubs \000vsumsws \000vupkhpx" 00474 " \000vupkhsb \000vupkhsh \000vupklpx \000vupklsb \000vupklsh \000vxor \000" 00475 "xor \000xori \000xoris \000"; 00476 00477 if (MI->getOpcode() == TargetInstrInfo::INLINEASM) { 00478 printInlineAsm(MI); 00479 return true; 00480 } 00481 00482 // Emit the opcode for the instruction. 00483 unsigned Bits = OpInfo[MI->getOpcode()]; 00484 if (Bits == 0) return false; 00485 O << AsmStrs+(Bits & 4095); 00486 00487 00488 // Fragment 0 encoded into 4 bits for 10 unique commands. 00489 switch ((Bits >> 28) & 15) { 00490 default: // unreachable. 00491 case 0: 00492 return true; 00493 break; 00494 case 1: 00495 // ADD4, ADD8, ADDC, ADDE, ADDI, ADDI8, ADDIC, ADDICo, ADDIS, ADDIS8, ADD... 00496 printOperand(MI, 0); 00497 break; 00498 case 2: 00499 // B 00500 printBranchOperand(MI, 0); 00501 O << "\n"; 00502 return true; 00503 break; 00504 case 3: 00505 // BL 00506 printCallOperand(MI, 0); 00507 O << "\n"; 00508 return true; 00509 break; 00510 case 4: 00511 // BLA 00512 printAbsAddrOperand(MI, 0); 00513 O << "\n"; 00514 return true; 00515 break; 00516 case 5: 00517 // DCBZ, DCBZL 00518 printMemRegReg(MI, 0); 00519 O << "\n"; 00520 return true; 00521 break; 00522 case 6: 00523 // DSS 00524 printU5ImmOperand(MI, 1); 00525 O << ", "; 00526 printU5ImmOperand(MI, 0); 00527 O << "\n"; 00528 return true; 00529 break; 00530 case 7: 00531 // DST, DSTST, DWARF_LOC 00532 printOperand(MI, 2); 00533 O << ", "; 00534 break; 00535 case 8: 00536 // MTCRF 00537 printcrbitm(MI, 0); 00538 O << ", "; 00539 printOperand(MI, 1); 00540 O << "\n"; 00541 return true; 00542 break; 00543 case 9: 00544 // MovePCtoLR 00545 printPICLabel(MI, 0); 00546 O << "\n"; 00547 return true; 00548 break; 00549 } 00550 00551 00552 // Fragment 1 encoded into 3 bits for 6 unique commands. 00553 switch ((Bits >> 25) & 7) { 00554 default: // unreachable. 00555 case 0: 00556 // ADD4, ADD8, ADDC, ADDE, ADDI, ADDI8, ADDIC, ADDICo, ADDIS, ADDIS8, ADD... 00557 O << ", "; 00558 break; 00559 case 1: 00560 // DST, DSTST 00561 printOperand(MI, 3); 00562 O << ", "; 00563 printU5ImmOperand(MI, 1); 00564 O << ", "; 00565 printU5ImmOperand(MI, 0); 00566 O << "\n"; 00567 return true; 00568 break; 00569 case 2: 00570 // DWARF_LABEL 00571 O << ":\n"; 00572 return true; 00573 break; 00574 case 3: 00575 // DWARF_LOC 00576 printOperand(MI, 0); 00577 O << ", "; 00578 printOperand(MI, 1); 00579 O << "\n"; 00580 return true; 00581 break; 00582 case 4: 00583 // IMPLICIT_DEF_F4, IMPLICIT_DEF_F8, IMPLICIT_DEF_G8RC, IMPLICIT_DEF_GPRC... 00584 O << "\n"; 00585 return true; 00586 break; 00587 case 5: 00588 // MFVRSAVE 00589 O << ", 256\n"; 00590 return true; 00591 break; 00592 } 00593 00594 00595 // Fragment 2 encoded into 4 bits for 14 unique commands. 00596 switch ((Bits >> 21) & 15) { 00597 default: // unreachable. 00598 case 0: 00599 // ADD4, ADD8, ADDC, ADDE, ADDI, ADDI8, ADDIC, ADDICo, ADDIS, ADDIS8, ADD... 00600 printOperand(MI, 1); 00601 break; 00602 case 1: 00603 // BEQ, BGE, BGT, BLE, BLT, BNE, BNU, BUN 00604 printBranchOperand(MI, 1); 00605 O << "\n"; 00606 return true; 00607 break; 00608 case 2: 00609 // COND_BRANCH 00610 printU16ImmOperand(MI, 1); 00611 O << ", "; 00612 printBranchOperand(MI, 2); 00613 O << "\n"; 00614 return true; 00615 break; 00616 case 3: 00617 // LA 00618 printSymbolLo(MI, 2); 00619 O << "("; 00620 printOperand(MI, 1); 00621 O << ")\n"; 00622 return true; 00623 break; 00624 case 4: 00625 // LBZ, LBZ8, LFD, LFS, LHA, LHA8, LHZ, LHZ8, LWZ, LWZ8, STB, STB8, STFD,... 00626 printMemRegImm(MI, 1); 00627 O << "\n"; 00628 return true; 00629 break; 00630 case 5: 00631 // LBZX, LBZX8, LDX, LFDX, LFSX, LHAX, LHAX8, LHBRX, LHZX, LHZX8, LVEBX, ... 00632 printMemRegReg(MI, 1); 00633 O << "\n"; 00634 return true; 00635 break; 00636 case 6: 00637 // LD, LWA, STD, STD_32 00638 printMemRegImmShifted(MI, 1); 00639 O << "\n"; 00640 return true; 00641 break; 00642 case 7: 00643 // LI, LI8 00644 printSymbolLo(MI, 1); 00645 O << "\n"; 00646 return true; 00647 break; 00648 case 8: 00649 // LIS, LIS8 00650 printSymbolHi(MI, 1); 00651 O << "\n"; 00652 return true; 00653 break; 00654 case 9: 00655 // LWZU, STWU 00656 printS16ImmOperand(MI, 1); 00657 O << "("; 00658 printOperand(MI, 2); 00659 O << ")\n"; 00660 return true; 00661 break; 00662 case 10: 00663 // MFOCRF 00664 printcrbitm(MI, 1); 00665 O << "\n"; 00666 return true; 00667 break; 00668 case 11: 00669 // VCFSX, VCFUX, VCTSXS, VCTUXS, VSPLTB, VSPLTH, VSPLTW 00670 printOperand(MI, 2); 00671 O << ", "; 00672 printU5ImmOperand(MI, 1); 00673 O << "\n"; 00674 return true; 00675 break; 00676 case 12: 00677 // VSPLTISB, VSPLTISH, VSPLTISW 00678 printS5ImmOperand(MI, 1); 00679 O << "\n"; 00680 return true; 00681 break; 00682 case 13: 00683 // V_SET0 00684 printOperand(MI, 0); 00685 O << ", "; 00686 printOperand(MI, 0); 00687 O << "\n"; 00688 return true; 00689 break; 00690 } 00691 00692 00693 // Fragment 3 encoded into 1 bits for 2 unique commands. 00694 if ((Bits >> 20) & 1) { 00695 // ADDME, ADDZE, CNTLZW, EXTSB, EXTSH, EXTSW, EXTSW_32, EXTSW_32_64, FABS... 00696 O << "\n"; 00697 return true; 00698 } else { 00699 // ADD4, ADD8, ADDC, ADDE, ADDI, ADDI8, ADDIC, ADDICo, ADDIS, ADDIS8, AND... 00700 O << ", "; 00701 } 00702 00703 00704 // Fragment 4 encoded into 3 bits for 6 unique commands. 00705 switch ((Bits >> 17) & 7) { 00706 default: // unreachable. 00707 case 0: 00708 // ADD4, ADD8, ADDC, ADDE, AND, AND8, ANDC, ANDC8, CMPD, CMPLD, CMPLW, CM... 00709 printOperand(MI, 2); 00710 break; 00711 case 1: 00712 // ADDI, ADDI8, ADDIC, ADDICo, CMPDI, CMPWI, MULLI, SUBFIC, SUBFIC8 00713 printS16ImmOperand(MI, 2); 00714 O << "\n"; 00715 return true; 00716 break; 00717 case 2: 00718 // ADDIS, ADDIS8 00719 printSymbolHi(MI, 2); 00720 O << "\n"; 00721 return true; 00722 break; 00723 case 3: 00724 // ANDISo, ANDISo8, ANDIo, ANDIo8, CMPLDI, CMPLWI, ORI, ORI8, ORIS, ORIS8... 00725 printU16ImmOperand(MI, 2); 00726 O << "\n"; 00727 return true; 00728 break; 00729 case 4: 00730 // RLDICL, RLDICR, RLDIMI, SRADI 00731 printU6ImmOperand(MI, 2); 00732 break; 00733 case 5: 00734 // RLWIMI, RLWINM, RLWINMo, SRAWI 00735 printU5ImmOperand(MI, 2); 00736 break; 00737 } 00738 00739 00740 // Fragment 5 encoded into 1 bits for 2 unique commands. 00741 if ((Bits >> 16) & 1) { 00742 // FMADD, FMADDS, FMSUB, FMSUBS, FNMADD, FNMADDS, FNMSUB, FNMSUBS, FSELD,... 00743 O << ", "; 00744 } else { 00745 // ADD4, ADD8, ADDC, ADDE, AND, AND8, ANDC, ANDC8, CMPD, CMPLD, CMPLW, CM... 00746 O << "\n"; 00747 return true; 00748 } 00749 00750 00751 // Fragment 6 encoded into 2 bits for 3 unique commands. 00752 switch ((Bits >> 14) & 3) { 00753 default: // unreachable. 00754 case 0: 00755 // FMADD, FMADDS, FMSUB, FMSUBS, FNMADD, FNMADDS, FNMSUB, FNMSUBS, FSELD,... 00756 printOperand(MI, 3); 00757 O << "\n"; 00758 return true; 00759 break; 00760 case 1: 00761 // RLDICL, RLDICR, RLDIMI 00762 printU6ImmOperand(MI, 3); 00763 O << "\n"; 00764 return true; 00765 break; 00766 case 2: 00767 // RLWIMI, RLWINM, RLWINMo, RLWNM, VSLDOI 00768 printU5ImmOperand(MI, 3); 00769 break; 00770 } 00771 00772 00773 // Fragment 7 encoded into 1 bits for 2 unique commands. 00774 if ((Bits >> 13) & 1) { 00775 // VSLDOI 00776 O << "\n"; 00777 return true; 00778 } else { 00779 // RLWIMI, RLWINM, RLWINMo, RLWNM 00780 O << ", "; 00781 printU5ImmOperand(MI, 4); 00782 O << "\n"; 00783 return true; 00784 } 00785 00786 }