LLVM API Documentation

AlphaGenAsmWriter.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 AlphaAsmPrinter::printInstruction(const MachineInstr *MI) {
00014   static const unsigned OpInfo[] = {
00015     0U, // PHI
00016     0U, // INLINEASM
00017     1073741833U,  // ADDL
00018     1073741833U,  // ADDLi
00019     1073741839U,  // ADDQ
00020     1073741839U,  // ADDQi
00021     1073741845U,  // ADDS
00022     1073741854U,  // ADDT
00023     2214592551U,  // ADJUSTSTACKDOWN
00024     2214592562U,  // ADJUSTSTACKUP
00025     2281701435U,  // ALTENT
00026     1073741885U,  // AND
00027     1073741885U,  // ANDi
00028     2348810306U,  // BEQ
00029     2348810311U,  // BGE
00030     2348810316U,  // BGT
00031     1073741905U,  // BIC
00032     1073741905U,  // BICi
00033     1073741910U,  // BIS
00034     1073741910U,  // BISi
00035     2348810331U,  // BLBC
00036     2348810337U,  // BLBS
00037     2348810343U,  // BLE
00038     2348810348U,  // BLT
00039     2348810353U,  // BNE
00040     2214592630U,  // BR
00041     2415919230U,  // BSR
00042     3221225608U,  // CMOVEQ
00043     3221225608U,  // CMOVEQi
00044     3221225616U,  // CMOVGE
00045     3221225616U,  // CMOVGEi
00046     3221225624U,  // CMOVGT
00047     3221225624U,  // CMOVGTi
00048     3221225632U,  // CMOVLBC
00049     3221225632U,  // CMOVLBCi
00050     3221225641U,  // CMOVLBS
00051     3221225641U,  // CMOVLBSi
00052     3221225650U,  // CMOVLE
00053     3221225650U,  // CMOVLEi
00054     3221225658U,  // CMOVLT
00055     3221225658U,  // CMOVLTi
00056     3221225666U,  // CMOVNE
00057     3221225666U,  // CMOVNEi
00058     1073742026U,  // CMPBGE
00059     1073742026U,  // CMPBGEi
00060     1073742034U,  // CMPEQ
00061     1073742034U,  // CMPEQi
00062     1073742041U,  // CMPLE
00063     1073742041U,  // CMPLEi
00064     1073742048U,  // CMPLT
00065     1073742048U,  // CMPLTi
00066     1073742055U,  // CMPTEQ
00067     1073742066U,  // CMPTLE
00068     1073742077U,  // CMPTLT
00069     1073742088U,  // CMPTUN
00070     1073742099U,  // CMPULE
00071     1073742099U,  // CMPULEi
00072     1073742107U,  // CMPULT
00073     1073742107U,  // CMPULTi
00074     1073742115U,  // CPYSES
00075     1073742115U,  // CPYSESt
00076     1073742115U,  // CPYSET
00077     1073742122U,  // CPYSNS
00078     1073742122U,  // CPYSNSt
00079     1073742122U,  // CPYSNT
00080     1073742122U,  // CPYSNTs
00081     1073742129U,  // CPYSS
00082     1073742129U,  // CPYSSt
00083     1073742129U,  // CPYST
00084     1073742129U,  // CPYSTs
00085     1409286455U,  // CTLZ
00086     1409286461U,  // CTPOP
00087     1409286468U,  // CTTZ
00088     1409286474U,  // CVTQS
00089     1409286485U,  // CVTQT
00090     1409286496U,  // CVTST
00091     1409286505U,  // CVTTQ
00092     1409286516U,  // CVTTS
00093     1073742207U,  // DIVS
00094     1073742216U,  // DIVT
00095     1073742225U,  // EQV
00096     1073742225U,  // EQVi
00097     1073742230U,  // EXTBL
00098     1073742237U,  // EXTLL
00099     1073742244U,  // EXTWL
00100     2348810667U,  // FBEQ
00101     2348810673U,  // FBGE
00102     2348810679U,  // FBGT
00103     2348810685U,  // FBLE
00104     2348810691U,  // FBLT
00105     2348810697U,  // FBNE
00106     3221225935U,  // FCMOVEQS
00107     3221225935U,  // FCMOVEQT
00108     3221225944U,  // FCMOVGES
00109     3221225944U,  // FCMOVGET
00110     3221225953U,  // FCMOVGTS
00111     3221225953U,  // FCMOVGTT
00112     3221225962U,  // FCMOVLES
00113     3221225962U,  // FCMOVLET
00114     3221225971U,  // FCMOVLTS
00115     3221225971U,  // FCMOVLTT
00116     3221225980U,  // FCMOVNES
00117     3221225980U,  // FCMOVNET
00118     1409286661U,  // FTOIS
00119     1409286668U,  // FTOIT
00120     2214593043U,  // IDEF_F32
00121     2214593043U,  // IDEF_F64
00122     2214593043U,  // IDEF_I
00123     1409286682U,  // ITOFS
00124     1409286689U,  // ITOFT
00125     2550137384U,  // JMP
00126     557U, // JSR
00127     2550137406U,  // JSR_COROUTINE
00128     589U, // JSRs
00129     2382365278U,  // LDA
00130     2382365283U,  // LDAH
00131     2617246307U,  // LDAHg
00132     2390753891U,  // LDAHr
00133     2617246302U,  // LDAg
00134     2399142494U,  // LDAr
00135     2382365289U,  // LDBU
00136     2399142505U,  // LDBUr
00137     2382365295U,  // LDL
00138     2399142511U,  // LDLr
00139     2382365300U,  // LDQ
00140     2407531124U,  // LDQl
00141     2399142516U,  // LDQr
00142     2382365305U,  // LDS
00143     2399142521U,  // LDSr
00144     2382365310U,  // LDT
00145     2399142526U,  // LDTr
00146     2382365315U,  // LDWU
00147     2399142531U,  // LDWUr
00148     2684355209U,  // MEMLABEL
00149     1073742483U,  // MULL
00150     1073742483U,  // MULLi
00151     1073742489U,  // MULQ
00152     1073742489U,  // MULQi
00153     1073742495U,  // MULS
00154     1073742504U,  // MULT
00155     1073742513U,  // ORNOT
00156     1073742513U,  // ORNOTi
00157     2751464120U,  // PCLABEL
00158     706U, // RETDAG
00159     706U, // RETDAGp
00160     2214593235U,  // RPCC
00161     1073742553U,  // S4ADDL
00162     1073742553U,  // S4ADDLi
00163     1073742561U,  // S4ADDQ
00164     1073742561U,  // S4ADDQi
00165     1073742569U,  // S4SUBL
00166     1073742569U,  // S4SUBLi
00167     1073742577U,  // S4SUBQ
00168     1073742577U,  // S4SUBQi
00169     1073742585U,  // S8ADDL
00170     1073742585U,  // S8ADDLi
00171     1073742593U,  // S8ADDQ
00172     1073742593U,  // S8ADDQi
00173     1073742601U,  // S8SUBL
00174     1073742601U,  // S8SUBLi
00175     1073742609U,  // S8SUBQ
00176     1073742609U,  // S8SUBQi
00177     1409286937U,  // SEXTB
00178     1409286944U,  // SEXTW
00179     1073742631U,  // SL
00180     1073742631U,  // SLi
00181     1409286956U,  // SQRTS
00182     1409286966U,  // SQRTT
00183     1073742656U,  // SRA
00184     1073742656U,  // SRAi
00185     1073742661U,  // SRL
00186     1073742661U,  // SRLi
00187     2382365514U,  // STB
00188     2399142730U,  // STBr
00189     2382365519U,  // STL
00190     2399142735U,  // STLr
00191     2382365524U,  // STQ
00192     2399142740U,  // STQr
00193     2382365529U,  // STS
00194     2399142745U,  // STSr
00195     2382365534U,  // STT
00196     2399142750U,  // STTr
00197     2382365539U,  // STW
00198     2399142755U,  // STWr
00199     1073742696U,  // SUBL
00200     1073742696U,  // SUBLi
00201     1073742702U,  // SUBQ
00202     1073742702U,  // SUBQi
00203     1073742708U,  // SUBS
00204     1073742717U,  // SUBT
00205     1073742726U,  // UMULH
00206     1073742726U,  // UMULHi
00207     909U, // WTF
00208     1073742739U,  // XOR
00209     1073742739U,  // XORi
00210     1073742744U,  // ZAP
00211     1073742749U,  // ZAPNOT
00212     1073742749U,  // ZAPNOTi
00213     1073742744U,  // ZAPi
00214     0U
00215   };
00216 
00217   const char *AsmStrs = 
00218     "PHINODE\n\000addl \000addq \000adds/su \000addt/su \000; ADJDOWN \000; "
00219     "ADJUP \000$\000and \000beq \000bge \000bgt \000bic \000bis \000blbc \000"
00220     "blbs \000ble \000blt \000bne \000br $31,\000bsr $26,$\000cmoveq \000cmo"
00221     "vge \000cmovgt \000cmovlbc \000cmovlbs \000cmovle \000cmovlt \000cmovne"
00222     " \000cmpbge \000cmpeq \000cmple \000cmplt \000cmpteq/su \000cmptle/su \000"
00223     "cmptlt/su \000cmptun/su \000cmpule \000cmpult \000cpyse \000cpysn \000c"
00224     "pys \000CTLZ \000CTPOP \000CTTZ \000cvtqs/sui \000cvtqt/sui \000cvtst/s"
00225     " \000cvttq/svc \000cvtts/sui \000divs/su \000divt/su \000eqv \000EXTBL "
00226     "\000EXTLL \000EXTWL \000fbeq \000fbge \000fbgt \000fble \000fblt \000fb"
00227     "ne \000fcmoveq \000fcmovge \000fcmovgt \000fcmovle \000fcmovlt \000fcmo"
00228     "vne \000ftois \000ftoit \000#idef \000itofs \000itoft \000jmp \000jsr $"
00229     "26,($27),0\n\000jsr_coroutine \000jsr $23,($27),0\n\000lda \000ldah \000"
00230     "ldbu \000ldl \000ldq \000lds \000ldt \000ldwu \000LSMARKER$\000mull \000"
00231     "mulq \000muls/su \000mult/su \000ornot \000PCMARKER_\000ret $31,($26),1"
00232     "\n\000rpcc \000s4addl \000s4addq \000s4subl \000s4subq \000s8addl \000s"
00233     "8addq \000s8subl \000s8subq \000sextb \000sextw \000sll \000sqrts/su \000"
00234     "sqrtt/su \000sra \000srl \000stb \000stl \000stq \000sts \000stt \000st"
00235     "w \000subl \000subq \000subs/su \000subt/su \000umulh \000#wtf\n\000xor"
00236     " \000zap \000zapnot \000";
00237 
00238   if (MI->getOpcode() == TargetInstrInfo::INLINEASM) {
00239     printInlineAsm(MI);
00240     return true;
00241   }
00242 
00243   // Emit the opcode for the instruction.
00244   unsigned Bits = OpInfo[MI->getOpcode()];
00245   if (Bits == 0) return false;
00246   O << AsmStrs+(Bits & 1023);
00247 
00248 
00249   // Fragment 0 encoded into 2 bits for 4 unique commands.
00250   switch ((Bits >> 30) & 3) {
00251   default:   // unreachable.
00252   case 0:
00253     return true;
00254     break;
00255   case 1:
00256     // ADDL, ADDLi, ADDQ, ADDQi, ADDS, ADDT, AND, ANDi, BIC, BICi, BIS, BISi,...
00257     printOperand(MI, 1); 
00258     O << ","; 
00259     break;
00260   case 2:
00261     // ADJUSTSTACKDOWN, ADJUSTSTACKUP, ALTENT, BEQ, BGE, BGT, BLBC, BLBS, BLE...
00262     printOperand(MI, 0); 
00263     break;
00264   case 3:
00265     // CMOVEQ, CMOVEQi, CMOVGE, CMOVGEi, CMOVGT, CMOVGTi, CMOVLBC, CMOVLBCi, ...
00266     printOperand(MI, 2); 
00267     O << ","; 
00268     printOperand(MI, 1); 
00269     O << ","; 
00270     printOperand(MI, 0); 
00271     O << "\n"; 
00272     return true;
00273     break;
00274   }
00275 
00276 
00277   // Fragment 1 encoded into 4 bits for 10 unique commands.
00278   switch ((Bits >> 26) & 15) {
00279   default:   // unreachable.
00280   case 0:
00281     // ADDL, ADDLi, ADDQ, ADDQi, ADDS, ADDT, AND, ANDi, BIC, BICi, BIS, BISi,...
00282     printOperand(MI, 2); 
00283     O << ","; 
00284     printOperand(MI, 0); 
00285     O << "\n"; 
00286     return true;
00287     break;
00288   case 1:
00289     // ADJUSTSTACKDOWN, ADJUSTSTACKUP, BR, IDEF_F32, IDEF_F64, IDEF_I, RPCC
00290     O << "\n"; 
00291     return true;
00292     break;
00293   case 2:
00294     // ALTENT
00295     O << "..ng:\n\n"; 
00296     return true;
00297     break;
00298   case 3:
00299     // BEQ, BGE, BGT, BLBC, BLBS, BLE, BLT, BNE, FBEQ, FBGE, FBGT, FBLE, FBLT...
00300     O << ","; 
00301     printOperand(MI, 1); 
00302     break;
00303   case 4:
00304     // BSR
00305     O << "..ng\n"; 
00306     return true;
00307     break;
00308   case 5:
00309     // CTLZ, CTPOP, CTTZ, CVTQS, CVTQT, CVTST, CVTTQ, CVTTS, FTOIS, FTOIT, IT...
00310     printOperand(MI, 0); 
00311     O << "\n"; 
00312     return true;
00313     break;
00314   case 6:
00315     // JMP, JSR_COROUTINE
00316     O << ",("; 
00317     printOperand(MI, 1); 
00318     O << "),"; 
00319     printOperand(MI, 2); 
00320     O << "\n"; 
00321     return true;
00322     break;
00323   case 7:
00324     // LDAHg, LDAg
00325     O << ",0("; 
00326     printOperand(MI, 2); 
00327     O << ")\t\t!gpdisp!"; 
00328     printOperand(MI, 3); 
00329     O << "\n"; 
00330     return true;
00331     break;
00332   case 8:
00333     // MEMLABEL
00334     O << "$"; 
00335     printOperand(MI, 1); 
00336     O << "$"; 
00337     printOperand(MI, 2); 
00338     O << "$"; 
00339     printOperand(MI, 3); 
00340     O << ":\n"; 
00341     return true;
00342     break;
00343   case 9:
00344     // PCLABEL
00345     O << ":\n\n"; 
00346     return true;
00347     break;
00348   }
00349 
00350 
00351   // Fragment 2 encoded into 1 bits for 2 unique commands.
00352   if ((Bits >> 25) & 1) {
00353     // LDA, LDAH, LDAHr, LDAr, LDBU, LDBUr, LDL, LDLr, LDQ, LDQl, LDQr, LDS, ...
00354     O << "("; 
00355     printOperand(MI, 2); 
00356   } else {
00357     // BEQ, BGE, BGT, BLBC, BLBS, BLE, BLT, BNE, FBEQ, FBGE, FBGT, FBLE, FBLT...
00358     O << "\n"; 
00359     return true;
00360   }
00361 
00362 
00363   // Fragment 3 encoded into 2 bits for 4 unique commands.
00364   switch ((Bits >> 23) & 3) {
00365   default:   // unreachable.
00366   case 0:
00367     // LDA, LDAH, LDBU, LDL, LDQ, LDS, LDT, LDWU, STB, STL, STQ, STS, STT, ST...
00368     O << ")\n"; 
00369     return true;
00370     break;
00371   case 1:
00372     // LDAHr
00373     O << ")\t\t!gprelhigh\n"; 
00374     return true;
00375     break;
00376   case 2:
00377     // LDAr, LDBUr, LDLr, LDQr, LDSr, LDTr, LDWUr, STBr, STLr, STQr, STSr, ST...
00378     O << ")\t\t!gprellow\n"; 
00379     return true;
00380     break;
00381   case 3:
00382     // LDQl
00383     O << ")\t\t!literal\n"; 
00384     return true;
00385     break;
00386   }
00387 
00388 }