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 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 }