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 char * const OpStrs[] = {
00015     "PHINODE\n",  // PHI
00016     0,  // INLINEASM
00017     "addl ",  // ADDL
00018     "addl ",  // ADDLi
00019     "addq ",  // ADDQ
00020     "addq ",  // ADDQi
00021     "adds/su ", // ADDS
00022     "addt/su ", // ADDT
00023     "; ADJDOWN ", // ADJUSTSTACKDOWN
00024     "; ADJUP ", // ADJUSTSTACKUP
00025     "$",  // ALTENT
00026     "and ", // AND
00027     "and ", // ANDi
00028     "beq ", // BEQ
00029     "bge ", // BGE
00030     "bgt ", // BGT
00031     "bic ", // BIC
00032     "bic ", // BICi
00033     "bis ", // BIS
00034     "bis ", // BISi
00035     "blbc ",  // BLBC
00036     "blbs ",  // BLBS
00037     "ble ", // BLE
00038     "blt ", // BLT
00039     "bne ", // BNE
00040     "br $31,",  // BR
00041     "bsr $26,$",  // BSR
00042     "cmoveq ",  // CMOVEQ
00043     "cmoveq ",  // CMOVEQi
00044     "cmovge ",  // CMOVGE
00045     "cmovge ",  // CMOVGEi
00046     "cmovgt ",  // CMOVGT
00047     "cmovgt ",  // CMOVGTi
00048     "cmovlbc ", // CMOVLBC
00049     "cmovlbc ", // CMOVLBCi
00050     "cmovlbs ", // CMOVLBS
00051     "cmovlbs ", // CMOVLBSi
00052     "cmovle ",  // CMOVLE
00053     "cmovle ",  // CMOVLEi
00054     "cmovlt ",  // CMOVLT
00055     "cmovlt ",  // CMOVLTi
00056     "cmovne ",  // CMOVNE
00057     "cmovne ",  // CMOVNEi
00058     "cmpbge ",  // CMPBGE
00059     "cmpbge ",  // CMPBGEi
00060     "cmpeq ", // CMPEQ
00061     "cmpeq ", // CMPEQi
00062     "cmple ", // CMPLE
00063     "cmple ", // CMPLEi
00064     "cmplt ", // CMPLT
00065     "cmplt ", // CMPLTi
00066     "cmpteq/su ", // CMPTEQ
00067     "cmptle/su ", // CMPTLE
00068     "cmptlt/su ", // CMPTLT
00069     "cmptun/su ", // CMPTUN
00070     "cmpule ",  // CMPULE
00071     "cmpule ",  // CMPULEi
00072     "cmpult ",  // CMPULT
00073     "cmpult ",  // CMPULTi
00074     "cpyse ", // CPYSES
00075     "cpyse ", // CPYSESt
00076     "cpyse ", // CPYSET
00077     "cpysn ", // CPYSNS
00078     "cpysn ", // CPYSNSt
00079     "cpysn ", // CPYSNT
00080     "cpysn ", // CPYSNTs
00081     "cpys ",  // CPYSS
00082     "cpys ",  // CPYSSt
00083     "cpys ",  // CPYST
00084     "cpys ",  // CPYSTs
00085     "CTLZ ",  // CTLZ
00086     "CTPOP ", // CTPOP
00087     "CTTZ ",  // CTTZ
00088     "cvtqs/sui ", // CVTQS
00089     "cvtqt/sui ", // CVTQT
00090     "cvtst/s ", // CVTST
00091     "cvttq/svc ", // CVTTQ
00092     "cvtts/sui ", // CVTTS
00093     "divs/su ", // DIVS
00094     "divt/su ", // DIVT
00095     "eqv ", // EQV
00096     "eqv ", // EQVi
00097     "EXTBL ", // EXTBL
00098     "EXTLL ", // EXTLL
00099     "EXTWL ", // EXTWL
00100     "fbeq ",  // FBEQ
00101     "fbge ",  // FBGE
00102     "fbgt ",  // FBGT
00103     "fble ",  // FBLE
00104     "fblt ",  // FBLT
00105     "fbne ",  // FBNE
00106     "fcmoveq ", // FCMOVEQS
00107     "fcmoveq ", // FCMOVEQT
00108     "fcmovge ", // FCMOVGES
00109     "fcmovge ", // FCMOVGET
00110     "fcmovgt ", // FCMOVGTS
00111     "fcmovgt ", // FCMOVGTT
00112     "fcmovle ", // FCMOVLES
00113     "fcmovle ", // FCMOVLET
00114     "fcmovlt ", // FCMOVLTS
00115     "fcmovlt ", // FCMOVLTT
00116     "fcmovne ", // FCMOVNES
00117     "fcmovne ", // FCMOVNET
00118     "ftois ", // FTOIS
00119     "ftoit ", // FTOIT
00120     "#idef ", // IDEF_F32
00121     "#idef ", // IDEF_F64
00122     "#idef ", // IDEF_I
00123     "itofs ", // ITOFS
00124     "itoft ", // ITOFT
00125     "jmp ", // JMP
00126     "jsr $26,($27),0\n",  // JSR
00127     "jsr_coroutine ", // JSR_COROUTINE
00128     "jsr $23,($27),0\n",  // JSRs
00129     "lda ", // LDA
00130     "ldah ",  // LDAH
00131     "ldah ",  // LDAHg
00132     "ldah ",  // LDAHr
00133     "lda ", // LDAg
00134     "lda ", // LDAr
00135     "ldbu ",  // LDBU
00136     "ldbu ",  // LDBUr
00137     "ldl ", // LDL
00138     "ldl ", // LDLr
00139     "ldq ", // LDQ
00140     "ldq ", // LDQl
00141     "ldq ", // LDQr
00142     "lds ", // LDS
00143     "lds ", // LDSr
00144     "ldt ", // LDT
00145     "ldt ", // LDTr
00146     "ldwu ",  // LDWU
00147     "ldwu ",  // LDWUr
00148     "LSMARKER$",  // MEMLABEL
00149     "mull ",  // MULL
00150     "mull ",  // MULLi
00151     "mulq ",  // MULQ
00152     "mulq ",  // MULQi
00153     "muls/su ", // MULS
00154     "mult/su ", // MULT
00155     "ornot ", // ORNOT
00156     "ornot ", // ORNOTi
00157     "PCMARKER_",  // PCLABEL
00158     "ret $31,($26),1\n",  // RETDAG
00159     "rpcc ",  // RPCC
00160     "s4addl ",  // S4ADDL
00161     "s4addl ",  // S4ADDLi
00162     "s4addq ",  // S4ADDQ
00163     "s4addq ",  // S4ADDQi
00164     "s4subl ",  // S4SUBL
00165     "s4subl ",  // S4SUBLi
00166     "s4subq ",  // S4SUBQ
00167     "s4subq ",  // S4SUBQi
00168     "s8addl ",  // S8ADDL
00169     "s8addl ",  // S8ADDLi
00170     "s8addq ",  // S8ADDQ
00171     "s8addq ",  // S8ADDQi
00172     "s8subl ",  // S8SUBL
00173     "s8subl ",  // S8SUBLi
00174     "s8subq ",  // S8SUBQ
00175     "s8subq ",  // S8SUBQi
00176     "sextb ", // SEXTB
00177     "sextw ", // SEXTW
00178     "sll ", // SL
00179     "sll ", // SLi
00180     "sqrts/su ",  // SQRTS
00181     "sqrtt/su ",  // SQRTT
00182     "sra ", // SRA
00183     "sra ", // SRAi
00184     "srl ", // SRL
00185     "srl ", // SRLi
00186     "stb ", // STB
00187     "stb ", // STBr
00188     "stl ", // STL
00189     "stl ", // STLr
00190     "stq ", // STQ
00191     "stq ", // STQr
00192     "sts ", // STS
00193     "sts ", // STSr
00194     "stt ", // STT
00195     "stt ", // STTr
00196     "stw ", // STW
00197     "stw ", // STWr
00198     "subl ",  // SUBL
00199     "subl ",  // SUBLi
00200     "subq ",  // SUBQ
00201     "subq ",  // SUBQi
00202     "subs/su ", // SUBS
00203     "subt/su ", // SUBT
00204     "umulh ", // UMULH
00205     "umulh ", // UMULHi
00206     "#wtf\n", // WTF
00207     "xor ", // XOR
00208     "xor ", // XORi
00209     "zap ", // ZAP
00210     "zapnot ",  // ZAPNOT
00211     "zapnot ",  // ZAPNOTi
00212     "zap ", // ZAPi
00213   };
00214 
00215   // Emit the opcode for the instruction.
00216   if (const char *AsmStr = OpStrs[MI->getOpcode()])
00217     O << AsmStr;
00218 
00219   switch (MI->getOpcode()) {
00220   default: return false;
00221   case Alpha::INLINEASM: printInlineAsm(MI); break;
00222   case Alpha::ADDL:
00223   case Alpha::ADDLi:
00224   case Alpha::ADDQ:
00225   case Alpha::ADDQi:
00226   case Alpha::ADDS:
00227   case Alpha::ADDT:
00228   case Alpha::AND:
00229   case Alpha::ANDi:
00230   case Alpha::BIC:
00231   case Alpha::BICi:
00232   case Alpha::BIS:
00233   case Alpha::BISi:
00234   case Alpha::CMPBGE:
00235   case Alpha::CMPBGEi:
00236   case Alpha::CMPEQ:
00237   case Alpha::CMPEQi:
00238   case Alpha::CMPLE:
00239   case Alpha::CMPLEi:
00240   case Alpha::CMPLT:
00241   case Alpha::CMPLTi:
00242   case Alpha::CMPTEQ:
00243   case Alpha::CMPTLE:
00244   case Alpha::CMPTLT:
00245   case Alpha::CMPTUN:
00246   case Alpha::CMPULE:
00247   case Alpha::CMPULEi:
00248   case Alpha::CMPULT:
00249   case Alpha::CMPULTi:
00250   case Alpha::CPYSES:
00251   case Alpha::CPYSESt:
00252   case Alpha::CPYSET:
00253   case Alpha::CPYSNS:
00254   case Alpha::CPYSNSt:
00255   case Alpha::CPYSNT:
00256   case Alpha::CPYSNTs:
00257   case Alpha::CPYSS:
00258   case Alpha::CPYSSt:
00259   case Alpha::CPYST:
00260   case Alpha::CPYSTs:
00261   case Alpha::DIVS:
00262   case Alpha::DIVT:
00263   case Alpha::EQV:
00264   case Alpha::EQVi:
00265   case Alpha::EXTBL:
00266   case Alpha::EXTLL:
00267   case Alpha::EXTWL:
00268   case Alpha::MULL:
00269   case Alpha::MULLi:
00270   case Alpha::MULQ:
00271   case Alpha::MULQi:
00272   case Alpha::MULS:
00273   case Alpha::MULT:
00274   case Alpha::ORNOT:
00275   case Alpha::ORNOTi:
00276   case Alpha::S4ADDL:
00277   case Alpha::S4ADDLi:
00278   case Alpha::S4ADDQ:
00279   case Alpha::S4ADDQi:
00280   case Alpha::S4SUBL:
00281   case Alpha::S4SUBLi:
00282   case Alpha::S4SUBQ:
00283   case Alpha::S4SUBQi:
00284   case Alpha::S8ADDL:
00285   case Alpha::S8ADDLi:
00286   case Alpha::S8ADDQ:
00287   case Alpha::S8ADDQi:
00288   case Alpha::S8SUBL:
00289   case Alpha::S8SUBLi:
00290   case Alpha::S8SUBQ:
00291   case Alpha::S8SUBQi:
00292   case Alpha::SL:
00293   case Alpha::SLi:
00294   case Alpha::SRA:
00295   case Alpha::SRAi:
00296   case Alpha::SRL:
00297   case Alpha::SRLi:
00298   case Alpha::SUBL:
00299   case Alpha::SUBLi:
00300   case Alpha::SUBQ:
00301   case Alpha::SUBQi:
00302   case Alpha::SUBS:
00303   case Alpha::SUBT:
00304   case Alpha::UMULH:
00305   case Alpha::UMULHi:
00306   case Alpha::XOR:
00307   case Alpha::XORi:
00308   case Alpha::ZAP:
00309   case Alpha::ZAPNOT:
00310   case Alpha::ZAPNOTi:
00311   case Alpha::ZAPi:
00312     printOperand(MI, 1); 
00313     O << ","; 
00314     printOperand(MI, 2); 
00315     O << ","; 
00316     printOperand(MI, 0); 
00317     O << "\n"; 
00318     break;
00319   case Alpha::ADJUSTSTACKDOWN:
00320   case Alpha::ADJUSTSTACKUP:
00321   case Alpha::ALTENT:
00322   case Alpha::BR:
00323   case Alpha::BSR:
00324   case Alpha::IDEF_F32:
00325   case Alpha::IDEF_F64:
00326   case Alpha::IDEF_I:
00327   case Alpha::PCLABEL:
00328   case Alpha::RPCC:
00329     printOperand(MI, 0); 
00330     switch (MI->getOpcode()) {
00331     case Alpha::ADJUSTSTACKDOWN: 
00332     case Alpha::ADJUSTSTACKUP: 
00333     case Alpha::BR: 
00334     case Alpha::IDEF_F32: 
00335     case Alpha::IDEF_F64: 
00336     case Alpha::IDEF_I: 
00337     case Alpha::RPCC: O << "\n"; break;
00338     case Alpha::ALTENT: O << "..ng:\n\n"; break;
00339     case Alpha::BSR: O << "..ng\n"; break;
00340     case Alpha::PCLABEL: O << ":\n\n"; break;
00341     }
00342     break;
00343   case Alpha::BEQ:
00344   case Alpha::BGE:
00345   case Alpha::BGT:
00346   case Alpha::BLBC:
00347   case Alpha::BLBS:
00348   case Alpha::BLE:
00349   case Alpha::BLT:
00350   case Alpha::BNE:
00351   case Alpha::FBEQ:
00352   case Alpha::FBGE:
00353   case Alpha::FBGT:
00354   case Alpha::FBLE:
00355   case Alpha::FBLT:
00356   case Alpha::FBNE:
00357     printOperand(MI, 0); 
00358     O << ","; 
00359     printOperand(MI, 1); 
00360     O << "\n"; 
00361     break;
00362   case Alpha::CMOVEQ:
00363   case Alpha::CMOVEQi:
00364   case Alpha::CMOVGE:
00365   case Alpha::CMOVGEi:
00366   case Alpha::CMOVGT:
00367   case Alpha::CMOVGTi:
00368   case Alpha::CMOVLBC:
00369   case Alpha::CMOVLBCi:
00370   case Alpha::CMOVLBS:
00371   case Alpha::CMOVLBSi:
00372   case Alpha::CMOVLE:
00373   case Alpha::CMOVLEi:
00374   case Alpha::CMOVLT:
00375   case Alpha::CMOVLTi:
00376   case Alpha::CMOVNE:
00377   case Alpha::CMOVNEi:
00378   case Alpha::FCMOVEQS:
00379   case Alpha::FCMOVEQT:
00380   case Alpha::FCMOVGES:
00381   case Alpha::FCMOVGET:
00382   case Alpha::FCMOVGTS:
00383   case Alpha::FCMOVGTT:
00384   case Alpha::FCMOVLES:
00385   case Alpha::FCMOVLET:
00386   case Alpha::FCMOVLTS:
00387   case Alpha::FCMOVLTT:
00388   case Alpha::FCMOVNES:
00389   case Alpha::FCMOVNET:
00390     printOperand(MI, 2); 
00391     O << ","; 
00392     printOperand(MI, 1); 
00393     O << ","; 
00394     printOperand(MI, 0); 
00395     O << "\n"; 
00396     break;
00397   case Alpha::CTLZ:
00398   case Alpha::CTPOP:
00399   case Alpha::CTTZ:
00400   case Alpha::CVTQS:
00401   case Alpha::CVTQT:
00402   case Alpha::CVTST:
00403   case Alpha::CVTTQ:
00404   case Alpha::CVTTS:
00405   case Alpha::FTOIS:
00406   case Alpha::FTOIT:
00407   case Alpha::ITOFS:
00408   case Alpha::ITOFT:
00409   case Alpha::SEXTB:
00410   case Alpha::SEXTW:
00411   case Alpha::SQRTS:
00412   case Alpha::SQRTT:
00413     printOperand(MI, 1); 
00414     O << ","; 
00415     printOperand(MI, 0); 
00416     O << "\n"; 
00417     break;
00418   case Alpha::JMP:
00419   case Alpha::JSR_COROUTINE:
00420     printOperand(MI, 0); 
00421     O << ",("; 
00422     printOperand(MI, 1); 
00423     O << "),"; 
00424     printOperand(MI, 2); 
00425     O << "\n"; 
00426     break;
00427   case Alpha::JSR:
00428   case Alpha::JSRs:
00429   case Alpha::PHI:
00430   case Alpha::RETDAG:
00431   case Alpha::WTF:
00432     break;
00433   case Alpha::LDA:
00434   case Alpha::LDAH:
00435   case Alpha::LDAHr:
00436   case Alpha::LDAr:
00437   case Alpha::LDBU:
00438   case Alpha::LDBUr:
00439   case Alpha::LDL:
00440   case Alpha::LDLr:
00441   case Alpha::LDQ:
00442   case Alpha::LDQl:
00443   case Alpha::LDQr:
00444   case Alpha::LDS:
00445   case Alpha::LDSr:
00446   case Alpha::LDT:
00447   case Alpha::LDTr:
00448   case Alpha::LDWU:
00449   case Alpha::LDWUr:
00450   case Alpha::STB:
00451   case Alpha::STBr:
00452   case Alpha::STL:
00453   case Alpha::STLr:
00454   case Alpha::STQ:
00455   case Alpha::STQr:
00456   case Alpha::STS:
00457   case Alpha::STSr:
00458   case Alpha::STT:
00459   case Alpha::STTr:
00460   case Alpha::STW:
00461   case Alpha::STWr:
00462     printOperand(MI, 0); 
00463     O << ","; 
00464     printOperand(MI, 1); 
00465     O << "("; 
00466     printOperand(MI, 2); 
00467     switch (MI->getOpcode()) {
00468     case Alpha::LDA: 
00469     case Alpha::LDAH: 
00470     case Alpha::LDBU: 
00471     case Alpha::LDL: 
00472     case Alpha::LDQ: 
00473     case Alpha::LDS: 
00474     case Alpha::LDT: 
00475     case Alpha::LDWU: 
00476     case Alpha::STB: 
00477     case Alpha::STL: 
00478     case Alpha::STQ: 
00479     case Alpha::STS: 
00480     case Alpha::STT: 
00481     case Alpha::STW: O << ")\n"; break;
00482     case Alpha::LDAHr: O << ")\t\t!gprelhigh\n"; break;
00483     case Alpha::LDAr: 
00484     case Alpha::LDBUr: 
00485     case Alpha::LDLr: 
00486     case Alpha::LDQr: 
00487     case Alpha::LDSr: 
00488     case Alpha::LDTr: 
00489     case Alpha::LDWUr: 
00490     case Alpha::STBr: 
00491     case Alpha::STLr: 
00492     case Alpha::STQr: 
00493     case Alpha::STSr: 
00494     case Alpha::STTr: 
00495     case Alpha::STWr: O << ")\t\t!gprellow\n"; break;
00496     case Alpha::LDQl: O << ")\t\t!literal\n"; break;
00497     }
00498     break;
00499   case Alpha::LDAHg:
00500   case Alpha::LDAg:
00501     printOperand(MI, 0); 
00502     O << ",0("; 
00503     printOperand(MI, 2); 
00504     O << ")\t\t!gpdisp!"; 
00505     printOperand(MI, 3); 
00506     O << "\n"; 
00507     break;
00508   case Alpha::MEMLABEL:
00509     printOperand(MI, 0); 
00510     O << "$"; 
00511     printOperand(MI, 1); 
00512     O << "$"; 
00513     printOperand(MI, 2); 
00514     O << "$"; 
00515     printOperand(MI, 3); 
00516     O << ":\n"; 
00517     break;
00518   }
00519   return true;
00520 }