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