LLVM API Documentation

PPCGenAsmWriter.inc

Go to the documentation of this file.
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 }